Alles anzeigenAlso, Scripte und ich.
Ich bekomme die Fehler:
Ich habe meine beiden IPs und die ID eingetragen bzw. ist die ID wirklich 200, wohl Standart.
Muss irgendwo noch was eingetragen werden oder gibt es wichtige Einstellungen in dem WD oder Gateway die gemacht werden müssen?
Mein Code sieht also so aus:
Code Alles anzeigen// === Synchronisation von BLU TRV und Wall Display === // Dieses Skript synchronisiert die Zieltemperaturen zwischen einem BLU TRV Thermostat und einem Wall Display. // Die IP-Adressen der Geräte und die BLU TRV-ID müssen entsprechend angepasst werden. // === IP-Adressen anpassen === // Trage hier die IP-Adresse deines Wall Displays ein: let wallDisplayIp = "192.168.1.211"; // z.B. "192.168.1.100" // Trage hier die IP-Adresse des Gateways ein, das mit dem BLU TRV Thermostat verbunden ist: let bluTrvIp = "192.168.1.15"; // z.B. "192.168.1.101" // === BLU TRV-ID anpassen === // Die ID des BLU TRV wird vom Gateway vergeben. Diese Information findest du im Gateway. let bluTrvId = 200; // Standard-ID, im Gateway prüfen und ggf. anpassen // === Intervall für die Synchronisation (in Millisekunden) === let syncInterval = 10000; // 10 Sekunden // Letzte bekannte Zieltemperaturen let lastBluTrvTarget = null; let lastWallDisplayTarget = null; // === Synchronisation starten === Timer.set(syncInterval, true, function () { let bluTrvStatusUrl = "http://" + bluTrvIp + "/rpc/BluTrv.GetRemoteStatus?id=" + bluTrvId; // BLU TRV-Status abrufen Shelly.call("http.request", { method: "GET", url: bluTrvStatusUrl, headers: { "Content-Type": "application/json" }, }, function (res, error_code, error_message) { if (error_code !== 0) { print("Fehler beim Abrufen des BLU TRV-Status: " + error_code + " - " + error_message); return; } try { let bluTrvData = JSON.parse(res.body); let bluTrvTarget = bluTrvData.status?.["trv:0"]?.target_C; if (bluTrvTarget === undefined) { print("BLU TRV-Daten enthalten keine Zieltemperatur."); return; } print("BLU TRV-Zieltemperatur: " + bluTrvTarget + "°C"); // Wall Display-Status abrufen let wallDisplayStatusUrl = "http://" + wallDisplayIp + "/rpc"; Shelly.call("http.request", { method: "POST", url: wallDisplayStatusUrl, body: JSON.stringify({ jsonrpc: "2.0", id: 2, src: "user_1", method: "Shelly.GetStatus", params: {} }), headers: { "Content-Type": "application/json" } }, function (res, error_code, error_message) { if (error_code !== 0) { print("Fehler beim Abrufen des Wall Display-Status: " + error_code + " - " + error_message); return; } let wallDisplayData = JSON.parse(res.body); let wallDisplayTarget = wallDisplayData.result?.["thermostat:0"]?.target_C; if (wallDisplayTarget === undefined) { print("Thermostatdaten des Wall Displays nicht gefunden."); return; } print("Wall Display-Zieltemperatur: " + wallDisplayTarget + "°C"); // Synchronisation prüfen und durchführen if (bluTrvTarget !== lastBluTrvTarget && bluTrvTarget !== wallDisplayTarget) { print("BLU TRV hat die Temperatur geändert. Aktualisiere Wall Display."); lastBluTrvTarget = bluTrvTarget; updateWallDisplay(bluTrvTarget); } else if (wallDisplayTarget !== lastWallDisplayTarget && wallDisplayTarget !== bluTrvTarget) { print("Wall Display hat die Temperatur geändert. Aktualisiere BLU TRV."); lastWallDisplayTarget = wallDisplayTarget; updateBluTrv(wallDisplayTarget); } else { print("Keine Änderungen erkannt. Werte sind synchronisiert."); } }); } catch (e) { print("Fehler beim Parsen der BLU TRV-Daten: " + e); } }); });
Das Script wurde in meinem Post oben korrigiert und es funktioniert! DarkSoul scheint zumindest zufrieden zu sein.