Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues MQTT Plugin

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

    Zitat von element Beitrag anzeigen
    eval: {"state":"(sh.eg.wohnen.licht.decke.dimmen())"}
    Dein eval Ausdruck ist ungültig. Das hätte Dir auch der eval Syntax checker verraten, wenn Du den Ausdruck da mal eingegeben hättest.
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      Das habe ich. Ich muss aber gestehen, das ich erst lernen muss damit umzugehen. Ich hatte das Item falsch eingestellt.
      Der eval Syntax Checker gibt mir genau denselben Ausdruck zurück ohne ihn umzuwandeln. Und das es sich um ein dict handelt. Ich wusste nicht wie der Checker arbeitet, da er den Wert aber nicht umwandelt und er das wohl sollte mache ich also immer noch etwas falsch.
      Ich brauche einen Tip wo ich finde wie ich es richtig eingeben muss oder ein Beispiel.
      Ich habe bereits Sylvester und Neujahr nach einer Lösung gesucht und immer wieder probiert und smarthome immer wieder neu gestartet. Ich frage weil ich nicht weiter weiß, nicht um eure Geduld zu testen.
      Ich will mir eine Sprachsteuerung mit mehreren items bauen. Dazu benötige ich das das mqtt Plugin die payloads in dieser vorgegebenen Form liefert, " { "state":"itemwert"} " ohne die äußeren Gänsefüßchen. Bei bool items hatte ich mir geholfen indem ich mit If und else den kompletten Ausdruck evaluiert habe, jetzt benötige ich aber die Eingabe des itemwertes in die mqtt- payloads, und das bekomme ich nicht hin.

      Kommentar


        Ja, nur wenn Du im eval
        Code:
        "(sh.eg.wohnen.licht.decke.dimmen())"
        schreibst, erhältst Du halt einen String mit Inhalt
        Code:
        (sh.eg.wohnen.licht.decke.dimmen())
        und nicht den Wert des Items.

        Du musst das schon ohne die Anführungszeichen machen und im eval Ausdruck einen String zusammenbauen, der genau eine String Representation des dicts enthält, also statt

        Code:
         {"state":"(sh.eg.wohnen.licht.decke.dimmen())"}
        so was wie:
        Code:
        {"state": sh.eg.wohnen.licht.decke.dimmen()}
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          Zitat von TCr82 Beitrag anzeigen
          Nur die Items mit dem Typ Dict werden nicht auf den Broker geschrieben
          Hi, hat auch jemand eine Idee zu meinem Problem? Irgendwas was man am Broker umstellen muß oder zufällig ein Fehler im Plugin (zb. bzgl. der Typumwandlung) oder einfach unsupported?

          Gruß

          Kommentar


            Wie schreibst Du die Daten denn in das Item? Was zeigt die Admin GUI als aktuellen Wert?

            Zur Meldung im Broker Log: Wie häufig erscheint denn der Log Eintrag? Wie hast Du das Websocket Modul konfiguriert?
            Viele Grüße
            Martin

            There is no cloud. It's only someone else's computer.

            Kommentar


              Zitat von Msinn Beitrag anzeigen
              Wie schreibst Du die Daten denn in das Item?
              Das Viessmann Plugin auf dem heizungs-RaspberryPi schreibt das Item.

              Zitat von Msinn Beitrag anzeigen
              Was zeigt die Admin GUI als aktuellen Wert?
              Zitat von TCr82 Beitrag anzeigen
              Wenn ich über das Admin-Interface mir den Wert des Items ansehe ist dieser wie folgt:

              Code:
              {'lastvalue': '0', 'sunset': '16:37', 'list': [{'time': '04:00', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '1', 'active': True}, {'time': '04:30', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'active': True}, {'time': '07:30', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '1', 'active': True}, {'time': '09:00', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'active': True}, {'time': '14:30', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '1', 'active': True}, {'time': '15:00', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'active': True}, {'time': '17:00', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '1', 'active': True}, {'time': '22:00', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'active': True}], 'active': True, 'interpolation': {'initage': '', 'initialized': True, 'itemtype': 'bool', 'interval': '', 'type': 'none'}, 'sunrise': '08:23'}
              Zitat von Msinn Beitrag anzeigen
              Zur Meldung im Broker Log: Wie häufig erscheint denn der Log Eintrag?
              wenn man das Log betrachet, das sind wohl Timestamps, sieht wohl ziemlich unregelmäßig aus....
              1609504860 = 1. January 2021 12:41:00
              1609506138 = 1. January 2021 13:02:18
              1609507133 = 1. January 2021 13:18:53
              1609514825 = 1. January 2021 15:27:05
              1609516643 = 1. January 2021 15:57:23
              1609516865 = 1. January 2021 16:01:05
              1609516982 = 1. January 2021 16:03:02
              1609517040 = 1. January 2021 16:04:00

              Kann sein, dass die Meldung jedesmal kommt, wenn ich shNG neu gestartet habe und das Plugin den Wert in das Item geschrieben hat.

              Zitat von Msinn Beitrag anzeigen
              Wie hast Du das Websocket Modul konfiguriert?
              Du meinst das Plugin visu_websocket oder was?

              Gruß

              Kommentar


                Zitat von Msinn Beitrag anzeigen
                Wie hast Du das Websocket Modul konfiguriert?
                Da du Modul sagtest und dort websocket mit drin ist, hänge ich einfach mal meine module.yaml an:

                Code:
                root@heizung:/usr/local/smarthome# cat etc/module.yaml
                %YAML 1.1
                ---
                # etc/module.yaml
                # support for web server
                http:
                    module_name: http
                    starturl: admin
                
                # support for graphical admin interface
                admin:
                    module_name: admin
                
                #enable, if mqtt protocol is going to be used
                mqtt:
                    module_name: mqtt
                    broker_monitoring: true
                    broker_host: zentrale.fritz.box
                    last_will_topic: devices/shng-module/$online
                    last_will_payload: 'False'
                    birth_topic: devices/shng-module/$online
                    birth_payload: 'True'
                
                websocket:
                    module_name: websocket

                Kommentar


                  Zitat von TCr82 Beitrag anzeigen
                  Kann sein, dass die Meldung jedesmal kommt, wenn ich shNG neu gestartet habe und das Plugin den Wert in das Item geschrieben hat.
                  Ich habe das eben nochmal direkt getestet. Und zwar kommt die Meldung wohl, wenn ich shNG neu startet, aber denke beim beenden, nicht nach dem starten.

                  Das zeigt dass Logfile:

                  1609771731: Socket error on client heizung.MQTT-module, disconnecting.
                  1609771742: New connection from 192.168.99.30 on port 1883.
                  Ist dann wohl eher zu vernachlässigen.

                  Ich erstelle gleich mal noch ein Debug Log, wenn ich das konfiguriert bekomme.

                  Kommentar


                    Code:
                    root@heizung:~# grep Schaltzeiten /usr/local/smarthome/var/log/smarthome-develop.log |  grep -v -e Betriebsart -e Heizen
                    2021-01-04 15:49:10 INFO     __init__          Main         Loaded Application Timer {'Timer_Warmwasser': {'item': Item: technik.heizung.WW.Schaltzeiten, 'commandcodes': ['2100', '2108', '2110', '2118', '2120', '2128', '2130']}}  --  (__init__.py:parse_item:216)
                    2021-01-04 15:49:10 INFO     __init__          Main         Loaded Application Timer {'Timer_Warmwasser': {'item': Item: technik.heizung.WW.Schaltzeiten, 'commandcodes': ['2100', '2108', '2110', '2118', '2120', '2128', '2130']}, 'Timer_A1M1': {'item': Item: technik.heizung.HK1.Schaltzeiten, 'commandcodes': ['2000', '2008', '2010', '2018', '2020', '2028', '2030']}}  --  (__init__.py:parse_item:216)
                    2021-01-04 15:49:10 INFO     __init__          Main         Loaded Application Timer {'Timer_Warmwasser': {'item': Item: technik.heizung.WW.Schaltzeiten, 'commandcodes': ['2100', '2108', '2110', '2118', '2120', '2128', '2130']}, 'Timer_A1M1': {'item': Item: technik.heizung.HK1.Schaltzeiten, 'commandcodes': ['2000', '2008', '2010', '2018', '2020', '2028', '2030']}, 'Timer_M2': {'item': Item: technik.heizung.HK2.Schaltzeiten, 'commandcodes': ['3000', '3008', '3010', '3018', '3020', '3028', '3030']}}  --  (__init__.py:parse_item:216)
                    2021-01-04 15:56:26 DEBUG    __init__          Main         parsing item: technik.heizung.WW.Schaltzeiten  --  (__init__.py:parse_item:143)
                    2021-01-04 15:56:26 DEBUG    __init__          Main         (parsing result): item.conf '{'viess_timer': 'Timer_Warmwasser', 'viess_init': True, 'mqtt_topic_init': 'Heizung/WW/Schaltzeiten', 'mqtt_retain': 'True', 'mqtt_topic_out': 'Heizung/WW/Schaltzeiten'}'  --  (__init__.py:parse_item:170)
                    2021-01-04 15:56:26 DEBUG    __init__          Main         parsing item: technik.heizung.HK1.Schaltzeiten  --  (__init__.py:parse_item:143)
                    2021-01-04 15:56:26 DEBUG    __init__          Main         (parsing result): item.conf '{'viess_timer': 'Timer_A1M1', 'viess_init': True, 'mqtt_topic_init': 'Heizung/HK1/Schaltzeiten', 'mqtt_retain': 'True', 'mqtt_topic_out': 'Heizung/HK1/Schaltzeiten'}'  --  (__init__.py:parse_item:170)
                    2021-01-04 15:56:26 DEBUG    __init__          Main         parsing item: technik.heizung.HK2.Schaltzeiten  --  (__init__.py:parse_item:143)
                    2021-01-04 15:56:26 DEBUG    __init__          Main         (parsing result): item.conf '{'viess_timer': 'Timer_M2', 'viess_init': True, 'mqtt_topic': 'Heizung/HK2/Schaltzeiten', 'mqtt_retain': 'True', 'mqtt_topic_in': 'Heizung/HK2/Schaltzeiten', 'mqtt_topic_out': 'Heizung/HK2/Schaltzeiten'}'  --  (__init__.py:parse_item:170)
                    2021-01-04 15:56:26 INFO     __init__          Main         Publishing topic 'Heizung/HK2/Schaltzeiten' (when needed) for item 'technik.heizung.HK2.Schaltzeiten'  --  (__init__.py:parse_item:186)
                    2021-01-04 15:56:27 INFO     mqttplugin        mqtt         _start_subscription: Subscribing to topic Heizung/HK2/Schaltzeiten, payload_type 'dict' for item technik.heizung.HK2.Schaltzeiten (callback=<bound method MqttPlugin._on_mqtt_message of <plugins.mqtt.Mqtt2 object at 0xa680d190>>)  --  (mqttplugin.py:_start_subscription:109)
                    2021-01-04 15:56:27 INFO     __init__          mqtt         subscribe_topic: Adding topic 'Heizung/HK2/Schaltzeiten'  --  (__init__.py:subscribe_topic:412)
                    2021-01-04 15:56:27 INFO     __init__          mqtt         _add_subscription_definition: Plugin 'mqtt-5' is subscribing to topic 'Heizung/HK2/Schaltzeiten'  --  (__init__.py:_add_subscription_definition:367)
                    2021-01-04 15:56:27 INFO     __init__          mqtt         subscribe_topic: mqtt module is subscribing to topic 'Heizung/HK2/Schaltzeiten' with qos=1 at broker (result=0, mid=18)  --  (__init__.py:subscribe_topic:427)
                    Wobei es aber eigentlich erstmal nur um das Item technik.heizung.WW.Schaltzeiten bzw dem Topic
                    Heizung/WW/Schaltzeiten geht
                    Zuletzt geändert von TCr82; 04.01.2021, 16:27.

                    Kommentar


                      Sieht fast so aus, als wenn das mqtt plugin das Item einfach ignoriert, da es nicht im Logfile auftaucht mit dem grep Filter

                      Kommentar


                        Danke für die Hilfe, es ist nicht das erste Mal das ich Probleme mit Zeichen und Klammern habe.
                        Das item wird aber nicht getriggert. Ich hänge mal die yaml und das was smarthome daraus macht an.
                        Code:
                        eg:
                            wohnen:
                                licht:
                                    decke:
                                        schalten:
                                            type: bool
                                            visu_acl: rw
                                            knx_dpt: 1
                                            knx_init: 1/1/173
                                            knx_listen: 1/1/173
                                            knx_send: 1/1/170
                                            webservices_set: 'doorpi'
                                            webservices_data: 'val'
                        
                                        nacht:
                                            type: bool
                                            knx_dpt: 1
                                            knx_init: 1/1/179
                                            knx_listen: 1/1/179
                                            nachdimm_wert: 1
                        
                                            helligkeit:
                                                type: num
                                                visu_acl: rw
                                                knx_dpt: 5
                                                knx_cache: 1/1/172
                                                enforce_updates: 'yes'
                                                knx_send: 1/1/172
                        
                                        dimmen:
                                            type: num
                                            visu_acl: rw
                                            knx_dpt: '5'
                                            knx_init: 1/1/174
                                            knx_listen: 1/1/174
                                            knx_send: 1/1/172
                                            webservices_set: 'doorpi'
                                            webservices_data: 'full'
                        
                                            mqtt_in:
                                                type: dict
                                                mqtt_topic_in: "sepia/smart-devices/wohnen/licht/decke/dimmen"
                                                on_change:
                                                  - eg.wohnen.licht.decke.dimmen = value['state']
                        
                                            mqtt_out:
                                                type: dict
                                                mqtt_topic_out: "sepia/smart-devices/wohnen/licht/decke/dimmen"
                                                eval_trigger: eg.wohnen.licht.decke.dimmen
                                                eval: {"state" : sh.eg.wohnen.licht.decke.dimmen()}


                        Ich glaube die Bildung eines neuen items ist nicht normal, im item mqtt_out ist die Zeile eval leer, die Zeile eval_trigger ist mit dem richtigen trigger gefüllt.
                        Ich habe im yaml file die Zeilen getauscht, das eval_trigger vor eval steht, das bringt aber nichts.
                        Ich kann den Wert {"state":6} im mqtt_out eingeben und aktualisieren-> der Wert wird gesendet und in der sepia Sprachsteuerung auch verstanden.
                        Im mqtt_out.eval steht unter
                        Plugin spezifische Konfiguration
                        state mit dem Wert sh.eg.wohnen.licht.decke.dimmen()
                        ​​​​
                        stelle ich das item mqtt_out auf type num ein passiert dasselbe. Ich hatte das dicht im Verdacht das zu verursachen.
                        Jetzt vermute ich, das der Doppelpunkt im {"state": sh.eg.wohnen.licht.decke.dimmen()} das neue item erzeugt.
                        Stehe wieder auf dem Schlauch und brauche noch einen Rat.

                        Kommentar


                          Zitat von TCr82 Beitrag anzeigen
                          Wobei es aber eigentlich erstmal nur um das Item technik.heizung.WW.Schaltzeiten bzw dem Topic
                          Heizung/WW/Schaltzeiten geht
                          TCr82 wie sind die Items denn definiert?
                          Viele Grüße
                          Martin

                          There is no cloud. It's only someone else's computer.

                          Kommentar


                            Zitat von element Beitrag anzeigen
                            Ich glaube die Bildung eines neuen items ist nicht normal, im item mqtt_out ist die Zeile eval leer, die Zeile eval_trigger ist mit dem richtigen trigger gefüllt.
                            Das stimmt, Du kannst das in YAML nicht so definieren. Deine Definition
                            Code:
                                               mqtt_out:
                                                    type: dict
                                                    mqtt_topic_out: "sepia/smart-devices/wohnen/licht/decke/dimmen"
                                                    eval_trigger: eg.wohnen.licht.decke.dimmen
                                                    eval: {"state" : sh.eg.wohnen.licht.decke.dimmen()}
                            wird beim Einlesen verändert, da geschweifte Klammern YAML Sytnax sind, den Du statt Einrückung verwenden kannst. Das sieht dann so aus:
                            Code:
                                               mqtt_out:
                                                    type: dict
                                                    mqtt_topic_out: "sepia/smart-devices/wohnen/licht/decke/dimmen"
                                                    eval_trigger: eg.wohnen.licht.decke.dimmen
                                                    eval:
                                                        state: sh.eg.wohnen.licht.decke.dimmen()
                            eval ist leer wird Dir im Item-Tree als Item dargestellt, dass ein Attribut state hat.

                            eval muss einen String enthalten.

                            Du müsstest den Ausdruck in Anführungszeichen setzen:

                            Code:
                            eval: '{"state" : sh.eg.wohnen.licht.decke.dimmen()}'
                            oder
                            Code:
                            eval: "{'state' : sh.eg.wohnen.licht.decke.dimmen()}"
                            Viele Grüße
                            Martin

                            There is no cloud. It's only someone else's computer.

                            Kommentar


                              Danke
                              es klappt

                              Kommentar


                                Zitat von Msinn Beitrag anzeigen
                                TCr82 wie sind die Items denn definiert?
                                Hab ich hier schon geschrieben
                                https://knx-user-forum.de/forum/supp...91#post1591991

                                EDIT:

                                Die Definition sieht man auch auch nochmal bei "(parsing result): item.conf '{'viess_timer': 'Timer_Warmwasser',....." in dem Debug-Log was ich gepostet habe.

                                Und ich habe eben auch mal ein enforce_updates: yes mit dazu gebaut, aber das hat leider auch nichts geändert.
                                Zuletzt geändert von TCr82; 04.01.2021, 19:07.

                                Kommentar

                                Lädt...
                                X