Domoticz: Schalter Per MQTT Triggern

  • Hallo Leute,

    ich habe aus meiner Bastelkiste einen ESP8266, ne 4CH Relaiskarte und ein 433Mhz Receiver Board geholt und daraus einen Sonoff 4CH Pro - Clone gebastelt, auf dem Tasmota werkelt.

    Grundlegend Funktioniert der Clone wie er soll. Der ESP soll aber nicht nur die 4 Relais ansteuern, sondern auch als RF-Bridge dienen und andere 433MHz Befehle auslesen und per MQTT einen entfernten Domoticz Switch steuern.

    Die Umsetzung des RF Signals auf MQTT erfolg mit einer Rule in Tasmota:

    Code
    on RfReceived#Data=0x111111 do Power1 toggle endon
    on Power1#state=1 do publish domoticz/in {"idx": 182, "nvalue": 1 } ENDON
    on Power1#state=0 do publish domoticz/in {"idx": 182, "nvalue": 1 } ENDON

    Nun zu Meinem Problem:

    Der Angesteuerte Switch ist ein Virtueller Schalter im Domoticz, der selber auch per MQTT ein anderes Tasmota-Powered Relais schaltet oder ein lokales Script ansteuern soll.

    Der Status des Schalters wird im Domoticz Dashboard augenblicklich verändert, jedoch der Schaltvorgang selber wird am Ziel nicht ausgeführt.

    Trigger ich den Schaltvorgang direkt über App bzw Website an (Icon) = Alles gut.

    Mein Workaround ist aktuell ein Blockly Script:

    Der RF Befehl aktualisiert einen Virtuelen Schalter im Domoticz und dieser Wiederrum triggert im Script dann den eigentlichen Schalter.

    Code
    Tasmota: 
    on RfReceived#Data=0x111111 do publish domoticz/in {"idx": 182, "nvalue": 1 } ENDON
    
    Domoticz:
    Wenn Dummy-IDX82 = An dann Echter Schalter (An)

    Eija: Triggere ich den MQTT Befehl von einem Tasmota Device direct auf das nächste Tasmota dann wird der schaltvorgang auch ausgeführt.


    Mach ich hier irgendwas falsch? Bzw. Weis wer warum die Schalter zwar vom Status her aktualisiert werden jedoch die aktionen nicht getriggert werden?


    Lg

    Karli

    Einmal editiert, zuletzt von DaKarli (5. Juli 2020 um 20:38) aus folgendem Grund: Code anpassung.

  • Ich mache nichts mehr in Domoticz, aber wenn du Domoticz Devices über MQTT antringerst, musst du wahrscheinlich das Topic domoticz/in in Verbindung mit einem JSON-Ausdruck als message (payload), in dem die zu übermittelnden Werte stehen. Eine Lösung kann ich dir da leider nicht präsentieren. Ich hoffe dich bringt diese Idee weiter.Vielleicht hat mafrei noch eine Idee dazu.

  • Ich mache nichts mehr in Domoticz, ....

    schade ;(

    zum Funk:

    ich habe für den Funkempfänger einen Schalter angelegt der normalerweise Leistung mist. Kommt der Code vom Sender erkennt dieser den und ich kann damit schalten was ich will. Vielleicht schlecht erklärt aber Bild sollte es zeigen, Der Coder muss in Dezimal eingetragen sein nicht in HEX

    Bilder

    grüsse aus Heidelberg

    ca. 100 Tasmota Geräte teilweise mit SML Script.

    Alexa, Sonos, Pilot APP zur Steuerung, Domoticz und TasmoAdmin auf Raspberry mit Docker

  • Ich mache nichts mehr in Domoticz, aber wenn du Domoticz Devices über MQTT antringerst, musst du wahrscheinlich das Topic domoticz/in in Verbindung mit einem JSON-Ausdruck als message (payload), in dem die zu übermittelnden Werte stehen. Eine Lösung kann ich dir da leider nicht präsentieren. Ich hoffe dich bringt diese Idee weiter.Vielleicht hat mafrei noch eine Idee dazu.

    Hallo Joerg,

    danke für die Info... Da habe ich eh den Falschen Quellcode geposted. Ich habe den Richtigen nun ergänzt in meinem Post Oben (mit der JSon Payload).

    Wie gesagt, Domoticz übernimmt instant den neuen Status, jedoch wird der Schaltvorgang nicht getriggert.

    Tasmota zu Domoticz (Status ändert sich, Kein schaltvorgang)

    Code
    // Schlater als Universalldevice ansprechen:
    on Power1#state=1 do publish domoticz/in {"idx": 182, "nvalue": 1 } ENDON
    
    // Schalter als Schalter ansprechen:
    on Power1#state=1 do publish domoticz/in {"command": "switchlight", "idx": 182, "switchcmd": "On" } ENDON

    Tasmota zu Tasmota (Schaltvorgang und Statusänderung)

    Code
    on Power1#state=1 do publish cmnd/idx82/Power1 1 ENDON


    mafrei: Ok, dh. du sendest dir den Empfangenen RF Code zu Domoticz und verarbeitest Ihn dann dort. Ist eigentlich eine Sehr gute Idee - das spart natürlich einiges an Virtuellen Devices. Das muss ich mir mal ansehen. Überträgst du den Code dann per Rule oder wie sieht das auf Tasmota seite aus?


    Lg & Danke

    Karli

    Einmal editiert, zuletzt von DaKarli (5. Juli 2020 um 20:49)

  • schade

    Sagen wir mal so: Domoticz läuft immer noch, aber ich nutze fast nur noch die eingesammelten Daten von Wetter und Stromverbrauch. Ansonsten habe ich das, was ich steuern will, in Python-Skripte verlagert und in letzter Zeit viel Zeit mit der Spracherkennung mycroft (https://mycroft.ai) bzw. Picroft verbracht und bastele an meiner eigenen G*, A* und S* unabhängigen quelloffenen Spracherkennung. D. h. Google ist leider docch an Board, weil deren STT (speech to text) genutzt wird.

  • bei der Sonoff Bridge melde ich die Codes an und setze in Tasmota alle auf die gleiche IDX.

    Dann mit Blockly auswerten.

    Ich nutze auch noch einen Miniempfänger mit dem ESP01. Dieser schaltet dann per Rules.

    Rule1

    on rfreceived#Data=0x575xxx do websend [192.168.x.x] Power 2 endon

    läuft beides perfekt.

    Ich hoffe das hilft weiter :)

    grüsse aus Heidelberg

    ca. 100 Tasmota Geräte teilweise mit SML Script.

    Alexa, Sonos, Pilot APP zur Steuerung, Domoticz und TasmoAdmin auf Raspberry mit Docker

  • mafrei

    1.) Wie du die Codes an Domoticz übermittels ist mir noch nicht ganz klar. Kannst du hier die Rule oder Konfig mir zukommen lassen?

    2.) Den websend Befehl habe ich so noch nicht gekannt - besten dank. Damit kann ich die domoticz switches nun ansprechen und der Schaltvorgang wird umgehend getriggert. Ich versteh zwar nach wie vor nicht warum per MQTT nicht geht, aber der Workaround mit dem Websend anstatt MQTT zu domoticz hat für mich den selben Effekt. Vielen Dank.

  • mafrei

    1.) Wie du die Codes an Domoticz übermittels ist mir noch nicht ganz klar.

    2.) Den websend Befehl habe ich so noch nicht gekannt - besten dank. Damit kann ich die domoticz switches nun ansprechen und der Schaltvorgang wird umgehend getriggert. Ich versteh zwar nach wie vor nicht warum per MQTT nicht geht, aber der Workaround mit dem Websend anstatt MQTT zu domoticz hat für mich den selben Effekt. Vielen Dank.

    zu1. Dies habe ich mit der Sonoff Bridge gemacht, diese in Domoticz als als Stromesser erstellt dann alle sensoren auf die IDX der Bridge setzen (Bilder)

    danach 16 Dummys erstellt und diese dann mit Blockly, wie zuvor gezeigt, ausgewertet,

    2. Syntax zur IDX (aber websend zur IP ist für mich ok)

    http://IP:Port/json.htm?param=switchlight&type=command&idx=XXX&switchcmd=Toggle (oder ON OFF)

    IP und Port auf dem Domoticz läuft

    XXX IDX in Domoticz

    ---------------------------------------------------------------------------------------------------------------------------------------

    Ich hoffe es halbwegs erklärt zu haben.