NEWS
(gelöst) Ikea FB, Wert erkennen und MQTT Befehl senden
-
Hallo zusammen, ich bin blutiger Anfänger in Bezug auf Blockly und hoffe hier Hilfe zu bekommen.
Ich möchte die Werte, die die 5 Tasten Fernbedienung von IKEA sendet auswerten und jeweils einen anderen Befehl per MQTT an einen mit Tasmota geflashten D1 mini senden.
Die Werte der einzelnen Tasten (1002, 2002 usw.) werden an einem Datenpunkt empfangen.
Nun meine Fragen:
Ich vermute, ich benötige 5 einzelne Blockly Scripte um 5 unterschiedliche Ergebnisse zu bekommen, ist das richtig?
Wie, also mit welchen Blöcken, kann ich die Auswertung der Werte vornehmen? (ich habe schon etliches versucht, leider ohne Erfolg)
Wie bekomme ich es hin, dass das Ergebniss der Auswertung dann per mqtt an den D1 mini gesendet wird? Auch dafür wäre es schön, wenn mir jemand denn benötigten Block sagen könnte.
Optimal wäre es wenn vielleicht jemand so einen oder ähnlichen Aufbau hat und mir einen Sceenshot zeigen könnte. -
@thrusty
Darf ich fragen warum man immst du nicht den sonoff Adapter?
Dann müsstest du dich nicht mit MQTT rumschlagen.
Geht sicher auch, aber damit kenne ich mich nicht aus. -
@muchul
Denn Sonoff Adapter habe ich installiert. Das hilft mir aber nicht weiter. Ich möchte je nach gemeldeten Wert der FB ein anderes Ergebnis erzielen, also einen jeweils anderen Befehl an den D1 mine senden, bzw. an die Console des Tasmota Gerätes. -
-
@thrusty
Jep das machst du mit dem blokly ja dann auch.
Input x=Output x
Es sei denn du hast dafür am sonoff keine Datenpunkte. -
@paul53
Danke, das ist schon mal eine Teilantwort für meine Probleme.
Ich werde das mal so versuchen.
Nun müsste ich nur noch wissen wie ich das Ergebnis dann per mqtt weiter senden kann.
An dem Tasmota Gerät, wohin das Ergebnis gesendet werden soll, hängt ein Display (ssdssd1351). Dieses Display hat keinen Datenpunkt, also scheint es im muss zwingent mqtt verwenden, bloß wie?
Ich finde keinen Ansatz wie das geht. -
@thrusty Du sendest über mqtt nichts an Dein Tasmota Gerät, sondern Du sendest via Blockly etwas an Deinen MQTT-Broker. Das Tasmota Gerät hört auf bestimmte Datenpunkte in Deinem MQTT-Broker und zwar auf alle die unter dem CMND Ast liegen.
Die musst Du falls sie fehlen ggf. neu anlegen und zwar unter der Instanz Deines mqtt Adapters als Broker oder im mqtt-Broker
Falls kein geeigneter DP verfügbar ist, dann kannst Du jeden Tasmota-Befehl im backlog Datenpunkt absetzen, das ist als ob Du unter Tasmota den Befehl in der Konsole absetzt. Du kannst damit auch mehrere Befehle auf einmal absetzen, in dem Du die Befehle mit Strichpunkt trennst. Diese werden dann quasi im Batch Betrieb nacheinander abgearbeitet.
Dieses Display hat keinen Datenpunkt, also scheint es im muss zwingent mqtt verwenden, bloß wie?
Das ist schon nun mehrfach hier thematisiert worden, dass man auch im mqtt-Adapter selbst Datenpunkte anlegen können muss - da diese ja nicht von Anfang an da sind.
Die Namen unter dem cmnd Ast für die verschiedenen Datenpunkte entsprechen in der Regel immer den Commandos - wie im Tasmota beschrieben: https://tasmota.github.io/docs/Commands/
In Deinem Fall musst Du wahrscheinlich einen Datenpunkt: DisplayText anlegen und dort den Text reinschreiben, den Du anzeigen willst:
Ausserdem musst Du anscheinend auch Dein Display Modell setzen:
Hier findest DU unter Pkt. 9 wohl, das von Dir verwendete Model.
-
@mickym
Danke für deine Antwort.
Inzwischen habe ich das ganze nochmal mit dem mqtt Adapter ausprobiert und siehe da, dort gibt es einen Ordner Namens CMND. Und in diesem Ordner existiert auch mein Display mit dem Datenpunkt "Displaytext".Das mit dem Display und Tasmota funktioniert schon länger. Ich nutzte es bisher von pimatic aus. Wenn ich in der Console zB folgendes eingebe:
DisplayText [zOs2c1l1f0Ci2]Rolladen 2[s2c1l3f0Ci3]Schlaf-[s2c1l5f0Ci10]zimmer
Dann bekomme ich die formatierte Ausgabe auf dem Display.
Wie sollte die Eingabe an dem Datenpunkt aussehen? Bisher habe ich über den Datenpunkt keine Anzeige auf dem Display hinbekommen.
Wenn du mir vielleicht mal die korekte Eingabe zeigen würdest?Edit:
Ich habe gerade festgestellt, auch an keinem anderen mqtt Gerät kann ich über den Datenpunkt ein Payload senden. Das Problem muss irgendwo anders liegen. Stehe gerade auf dem Schlauch was das Problem angeht. Der mqtt Adapter ist als Client mit einem externen Mosquitto Broker verbunden. Und die Verbindung steht, laut des VerbindungsTests. -
@thrusty Ich habe auch den mqtt-Adapter als Client eingerichtet. Wenn man den Adapter als Frontend verwendet, dann kannst nochmal Deine mqtt-Einstellungen überprüfen. Bei mir sind in diesem Fall, alle Optionen aus:
Die States die Du publizierst, müssen halt Deiner Instanz entsprechen. Also wenn Deine mqtt-Instanz 0 ist ,dann ist die Maske zum Publizieren bei Dir mqtt.*.0
Wenn Du dann im iobroker - den Datenpunkt selbst eingibst, dann musst halt auch im Log schauen, ob es Fehler gibt.
Um zu überprüfen, ob die Daten Dein mosquitto Broker erreichen, musst halt ggf. noch mit einem weiteren mqtt-Client überprüfen.
In dem DisplayText Punkt unter dem cmnd Ast - sollte dann nur der Inhalt geschrieben werden - also ohne DisplayText voran:
[zOs2c1l1f0Ci2]Rolladen 2[s2c1l3f0Ci3]Schlaf-[s2c1l5f0Ci10]zimmer
Wenn Du den ganzen Befehl eingeben willst, so wie Du es oben beschrieben hast, dann musst Du diesen in den backlog Datenpunkt eingeben.
DisplayText [zOs2c1l1f0Ci2]Rolladen 2[s2c1l3f0Ci3]Schlaf-[s2c1l5f0Ci10]zimmer
In der Regel siehst Du auch auf der Tasmota Konsole welche mqtt-Punkte dann nach Befehlseingabe aktualisiert werden.
Sprich Du siehst welches Kommando (CMD) ich eingegeben habe und darauf spukt die Konsole aus, welche Datenpunkte im mqtt dann aktualisiert werden.
Und wie gesagt, fehlende Datenpunkte unter dem CMND Ast musst halt manuell anlegen.
-
@mickym
Das mit dem Display habe ich nun hin bekommen. Das Problem lag an der Maske zum Publizieren. Meine mqtt Instanz ist 1, in der Maske stand 0. Danke für den Tip. Das Display kann ich nun über den Datenpunkt ansteuern. Vielen Dank.Nun habe ich noch eine Fragen.
Das mit den Datenpunkten anlegen habe ich hinbekommen. Zumindest für das Display hat es geklappt.
Nur warum ich die beiden Shutter nicht über die CMND Datenpunkte erreiche ist mir ein Rätsel. Der eigegebene Wert bei ShutterPosition wird nicht übermittelt. Hast du vielleicht noch einen Tip? Unter den Punkt "state" sehe ich das beide online sind und die aktuelle Position. -
@thrusty Nun ehrlich gesagt verstehe ich die Struktur nicht. Eigentlich darf in dem Pfad nicht Eigene Punkte drinstehen, die Struktur müsste eigentlich wie im Namen aussehen. Mich wundert, dass das mit dem Display funktioniert. Hast Du den mqtt-Adapter, der nur als Client funktioniert oder den, den ich unten im Screenshot gezeigt habe und der sowohl als Client wie als Broker definiert werden kann?
Wichtig ist halt zu prüfen:
- Kommt aus dem iobroker das was Du dort in einem DP änderst auch im mosquitto an?
- Ist der mqtt-Pfad richtig, da das Tasmota -Gerät ja nur auf einen bestimmten Pfad hört:
Der Name und der Pfad müssen natürlich über einstimmen mit dem, was Du bei den Clients eingetragen hast, also %topic%/%prefix usw.
Nachdem Du nun gepostet hast, was Du für einen Adapter nutzt, dann muss die Struktur natürlich so sein, wie von Tasmota erwartet und nicht in einem Verzeichnis "Eigene Punkte" liegen. Auch wenn der Name passt, wundert mich das eher, dass es bei Display funktioniert hat. Also meines Erachtens muss backlog etc. immer eine Ebene höher. Das auf was Tasmota hört ist ja fix in der Struktur und richtet sich danach, was Du im Tasmota konfiguriert hast.
-
@mickym
Direkt unter den jeweiligen Ordner (zb ssd1351) konnte ich kein Datenpunkte anlegen, da hatte ich als einzige Option einen Ordner zu erstellen.Ich benutze diesen mqtt Broker:
Denn kann ich als Client und als Host einstellen. -
@thrusty Poste auch nochmal Deine mqtt-Einstellungen, so wie ich unten.
-
@thrusty sagte in Ikea Fernbedinung, Wert erkennen und MQTT Befehl senden:
Direkt unter den jeweiligen Ordner (zb ssd1351) konnte ich kein Datenpunkte anlegen, da hatte ich als einzige Option einen Ordner zu erstellen.
Oh das ist dieser schreckliche Admin5 Mist.
- Dazu gibt es schon ein Issue. Dann bleibt Dir nichts anderes übrig, als nochmal Deinen Admin zumindest bis das gelöst ist auf Admin4 umzustellen.
Browser Refresh - dann kannst die Datenpunkte wieder richtig erstellen. Kannst wenn Du das gemacht hast - wieder zurückdrehen. Ansonsten musst Du über einen anderen mqtt-Client diese Datenpunkte erstellen. Wenn Du unter Windows arbeitest - kannst Du das ggf- auch mit dem Tasmota Device Manager den nutze ich
-
@mickym
Du hast recht, mit diesem Topic kann es nicht funktionieren.
Hier sind die Einstellungen:
Ich werde die Admin Einstellungen mal ändern. Danke dafür.
-
@thrusty Ich hab das hier schon lang und breit moniert: https://forum.iobroker.net/topic/46814/admin5-ich-kann-keine-objekte-mehr-manuell-anlegen/367
und hier nochmal weiter ausführlich diskutiert: https://forum.iobroker.net/topic/46851/datenpunkte-allgemein-und
und inzwischen gibt es auch ein issue diesbezgl.
https://github.com/ioBroker/ioBroker.admin/issues/1067
Tut mir leid, dass Dich das nun so getroffen hat.
Ansonsten passen Deine Einstellungen
- ich habe exakt diesselben und bei mir funktioniert es, wenn die Datenpunkte an der richtigen Stelle sind.
-
@mickym
Muss dir ja nicht leid tun. Jedenfalls nett das du mir da in Gange hilfst.
Shutter2 (da war der Punkt ShutterPosition vom System angelegtworden) funktioniert nun. Bei Shutter1 habe ich den Punkt angelegt, das läuft noch nicht.
Bei dem funktioniert es aber über Backlog. Hatte ich auch selbst angelegt. -
@thrusty Schau mal, dass der Name auch den MQTT Regeln entspricht - Slash statt Punkt
-
@mickym
Oh ja, du hast Recht. Hatte ich übersehen.
Ok, die Ikea FB funktioniert, die Rolläden funktionieren, das Display funktioniert, nun will ich mal schauen dass ich das ganze mit Blockly verbinde.
-
@thrusty Na wenn Du manuell was da reinschreibst und es funktioniert, dann sollte es auch mit Deiner Logikmaschine (Blockly, JS, NR) gehen.