Shelly - webhook statt UDP bei schlechtem RSSI / high TX retries?

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • MarkusCosi
    LoxBus Spammer
    • 28.09.2023
    • 357

    #1

    Shelly - webhook statt UDP bei schlechtem RSSI / high TX retries?

    Hallo zusammen,

    ich habe einen Regensensor mit einem Shelly Uni Plus (fw 1.7.4) nachgebaut, siehe hier. (schöne Anleitung, danke nochmal an Liver_64)
    Dieser sitzt nun Stromversorgt an (zum Regen detektieren) geeigneter Stelle draußen und hat leider nur eine Signalstärke (lt. Unifi OS) von um die -80dB. TX Retries sind dementsprechend hoch, ca. 20-30%. Also grenzwertig, aber funktioniert eigentlich. Alles funktioniert auch dem Anschein nach so wie es soll, aber ich schätze, dass per UDP demnach jeder dritte Regen-Alarm so nicht ankommt, sehe ich das richtig? (da sich UDP ja eben nicht dafür interessiert ob die Nachricht angekommen ist?)

    Kann man stattdessen beim Shelly Uni im Menü unter "Actions" einen webhook triggern um soetwas wie "http://ShellyUser:ShellyUserPW@<<IPMiniserver>>/dev/sps/io/V##/pulse" abzusetzen? Dann, so mein Verständnis, würde es ggf. zuverlässiger funktionieren da hier ggf. retries stattfänden?

    Hat schonmal jemand soetwas gemacht?

    Edit:
    Ich habe gerade noch MQTT beim Shelly entdeckt. Da MQTT über TCP geht, sollte auch das helfen... d.h. ich lasse Temp/Humid über UDP, und selektiv den Regen-An-Aus Flag über MQTT. Ich habe mal dementsprechend MQTT aktiviert, und RCP via MQTT, MQTT control, etc. alle deaktiviert, und dafür folgendes Skript definiert und laufen lassen:

    Code:
    Shelly.addEventHandler(function (event) {
      if (event.name === "input" && event.id === 1) {
        let payload = event.info.state ? "1" : "0";
        // first send
        MQTT.publish("shellyplusuni-MacAddr/rain", payload, 0, true);
    
        // retry after 1 second
        Timer.set(1000, false, function () {
          MQTT.publish("shellyplusuni-MacAddr/rain", payload, 0, true);
        });
      }
    });
    Danke!
    Zuletzt geändert von MarkusCosi; In den letzten 3 Wochen.
  • Prof.Mobilux
    Supermoderator
    • 25.08.2015
    • 5303

    #2
    Webhooks gehen auch. Nutze ich bei Shelly nur. Sowohl MQTT als auch HTTP gehen über TCP, was zumindest eine Antwort des Empfängers auswertet. Dafür,ist der Overhead größer. Müsste man ausprobieren was besser geht.

    Vielleicht eine externe Antenne an den Shelly? https://shelly-forum.com/thread/7745...nnenanschluss/
    🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


    LoxBerry - Beyond the Limits

    Kommentar

  • MarkusCosi
    LoxBus Spammer
    • 28.09.2023
    • 357

    #3
    ..ich habe nun ein paar Daten gesammelt von einem wechselhaften Regentag.. Tatsächlich kamen erwartungsgemäß einige "Flanken"-UDP-Pakete nicht an. Von 27 empfangenen MQTT Flanken habe ich im UDP-Eingang nur 22 mitbekommen. Ob die MQTT Flanken vollständig sind kann ich aber auch nicht sagen...

    Bei einer webhook-Lösung würde ich das gleiche erwarten, allerdings mit dem Vorteil, dass ein Loxberry- oder MQTT-Gateway Ausfall keine Auswirkung hätte... Daher würde mich eine solche Lösung noch immer interessieren?

    Komisch: auch bei MQTT sah ich einen Wert (0) zwei mal nacheinander in einem zeitlichen Abstand von mehreren Stunden... Kann es sein, dass das MQTT Loxberry Gateway ab und an einen Zustand nochmal verschickt ohne dass eine Änderung stattfand? Am nächsten Tag kam das zwar auch vor, aber immer nur nach einem Miniserver-Neustart (hier verstehe ich es)...

    Kommentar

    Lädt...