uxtuner
Mir sagt HomeBridge nichts, offenbar ist das ein Apfelstückchen. 
Lässt sich dort nichts konfigurieren oder skripten, was auf Komponenten von JavaScript Objekten zugreift?
Nutzt du auch MQTT oder irgendetwas Flexibles wie Node-RED oder ...?
Man kann auf Shelly ab Generation 2 auch Skripte laufen lassen. Ich stelle hier mal ein grundlegendes Skript dafür vor.
// eiche, 2025-04-26
let dataURL = '',
Status = null,
Device = "Test";
// process reagiert auf Änderungen von input:100, speichert den neuen Status
function process(ev) {
if(ev.info===undefined) return;
let i = ev.info;
if(i.component!=="input:100") return;
if(i.event==="toggle") {
Status = i.state;
print(Status);
}
}
Shelly.addEventHandler(process);
// get status of input:100
Shelly.call("Input.GetStatus", {id:100},
function(inp, errc, errm) {
if(errc) {print("Error Component Input:100:", errc, errm); return;}
Status = inp.state;
//print(Status);
}
);
// http sequence
let localIP = Shelly.getComponentStatus('wifi').sta_ip,
htmlFirst = '<!DOCTYPE html>'
+'<html>'
+'<head>'
+'<meta name="viewport" content="width=device-width, initial-scale=1.0">',
htmlSecond = '<title>'+Device+'</title>'
+'</head>'
+'<style>' // nicht notwendig, nur zum etwas verhübschen
+'body,table {background-color:#404040;color:white;font-family:sans-serif;text-align:center;font-size:0.9em}'
+'</style>'
+'<body>',
htmlLast = '</body></html>';
function data(request,response) {
response.code = 200;
response.headers = [["Content-Type", "text/html"]];
let ch = false;
if(request.method==='GET') {
let q = request.query;
print(q);
}
else if(request.method==='POST') {
print(request.body);
let j = JSON.parse(request.body);
}
response.body = htmlFirst
+htmlSecond
+Status // Hier wird der Status im html body eingebettet.
//+'<p>'+Status+'</p>' // oder in einem Absatz
+htmlLast;
response.send();
}
// Etwas verzögert den HTTP Endpoint registrieren lassen, muss nicht zwingend sein, schadet aber auch nicht.
Timer.set(1000,false,
function(){
dataURL = 'http://'+localIP + HTTPServer.registerEndpoint('data', data);
print(dataURL);
}
);
Alles anzeigen
Das Skript stellt eine simple Webseite zur Verfügung, deren Inhalt (body) den Schalter-/Tasterzustand am Add-On liefert, also schlicht false/true.
Nach dem Start des Skripts gibt es zwecks Info den passenden URL im Console Fenster unterhalb des Skript Editierfensters aus.
Die Webseite wird aufgerufen mit
http://<IP-Adresse des Shelly>/script/1/data
Darin ist die 1 die Skript Id und kann auch anders lauten, wenn du bereits Skripte dort abgelegt hast.
Ob dieses Skript das liefert, was du brauchst, weiß ich nicht. Das musst du selbst herausfinden. Jedenfalls wird eine syntaktisch korrekte Webseite geliefert.
MQTT täte mir besser gefallen. Mit Node-RED lassen sich sehr gut Adapter bauen. Nur mal so ... 