Ankündigung

Einklappen
Keine Ankündigung bisher.

Nutzt von Euch jemand MQTT mit SmartHomeNG?

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

    #46
    habe noch da im smarthome.log gefunden
    Code:
    2018-02-06  20:43:35 ERROR    Main         plugin 'mqtt' version differs between Python code (1.3c.4) and metadata (1.4.4)
    2018-02-06  21:04:50 INFO     Main         Publishing topic 'stat/sonoff01/cmnd/POWER' for item 'test.power'
    2018-02-06  21:04:50 INFO     Main         Listening on topic 'stat/sonoff01/POWER' for item 'test.status'
    wenn ich sh im debug modus starte und die buttons drücke steht das im log
    Code:
    2018-02-06 21:29:35 DEBUG    __init__     Main         192.168.178.136:57655 sent '{"cmd":"item","id":"","val":"1"}' -- __init__.py:json_parse:379
    2018-02-06 21:29:35 WARNING  __init__     Main         Client 192.168.178.136:57655 want to update invalid item:  -- __init__.py:json_parse:396
    You do not have permission to view this gallery.
    This gallery has 1 photos.
    Zuletzt geändert von schlaubi666; 06.02.2018, 21:30.

    Kommentar


      #47

      Fangen wir mal vorne an:
      1. Von der SV wird kein Wert an shNG übergeben. Das kannst Du auch daran sehen, dass im Backend hinter update durch und geändert durch als Wert init steht. Also wurden die Werte seit der Initialisierung nicht geändert.

        Das liegt daran, dass Du basic.button falsch aufrufst. Da fehlen Anführungszeichen. Daher wird nicht der String "test.power" übergeben sondern SV versucht den Inhalt eine Variablen test.power als Itemnamen zu übergeben (und das ist ein Leerstring)
      2. "plugin 'mqtt' version differs between Python code (1.3c.4) and metadata (1.4.4)" sagt mir, dass Du nicht die aktuellen Plugins benutzt. Der Fehler wurde im Master am 2. Januar gefixt. Diese Fehlermeldung sagt aus, dass das Plugin MQTT nicht geladen wurde.

        Bitte die Plugins updaten.
      Viele Grüße
      Martin

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

      Kommentar


        #48
        Danke Msinn,

        zu 1: manchmal sieht man den Wald vor lauter Bäume nicht .... "" rein und das item wird geupdated ..( auch im post #38 aktualisiert)

        zu 2: ich bin auf master ( 1.3.4) im develop ist 1.4.4, bin jetzt auf develop mit dem mqtt plugin und der Fehler im log ist weg!

        jetzt läuft die Kette smartvisu -> sh.py -> mqtt, we ich das folgende ändere

        nur schalten mit Backend Sonoff.S20_1.Switch_num (1/0) klappt, aber ich bekomme keine Rückmeldung durch die anderen Items
        habe das hier aus einen anderen Thema der sich mit Sonoff beschäftigt ..

        sonoff.yaml
        Code:
        Sonoff:
         S20_1:
          Switch_num:
           type: num
           mqtt_topic_init: cmnd/sonoff01/POWER
          Power_str:
           type: str
           mqtt_topic_in: stat/sonoff01/POWER
           cache: 'yes'
          Power_bool:
           type: bool
           eval: 1 if sh.Sonoff.S20_1.Power_str() == "ON" else 0
           eval_trigger: Sonoff.S20_1.Power_str
           on_update:
             - Sonoff.S20_1.Switch_num = sh.Sonoff.S20_1.Power_bool()
        wenn ich in der smartvisu das mache
        Code:
            {{ basic.flip('flip2', 'Sonoff.S20_1.Switch_num', '1', '0') }}
            {{ basic.value("03","Sonoff.S20_1.Power_str" ) }}
        klappt sogar wenn ich im tasmoto web interface schalte , ich bin fast zufrieden .....
        Zuletzt geändert von schlaubi666; 07.02.2018, 08:45.

        Kommentar


          #49
          Auch das mqtt Plugin im master ist v1.44 (nur in der README steht noch 1.3.4). Da Du den Versionsfehler hattest, kann ich sagen, dass Du beim letzten Update auf shNG v1.42 die Plugins nicht "upgedatet" hast. Du bist nicht mit den aktuellen Plugins unterwegs.

          Ich verstehe Dein Beispiel nicht.

          Zitat von schlaubi666 Beitrag anzeigen
          doch wofür brauche ich Power_str denn
          Das kann ich Dir nicht sagen? Du hast die Kommunkation designed und nur Du kennst Die MQTT Telegramme die hin und her gehen.
          Viele Grüße
          Martin

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

          Kommentar


            #50
            Schneide doch mal mit einem Tool wie MQTT-Spy den Telegrammverkehr mit.
            Viele Grüße
            Martin

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

            Kommentar


              #51
              habe es nur abgeschaut, aber es läuft wie es soll, dann muss ich es auch nicht komplett verstehen

              Kommentar


                #52
                schlaubi666
                Ich stelle meine Config hier vor. Da haben dann alle was davon.

                Also ich nutze das MQTT Plugin für die Einbindung von SONOFF Geräten mit Tamsmota Firmware. Als Broker arbeitet mosquitto auf der gleichen Maschine wie shNG. Die SONOFF sind mit der englischen Version der Firmware geflashed. (Die Sprache hat Einfluss auf die Messages)
                Damit sehen sie Messages beispielhaft wie folgt aus:
                Code:
                {'Time': '2018-01-19T21:24:11', 'Uptime': 294, 'Wifi': {'SSId': 'WLAN-Access', 'AP': 1, 'RSSI': 60, 'APMac': 'C0:25:06:15:95:57'}, 'Vcc': 3.442, 'POWER': 'OFF'}
                Mein Plugin.yaml dazu:
                Code:
                mqtt:
                    class_name: Mqtt
                    class_path: plugins.mqtt
                    host: 'localhost'
                    # port: 1883
                    # qos: 1
                    # last_will_topic: 'shng/$online'
                    # last_will_payload: False
                    # birth_topic: 'shng/$online'
                    # birth_payload: True
                
                    # user: None                 # username (or None)
                    # password: None             # password (or None)
                    # hashed_password: 1245a9633edf47b7091f37c4d294b5be5a9936c81 ...    
                    # === The following parameters are not yet implemented:
                    # publish_items: no          # NEW: publish using item-path
                    # items_topic_prefix: 'shng' # NEW: prefix for publishing items     
                    # acl: pub                   # NEW: access control (none, pub, sub, pubsub)
                    # tls: None                  # use TLS version (v1 or None)
                    # ca_certs: '/etc/...'       # path to the Certificate Authority certificate files
                Meine item.yaml für einen Basic und einen S20 (Am Basis hängt am GPIO14 noch ein DS18B20 TempSensor):
                Code:
                Sonoff:
                    Basic_1:
                        Switch_bool:
                            type: bool
                            mqtt_topic_init: cmnd/sonoff_1/POWER
                        Switch_num:
                            type: num
                            mqtt_topic_init: cmnd/sonoff_1/POWER
                            crontab:
                              - sunset+1 = 1
                              - 45 22 * * = 0
                              - 55 05 * * = 1
                              - 20 07 * * = 0
                        Power_str:
                            type: str
                            mqtt_topic_in: stat/sonoff_1/POWER
                            cache: 'yes'
                        Temp_dict:
                            type: dict
                            mqtt_topic_in: tele/sonoff_1/SENSOR
                            cache: 'yes'
                            #{'DS18B20': {'Temperature': 12.4}, 'Time': '2017-12-29T11:58:51', 'TempUnit': 'C'}
                            Temp:
                                type: num
                                eval: sh.Sonoff.Basic_1.Temp_dict()['DS18B20']['Temperature']
                                eval_trigger: Sonoff.Basic_1.Temp_dict
                            TempUnit:
                                type: str
                                eval: sh.Sonoff.Basic_1.Temp_dict()['TempUnit']
                                eval_trigger: Sonoff.Basic_1.Temp_dict
                        Status_dict:
                            type: dict
                            mqtt_topic_in: tele/sonoff_1/STATE
                            cache: 'yes'
                            #{'Uptime': 1, 'Wifi': {'SSId': 'WLAN-Access', 'AP': 1, 'APMac': 'C0:25:06:15:95:57', 'RSSI': 22}, 'Time': '2017-12-29T12:03:55', 'Vcc': 3.181, 'POWER': 'OFF'}
                            Voltage:
                                type: num
                                eval: sh.Sonoff.Basic_1.Status_dict()['Vcc']
                                eval_trigger: ..
                            Power:
                                type: str
                                eval: sh.Sonoff.Basic_1.Status_dict()['POWER']
                                eval_trigger: ..
                #           SSId:
                #                type: str
                #                eval: value['Wifi']['SSId']
                #                eval_trigger: Sonoff.Basic_1.Status_dict
                            Valid:
                                type: bool
                                name: SONOFF sendet noch
                                eval: (value != '$$!!%%')
                                eval_trigger: ..
                                autotimer: 600 = $$!!%%  
                #        Uptime_dict:
                #            type: dict
                #            mqtt_topic_in: tele/sonoff_1/UPTIME
                            #{'Uptime': 1, 'Time': '2017-12-29T12:02:00'}
                
                    S20_1:
                        Switch_bool:
                            type: bool
                            mqtt_topic_init: cmnd/sonoff_s20/POWER
                        Switch_num:
                            type: num
                            mqtt_topic_init: cmnd/sonoff_s20/POWER
                            crontab:
                              - sunset+1 = 1
                              - 45 22 * * = 0
                              - 55 05 * * = 1
                              - 20 07 * * = 0              
                        Power_str:
                            type: str
                            mqtt_topic_in: stat/sonoff_s20/POWER
                            cache: 'yes'
                        Status_dict:
                            type: dict
                            mqtt_topic_in: tele/sonoff_s20/STATE
                            cache: 'yes'
                            #{'Time': '2018-01-19T21:24:11', 'Uptime': 294, 'Wifi': {'SSId': 'WLAN-Access', 'AP': 1, 'RSSI': 60, 'APMac': 'C0:25:06:15:95:57'}, 'Vcc': 3.442, 'POWER': 'OFF'}
                            Voltage:
                                type: num
                                eval: sh.Sonoff.S20_1.Status_dict()['Vcc']
                                eval_trigger: Sonoff.S20_1.Status_dict
                            Power:
                                type: str
                                eval: sh.Sonoff.S20_1.Status_dict()['POWER']
                                eval_trigger: Sonoff.S20_1.Status_dict
                            Valid:
                                type: bool
                                name: SONOFF sendet noch
                                eval: (value != '$$!!%%')
                                eval_trigger: ..
                                autotimer: 600 = $$!!%%    
                        Info1_dict:
                            type: dict
                            mqtt_topic_in: tele/sonoff_s20/INFO1
                            #{"Module":"S20 Socket","Version":"5.10.0","RückgriffTopic":"DVES_80FB57","GroupTopic":"sonoffs"}
                        Info2_dict:
                            type: dict
                            mqtt_topic_in: tele/sonoff_s20/INFO2
                            #{"WebServerMode":"Admin","Hostname":"sonoff_s20-6999","IPAddress":"192.168.2.129"}
                        Info3_dict:
                            type: dict
                            mqtt_topic_in: tele/sonoff_s20/INFO3
                            #{"RestartReason":"Software/System restart"}
                Zur Erklärung:
                • Switch_bool: Schalten mit einem boolschen Item (0,1 bzw. true and false) (geht nur mit englischer Firmware)
                • Switch_num: Schalten mit numerischen Item: 0 - Aus, 1 - An, 2 - Um
                • Power_str: Nach dem Empfang eines Schaltbefehlt antwortet der SONOFF mit seinem PowerStatus als str (on / off)
                • Status_dict: In definierten Abständen sendet der SONOFF seinen Status. Dabei ist die Reihenfolge der Infos variable. Ich lese das als dict ein. Mit den Items darunter wird das dict in die Einzelinfos "zerlegt"
                • Info1_dict etc: Weitere Infos von SONOFF; kommen nur beim Boot.
                • Valid: Ist ein Watchdog, der prüft, ob der SONOFF noch lebt; lebt bedeutet, es kommt in weniger als 600s ein Statusupdate.
                Das das ganze Geheimnis.

                Was mich stört ist, dass Senden und Empfangen auf verschiedenen "Adressen" läuft, als mqtt_in anders ist als mqtt_out. Damt braucht man für Schalten und Status 2 Items, was mich dann in der Visu stört.

                Ich werden daher die SONOFFs anders einbinden. Hier wird an einer direkten Einbindung des SONOFF (im allgemeinen eines ESP8266) in KNX gearbeitet. Das passt für mich besser.

                Viel Spaß und Erfolg damit

                Kommentar

                Lädt...
                X