NEWS
[gelöst] Blockly Problem mit MQTT-Adapter
-
Hallo zusammen,
ich möchte gerne mit Blockly meine Programierung manchen.
Aktuell habe ich das Problem, das ich zunächst nicht weiß wo ich das Script platzieren soll.
Gehört dieses in das Verzeichnis "common" oder in einen neuen Ordner z.B. "Scripte"
Ich habe beides versucht, aber es wird ndas Licht nicht angeschaltet.
-
Außer "global" kannst du jeden Ordner nehmen und dir natürlich auch eine eigene Sortierung erstellen. Das sieht doch ganz ordentlich aus.
Zeig doch mal dein Script, vielleicht ist da ein kleiner Fehler drin!
Enrico
-
Ein aktuelles Script der Deckenleuchte sieht derzeit so aus.
Am Anfag möchte ich alles auf aus bzw. 0 setzen.
Danach mit dem gleichen Taster die Lampe ein und ausschalten.
-
Reagiert denn der Aktor, wenn du den Taster drückst, aber nicht loslässt, oder passiert gar nichts?
Spontan würde ich sagen, dass dein Taster zweimal "aktualisiert" und deshalb der Aktor an und sofort nach loslassen auch wieder ausgeht.
Dann wäre noch die Frage, geht denn der Aktor an, wenn du in den Objekten "1" einträgst und wieder aus bei "0"? Oder muss da vielleicht "true" bzw "false" rein?
Enrico
Edit: Ich weiß auch nicht, was es bedeutet wenn bei "anerkannt" "Befehl" ausgewählt ist, passiert denn was, wenn da "egal" drin steht?
-
Wenn ich den Taster drücke passiert gar nichts.
Der Aktor bleibt immer auf null (Deckenlampe aus).
Es ist ein einfacher B&J Taster der nur einmal betätigt.
Es macht auch keinen Unterschied was ich bei anerkannt eintrage, bleibt immer finster.
Laut MQTT Logfile kommt bei einmal drücken … : "hit", beim lange drücken.. : "make" und beim lange los lassen ... : "make".
aber kein programmierter Aktor.
Bei einem 1 oder 0 Eintrag in den Objekten passiert auch nichts.
-
"anerkannt ist Befehl" bedeutet ack: false und ist die falsche Wahl.
-
Dann zeige mal bitte auch noch die ausgeklappten Datenpunkte des Tasters und des Aktors!
Enrico
-
Füge erst einmal einen Debug ein, um zu sehen, ob die Taste triggert und mit welchem Wert und Ack.
-
Ich habe das Modul einmal erstellt,
Wenn ich den Taster nur kurz betätige passiert nichts.
Sobald ich den Taster lange betätige und danach wieder loslasse kommt eine Meldung an.
Mir ist aufgefallen, das wenn der Taster nur kurz betätigt wird, bleibt der Status immer auf "hit".
Manfred
4819_debug.jpg -
Stell mal bitte den Trigger auf "wurde aktualisiert"!
Dann zeige mal bitte auch noch die ausgeklappten Datenpunkte des Tasters und des Aktors! `
Das bitte auch mal machen!
Enrico
-
Ich habe jetzt den Trigger auf "wurde aktualisiert" gestellt, es passiert beim einmal betätigen gar nichts.
Nur bei "lange = make" und bei "los = break" kommt die Meldung richtig an.
Danach beim ersten Mal "kurz = hit" drücken ein mal und dann nicht, weil sich der Zustand nicht mehr ändert.
Meinst du die vom Blockly aufgerufen werden?
-
Ich habe jetzt den Trigger auf "wurde aktualisiert" gestellt, … Danach beim ersten Mal "kurz = hit" drücken ein mal und dann nicht, weil sich der Zustand nicht mehr ändert. `
Bei Trigger "wurde aktualisiert" muss sich der Wert nicht ändern, aber der Zeitstempel, was offenbar nicht passiert.Ist "relay/0/10/5/_state" die Rückmeldung als String "OFF"/"ON" ?
-
Es sieht so aus, als wenn du für den Aktor on/off brauchst, oder hast du da nur probiert? Beim Taster ist es scheinbar si, dass da immer "hit" steht, was beim kurzen Druck nur aktualisiert wird und entsprechend beim langen Druck bzw loslassen die anderen beiden Zustände annimmt, oder?
Enrico
-
Wenn ich den Aktor schalte wechselt normalerweise der Wert bei "relay/0/10/5/" von "0"/"1" und zeitgleich der Wert
bei "relay/0/10/5/_state" von "OFF"/"ON".
Beim Drücken des Tasters kommt dieser laut MQTT-Logfile mit einem aktualisierten Zeitstempel an aber mit der gleichen Variable "hit".
Mane
-
Beim Drücken des Tasters kommt dieser laut MQTT-Logfile mit einem aktualisierten Zeitstempel an aber mit der gleichen Variable "hit". `
Dann schau mal den Zeitstempel des Datenpunktes im Reiter "Objekte" an (Mauszeiger über Wert): Wenn der auch aktualisiert wird, muss mit Triggerbedingung "wurde aktualisiert" ausgelöst werden, auch wenn sich der Wert nicht ändert ("hit" bleibt).Wenn der Zeitstempel des Datenpunktes sich nicht entsprechend dem MQTT-Logfile ändert, ist es ein Fehler im Adapter.
-
Wenn ich den Taster drücke passiert gar nichts.
Der Aktor bleibt immer auf null (Deckenlampe aus)….. `
Hallo Mane
Würdest Du bitte den Betreff Deines ersten Beitrags ändern.
Dies hier scheint ja mehr ein Problem mit MQTT zu sein.
Anwender, die ein ähnliches Problem haben, werden, sofern es eine Lösung gibt, die nie unter "Blockly Anfängerfragen" suchen und finden.
So etwas wie "Blockly Problem mit MQTT" o.ä. wäre da besser und könnte auch Anderen hier im Forum helfen.
Eventuell wird auch jemand aufmerksam, der schon eine Lösung hat.
Einfach Deinen ersten Beitrag aufrufen, ändern klicken, Betreff ändern.
Grüße
-
Beim Drücken des Tasters kommt dieser laut MQTT-Logfile mit einem aktualisierten Zeitstempel an aber mit der gleichen Variable "hit". `
Dann schau mal den Zeitstempel des Datenpunktes im Reiter "Objekte" an (Mauszeiger über Wert): Wenn der auch aktualisiert wird, muss mit Triggerbedingung "wurde aktualisiert" ausgelöst werden, auch wenn sich der Wert nicht ändert ("hit" bleibt).Wenn der Zeitstempel des Datenpunktes sich nicht entsprechend dem MQTT-Logfile ändert, ist es ein Fehler im Adapter. `
Der Zeitstempel hat sich seitdem nicht mehr geändert, egal wie oft ich hier den Taster kurz betätigt habe.
Im MQTT-Logfile kommt aber der Zeitstempel der Tasters an.
4819_zeitstempel_0_10_a4.jpg -
Der Zeitstempel hat sich seitdem nicht mehr geändert, egal wie oft ich hier den Taster kurz betätigt habe. `
Wie ist die Adapter-Einstellung "Publish only on change" bzw. "Publish nur bei Änderung" ? -
Das sind die aktuellen MQTT-Einstellungen.
Derzeit ist er auf "Publish nur bei Änderung" eingestellt.
Ich habe das Programm einmal auf einen Fensterkontakt als Lichtschalter umgestellt das "make" und "break" ankommt.
Hier kommt beim Betätigen im Logfile eine Warnung.
Zusätzlich habe ich das Relais mit "0/1" und den Relais_state mit "ON/OFF" eingetragen.
4819_mqtt-einstellung.jpg
4819_logfehle_log.jpg
4819_logfehler_script.jpg -
Derzeit ist er auf "Publish nur bei Änderung" eingestellt. `
Den Haken nimm mal raus ! Dann sollte auch bei kurzem Tastendruck ("hit") getriggert werden.