NEWS
Widget aktualisiert nicht bei Button
-
@Glasfaser natürlich switched er im ioBroker
-
@F-M
Und der Datenpunkt ist ein Boolean, true/false - welchen Adapter hast du genommen, den Sonoff?
Hast du im Widget Werte für "Falsch-Wert" und "Wahr-Wert" eingetragen?
Versuch es mal dort mit true und falseVG
BJ -
@BananaJoe Hi BJ, geht über MQTT, daher ist der Datenpunk "gemischt" mit ON&OFF... so ist es auch im Widget hinterlegt.
Wenn es hier ein Logikwert braucht, müsste ich den Datenpunkt irgendwie dublizieren bzw. umwandeln... ?
BG
Ferdi -
also es hat tatsächlich mit dem Boolean Feld zu tun... der Datenpunkt muss für das Widget als Logikwert bestehen. -.-
also muss ich das jetzt irgendwie basteln
oder hat da jemand schon eine Lösung... weil wenn ich den Wert im MQTT Adapter von gemischt->Logikwert drehe, funktioniert es nicht mehr. -
Ich habe die Tasmota auch alle per MQTT dran und mir deshalb für jeden einen eigenen True/False Datenpunkt gebaut.
Das folgende Skript habe ich für jedes Tasmota Gerät einmal laufen
oben bei Device-Name ist der Name wie er unter mqtt.0/stat/ erscheint
Er legt unter javascript.0 passende Datenpunkte an// Erstellt einen Datenpunkt über welches der Status des Tasmota Gerätes als Boolean true false ausgelesen werden kann // Gleichzeitig kann man den Datenpunkt gezielt setzen um umzuschalten // #################################################################################################################################################### // Setup var s_DeviceName = "K05-Licht-Flur-Keller"; // #################################################################################################################################################### // feste Vorgaben // Datenpunkt der gelesen und geschrieben werden kann var s_state_path = "javascript.0.tasmota." + s_DeviceName + ".POWER"; // Datenpunkt aus dem der aktuelle Status gelesen werden kann var s_mqtt_path = "mqtt.0.stat." + s_DeviceName + ".POWER"; // Datenpunkt den man setzen muss um den Status zu ändern var s_cmnd_path = "mqtt.0.cmnd." + s_DeviceName + ".POWER"; // Hilfsvariable damit die die beiden Teile (2 Datenpunkte aboniert) nicht in die Quere kommen var s_running = "nothing"; // #################################################################################################################################################### // Zielpunkte anlegen falls noch nicht vorhanden // RSSI createState(s_state_path, false, { read: true, write: true, name: 'An (=true) oder AUS (=false)', type: 'boolean', def: false }); // #################################################################################################################################################### // Beim Start einmal einfach den aktuellen Wert holen und schreiben if ( getState(s_mqtt_path).val = 'ON' ) { setState(s_state_path, true, true); } else { setState(s_state_path, false, true); } // #################################################################################################################################################### // Status einlesen und nach javascript.0 schreiben on({id: s_mqtt_path, change: "ne", ack: true}, function (obj) { var s_value_mqtt = obj.state.val; var s_value_javascript = getState(s_state_path).val; var b_helper_mqtt = false; // Beides nach Boolean bringen if (s_value_mqtt == 'ON') { b_helper_mqtt = true; } else { b_helper_mqtt = false; } // Die Prüfungen sollen verhindern das durch das Setzen des Wertes in der anderen Routine nicht wieder der JavaScript Wert geändert wird // und damit wieder das Setzen des Wertes anstoßen würde (Schleife verhinden) // Prüfen ob nicht das Setzen des javascript.0 Datenpunktes die Ursache war if (s_running != 'SetState') { // Wir übernehmen das Zepter s_running = 'GetState'; // prüfen ob die Werte wirklich ungleich sein sind und wir was ändern müssen if (b_helper_mqtt != s_value_javascript) { if (s_value_mqtt == 'ON') { setState(s_state_path, true, true); } else { setState(s_state_path, false, true); } } // Zepter wieder abgeben s_running = 'nothing'; } }); // #################################################################################################################################################### // Status setzen nachdem die JavaScript-Varaiable geändert wurde. on({id: s_state_path, change: "ne", ack: false}, function (obj) { var s_value_mqtt = obj.state.val; var s_value_javascript = getState(s_state_path).val; var b_helper_mqtt = false; // Beides nach Boolean bringen if (s_value_mqtt == 'ON') { b_helper_mqtt = true; } else { b_helper_mqtt = false; } // Prüfen ob nicht GetState der Grund war warum sich der JavaScipt-Datenpunkt geändert hat if (s_running != 'GetState') { // wir übernehmen das Zepter! s_running = 'SetState'; if (getState(s_state_path).val == true) { setState(s_cmnd_path, 'ON'); } else { setState(s_cmnd_path, 'OFF'); } // Zepter wieder abgeben s_running = 'nothing'; } });
-
@F-M sagte in Widget aktualisiert nicht bei Button:
geht über MQTT, daher ist der Datenpunk "gemischt" mit ON&OFF
Warum nimmst du nicht den Sonoff Adapter !
-
@F-M sagte:
daher ist der Datenpunk "gemischt" mit ON&OFF... so ist es auch im Widget hinterlegt.
Bei mir funktioniert es mit "ON" und "OFF" in beiden Richtungen.
-
@Glasfaser
Ich nehme auch MQTT weil ich eben noch mehr am MQTT außer ioBroker habe, unter anderem diverse Skripte die auf bestimmte Tasmota-Geräte reagieren.
Wenn man den Sonoff Adapter nimmt hat man es zwar sehr bequem ... aber eben nur noch im ioBroker als Datenpunkt.
Das coole an MQTT ist ja das man da quasi alles dranhängen kann. -
@Glasfaser mache ich gleich wie BananaJoe -> ich mag da noch mehr dran hängen außer Sonoff
@paul53 , Frage ist ja: Schaltet er bei dir dann auch das Widget um wenn du den Hardware Button z.B. an der Steckdose drückst? Weil das geht bei mir eben nicht.
Scheinbar liegt es daran, dass der Datenpunkt als "gemischt" verwendet wird, statt als true/false.
@BananaJoe, danke dir! werde ich auf jeden Fall testen, hab das gestern mal kurz mit Blockly und klicky bunty versucht, aber gescheitert
muss allerdings gestehen, dass javascript nicht meine stärke ist
Pfade anpassen & Kommentare lesen geht da grad noch so
-
@F-M sagte in:
Schaltet er bei dir dann auch das Widget um wenn du den Hardware Button z.B. an der Steckdose drückst?
Ich habe keine Hardware dran. Wenn ich im Tab "Objekte" zwischen "ON" und "OFF" ändere, schaltet auch das Widget um.
@F-M sagte in Widget aktualisiert nicht bei Button:
Scheinbar liegt es daran, dass der Datenpunkt als "gemischt" verwendet wird
Nein, mein Test-Datenpunkt ist auch vom Typ "mixed".
-
@paul53 sagte in Widget aktualisiert nicht bei Button:
Ich habe keine Hardware dran. Wenn ich im Tab "Objekte" zwischen "ON" und "OFF" ändere, schaltet auch das Widget um.
@F-M sagte in Widget aktualisiert nicht bei Button:
Scheinbar liegt es daran, dass der Datenpunkt als "gemischt" verwendet wird, statt als true/false.
Nein, es liegt anscheinend daran, dass der Rückkanal vom Schalter nicht korrekt funktioniert.
-
@Homoran said in Widget aktualisiert nicht bei Button:
Nein, es liegt anscheinend daran, dass der Rückkanal vom Schalter nicht korrekt funktioniert
hmmm... guter Punkt, ich probiere es vielleicht mal noch mit einem anderen Widget, vielleicht hat es ja ne Macke
Ich zeige damit halt auf denmqtt-client.0.$Gerätename.POWER
-
@F-M sagte in Widget aktualisiert nicht bei Button:
ich probiere es vielleicht mal noch mit einem anderen Widget,
nee, das ändert nix.
@paul53 hat es ja getestet, dass es funktioniert, wenn im DP der Wert korrekt geändert wird.
Da musst du meiner Meinung nach ansetzen. -
@F-M sagte:
Ich zeige damit halt auf den
mqtt-client.0.$Gerätename.POWERKann es sein, dass Kommando und Status verschiedene Datenpunkte sind ? Dann führe sie in einem Alias-Datenpunkt zusammen.
-
@paul53 Uhhhh, schaut interessant aus... werde ich mir anschauen!
Ja es gibt 2 Datenpunkte in dem Baum...mqtt-client.2.sonoff.cmnd.$Gerätename.Power
mqtt-client.2.sonoff.stat.$Gerätename.Powerich hatte das mit cmnd und stat unterschlagen... man schaltet den .cmnd.$Gerätename.POWER Schalter um das Relais zu schalten. der .stat.$Gerätename.POWER bzw. .stat.$Gerätename.RESULT bestätigt einem das denke ich nur.
EDIT: wenn ich den HW Knopf betätige, schalten beide als cmnd und stat .POWER werte auf ON
-
@F-M sagte in Widget aktualisiert nicht bei Button:
EDIT: wenn ich den HW Knopf betätige, schalten beide als cmnd und stat .POWER werte auf ON
Also bei mir nicht, da wird nur stat befüllt - wie sind denn deine Tasmota Einstellungen (mal abgesehen von dem Server)?
Meine sind
Topic Sonoff194-Garage MqttClient Sonoff194-Garage MqttHost 192.168.1.72 MqttPort 1883 MqttUser tasmouser MqttPassword test1234
Gibt es eine Option die dein Verhalten aktiviert?
-
Verdammt verdammt verdammt...
Ende vom Lied... wenn der Datenpunkt mit ON / OFF geschalten wird muss mal den quatsch halt auch als wahr/falsch Wert in der VIS setzen
Danke an alle die geholfen haben!
peinlich