NEWS
Statusänderung erst bei Bestätigung des Schalters
-
Die Frage ist anders….
Wen man den status in VIs ändert, ändert sich das object 1:1 wodurch der Befehl zum Adapter/Gerät verarbeitet wird.
Man kann hier keine Logic reinsetzen warte auf ACK, man braucht ja den Wert im object um zu schalten !
Einzige Alternative welche mir einfällt ist neben dem Schalter ein object zu haben was den Wert ACK ( acknowledged = bestätigt) darstellt.
Sent from my iPhone using Tapatalk
-
Es müsste per Skript machbar sein. Es gab doch hier im Forum schon öfter Leute, die Probleme hatten mit z.B. einer Doppelansage, weil der Trigger "falsch" eingestellt war. Da kam dann die Ansage zweimal. Dieses Triggerverhalten müsste doch hier auszunutzen sein. Dafür wäre dann wohl ein weiterer Datenpunkt notwendig, da man ja per vis das Objekt direkt schaltet und die eigentliche Rückmeldung über das angelegte Objekt kommt. Es müssten also auch zwei Widgets verwendet werden.
Das Skript dazu kann ich jetzt noch nicht liefern, müsste selbst erstmal probieren! :? Vielleicht kommt aber einer Profis schneller drauf, was ich meine.
Enrico
-
Nicht ganz wie möchtest du das anstellen ?
Widget in VIs benutzt den Status des objecte, schaltest du in VIs geht status Änderung direkt zurück in die Visualisierung.
Man könnte komplex 2 Widgets übereinander legen eins zum schalten das anderen den Status nur wen bestätigt
Sent from my iPhone using Tapatalk
-
Genau, der Schalter für das eigentliche Objekt muss über dem Widget für die Rückmeldung liegen. Wenn ich nachher zu Hause dazu komme probiere ich mal ein Blockly aus meiner Idee zu machen.
Enrico
-
Genau sowas suche ich, da ich ja im VIS eh einen extra Schalter habe und ein Icon (Glühbirne an/aus) was den aktuellen Zustand darstellt.
Aber wie mache ich das, das das Icon sich erst ändert wenn der Zustand bestätigt (ack) ist???
Danke,
Axel
Nicht ganz wie möchtest du das anstellen ?
Widget in VIs benutzt den Status des objecte, schaltest du in VIs geht status Änderung direkt zurück in die Visualisierung.
Man könnte komplex 2 Widgets übereinander legen eins zum schalten das anderen den Status nur wen bestätigt
Sent from my iPhone using Tapatalk `
-
Im Web Interface…..
Überlesen, wenn ich auf on gehe, geht sofort meine Lampe an und der Zustand des Widget ändert sich auch sofort und umgekehrt.
Weiß jetzt nicht was er will?
Lg
-
Ja das ist schon richtig und funktioniert bei mir auch zu 98% so….
Aber ich habe 2 Sonoff (Außenbeleuchtung und Garagentor) welche manchmal schlechten WLAN Empfang haben und da kommt der Befehl zum schalten eben nicht an aber das Webinterface zeigt an das geschalten wurde.
Es soll aber nur anzeigen das geschalten wurde wenn es der Sonoff-Schalter auch bestätigt hat.
Dafür gibt es ja den Wert „Bestätigt“ - aber wie frage ich den ab im vis???
-
Achso jetzt verstehe ich das.
So habe ich es nicht gelesen und verstanden auf was du hinaus willst.
Okay da bin ich raus mit meinem bissel Ahnung…..
-
Keiner da der mir mit meinen Problem helfen kann?..
Wo sind die ioBroker Profis ?
-
So, hat ein bisschen länger gedauert mit meiner Idee. Wichtig ist dabei, dass ist nicht wirklich eine direkte Abfrage der Bestätigung, aber vielleicht kommst damit so hin, dass deine Anforderung machbar wird.
Zuerstmal mache ich mir, wie schon mal angedeutet, das Bestätigungsverhalten der Objekte zunutze. Getestet habe ich mit Homematic, da gibt es ja solch ein Verhalten auch, dass z.B. durch ein Skript eine Variable geändert wird (die Schrift ist dabei kurz rot, also noch keine Bestätigung) und nach Ablauf des Pollingintervals wird der Wert bestätigt (die Schrift wird kurz grün).
Ich denke mal, dass du mit einem weiteren Objekt arbeiten musst. Probiers dir einfach mal aus.
Hier mal mein kurzes Blockly mit dem nur ein log-Eintrag erzeugt wird, der das aber eigentlich verdeutlichen sollte:
Wenn ich dann die Variable ändere kommt im log Folgendes:
2018-09-10 22:42:26.124 - info: javascript.0 script.js.Testscripte.Skript2: Auslöser 2018-09-10 22:42:55.541 - info: javascript.0 script.js.Testscripte.Skript2: Auslöser 2018-09-10 22:42:55.544 - info: javascript.0 script.js.Testscripte.Skript2: Bestätigung
Enrico
Ps: mir fällt gerade auf, dass es wohl sogar ohne die Variablen im Blockly gehen müsste!
-
Hab jetzt noch mal weiter überlegt, so hast du gleich die Rückmeldung An/Aus:
Du müsstest dann nur noch dein anzulegendes Objekt einfügen.
Im Vis schaltest du weiterhin die Variable von mqtt, am besten mit einem unsichtbaren Widget und darunter legst du ein Widget an, dass dein angelegtes Objekt anzeigt.
Enrico
-
Mit einem zusätzlichen Datenpunkt, der den tatsächlichen Status anzeigt, gibt es sicherlich eine Möglichkeit in Vis ?
-
Hallo Axel158,
hast Du es hinbekommen? Ich suche ebenfalls nach eine Lösung.
-
Hallo zusammen, ich beötige aktuell ebenfalls eine Möglichkeit den tatsächlichen Staus bzw. nur den Bestägtigten Staus anzuzeigen. Ich steuere hier ein ZWave Device und schreiben den Status in einen weiten Datenpunkt jedoch soll dieser nur akutalsiert werden mit dem Bestätgten Status der Trigger spricht aber immer an d.h. hier müsste es eine Bedingung geben nur bei Bestätigt oder bedeitet dies "anerkannt ist Update " ??? jedenfalls geht dies bei mir nicht.....
-
-
Hallo, ja danke das hat tatsächlich jetzt genau so funktioniert
-
Hallo zusammen,
könnte mir jemand mal die Blockly Lösung in Worten erklären? Ich freunde mich eher mit Java an
Oder gibt es vielleicht eine bessere / neuere Lösung?
Ich möchte in der Vis mit einer Lampe (o. ä.) den wahren Zustand meines Sonoffs sehen...Danke!
-
@Bratwurst sagte:
Ich möchte in der Vis mit einer Lampe (o. ä.) den wahren Zustand meines Sonoffs sehen... Ich freunde mich eher mit Java an
Nicht Java, sondern Javascript (nicht getestet):
const idSonoff = '...'; const idVis = '0_userdata.0...'; //eigener Datenpunkt für Vis var timer = null; on({id: idVis, change: 'ne', ack: false}, function(dp) { setState(idSonoff, dp.state.val); timer = setTimeout(function() { setState(idVis, dp.oldState.val, true); // Reset auf alten Wert, wenn Timer nicht gestoppt }, 100); }); on({id: idSonoff, ack: true}, function(dp) { clearTimeout(timer); setState(idVis, dp.state.val, true); });
-
Mega, Danke!