UDP von Tasmota über Rule an Loxone senden

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • harryb
    Smart Home'r
    • 05.11.2018
    • 55

    #1

    UDP von Tasmota über Rule an Loxone senden

    Hallo, ich weiß, ich bin hier vermutlich nicht (ganz) richtig, aber vielleicht kann mir doch jemand auf die Schnelle einen Tip geben. Die Suche hat mich hierzu leider nicht weitergebracht.

    Ich habe verschiedene Geräte mit Tasmota im Einsatz und lass mir die z.B. Sensordaten per UDP an Loxone senden. Solange Tasmota die erforderlichen Daten im Report mitschickt, ist das ja auch kein Problem. Bei einem ESP32 will ich den Tasterzustand in Loxone empfangen. Allerdings erhalte ich den Status vom Taster leider nicht mit übermittelt.
    Nun habe ich versucht, das ganze dadurch zu lösen, dass ich eine Rule erstelle, in der mir Tasmota bei Statusänderung auf 1 oder 0 jeweils eine Mitteilung an Loxone sendet.
    Es gibt hier wohl das Comand "websend", das einen http-Befehl schicken kann und das Comand "do publish", das über mqtt kommuniziert. Ich wollte aber ehrlich gesagt auf http verzichten und mqtt hab ich nicht mehr im System verfügbar.
    Ich stell grad alles auf UDP um und dann sollte es - so hab ich es zumindest verstanden - mit dem Comand "sendTo" funktionieren.
    Befehle nachbauen und umstellen kann ich mittlerweile, allerdings komm ich als Tasmota-Anfänger mit dem Aufbau von ganz neuen Regeln (Rule) nicht ganz klar wenn ich da nicht irgend ein ähnliches Beispiel finde. Und google hat mich da nicht wirklich erhellt.

    Kann mir jemand kurz erklären, wie ich den sendTo-Befehl aufbauen muss.

    Soweit bin ich schon:
    Rule1 on switch1#state=1 do sendTo ......... endon on switch1#state=0 do sentTo ......... endon

    Aber was kommt da hin, wo ich die .......... geschrieben habe? Da müsste ich doch die IP und den UDP-Empfangs-Port vom Miniserver und UDP-Eingang irgendwie eintragen, gefolgt von dem Text den ich senden möchte (z.B. "Taste1=1" bzw. "Taste1=0"). Muss ich IP:Port in irgendwelche Klammern oder Hochkomma setzen?

    In der Befehlserkennung in Loxone könnte ich dann das "Taste1=\v" oder ggf. "Tast1=\1") eintragen.
    Oder denke ich da ggf. falsch, und sendTo kann gar nichts über UDP senden? Dann bliebe mir tatsächlich nur wieder http.

    Ich bin für jede Anregung dankbar.
    Viele Grüße
  • svethi
    Lebende Foren Legende
    • 25.08.2015
    • 6313

    #2
    Hier geht es ja rein um Tasmota. Da macht es sicher mehr Sinn derartige Fragen in einem Tasmota-Forum zu stellen
    Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

    Kommentar

    • Labmaster
      Lox Guru
      • 20.01.2017
      • 2574

      #3
      Um UDP von Tasmota aus zu senden wirst du Berry Scripting brauchen, daß muß in der verwendeten Tasmota Firmware aktiviert sein.
      Berry Scripting wird meines Wissen auch nur auf ESP32 und nicht auf ES82xx unterstützt.
      Und ja du mußt da wie in der Tasmota Doku zum Berry Scripting dort auch IP des Miniservers und einen passenden Port angeben auf welchen der Virtuelle Eingang am Miniserver konfiguriert wurde. (In der Loxone Config kann man eingehende Nachrichten im UDP Monitor für debugging sehen)

      Auszug aus der Tasmoty Berry Doku:
      Code:
      > u = udp()
      > u.begin("", 2000) # listen on all interfaces, port 2000
      true
      > u.send("192.168.1.10", 2000, bytes("414243")) # send 'ABC' to 192.168.1.10:2000, source port is 2000
      true​

      Kommentar

      • harryb
        Smart Home'r
        • 05.11.2018
        • 55

        #4
        @svethi: deshalb hatte ich ja angemerkt, dass ich vermutlich hier im Forum nicht ganz richtig bin. Allerdings bin ich im Tasmota-Forum nicht weitergekommen.
        aber trotzdem danke für den Hinweis. Hätt ja sein können, dass ich das nicht in Erwägung gezogen habe

        @Labmaster: habs mir fast schon gedacht, hatte aber trotzdem die Hoffnung noch nicht ganz aufgegeben
        Naja, dann muss es halt anders funktionieren.

        Nachdems mit UDP vom ESP8266 aus wohl nicht funktioniert und ich das mit dem Berry Scripting nicht kenne hab ich mal einen anderen Versuch gewagt und siehe da, es klappt auch anders.
        Für alle die´s ggf. interessiert, hier mein Lösungsweg:

        Zunächst Tasmota konfigurieren:
        Im Bereich Logging als "log level" jeweils "2 Info" auswählen -> ehrlich gesagt weiß ich nicht, ob das für meinen Weg eine Auswirkung hat, ich habs jedenfalls so eingetragen
        Als Syslog host die IP vom Miniserver eintragen (ohne vorangestelltes http://)
        Als Syslog port den Port eintragen, auf den der UDP-Eingang in der Config "hören" soll
        Als Telemetry period 0 (Zahl Null) eintragen, so geht nicht automatischen periodisch eine Meldung raus. (Stichwort: Ressourcen schonen)

        Dann übers Hauptmenü in Tasmota zur "Console" wechseln

        Um die Statusänderung vom Taster zum Miniserver zu senden habe ich dann über das Command "websend" in der Rule das Kommando "missbraucht".

        Die Regel sieht bei mir so aus:
        Rule1 on switch1#state=1 do websend [irgendeineIP] StatusTaste1=1 endon on switch1#state=0 websend [irgendeineIP] SatusTaste1=0 endon

        Welche IP ihr bei irgendeineIP verwendet ist letztendlich egal, solange dahinter kein echter Befehl (ähnlich /dev/sps/io/VIx.....) gesendet wird. Denn dann käms evtl. zur Fehlermeldung oder Fehlfunktion von dem IP-Zielgerät.
        Die eckigen Klammern sind aber erforderlich.
        Die Rule dann noch mit "Rule1 1" aktivieren.

        Das ganze bewirkt, dass tatsächlich im Miniserver beim UDP-Eingang mit dem entsprechenden Port der Text "Taste1=1" ankommt.

        Im Miniserver dann einen Virtuellen UDP Eingang mit dem entsprechenden Port anlegen, auf den er "hören" soll (siehe oben).
        Dann einen UDP-Eingangsbefehl anlegen.
        Als Befehlserkennung beispielhaft eintragen "StatusTaste1=\1" ohne die Hochkomma versteht sich
        Bitte beachten, das \1 gehört zur Funktion der Befehlserkennung (ähnlich \v) und hat nichts mit der 1 hinter dem = in der Rule zu tun.
        Den Eingang NICHT als Digitaleingang konfigurieren.
        Der Eingang kann aber trotzdem z.B. am Lichtbaustein so verwendet werden, als sei es ein Digitaleingang. Also einfach "ranghängen"
        Loxone nimmt anscheinend die als Text gesendete 1 bzw. 0 und interpretiert sie so, als käme ein digtitales on/1- bzw. off/0-Signal.

        Ich kann zwar nicht erklären, wie die Kommunikation trotz nicht ganz korrekter Konfiguration von Tasmota funktioniert, ist mir aber ehrlich gesagt auch nicht so wichtig.

        Kommentar


        • svethi
          svethi kommentierte
          Kommentar bearbeiten
          Dass Du da im Tasmota-Forum nicht weiterkommest, hätte ich jetzt nicht gedacht.
      Lädt...