Ankündigung

Einklappen
Keine Ankündigung bisher.

KNX IP mit Tasmota Nous A1T -> KNX IP Interface notwendig?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    KNX IP mit Tasmota Nous A1T -> KNX IP Interface notwendig?

    Ich wollte heute ausprobieren, einen Tasmota Nous A1T Zwischenstecker über KNX IP anzusprechen. Hierzu bin ich einem YouTube Tutorial gefolgt bis zu dem Punkt, an dem es ums KNX IP Interface ging. Ich hatte vermutet, dass dies im eibPC² verbaut ist, da dieser ja auch einen Ethernetanschluss hat, scheine aber hier falsch gedacht zu haben. Benötige ich zum Ansprechen ein KNX IP Interface, wie das Enertex 1168 KNX IP Secure Interface?

    Was ist der Unterschied zwischen dem IP Interface und dem IP Router?

    Zuletzt geändert von skyynet; 26.12.2023, 00:32.

    #2
    Hi,

    EibPC alleine reicht nicht, weil die Tasmotas das Routing-Protokoll über Multicast sprechen. Der EibPC bietet nur Tunnelling an, ebenso wie die 1168. Wenn dann brauchst du die 1164, um die Telegramme vom Milticast auf TP zu routen.

    Ganz grob: Tunnelling ist eine 1:1-Verbindung, Routing N:N

    Aber: statt die Tasmotas direkt über KNX einzubinden ist es mMn sinnvoller, die über die neuen MQTT-Funktionen einzubinden. Starte auf dem EibPC den Broker, einen Client, und abonniere das Status-Topic der Steckdose. Siehe dazu die anderen Threads.
    ​​​​​​
    ​​​​​

    Kommentar


      #3
      Mach das über mqtt. Das läuft super.

      Hat foobar0815 ganze Arbeit geleistet !
      Wenn jetzt noch coap kommt wäre das spitze,,😜

      Kommentar


        #4
        Danke für beide Antworten. Ich dachte, wenn die Tasmota schon KNX IP beherrscht, probiere ich das mal aus, zumal die ganzen Tasmota Geräte günstiger sind, als KNX RF. MQTT hatte ich auch ursprünglich angedacht. Leider bin ich aus den bisherigen Infos nicht schlau geworden. Ich habe bereits Mosquitto auf der Synology am laufen und kann über MQTT Explorer Relais an- und ausschalten sowie meine Netatmo Daten abrufen.

        Was mir (und vermutlich auch anderen ) so richtig helfen würde, wäre mal ein Video Tutorial, in dem gezeigt wird, wie man MQTT im eibPC aktiviert, ein einfaches Gerät, wie meine Steckdose, einrichtet und dann über einen MeTa per MQTT schaltet und den Zustand auf diesem visualisiert. Vielleicht kann ja mal jemand einfach beschreiben oder im Idealfall filmen, wie man das macht.

        Kommentar


          #5
          Das eigentlich super einfach, les Mal die Anleitung (mach ich auch nicht immer 😜 aber da steht alles für mqtt drin)
          dann lade dir mqtt Explorer runter und schau dir die Telegramme an. Und die metas kannst du dann über Dummy KNX Gruppenadressen steuern. Hab ich auch gemacht.

          Einzige was kompliziert ist wenn du die Tasmotas von verschiedenen Umgebungen (eibpc2, tasmota Webseite, Button am tasmota usw.) Das Synchron halten ist nicht so einfach

          Kommentar


            #6
            Ich hatte bisher gar nicht das aktualisierte Handbuch, jetzt aber heruntergeladen.
            Also erstelle ich im Experten ein neues Programm MQTT. Zum Starten des Brokers nutze ich

            uBrokerStatus=255
            if systemstart() then uBrokerStatus=startmqttbroker(1883u16, 0b01,$leer$,$leer$) endif​
            Eigentlich wollte ich für username & pw eine Variable nutzen, aber wenn ich z.B. username=""; setze bekomme ich einen Fehler. $leer$ funktioniert, ist aber sicherlich nicht richtig. Wenn ich anstatt einer Variablen direkt "" oder '' nutzen will, funktioniert das auch nicht.

            Danach wollte ich den Client starten mit

            mqttclient(host, 1883u16, 0b01, $leer$, $leer$, $leer$, $leer$, $leer$, $leer$)

            wobei ich vorher host="192.168.1.51"; gesetzt hatte. Das ist die IP meines eibPC. Funktioniert nicht. Die EIB IP ist 1.1.1 und wird auch nicht akzeptiert.
            Wie Du siehst, scheitere ich schon an den ganz einfachen Sachen

            Hast Du vielleicht mal ein Beispiel aus Deinem Projekt, an dem ich mich orientieren kann? Da erkenne ich ja auf jeden Fall die Syntax.

            Kommentar


              #7
              Leeres Passwort must $$ machen.
              ich würde aber immer nen Passwort verwenden. Schreib das doch genau wie in der Anleitung. Und ein Beispiel für publish sind als macro angelegt schau Mal in der neusten eibstudio version da gibt es neue macros für Shelley. Als Beispiel. Daraus kannst du dann Tasmota machen :-)

              Kommentar


                #8
                Passwort würde ich setzten, wenn es beim Testen erstmal klappt.
                Nach meinem Verständnis muss ich den MQTT Broker starten, was ich gemacht habe. Danach den MQTT Client starten. Die Anleitung hierzu hat kein Beispiel und ist für mich nicht klar. Ist die EIB IP oder die Ethernet IP des eibPCs als HOST gemeint? Vermutlich EIB IP. Wenn ich host=1.1.1 setzte, wird das akzeptiert, aber bei Nutzung in mqttclient(host, 1883u16, 0b01, $$, $$, $$, $$, $$, $$) bekomme ich einen Fehler. Im Handbuch steht auch was von einer MQTT-Client-ID, die aber in der Syntax von mqttclient() überhaupt nicht vorkommt. Erst wenn beides funktioniert, kann ich doch in der Folge das vmShellyPlugSOnOff Makro nutzen. Bei diesem fehlt mir der gerade angesprochene MQTT Client Hande. Topic Prefix ist klar, Kommando ON/OFF auch. Was der Trigger bewirkt, verstehe ich wieder nicht.

                Obwohl ich gerne MQTT nutzen würde, finde ich die Programmierung so kompliziert, dass ich das Tutorial zu KNX IP deutlich einfacher fand.

                Vielleicht könnte Enertex ja mal etwas in Video Tutorials investieren. Obwohl ich seit vielen Jahren PHP programmiere, tue ich mich mit dem Experten sehr sehr schwer.
                Vielleicht gibt es ja auch mal wieder Angebote mit Online-Schulungen.

                Kommentar


                  #9
                  also einfacher als MQTT gehts wirklich nicht :-)

                  Das ist das was ich für den Broker brauche (User und Passwort habe ich in einer Variable, damit die Passwörter nicht quer durch den Code verteilt sind.

                  Hauptcode:

                  Code:
                  if systemstart() then uBrokerStatus=startmqttbroker(1883u16, 0b01, MQTTUser, MQTTPasswort) endif
                  uMqttHandleEibPC = mqttclient($localhost$, 1883u16, AUS, MQTTUser, MQTTPasswort, TLS_IGNORE_CERT, $$,$$,$$ )
                  ​
                  Code:
                  TasmotaMqttInitPlug(TasmotaT08)
                  TasmotaMqttStatusPlug(TasmotaT08)
                  TasmotaMqttKnxTogglePlug(TasmotaT08,KEY,"Steckdose T.08 (Nuki Bridge Keller Querriegel)-4/7/3",SteckdoseT08ID,SteckdoseT08ID_P)
                  --------------------------------------------------------
                  hier ist nen Macro code für den Plug zum abfragen. Variablen müssen vorher definiert werden.
                  Code:
                  :begin TasmotaMqttStatusPlug(PlugName)
                  :info $Macro.$
                  :shortinfo $Macro.$
                  
                  if  uMqttHandleEibPC > 0 then {
                      iSubscriptionStatus=subscribemqtt(uMqttHandleEibPC, $stat/^PlugName^/LWT$, 0, TasmotaMqtt^PlugName^Lwt);
                      iSubscriptionStatus=subscribemqtt(uMqttHandleEibPC, $stat/^PlugName^/POWER$, 0, TasmotaMqtt^PlugName^Power);
                      iSubscriptionStatus=subscribemqtt(uMqttHandleEibPC, $stat/^PlugName^/STATUS0$, 0, TasmotaMqtt^PlugName^Status0);
                      iSubscriptionStatus=subscribemqtt(uMqttHandleEibPC, $tele/^PlugName^/STATE$, 0, TasmotaMqtt^PlugName^State);
                      iSubscriptionStatus=subscribemqtt(uMqttHandleEibPC, $tele/^PlugName^/SENSOR$, 0, TasmotaMqtt^PlugName^Sensor);
                  } endif
                  
                  if  change(TasmotaMqtt^PlugName^Status0) and TasmotaMqtt^PlugName^Status0 != $$ then {
                      TasmotaMqtt^PlugName^Power=parsejson(TasmotaMqtt^PlugName^Status0, $/StatusSTS/POWER$, $$c7);
                      TasmotaMqtt^PlugName^FirmwareRaw=parsejson(TasmotaMqtt^PlugName^Status0, $/StatusFWR/Version$, $$c20);
                  } endif
                  
                  if  change(TasmotaMqtt^PlugName^State) and TasmotaMqtt^PlugName^State != $$ then {
                      TasmotaMqtt^PlugName^Power=parsejson(TasmotaMqtt^PlugName^State, $/POWER$, $$c7);
                  } endif
                  
                  if (TasmotaMqtt^PlugName^Power == $ON$) or (TasmotaMqtt^PlugName^Power == $OFF$) or cycle(10,00) then {
                      if TasmotaMqtt^PlugName^FirmwareRaw == $Unknown$ then {
                          publishmqtt(uMqttHandleEibPC, $cmnd/^PlugName^/Status0$, 0, 0b01, $$, 0u16);  
                      } endif;
                  } endif
                  
                  :end​
                  zum schalten habe ich ein weiteres Macro:

                  Code:
                  //----------------------------------------------------------------------
                  :begin TasmotaMqttKnxTogglePlug(PlugName,Art,GruppenAdresse,ButtonID,PageID)
                  :info $Macro.$
                  :shortinfo $Macro.$
                  
                  if pbutton(ButtonID,PageID)==1 and (TasmotaMqtt^PlugName^Power == $OFF$) then {
                      Write(GruppenAdresse,EIN)
                  } endif  
                  
                  if pbutton(ButtonID,PageID)==1 and (TasmotaMqtt^PlugName^Power == $ON$) then {
                      write(GruppenAdresse,AUS);
                  } endif  
                  
                  if (TasmotaMqtt^PlugName^Power == $OFF$) then {
                      Write(GruppenAdresse,AUS);
                  } endif  
                  
                  if (TasmotaMqtt^PlugName^Power == $ON$) then {
                      write(GruppenAdresse,EIN);
                  } endif  
                  
                  if (GruppenAdresse == EIN) then {
                      publishmqtt(uMqttHandleEibPC, $cmnd/^PlugName^/POWER$, 0, 0b01, $ON$, 0u16);
                  }endif
                  if (GruppenAdresse == AUS) then {
                      publishmqtt(uMqttHandleEibPC, $cmnd/^PlugName^/POWER$, 0, 0b01, $OFF$, 0u16);
                  }endif
                  
                  if (TasmotaMqtt^PlugName^Power == $OFF$) then {pdisplay(ButtonID,$AUS$,Art,INACTIVE,BLINKRED,PageID)}endif
                  if (TasmotaMqtt^PlugName^Power == $ON$) then {pdisplay(ButtonID,$EIN$,Art,ACTIVE,GREEN,PageID)}endif
                  if (TasmotaMqtt^PlugName^Power == $Unknown$) then {pdisplay(ButtonID,$Unbekannt$,Art,DARKRED,GREY,PageID)}endif
                  
                  :end​
                  für die Variablen

                  Code:
                  //----------------------------------------------------------------------
                  :begin TasmotaMqttInitGlobal(PlugName)
                  :info $Macro.$
                  :shortinfo $Macro.$
                  TasmotaMqtt^PlugName^Lwt=$Unknown$c20
                  TasmotaMqtt^PlugName^Status0=$$c4000
                  TasmotaMqtt^PlugName^Sensor=$$c500
                  TasmotaMqtt^PlugName^State=$$c500
                  TasmotaMqtt^PlugName^FirmwareRaw=$Unknown$c20
                  TasmotaMqtt^PlugName^Firmware=split(TasmotaMqtt^PlugName^FirmwareRaw,0u16,find(TasmotaMqtt^PlugName^FirmwareRaw,$($,0u16)-1u16)
                  
                  :end
                  
                  //----------------------------------------------------------------------
                  :begin TasmotaMqttInitPlug(PlugName)
                  :info $Macro.$
                  :shortinfo $Macro.$
                  
                  TasmotaMqttInitGlobal(PlugName)
                  
                  TasmotaMqtt^PlugName^Power=$Unknown$c7
                  
                  :end​
                  Zuletzt geändert von PharaDOS; 26.12.2023, 17:57.

                  Kommentar


                    #10
                    Vielen Dank. Das ist eine super Hilfe. Ich habe das jetzt mal bei mir eingebaut. Die Buttons des GUI ignoriere ich erstmal und beginne, es über einen MeTa zum Schalten zu bekommen. Der MeTa schaltet über "Licht Wohnen Stehlampe schalten-1/1/26" ON und OFF und schreibt die Rückmeldung in "Licht Wohnen Stehlampe Rückmeldung-1/5/26" (da ich hierzu nichts im Makro gefunden habe, vermutlich eher nicht).

                    Beim PlugName würde ich gerne das Full Topic übergeben. Das lautet bei mir "wohnzimmer/stehlampe".
                    Wenn ich dies mit Anführungszeichen übergebe, bekomme ich beim Kompilieren einen Fehler. Nur "stehlampe" schaltet nicht.
                    Daher habe ich erstmal das Topic und Full Topic auf stehlampe gesetzt.

                    TasmotaMqttKnxTogglePlug(stehlampe,KEY,"Licht Wohnen Stehlampe schalten-1/1/26",StehlampeID,StehlampeID_P)

                    Über den MQTT Explorer kann ich meine Tasmota schalten über wohnzimmer/stehlampe/cmnd/POWER mit Parameter ON oder OFF.

                    Mein MeTa schaltet die Zieladresse 1/1/26 auf 0 und 1 wenn ich ihn betätige.
                    Bisher passiert aber beim Betätigen nichts bei der Tasmota.
                    Was habe ich übersehen?

                    Kommentar


                      #11
                      Ein Schrägstrich kannst du natürlich nicht übergeben. aber du kannst ein weiteren Parameter übergeben, wohnung, stehlampe.
                      musst es dann in den Makros natürlich anpassen.
                      leichter zu testen ist es erstmal über ein Button. danach kannst du mit den Matas und Gruppen Adressen spielen :-)

                      Ein tipp, fang immer einfach an. damit du ein Erfolgserlebnis hast, danach kannst du immer anpassen und alles "verschlimmbessern"
                      So hast du einfach zu viele unbekannte, wo du nicht weist wo es hakt an deiner Programmierung.
                      Zuletzt geändert von PharaDOS; 28.12.2023, 09:22.

                      Kommentar


                        #12
                        Dann belasse ich es bei einem Wort als Topic. Dachte, man könnte es (wie in PHP) maskieren mit einem Backslash o.ä.
                        Ist aber nicht wichtig, weil es eh keiner sieht. Wäre nur ordentlicher für meinen inneren Monk.

                        Eigentlich gehe ich auch immer so ran, wie Du: erstmal ganz einfach und wenn es funktioniert, verbessern.
                        Du machst offensichtlich mehr über die Weboberfläche. Ist bei mir immer erst der zweite Schritt, weil der Rest der Familie nur die MeTas bedient.
                        Dann fummle ich mich mal über den Jahreswechsel etwas ein. Danke Dir auf jeden Fall für die wertvollen Tipps.

                        Kommentar


                          #13
                          Hehe ich hab ja nicht gesagt das du das lassen sollst , das geht, nur solche string Uebergabe darf halt kein / enthalten. Deswegen must du zwei machen und die dann später im macro wieder zusammenfügen und dann mit einen /.

                          NUrr als erstes Bring es zum laufen, deswegen erst als web. Das ist immer einfacher zum testen.
                          Danach geht man an die Sachen ran z.b. Gruppenadressen und dann via meta schalten.

                          Ich schalte auch Sachen über die metas die zum taeglen Gebrauch sind. Alle anderen Sachen die nur selten benutzt werden gehen via Webseite.

                          1.) Gerät zum laufen bringen
                          2.) Einbinden in eibpc2 (Status abfragen)
                          3.) Bedienen via eibpc2 (webseite)
                          4.) Bedienen via KNX Geräte
                          5.) Hybride Bedienung erstellen so das status immer Synchron sind.
                          6.) Finale Lösung solange verbessern (am Ende geht nix mehr) 😄

                          Kommentar

                          Lädt...
                          X