Beiträge von haitauer

    ...

    Aber dafür gibt's nun neue "lustige" Phänomene, die vorher nur 1-2x am Tag auftraten (habe die nicht wirklich ernst genommen wegen dem overflow Problem), nun aber deutlich häufiger: sporadische Events die melden, daß eine Tür/Fenster auf ist :-D ... gut, daß ich die Alarmierungen noch nicht alle scharf geschaltet habe, sonst hätte ich heute Nacht senkrecht im Bett gestanden, mir in die Bux gemacht um dann festzustellen, daß da doch niemand war ;-)

    Apr 24 01:27:52 shelly1pmminig3-34b7da90bdec 93029 827556.733 1 2|shelly_notification:209 Event from script:1: {"component":"script:1","id":1,"event":"open","data":{"mac":"e8:e0:7e:73:47:1b","rssi":-66,"device_name":"Hidden-Device","bthome_version":2,"interval":"regular","pid":138,"battery":100,"device_type_id":"2.2","firmware_version":"1.0.22.0","gen":"GBLE","device_type":"Door-Window","device_state":"open","activity":"alive"},"ts":1745450872.38}

    Das war meine Haustür. Die war und ist zu und abgeschlossen.

    Nun dann, mal debuggen woher bzw. wieso der Kram gemeldet wird.

    Problem auch gelöst.

    Das Skript reagiert auf obj.window undefinend und setzt das Fenster/die Tür auf open. Das ist falsch, denn es muss nur bei 1 auf open gesetzt werden, bei 0 auf closed, bei undefined ignorieren.

    eiche nein, eigentlich nicht ;-) ... ich habe in dem Skript nun paar Debug Meldungen eingebaut damit ich rausfinden kann was alles passiert, wenn das aus heiterem Himmel Ereignis "open" von den Door/Window Sensoren kommt.

    Damit ich die Web Console nicht aufhaben und solange wach bleiben muss, bis es das nächste mal passiert, wollte ich das auf dem Pi im Log haben - was ja nun auch funktioniert, nachdem siehe mein vorheriger Post :)

    sehr kurios. Meine Vermutung war, daß das nur passiert, wenn man Websocket Debug deaktiviert hat, also habe ich es testweise deaktiviert. Half aber nichts, also wieder aktiviert und warum auch immer tauchen die console.log() Meldungen nun auch im Debug Log auf

    ich hatte heute Abend endlich Zeit mir das Skript mal zu verinnerlichen.

    Da ist mir die for Schleife aufgefallen, welche pro Eintrag ein MQTT Publish ausführt. Das ist natürlich ziemlich suboptimal.

    Ich hab das nun geändert so dass das alles zwischengespeichert wird und erst nach Durchlauf der Schleife nur 1x MQTT Publish mit den JSON Daten ausgeführt wird.

    Ich würde fast wetten, dass das dem Shelly positiv hilft 😀


    Ich werde berichten.

    Guten Morgen zusammen,

    der Knaller: seit der Änderung genau _NULL_ Overflows mehr - Manchmal kann die Lösung so einfach sein :-D ... nun ärgere ich mich ein bißchen, dass ich mir nicht schon viel früher die Zeit genommen habe um das Skript zu debuggen und zu fixen - nunja, besser spät als nie ;-)

    Also merken wir uns nun alle: in einer Schleife MQTT publishes aufrufen ist böse [tm]

    Aber dafür gibt's nun neue "lustige" Phänomene, die vorher nur 1-2x am Tag auftraten (habe die nicht wirklich ernst genommen wegen dem overflow Problem), nun aber deutlich häufiger: sporadische Events die melden, daß eine Tür/Fenster auf ist :-D ... gut, daß ich die Alarmierungen noch nicht alle scharf geschaltet habe, sonst hätte ich heute Nacht senkrecht im Bett gestanden, mir in die Bux gemacht um dann festzustellen, daß da doch niemand war ;-)

    Apr 24 01:27:52 shelly1pmminig3-34b7da90bdec 93029 827556.733 1 2|shelly_notification:209 Event from script:1: {"component":"script:1","id":1,"event":"open","data":{"mac":"e8:e0:7e:73:47:1b","rssi":-66,"device_name":"Hidden-Device","bthome_version":2,"interval":"regular","pid":138,"battery":100,"device_type_id":"2.2","firmware_version":"1.0.22.0","gen":"GBLE","device_type":"Door-Window","device_state":"open","activity":"alive"},"ts":1745450872.38}

    Das war meine Haustür. Die war und ist zu und abgeschlossen.

    Nun dann, mal debuggen woher bzw. wieso der Kram gemeldet wird.

    ja, genau das Skript benutze ich auch :)

    ich hatte heute Abend endlich Zeit mir das Skript mal zu verinnerlichen.

    Da ist mir die for Schleife aufgefallen, welche pro Eintrag ein MQTT Publish ausführt. Das ist natürlich ziemlich suboptimal.

    Ich hab das nun geändert so dass das alles zwischengespeichert wird und erst nach Durchlauf der Schleife nur 1x MQTT Publish mit den JSON Daten ausgeführt wird.

    Ich würde fast wetten, dass das dem Shelly positiv hilft 😀


    Ich werde berichten.

    Leider scheint die Suche nach deaktivierten User nicht einfach möglich.

    Hier ein hoffentlich relevanter Beitrag:

    _[Deleted]_
    10. Mai 2023 um 20:46

    ja, genau das Skript benutze ich auch :)

    eiche:
    ich gehe nicht davon aus, dass Allterco zeitnah einen Fix dafür rausbringt.


    Ich bin Dir sehr dankbar, dass Du an einem MQTT Publisher arbeiten willst. Evtl. kann ich damit mein Vorhaben dann doch noch zuverlässig umsetzen 😀


    try/catch hatte ich probiert, nur gibt das MQTT publish keine Fehler zurück, wenn die Queue voll ist!?! 😢


    Was mich wirklich fasziniert ist, dass die Shelly Cloud immer die aktuellen und korrekten Daten hat. Wie auch immer die Daten in die Cloud gelangen … wahrscheinlich via Websocket …

    Shelly hat sich endlich mal geäußert, hier die Info:

    Moin eiche,

    Ok, ich fasse es zusammen:

    1. folgende Geräte:
      • BLU Gateway (kein Plan welche Generation, evtl. 1? oder 2?)
      • BLU Button Tough
      • BLU Door/Window Sensoren
      • BLU Motion
      • PM Mini Gen3
      • 1PM Mini Gen3
      • Plug S MTR Gen3
      • gerade ist testweise ein 1PM Mini Gen4 eingetroffen, ist aber noch nicht aktiv


    2. Raspberry Pi 4b, 4 GB RAM mit Raspian Bullseye (11.x), 32-bit


    3. Smarthome System FHEM womit ich auf entsprechende Events oder Zustände reagiere, Broker ist der default Eclipse Mosquitto der bei Debian & Co dabei ist


    4. MQTT Konfiguration:
      • RPC und allgemein aktiv
      • Präfix: shellies/Gateway/shellyblugw-bla
      • Server: 192.168…:1883
      • Kunden-ID: shellyblugw-bla
      • User/Passwort entsprechend


    5. Skript, und zwar „Blu_to_MQTT v1.4 and Blu_Events v2.4.js“ - habe aber testweise auch andere probiert die ich bei Allterco im Git gefunden habe, oder im Forum …

      Hier mal eine Anzahl des „MQTT0 queue overflow“ Auftretens der letzten 24 Stunden pro Gerät:

      BLU Gateway: 6551 mal (ja, sechstausend…)

      PM Mini Gen3: 51 mal

      1PM Mini Gen3: 723 mal


    6. ja natürlich, ist alles in Benutzung, ich habe etliche unterschiedliche Geräte die MQTT sprechen von denen alles ankommt


    7. es hat alles mit einem BLU Gateway und einem BLU Button Tough Ende 2024 angefangen. Zu der Zeit gab es Firmware Probleme, weshalb das Setup nicht funktioniert hat (hatte ich als Bug Report eingereicht)

      Nach paar Wochen gab es dann ein FW-Update, dann konnte ich es benutzen.

      Ziel der ganzen Aktion war eigentlich nur um festzustellen, ob das Auto in der Garage steht, vor der Garage steht oder unterwegs ist. Das prüfe ich anhand der Empfangsstärke vom Button (welcher im Auto liegt), was im Prinzip auch gut funktioniert. Der Button ist im Beacon Modus und schickt deshalb permanent Infos raus, die das Gateway empfängt.


      Nur dann tauchen des Öfteren im Debug Log des Shelly BLU Gateways die „MQTT0 queue overflow“ Meldungen auf, weshalb die Infos dann nicht mehr zum Broker rausgehen, manchmal für paar Sekunden nicht, manchmal für paar Minuten nicht, manchmal auch für ne halbe Stunde nicht, manchmal auch nie mehr, dann tauchen hunderte Zeilen Debug Log mit Deadlock Meldungen auf, dann muss ich das BLU Gateway rebooten.


      Die Probleme & Logs hatte ich dem Support damals auch mitgeteilt, bisher ohne Erfolg.

      Eigentlich wollte ich zu dem Zeitpunkt mit dem Vorhaben aufhören … aber irgendwie wollte ich ja auch noch alle Fenster & Türen in meinem Haus überwachen, Bewegungssensoren in jeden Raum packen etc. also fing ich an, mir zum Testen diverse andere Geräte zu kaufen (um unter anderem festzustellen, dass BLU Geräte IMMER mit einer leeren CR2032 geliefert werden (Papierschnipsel sind überbewertet ;))

      Im Prinzip funktioniert das auch alles super, WENN denn das genannte MQTT Problem nicht wäre. So kommt es dann oft vor, dass der Status der Sensoren im Broker nicht korrekt ist, somit auch nicht in FHEM (Fenster/Tür wird als offen gemeldet obwohl zu, keine Bewegung obwohl ich vor dem Motion rumhampel) - und immer, wenn das eintritt, ist das „Queue overflow“-Problem da. tcpdump belegt, dass es nie am Pi, somit am Broker ankommt.

      Die Shelly Cloud hat eigentlich immer die korrekten Zustände, insofern funktioniert das alles „eigentlich“. Die korrekten Zustände würde ich per MQTT auch nach und nach bekommen, wenn ich alle BLU Geräte mit Beacon AN laufen lassen würde, nur dann sind die Batterien innerhalb 1-3 Wochen leer (aus Verzweiflung auch getestet)


      Dann habe ich mir mal ein PM Gen3 und 1PM Gen3 bestellt und damit getestet, da ich vermutet hatte, dass evtl. das Gateway das Problem hat (zu wenig RAM, zu wenig CPU Leistung - kein Plan) … aber die Geräte haben ebenso das gleiche Verhalten. Dann ein Plug S Gen3, damit geht das Skript aber nicht, weil zu wenig RAM (wohl weil Matter da zu viel belegt und immer noch nicht abschaltbar ist)

      Wenn ich den BLU Button deaktiviere (Batterie raus) oder Beacon Modus abschalte, dann tritt das Problem deutlich weniger auf, klar warum: es kommen ja keine Daten mehr an, außer ich drücke den Knopf an dem Teil) … nur sobald ich z.B. aus dem Garten in die Garage gehe (erster Door Sensor: Tür auf, Tür zu), dann in der Garage bin (Motion Sensor), dann paar Meter zur Tür ins Haus gehe (zweiter Door Sensor, Tür auf, Tür zu) passiert es auch da: MQTT0 queue overflow, weil zu viel auf einmal passiert. Warte ich in der Garage oder schlafe beim gehen ein, oder lasse mir viel Zeit fürs Türschließen bis ich ins Haus gehe, klappt es oft ohne Queue Probleme.

      Wenn ich das nun zu Ende denke, sprich an jeder Tür und jedem Fenster ein Door/Window Sensor, in jedem Raum ein Bewegungsmelder installiert habe, in fast jedem Raum ein Gateway oder PM/1PM, 3 Personen Haushalt, dann kann ich sicher sein, dass es eine 50/50 Chance gibt, dass die Zustände im Broker stimmen. Wahrscheinlich würde es besser funktionieren, wenn ich jedem BLU Gerät ein dediziertes Gateway/PM verpasse und dann im Skript alles, was es nicht verarbeiten soll, blackliste, aber … nein! ;):D


    zu deinem Edit/Frage: von Haus aus können die BLU Geräte mit Batterie kein MQTT, dafür braucht man ein Skript, welches die Daten entsprechend weiterverarbeitet.


    Ich bin in Sachen Shelly erst seit November 2024 dabei, insofern noch relativ neu in der ganzen Shelly Materie und evtl. habe ich auch irgendwo einen Fehler - wenn, dann sehe ich ihn nicht.

    In Sachen Smarthome seit 2020, in Sachen Linux seit Mitte/Ende der 90er.


    Danke fürs Lesen :)

    I would monitor the MQTT messages, for example, with MQTT Explorer. A better approach would be to use Node-RED. In a simple flow, an MQTT subscriber node (mqtt in) can receive and count the messages. Perhaps the messages are being sent too frequently.

    They will never arive the broker, there is even no try to send them, tcpdump is quiet at that time when the queue overflow occurs.

    It must be a problem with the firmware(s)

    It would help a little bit if the firmware won‘t throw away the messages it cannot deliver. It even ignores QoS 1 or QoS 2, it’s just gone to nirvana ;-(