Ankündigung

Einklappen
Keine Ankündigung bisher.

Zigbee Sensoren via zigbee2mqtt Plugin an SmartHomeNG

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

    #16
    Ach sooo-.. Werde ich gleich ändern. Und: Ich hatte die 16 GB Speicherkarte einfach von einem Image des produktiven Raspi-Geräts aufgespielt. Aber ich habe raspi-config nicht laufengelassen hier auf dem Test-Raspi... Werde ich auch noch nachholen... Ich bin nun bis 17 Uhr weg, melde mich danach wieder :-)

    Kommentar


      #17
      Hatte Shelly vorgeschlagen, aber war für deine Anwendung doch Quatsch

      Kommentar


        #18
        Das mit den Logs ist nun klar: Ich sollte mir hat schon die letzte Seite oben auf der Logübersicht anzeigen lassen..... :-)
        Was ich aber habe, sind massenweise Einträge alle 20 Sekunden (!) im smarthome-warnings.log wie diese da:

        2021-11-15 13:32:49 WARNING lib.network Connection closed by peer 127.0.0.1

        Update: Der Grund war, dass der Tunnel des Siemens IP-KNX-Routers nur 1 Device zur Kommunikation zulässt. Nach Abschalten des produktiven Raspis's sind diese Einträge nun verschwunden!

        Dafür läuft es jetzt aber korrekt ab in Sachen ZigBEE!!
        Ich erhalte im Item Baum bei den Werten jeweils die EInträge, welche ZigBEE übermittelt: Also beim click: single, double,hold,release. Bei action nur dann etwas, wenn ich länger drücke, also hold und release!
        Zuletzt geändert von devau; 15.11.2021, 18:02.

        Kommentar


          #19
          Mittlerweile kann ich auch ein knx-Licht ein/ausschalten mit etwas Hilfslogik, da ja nur ein "single" übermittelt wird bei einem Tastendruck. Via Autotimer setze ich dann den Wert bei "click" wieder zurück. Das gibt zwar die folgende Warnung, aber es funktioniert trotzdem:

          WARNING plugins.priv_tasmota update_item: ZB.Switch.X54EB.click, trying to change item in SmartHomeNG that is read only in tasmota device (by Autotimer)

          Code:
          # ZB.Switch.X54EB.yaml
          ZB:
              Switch:
                  X54EB:
                      click:
                          type: str
                          tasmota_topic: tasmota_A8D079
                          tasmota_zb_device: SWITCH1
                          tasmota_zb_attr: click
                          autotimer: 10 = ''
                          on_change:
                          - ZB.Switch.X54EB.trigger_H = 1 if sh..self() == 'single' and sh.OG.Buero.Licht.Decke.schalten() == 0 else None
                          - ZB.Switch.X54EB.trigger_L = 1 if sh..self() == 'single' and sh.OG.Buero.Licht.Decke.schalten() == 1 else None
                      action:
                          type: str
                          tasmota_topic: tasmota_A8D079
                          tasmota_zb_device: SWITCH1
                          tasmota_zb_attr: action
                      trigger_H:
                          type: bool
                          initial_value: 0
                          autotimer: 10 = 0
                          on_change: OG.Buero.Licht.Decke.schalten = 1 if sh..self() == 1 else None
                      trigger_L:
                          type: bool
                          initial_value: 0
                          on_change: OG.Buero.Licht.Decke.schalten = 0 if sh..self() == 1 else None

          Kommentar


            #20
            Zitat von devau Beitrag anzeigen
            Das gibt zwar die folgende Warnung, aber es funktioniert trotzdem:
            Was soll der autotimer bewirken?

            Wenn du immer wieder das on_change ausführen willst, auch wenn der Wert sich nicht ändert, aber erneut im Item ankommt, nutze das Item attribut "enforce_updates: yes"

            Kommentar


              #21
              Hat auch nicht viel gebracht, da das Relais dann innert Sekundenbruchteilen an und wieder abgefallen ist. Ich habe es nun anders gelöst mit einem Delay-Item, so dass zwischen Ein- und Ausschalten mindestens 10 Sekunden vergehen müssen!
              Wie nun weiter? Ich habe gestern Abend noch den Aqara Fenster-Sensor erhalten ( https://www.zigbee2mqtt.io/devices/MCCGQ11LM.html ) der hat andere Werte, die da übermittelt werden. Ich bin nun am Einbauen dieses Sensors.

              Kommentar


                #22
                Zitat von devau Beitrag anzeigen
                Hat auch nicht viel gebracht, da das Relais dann innert Sekundenbruchteilen an und wieder abgefallen ist. Ich habe es nun anders gelöst mit einem Delay-Item, so dass zwischen Ein- und Ausschalten mindestens 10 Sekunden vergehen müssen!
                Ich mache das mit einer Logik, die von den eingehenden Werten getriggert wird. In dieser Logik habe ich dann alle entsprechenden Aktionen. Vorteile sehe ich in der Lesbarkeit des Codes und das man die Logik zu Laufzeit neu laden kann. Ich stelle heute Abend mal ein Beispiel ein.

                Im Grund geht das so:
                Die Logik wird getriggert, wenn auf den Items des Zigbee Switches Werte ankommen.
                Die Logik wertet den Wert aus (hier 'single') und löst direkt das Umschalten auf dem Zielitem aus. Das geht dann einfach mit:
                Code:
                sh.OG.Buero.Licht.Decke.schalten(not sh.OG.Buero.Licht.Decke.schalten())
                Das Item (type bool) bekommt dann immer den gegenteiligen Wert, verglichen mit dem aktuellen.


                Zitat von devau Beitrag anzeigen
                Ich habe gestern Abend noch den Aqara Fenster-Sensor erhalten
                Den habe ich auch. Somit kann ich die notwendige Pluginerweiterung selbst testen.

                Kommentar


                  #23
                  Den Vibrations-Sensor DJT11LM habe ich nun auch erhalten. Dessen Empfindlichkeit kann ich jedoch nicht per Command einstellen:

                  16:18:57.308 CMD: ZbSend {"Device":"0x99E7", "Endpoint":1, "Send":{"sensitivity": "medium"}}
                  16:18:57.315 MQT: stat/tasmota_A8D079/RESULT = Unrecognized zigbee command: sensitivity


                  Update: Ist in einigen Foren nachzulesen, dass das so nicht geht, sondern so:
                  ZbSend {"Device":"0x99E7", "Endpoint":1, "Manuf":"0x115F", "Write":{"0000/FF0D%20":<Sens>}}
                  <Sens> ist:
                  1= High, 11 = Medium, 21 = Low
                  Zuletzt geändert von devau; 16.11.2021, 16:52.

                  Kommentar


                    #24
                    devau
                    Zitat von Sisamiwe Beitrag anzeigen
                    Ich stelle heute Abend mal ein Beispiel ein.
                    Bzgl der Logik, hier mal mein Bespiel:

                    logik.py
                    Code:
                    #!/usr/bin/env python3
                    # tasmota_rfbridge_action.py
                    
                    ## Logik, um basierend auf dem Code eines RF-Tasters Aktionen auszuführen
                    
                    
                    logger.info(f"Logik '{logic.id()}' ausgelöst durch: {trigger['by']} und {trigger['source']} mit Wert {trigger['value']}")
                    
                    #Wenn Trigger ein Item war, dann RF-Data einlesen
                    if trigger['by'].lower() == 'item':
                        rf_data = trigger['value']
                    
                        ##RF-Data auswerten
                        # Licht Dachboden an bei Empfgang von 3602B2 (links)
                        if rf_data == '3602B2':
                            sh.licht.dachboden.decke.onoff(1)
                        # Licht Dachboden toggeln bei Empfgang von 3602B4 (Mitte)
                        if rf_data == '3602B4':
                            sh.licht.dachboden.decke.onoff(not sh.licht.dachboden.decke.onoff())
                        # Licht Dachboden aus bei Empfgang von 3602B8 (rechts)
                        if rf_data == '3602B8':
                            sh.licht.dachboden.decke.onoff(0)
                        # Licht Garage aus bei Empfang von CC2871
                        if rf_data == 'CC2871':
                            sh.licht.garage.decke.onoff(0)
                        # Steckdose Waschmaschine aus bei Empfang von 021FE2
                        if rf_data == '021FE2':
                            sh.steckdosen.waschkueche.waschmaschine.onoff(not sh.steckdosen.waschkueche.waschmaschine.onoff())
                            logger.info(f"Steckdose Waschmaschine geschaltet. Neuer Zustand ist {sh.steckdosen.waschkueche.waschmaschine.onoff()}")
                        # Steckdose Wäschetrockner aus bei Empfang von 021FE4
                        if rf_data == '021FE4':
                            sh.steckdosen.waschkueche.waeschetrockner.onoff(not sh.steckdosen.waschkueche.waeschetrockner.onoff())
                            logger.info(f"Steckdose Wäschetrockner geschaltet. Neuer Zustand ist {sh.steckdosen.waschkueche.waeschetrockner.onoff()}")
                    Das ist eine ähnliche Anwendung. Es gibt ein Item, in den die Info eines Tasters via Bridge landet. Das ist das Triggeritem für die Logik.
                    Bei dir sollte das dann so aussehen:
                    logik.py
                    Code:
                    # Einlesen der Triggerwerte
                    click = sh.ZB.Switch.X54EB.click()
                    action = sh.ZB.Switch.X54EB.action()
                    
                    ##ZigbeeDaten auswerten
                    # Wenn Einfach-Click, dann Licht Umschalten
                    if click == 'single':
                        sh.OG.Buero.Licht.Decke.schalten(not sh.OG.Buero.Licht.Decke.schalten())
                    Die Items müssten dann so aussehen:
                    Code:
                    # ZB.Switch.X54EB.yaml
                    ZB:
                        Switch:
                            X54EB:
                                click:
                                    type: str
                                    tasmota_topic: tasmota_A8D079
                                    tasmota_zb_device: 0x54EB
                                    tasmota_zb_attr: click
                                action:
                                    type: str
                                     tasmota_topic: tasmota_A8D079
                                     tasmota_zb_device: 0x54EB
                                     tasmota_zb_attr: action
                    Kannst Du gern mal probieren.

                    Kommentar


                      #25
                      devau

                      In meinem Repo liegt eine neue Version des Plugins. Diese unterstütz nun auch die Gerätekurznamen mit "0x" beginnend. Getestet habe ich auch mit dem Türsensor und dem Vibrationssensor.

                      Probiers gern mal aus.

                      Kommentar


                        #26
                        Werde ich alles noch gerne ausprobieren. Der Aqara Vibrationssensor ist schon sehr speziell: Keine Reaktion mehr, der legt sich anscheinend schlafen über Nacht. Keine Erschütterung bringt ihn jetzt mehr zum Erwachen. Das ist der zweite Vib-Sensor, habe den ersten bereits zurückgeschickt weil der genau gleich nicht funktionierte.
                        In der Tasmota-Konsole werden auf jedenfall keinerlei Einträge mehr von dem generiert..
                        Ich habe übrigens für diesen Sensor in Deiner plugin.yaml unter "valid_list_ci:" noch diese zwei Werte eingetragen: - AqaraVibrationMode und - AqaraVibrationsOrAngle

                        Kommentar


                          #27
                          Zitat von devau Beitrag anzeigen
                          Ich habe übrigens für diesen Sensor in Deiner plugin.yaml unter "valid_list_ci:" noch diese zwei Werte eingetragen: - AqaraVibrationMode und - AqaraVibrationsOrAngle
                          Das brauchst Du nicht.
                          Relevant für die ZigbeeSensoren ist das ItemAttribut "tasmota_zb_attr:" Das ist bislang nicht "konditioniert". Ich habe so gemacht, damit man das Plugin nicht bei jedem neuen Sensor etc ändern muss. Funktionieren tun natürlich nur die Werte, die auch im Dict. Dieses wird im WebIF auch unter "tasmota Zigbee" angezeigt. Wenn man andere Attributwerte nutzt, fängt das Plugin den Fehler ab und meldet das, je nach LogLevel.

                          Das Item Attibut "tasmota_attr:" wird nur für "native" TasmotaDevices genutzt.

                          Kommentar


                            #28
                            Habe nun die Logik erstellt und aktiviert. Manuell auslösen funktioniert. Aber wenn ich das mit dem ZigBEE-Switch mache geht nichts. Gemäss Item-Tree kommen die Befehle dort jedoch sauber rein. Da fehlt noch irgendeine Verbindung zu Logic...?

                            Kommentar


                              #29
                              Zitat von devau Beitrag anzeigen
                              Da fehlt noch irgendeine Verbindung zu Logic...?
                              Ja. Im Berarbeitungsfenster der Logik gibt es oben einen Reiter "Parameter". Dort musst Du unter "Watch Item(s)" das Item eintragen, auf das die Logik "hört".
                              Dann klappt es auch.

                              Kommentar


                                #30
                                Einschalten geht, ja, Ausschalten nein. Es benötigt also ein enforce_update:yes?

                                Kommentar

                                Lädt...
                                X