Tabcounter für Chrome für Home Assistant

08 August 2025 - 20:51 | Version 2 |

Worum geht es?

Anzahl offen Chrome Tabs in Home Assistant anzeigen können.

Wie habe ich es gemacht?

Aufgrund des Wechsels auf Manifest V3 musste ich die Extension überarbeiten. Ich habe stattdessen mit ChatGPT o4-mini-high gearbeitet und die Extension im Dialog entwickelt.

manifest.jpsn

{
  "manifest_version": 3,
  "name": "Chrome Tabs to Home Assistant",
  "version": "1.2",
  "description": "Sendet die Anzahl offener Tabs an Home Assistant bei jeder Aenderung",
  "permissions": [
    "tabs"
  ],
  "host_permissions": [
    "http://ha:8123/*"
  ],
  "background": {
    "service_worker": "background.js"
  },
  "content_security_policy": {
    "extension_pages": "script-src 'self'; object-src 'self'; connect-src http://ha:8123"
  }
}

background.json

const HA_URL   = "http://ha:8123/api/states/input_number.tabcounter";
const HA_TOKEN = "my little secret" ;

// Funktion zum Senden der aktuellen Tab-Anzahl
async function sendTabCount() {
  try {
    const tabs = await chrome.tabs.query({});
    const count = tabs.length;
    const payload = {
      state: count.toString(),
      attributes: { count: count }
    };
    const resp = await fetch(HA_URL, {
      method: "POST",
      headers: {
        "Authorization": `Bearer ${HA_TOKEN}`,
        "Content-Type": "application/json"
      },
      body: JSON.stringify(payload)
    });
    if (!resp.ok) {
      console.error("HA-Update fehlgeschlagen:", resp.status, resp.statusText);
    }
  } catch (err) {
    console.error("Fehler beim Senden der Tab-Anzahl:", err);
  }
}

// Listener für Tab-Eröffnung
chrome.tabs.onCreated.addListener(() => {
  sendTabCount();
});

// Listener für Tab-Schließung
chrome.tabs.onRemoved.addListener(() => {
  sendTabCount();
});

// Nur senden, wenn mehr als 5 Tabs offen sind
chrome.runtime.onStartup.addListener(async () => {
  const tabs = await chrome.tabs.query({});
  if (tabs.length > 5) {
    sendTabCount();
  }
});

chrome.runtime.onInstalled.addListener(async () => {
  const tabs = await chrome.tabs.query({});
  if (tabs.length > 5) {
    sendTabCount();
  }
});
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding wiki.doebe.li? Send feedback
This page was cached on 26 Aug 2025 - 05:58.