Ankündigung

Einklappen
Keine Ankündigung bisher.

MQTT - Shelly 1 Plus

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

    MQTT - Shelly 1 Plus

    Hallo, als MQTT - newbie habe ich Schwierigkeiten den Einstieg in die Thematik zu finden. Ich möchte lediglich den Status des Aktors auf den KNX Bus bringen.

    Das Makro sieht ein wenig merkwürdig aus. Ich kann bei mir keine Parameter eintragen. Die Suche hier im Forum als auch die Anleitung des EibPC bringen mich nicht wirklich weiter. Vielleicht hat ja jemand ein paar Hinweise für den Einstieg.

    Vielen Dank!

    image.png

    #2
    Hi,

    das Macro selbst bildet nur den Status.

    Schau mal in Visu unter Funktionen, da kannst du die Verknüpfung für die Gruppenadressen hinterlegen und hast auch gleich noch ne Statusanzeige in der Visu:
    image.png
    Den Client-Handle bekommst du, indem du entweder den Rückgabewert der Funktion mqttclient im Experten einer Variablen zuweist oder das gleiche in der Logik machst.

    Beispiel:
    Code:
    uBrokerStatus=255
    if systemstart() then uBrokerStatus=startmqttbroker(1883u16, AUS, $benutzer$, $passwort$) endif
    
    uMqttHandleEibPC = mqttclient($localhost$, 1883u16, AUS, $benutzer$, $passwort$, TLS_IGNORE_CERT, $$,$$,$$ )​

    Kommentar


      #3
      foobar0815, danke für die Aufklärung / Hinweise. Konnte ich mit Deiner Hilfe so einrichten.

      Keine Möglichkeit habe ich gesehen, über diesen Weg nur den Schalter zu nutzen /anzuzeigen und die anderen Statusobjekte auszuschalten bzw. nicht zur Anzeige zu bringen. Da geht wahrscheinlich nur über den Experten-Modus.

      Kommentar


        #4
        Aktuell ja, oder mit manuellen Abonnieren der MQTT-Topics.

        Kommentar


          #5
          foobar0815, ich habe über zwei Wege die manuelle Einbindung versucht. Leider ohne Erfolg.

          Einmal über das vorhandene Makro "Shelly Plus Plug S Status" als auch über den folgenden Code:

          (Update: Code ist so nun funktional)

          uBrokerStatus=255
          if systemstart() then uBrokerStatus=startmqttbroker(1883u16, AUS, $eibpc$, $geheim$) endif

          uMqttHandleEibPC = mqttclient($localhost$, 1883u16, AUS, $eibpc$, $geheim$, TLS_IGNORE_CERT, $$,$$,$$ )

          zStatus=$$
          iSubscriptionStatus=0u08
          if uMqttHandleEibPC > 0 then {
          iSubscriptionStatus=subscribemqtt(uMqttHandleEibPC , $shellyplus1-441793a8c860/status/switch:0$, 1u08, zStatus);
          } endif

          shellyplus1_OnOff = $$c4
          shellyplus1_Temp = 0.0f16
          if change(zStatus) and size(zStatus) > 0u16 then {
          shellyplus1_OnOff=parsejson(zStatus, $/output$c0, $$c4);
          shellyplus1_Temp=convert(parsejson(zStatus, $/temperature/tC$c0, $$c16), shellyplus1_Temp);
          } endif

          if shellyplus1_OnOff == $fals$ then write("Shelly Plus1 WZ - Ein/Aus-10/4/0", AUS) endif
          if shellyplus1_OnOff == $true$ then write("Shelly Plus1 WZ - Ein/Aus-10/4/0", EIN) endif
          if change(shellyplus1_Temp) then write ("Shelly Plus1 WZ - Temp-10/4/1", shellyplus1_Temp) endif
          Ich scheitere schon daran, dass ich das Topic für mein Shelly Plus 1 nicht identifizieren kann
          Das Makro nutzt "zShellyMqttTopicPrefix+$/status/switch:0$c0", im Internet finde ich "shellies/shellyplus1-441793a8c860/relay/0".

          Im Debugger fällt auf, dass uMqttHandleEibPC auf "0" bleibt. D.h. ich komme nicht die if Abfrage mit subscribemqtt.

          Über ein paar Hinweise wäre ich dankbar.
          Zuletzt geändert von JAK; 04.06.2024, 06:08.

          Kommentar


            #6
            Die aktuelle Firmware hast du drauf, oder?

            Welchen Wert hat denn uBrokerStatus?

            Prüfe, ob der MQTT-Broker auch funktioniert. Dazu zB. mit MQTT Explorer auf den EibPC verbinden.



            Kommentar


              #7
              Neuste Firmware ist drauf, uBrokerStatus ist "0" und im MQTT Explorer erfolgen auch updates beim Schalten oder einer Temperaturänderung
              Variable "zStatus" bleibt allerdings leer und uMqttHandle bleibt immer auf "1".

              Die Befehle zum Parsen habe ich dem Makro entnommen. Bin mir hier aber auch unsicher, ob das so richtig ist. Schrägstriche sehe ich im MQTT Explorer "output" und "temperature" jedenfalls nicht.

              Angehängte Dateien
              Zuletzt geändert von JAK; 03.06.2024, 20:57.

              Kommentar


                #8
                uHandle auf 1 passt, die werden einfach durchnummeriert und müssen >0 sein.

                Was nicht passt, ist das Topic. Im Code hast du shellies/shellyplus1... und laut MQTT Explorer wird der Status mit dem Topic shellyplus1... ohne shellies/ published.

                ​​​

                Kommentar


                  #9
                  Die Schrägstriche dienen beim Parsen von Json-Objekten der Referenzierung von Werten innerhalb des Objekts, siehe parsejson im Handbuch.

                  Kommentar


                    #10
                    Zitat von foobar0815 Beitrag anzeigen
                    uHandle auf 1 passt, die werden einfach durchnummeriert und müssen >0 sein.

                    Was nicht passt, ist das Topic. Im Code hast du shellies/shellyplus1... und laut MQTT Explorer wird der Status mit dem Topic shellyplus1... ohne shellies/ published.

                    ​​​
                    Vielen Dank für den Hinweis. Musste das Topic aber zusätzlich noch wie folgt ändern.
                    $shellyplus1-441793a8c860/status/switch:0$

                    Hinweis: Code oben ist aktualisiert.

                    Kommentar


                      #11
                      Ich muss mich mit der Shelly MQTT Anbindung nochmal melden, da ich ein sehr instabiles Verhalten habe.
                      Für die Visualisierung mit dem EibPC2 habe ich in der ETS pro Relais eine GA für das Ein/Aus Schalten (10/5/0) und eine GA für den Status (10/4/0, siehe Code oben) angelegt.

                      Nach der Programmierung scheint die Funktion einwandfrei gegeben zu sein. Mit dem Button - Umschalten kann ich die Relais ein- und ausschalten und auch der Status wird sauber zurückgemeldet wie auch für Power, Temperatur & Energie.

                      if "Shelly Plus1 WZ - Ein/Aus-10/5/0" == EIN \\
                      then publishmqtt(uMqttHandleEibPC, $shellyplus1-441793a8c860/command/switch:0$c0, 1, 0b01, $on$, 0u16);\\
                      endif
                      if "Shelly Plus1 WZ - Ein/Aus-10/5/0" == AUS \\
                      then publishmqtt(uMqttHandleEibPC, $shellyplus1-441793a8c860/command/switch:0$c0, 1, 0b01, $off$, 0u16);\\
                      endif​
                      Nach einiger Zeit, kann ich die Relais zwar noch bedienen, doch die Statusanzeige wird nicht mehr aktualisiert, obwohl ich auf dem Bus sehe, dass die GA für den Status auch beschrieben wird.



                      Hinweis: die Gruppenadressen in der ETS haben kein KO. Könnte das Problem dadurch verursacht werden?​ Sollte man in diesem Fall die Einbindung der Shelly's über im EibPC angelegten Variablen umsetzen?
                      Zuletzt geändert von JAK; 31.07.2024, 18:39.

                      Kommentar


                        #12
                        Die Bilder gehen beim Editieren leider gerne mal kaputt.

                        ​​​Was zeigen die GAs im Debugger? Steht was im Eventlog?

                        Kommentar


                          #13
                          die GA im Debugger habe ich noch nicht gecheckt. Aber sowohl der Gruppenmonitor in der ETS als auch im EibPC zeigen das die GA für den Status beschrieben werden.
                          Eventlog = Ereignisse?

                          image.png
                          Ich habe aber mittlerweile festgestellt, dass auch andere "Schalter" in der Visu nicht aktualisiert werden, die rein auf KNX Level beschrieben werden. Vielleicht hängt das Problem mit den ständigen Verbindungsaufbau zusammen, welches ich in einem anderem Post beschrieben habe
                          Zuletzt geändert von JAK; 31.07.2024, 19:26.

                          Kommentar

                          Lädt...
                          X