NEWS
Sonoff mit Node-RED und Tasmota MQTT - zu blöde?
-
Hallo,
folgendes Szenario will ich umsetzen und scheitere aktuell:
[Shelly Plug S auf Tasmota 10] --> [MQTT] --> [IO Broker mit sonoff] <-- [NodeRed] <-- [node-red-contrib-sonoff-tasmota] <-- [Switch On/Off]
Ich kann per Objekt Value-Schalter in IOBroker den Shelly schalten. Auch kommen die MQTT Meldungen an wenn ich am Shelly direkt in Tasmota schalte.
Wenn ich jedoch versuche per NodeRED ein MQTT abzusetzen, passiert nix. Habe schon alle möglichen Varianten versucht. Im Log von Sonoff kommt alles an, aber er schaltet nicht.
Komisch ist auch, wenn ich versuche per NodeRED z.B. direkt das IOBroker Objekt z.B. POWER zu schalten, geht das auch nicht.
Was mach ich falsch? Hier die Logs und Screenshots:--> Das hier geht nicht. Kommt von NodeRED
sonoff.0
652250 2021-11-19 17:23:38.097 debug [mqtt_96ef0e63.0735b] Received: cmnd/tasmota_EF36F4/power = ONsonoff.0
652250 2021-11-19 17:23:35.720 debug [mqtt_96ef0e63.0735b] Received: cmnd/tasmota_EF36F4/power = OFFsonoff.0
652250 2021-11-19 17:23:30.854 debug [mqtt_96ef0e63.0735b] Received: cmnd/tasmota_EF36F4/power = ONsonoff.0
652250 2021-11-19 17:23:29.246 debug [mqtt_96ef0e63.0735b] Received: cmnd/tasmota_EF36F4/power = OFF--> Das hier ist direkt in IOBroker geschaltet
sonoff.0
652250 2021-11-19 18:12:55.205 debug stateChange sonoff.0.tasmota_EF36F4.POWER: {"val":true,"ack":true,"ts":1637341975204,"q":0,"from":"system.adapter.sonoff.0","user":"system.user.admin","lc":1637341975204}sonoff.0
652250 2021-11-19 18:12:55.202 debug process task: {"type":"addObject","id":"sonoff.0.tasmota_EF36F4.POWER","data":{"_id":"sonoff.0.tasmota_EF36F4.POWER","common":{"type":"boolean","role":"switch","read":true,"write":true,"storeMap":true,"name":"tasmota_EF36F4 POWER"},"native":{},"type":"state"}}sonoff.0
652250 2021-11-19 18:12:55.202 debug updateState sonoff.0.tasmota_EF36F4.POWER - 1sonoff.0
652250 2021-11-19 18:12:55.202 debug [tasmota_EF36F4] Received: stat/tasmota_EF36F4/POWER = ONsonoff.0
652250 2021-11-19 18:12:55.201 debug [tasmota_EF36F4] Received: stat/tasmota_EF36F4/RESULT = {"POWER":"ON"}sonoff.0
652250 2021-11-19 18:12:50.804 debug Client [tasmota_EF36F4] pingreq
Systemdata Hardwaresystem: Proxmox VM Arbeitsspeicher: 8GB Festplattenart: SSD 150GB Betriebssystem: Ubuntu 20.10 IO Broker: 3.3.18 Nodejs-Version: 15.12.0 NPM-Version: 7.6.3 Installationsart: Skript Image genutzt: Nein -
Na ja wie immer - versucht man den sonoff Adapter als MQTT Adapter zu nutzen - das geht in meinen Augen immer schief. Warum schreibst Du nicht ganz normal via iobroker-out in die DP des Sonoff Adapters?
-
@rob-0 Hi, verstehe ich das richtig, du nutzt den Sonoff Adapter in Iobroker und den Node Red Adapter in Iobroker und zusätzlich noch Mqtt Node in Node Red?
Wenn du den Sonoff Adapter benutzt brauchst du eigentlich keine Mqtt Node mehr in Node Red, sondern benutzt die Iobroker Input und Output Nodes. In den Output Nodes wählst du dann den Power Datenpunkt des Tasmota Gerätes aus bzw. kannst Ihn auch aus der Objekte Liste kopieren und einfügen. Und da muss du dann boolean true oder false senden, nicht on off.
Edit: @mickym Überschnitten
-
@frankyboy73 sagte in Sonoff mit Node-RED und Tasmota MQTT - zu blöde?:
Und da muss du dann true oder false senden, nicht on off.
Wieder so ein Punkt warum ich den SONOFF Adapter nicht mag und meine Tasmotas über MQTT schalte. Ist das denn dokumentiert? - Dann ist das im SONOFF Adapter ein Boolean DP anstelle eines Strings - na ja wie gesagt, wenn ein Adapter anfängt Dinge zu interpretieren, kann man die Tasmota Dokumentation eh in die Tonne treten.
Ich schalte jedenfalls via on und off
-
@mickym Hi, keine Ahnung ob das dokumentiert ist. Ich nutze den Sonoff Adapter auch, hatte ihn schon vor meinen Node Red Zeiten als ich noch mit Blockly gearbeitet habe und bin daran hängen geblieben, wahrscheinlich weil bei mir alles gut damit funktioniert und ich mich nicht damit beschäftigt habe das komplett auf Node Red umzustellen.
Edit:
Ich weiß gar nicht mehr genau wie das war, müsste ich testen, kann sein das ON und Off auch geht, das checke ich mal. -
@frankyboy73 sagte in Sonoff mit Node-RED und Tasmota MQTT - zu blöde?:
Edit:
Ich weiß gar nicht mehr genau wie das war, müsste ich testen, kann sein das ON und Off auch geht, das checke ich mal.Wahrscheinlich wird immer eingeschaltet, da wenn der Wert nicht 0 ist, dann wird es als true interpretiert.
-
@mickym sagte in Sonoff mit Node-RED und Tasmota MQTT - zu blöde?:
Wahrscheinlich wird immer eingeschaltet, da wenn der Wert nicht 0 ist, dann wird es als true interpretiert.
Da hast du recht, wenn ich nen String sende wird immer eingeschaltet. Mit Number 0 kann man ausschalten.
-
@frankyboy73 sagte in Sonoff mit Node-RED und Tasmota MQTT - zu blöde?:
@mickym sagte in Sonoff mit Node-RED und Tasmota MQTT - zu blöde?:
Wahrscheinlich wird immer eingeschaltet, da wenn der Wert nicht 0 ist, dann wird es als true interpretiert.
Da hast du recht, wenn ich nen String sende wird immer eingeschaltet. Mit Number 0 kann man ausschalten.
Na dann ist doch alles klar - danke für Deine Hilfe. Nachdem ich keinen sonoff-Adapter Installiert habe noch installieren werde, hat Deine Bestätigung @Rob-0 sicher geholfen und er wird nun true oder false senden oder halt mal auf richtiges MQTT umstellen.
-
@mickym Hi das hab ich auch versucht. Geht nicht. Wenn ich auf das Objekt per NodeRED schreibe tut sich nix. In IOBroker kann ich im Objektbrowser POWER auf true/false setzen und das geht. Das war zuerst auch mein Workaraound.
Versteht nur nicht so ganz warum im Log exakt das gleiche von NodeRED ankommt aber dann nicht schaltet.
-
@rob-0 Nochmal wenn Du alles gelesen hast - sonoff Adapter ist kein MQTT - schreibe mit iobroker out true und false und nicht on, off und im Node Red natürlich ein boolean und kein Text true oder false. Und wie gesagt - wenn Du weitere Tasmota Geräte steuern willst - und es sind keine sonoff Geräte - ersetze den Adaper gegen originales MQTT. So kannst Du nämlich die gesamte Tasmota Doku in der Pfeife rauchen. Und wenn Du alle Beitäge gelesen hast, verstehst Du auch warum Du nicht schaltest, weil der Adapter einfach jeden String in true übersetzt.
-
@mickym OK dann hab ich das falsch verstanden. Ich Check jetzt noch mal den IOBroker Out.
-
@mickym Schon klar, Boolean true/
@frankyboy73 said in Sonoff mit Node-RED und Tasmota MQTT - zu blöde?:
n
So jetzt noch mal kurz zur Architektur. Ich habe mehrere Tasmota Geräte, sowohl div. ESP als auch Shellys die ich auf Tasmota flashen will. KNX ist im ganzen Haus drin und Tasmota soll punktuell ein paar Dinge ergänzen. IOBroker hängt schon zentral drin und KNX geht ohne Probleme. Mit NodeRED will ich die Logik und Verknüpfung der KNX Welt mit Tasmota, Alexa, und anderen IoT Geräte durchführen.
Ich fass noch mal zusammen:
1.) Tasmota mit Sonoff und dann direkt das Objekt schalten (geht jetzt, hatte ein Fehler). Kein MQTT auf Sonoff Broker!
oder
2.) Tasmonate mit MQTT Broker nativ ohne sonoff. Was bietet sich da am besten an?
Merci übrigens für die extrem schnellen und breiten Antworten
-
@rob-0 Ich empfehle Dir Original MQTT für alles was MQTT spricht. Ich brauche keinerlei Adapter für alles was MQTT spricht - ich kritisiere das, weil das einfach eine Fehlerquelle ist. Wenn schon solche Adapter, die meinen sie müssen JSON Strings von MQTT in einzelne Datenpunkte schreiben, dann sollten diese auch anbieten sich an einen vorhandenen Broker anzuschließen. Ansonsten brauchst Du für jeden Adapter der über mqtt kommuniziert und dann diese Nachrichten interpretierert eigene Ports - einfach unsinnig.
Mein MQTT deckt den owntracks, Shelly und Sonoff Adapter ab.
Da der MQTT Adapter als Broker ein Problem hat, würde ich Dir mosquitto empfehlen - da sammelt sich alles - dann mqtt-Adapter als Client der alles subscribed und published. mqtt-topics subscribed also # und published mqtt.0.*
Das Einzige was Du halt bei mqtt für einen Nachteil hast, du musst die Topics auf die ein Gerät hört, sprich (das wurde ja nicht vorher gepublished) selbst publishen. Das geht entweder indem Du einen weiteren mqtt Client nimmst oder halt die Datenpunte selbst erstellst. Für Tasmota empfiehlt sich unter Windows der Tasmota Device Manager mit dem DU in Deinem mqtt Broker die Datenpunkte erstellst.
Bsp. Shellies:
Bsp Tasmota:
Meine Logik ist nur mit Node Red implementiert. Ich schreibe nur mit den iobroker in und out Nodes - da wenn Du den Node Red Adapter richtig einstellst auch verschiedene Datentypen rauskommen, während Du über die mqtt Nodes nur Strings aus herausbekommst. Ist zwar theoretisch eine Fehlerquelle - aber Du musst halt nicht alles konvertieren. Wie gesagt musst aber auch die Stringkonvertierung im Adapter ausschalten - wahrscheinlich hat man dieses Option als Default drin, um das Verhalten analog zu den mqtt-Nodes gleich zu machen. Theoretisch kannst aber sowohl die mqtt-Nodes als auch die iobroker Nodes zur Kommunikation verwenden. Am Anfang habe ich noch alle mit mqtt Nodes gemacht, aber seitdem die iobroker in Nodes nun auch mit Wildcards wie die mqtt Node funktionieren - stelle ich bei Bedarf zu iobroker out Nodes um.