Status update von PlusPM Mini 3. Gen erzwingen

  • Liebes Forum,

    ich übe schon eine ganze weile mit meinem Shelly PlusPM Mini 3. Gen herum und hab schon x-Foreneinträge durch. Aber ich komm einfach nicht auf die Lösung. Vielleicht geht ja auch gar nicht was ich probier.

    Der Shelly misst den Verbrauch meiner Werkstatt. MQTT in meinem Shelly ist wie folgt eingestellt:

    pasted-from-clipboard.png

    Im MQTT Explorer erhalte ich nach dem Reboot des Shellys folgendes:

    pasted-from-clipboard.png

    Wenn ein grösserer Verbraucher an ist in der Werkstatt und sich Spanung, Strom oder Leistung um mehr als 5% ändert wird auch tas topic status/pm1:0 laufend aktualisiert. Soweit alles bestens. Wenn aber nichts läuft in der Werkstatt (ausser die 6W Standby wie auf dem Screenshot oben) sind die Werte so konstant, dass kein Update erfolgt (Änderung < 5%). Ich hab fast 24h gewartet und nicht ein einziges mal hat der Shelly ein Update gesendet. Es kann Tage oder Wochen dauern bis jemand in der Werkstatt einen Verbraucher einschaltet. D.h. bei einem Stromausfall würde ich die Werte des Energiezählers verlieren für diese Periode. Ausserdem sieht es im Grafana doof aus, wenn über Wochen keine Werte da sind.

    Hat jemand eine Idee wie man entweder

    - dem Shelly PlusPM Mini 3 beibringen kann dass er alle paar Minuten ein update macht? (http://192.168.x.y/setting?mqtt_update_period=1 ergibt "not found" als Rückgabewert vom Shelly)

    - oder welchen MQTT Befehl man senden muss, damit er status/pm1:0 updated? Ich habe in MQTT explorer folgendes probiert ohne Erfolg:

    {

    "id": 1,

    "src": "shellies/Werkstatt/Elektro/",

    "method": "PM1.GetStatus",

    "params": {

    "id": 0

    }

    }

    gesedet ans topic "shellies/Werkstatt/Elektro"

    Kann mir bitte jemand einen Tipp geben? Normalerweise läuft das ganze über node-red in eine influxDB, aber solange ich es mit MQTT Explorer nicht hinbekomme habe ich auf das rumprobieren mit node-red verzichtet.

  • Welche Firmware?

    Welcher Broker? (ich vermute mal Shelly-Adapter?)

    Willkommen im Forum. :)

  • Tschuldigug für die fehlenden Angaben...

    Der Shelly hat Firmware 1.0.3 drauf:

    pasted-from-clipboard.png

    Als Broker nutze ich eclipse-mosquitto 2.0.9 in einem Docker container auf einem Synology NAS.

    Wie erwähnt funktioniert das gut, ausser wenn nichts läuft in der Werkstatt gibt es für ganz lange Perdioden keine Daten. Nachfolgend ein Beispiel der Leistung: bei jedem Datenpunkt hab ich den Shelly neu gebootet ausser beim Peak, da hab ich testhalber kurz eine Elektroheizung eingeschaltet. Dafür gabs gestern am 26.02.2023 während rund 24h kein Update. Erst am Abend wieder, als ich mit dem Shelly rumgespielt hab und ihn in dem Zuge rebootet hab:

    pasted-from-clipboard.png

    Was ich noch nicht erwähnt habe, es läuft parallel noch ein zweiter (Eigenbau-)Shelly bei dem die Firmware 20230913-112003/v1.14.0-gcb84623 drauf ist. Der sendet rund alle Sekunde Temperatur und Luftfeuchte (shellies/Wertstatt/Ambient).

    Einmal editiert, zuletzt von walterli (27. Februar 2024 um 07:18)

  • walterli

    Mal unabhängig von deiner sonstigen Ausstattung.

    Du kannst eine Kombination aus Schedule Job und Skript einsetzen. Ich meine damit nicht, dass es keine andere Möglichkeit gibt.

    Die System integrierte MQTT Kommunikation ist aber etwas komplex, weil sie, jedenfalls in Shelly der zweiten Generation, eine Peer to Peer Kommunikation nachbildet.

    Das Skript braucht folgendes.

    1. Einen Eventhandler (callback Funktion) zum entgegennehmen der Messwerte. Diese sind in einer Variablen/Struktur zwischenzuspeichern.
      (Die callback Funktion kann stattdessen per Methode den Status des Shelly oder, was du brauchst, abfragen => noch eine callback Funktion in der ersten callback Funktion.)
    2. Eine Funktion, ich nenne sie mal send(), welche die zwischengespeicherten Werte per Aufruf von MQTT.publish(...) sendet. Das Topic kannst du im Rahmen der Syntax beliebig wählen.

    Der Schedule Job ruft in festgelegten Abständen die Funktion send() auf.

    Somit werden auch dann Werte, die zwischengespeicherten, gesendet, wenn keine neuen hereinkommen.

    Habe ich den Anliegen richtig verstanden?

    Wenn du weitere Hilfe dazu möchtest, melde dich!

    An Cloud-/Szenen-Benutzer (insbesondere für Regelungen): Was erwartest du, wenn Internet oder Cloud sabotiert werden? Nicht nur dafür meine kleine Skripteinführung  8)

    Die einzig existierende Konstante ist der Wandel. Oft liegt die größte Schwierigkeit darin, das Anliegen des Klienten zu verstehen.

    2 Mal editiert, zuletzt von eiche (27. Februar 2024 um 11:09)

  • eiche, ich musste deinen Post ein paar mal lesen bis ich ihn einigermassen verstanden habe. Ich glaube du hast mein Anliegen richtig verstanden und beschreibst eine mögliche Lösung. Allerdings ist für mich das ganze noch etwas zu Abstrakt als dass ich handeln könnte. Kannst du deine Idee bitte noch etwas genauer ausführen?

  • Dieses Thema enthält 3 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.