Zahlwerk für die Einschalthäufigkeit einer Lampe

Begonnen von uron, 16 Juni 2025, 22:19:45

Vorheriges Thema - Nächstes Thema

uron

Ich suche vergeblich nach einer Möglichkeit die Schalthäufigkeit einer Lampe zu ermitteln.
Idealerweise habe ich eine Variable (oder auch Userreading der Lampe?) und zähle wenn die Lampe geschaltet wird per notify +1 hinzu und speichere das Ergebnis erneut ab.
Soweit der Algorithmus, kann mir jemand bei der Umsatzung helfen? 
Der Beitrag hier ist mir deutlich zu komplex, verstehe ihn aber auch nicht.
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

Guybrush

so z.b.:
attr Lampe userReadings counter:on {ReadingsNum($name, 'counter', 0)+1}

uron

#2
Danke für den Lösungsansatz, der bei mir aber noch kein Ergebnis bringt.
Ich versuche mal, den Befehl zu analysieren:
- "Lampe" steht für das Device, dessen Einschalthäufigkeit gezählt werden soll?
- "counter:on" zählt die Einschaltbefehle?
- "$name" ist das Userreading, welches im Device das Zählergebnis ausweist?

Meine Lampe wird über den Befehl
on-for-timer 1 gesteuert.
Der o.g. Analyse folgend habe ich meinen attr-Befehl wie folgt ausgelegt
attr Lampe userReadings counter:on-for-timer {ReadingsNum($lampenzaehler, 'counter', 0)+1}Unter den Attributen finde ich im Device den Hinweis
userReadings counter:on-for-timer {ReadingsNum($lampenzaehler, 'counter', 0)+1}Was ist an der Umsetzung falsch?
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

betateilchen

Im Gegensatz zu "on", heißt Dein Befehl ja "on-for-timer 1".
Also passt die von Dir verwendete regex für das userReading so nicht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

uron

Zitat von: betateilchen am 17 Juni 2025, 08:22:42Im Gegensatz zu "on", heißt Dein Befehl ja "on-for-timer 1".
Das dachte ich mir schon, deshalb hatte ich das "on" ja durch "on-for-timer" ersetzt. Das nachträgliche Testen mit "on-for-timer 1" führt zur Meldung
unknown modifier 1 for userReading counter, this userReading will be ignoredBleibt die Frage, was ist zu tun?
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker

betateilchen

Zitat von: uron am 17 Juni 2025, 08:37:58Bleibt die Frage, was ist zu tun?

Richtigmachen.

Schau doch mal in den Event-Monitor, was da passiert, wenn Du "on-for-timer 1" an das device schickst. Und dann kannst Du Dir in "Create device" anschauen, wie die regex für ein notify aussehen müsste. Die gleiche regex kannst Du für das userReading verwenden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MadMax-FHEM

#6
Der Tausch von $name zu $lampenzaehler ist (auch) "Unfug"...

$name steht für das Device, wo mittels ReadingsNum der Wert (counter <- das ist der Readingname des Zählers) der Wert gelesen wird, um 1 zu addieren...

Also $name lassen (oder wenn, dann durch "Lampe" ersetzen)...

Daher:
Zitat von: uron am 17 Juni 2025, 06:57:35Ich versuche mal, den Befehl zu analysieren:
- "Lampe" steht für das Device, dessen Einschalthäufigkeit gezählt werden soll?
-> ja. Heißt es bei dir Lampe?
Zitat von: uron am 17 Juni 2025, 06:57:35- "counter:on" zählt die Einschaltbefehle?
-> jein ;) counter ist der Name des neuen Readings. on ist der "Trigger", bei dir also nicht on. Siehe Antwort betateilchen...
Zitat von: uron am 17 Juni 2025, 06:57:35- "$name" ist das Userreading, welches im Device das Zählergebnis ausweist?
-> nein. Siehe oben...

EDIT: siehe commandref (as always ;)  )
Zitat von: https://fhem.de/commandref_DE.htmluserReadings
Komma getrennte Liste von benutzerdefinierten Readings. Jede Definition hat folgendes Format:

    <reading>[:<trigger>] [<modifier>] { <perl code> }

Diese benutzerdefinierte Readings werden bei jeder Aktualisierung der Gerätereadings gesetzt, indem das spezifizierte perl code { <perl code> } ausgeführt wird, und dessen Wert dem Reading zugewiesen wird. Falls <trigger> spezifiziert ist, dann findet diese Ausführung nur dann statt, falls einer der aktualisierten Readings dem regexp <trigger> entspricht (matched).
Beispiele:

    attr myEnergyMeter userReadings energy { ReadingsVal("myEnergyMeter","counters.A",0)/1250.0;; }
    attr myMultiMeter userReadings energy1:counters.A.* {ReadingsVal("myMultiMeter","counters.A",0)/1250.0}, energy2:counters.B.* {ReadingsVal("myMultiMeter","counters.B",0)/1250.0}

...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Guybrush

ich hatte eigentlich gedacht dass das selbsterklärend war  ;D

on-for-timer ist egal. ich ging jetzt mal davon aus, dass du die states on,off bei deiner Lampe hast, was default ist. poste doch mal die defs deiner Lampe. Wenn du beim einschalten z.b. den state Ein hast, dann wäre das statt counter:on eben counter:Ein

uron

#8
Zitat von: betateilchen am 17 Juni 2025, 09:02:51Schau doch mal in den Event-Monitor, was da passiert, wenn Du "on-for-timer 1" an das device schickst. Und dann kannst Du Dir in "Create device" anschauen, wie die regex für ein notify aussehen müsste. Die gleiche regex kannst Du für das userReading verwenden.
Das war der wichtige Tipp den ich bislang nicht kannte und deshalb nie genutzt hatte. Nun läuft der counter munter.
Danke an alle, die Unterstützung geleistet haben - wieder etwas dazu gelernt!
RasPi-FHEM  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi-ioBroker