[gelöst] UserReadings einmal am Tag/Monat immer um den gleichen Wert erhöhen

Begonnen von cocojambo, 02 November 2019, 16:14:46

Vorheriges Thema - Nächstes Thema

cocojambo

Ich habe ein eletrisches Gerät was monatlich immer die gleiche Betriebsstundenzahl erreichen soll. Dazu schalte ich es bei täglich einmal für eine feste Stundenzahl ein und addiere diese dann der Vortagszeit hinzu. Und wenn die "Istzeit" die "Sollzeit" erreicht hat, schalte ich das Gerät über eine Schaltersteckdose aus.

Für die Sollzeit Vorgabe nutze ich ein Dummy Device (PF_Betrieb_soll_dummy), bei dem ich folgendes userReadings eingerichtet habe:

Stundensoll {at *01:00:00 {ReadingsVal("PF_Betrieb_soll_dummy","Stundensoll","") +5}}

Um auch andere Möglichkeiten zu probieren, habe ich das userReading temponär geändert auf eine Abfrage alle 1 min.

Stundensoll {at +*00:01:00 {ReadingsVal("PF_Betrieb_soll_dummy","Stundensoll","") +5}}

Funktioniert aber auch mit anderen Zeichensetzungen nicht.
Wo liegt da mein Fehler?

Gruß
Nobbi
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

MadMax-FHEM

#1
userreadings brauchst du bei deinem Fall nicht bzw. macht es nicht was du verm. willst.

Der code bei userreadings wird ausgeführt, wenn ein Event des Gerätes/Devices kommt/gefeuert wird...

Ich bin nicht mal sicher, ob das at so überhaupt läuft weil es ja nicht korrekt definiert wird...

EDIT: steht kein Fehler im Log!? Bzw. gut, kann sein weil der Code verm. ja nicht ausgeführt wird (siehe Beschreibung userreadings)...

Bei einem dummy vermutlich: nie!? (bzw. nur, wenn du beim dummy explizit was setzt)

Vermutlich wäre nur ein at was mittels setreading den Wert beim gewünschten Device setzt das was du willst!?

EDIT: mittels setreading Device Readingname Wert kannst du bei jedem Device jedes beliebige Reading auf einen gewünschten Wert setzen...

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)

cocojambo

Ja das userReading wird wirklich nur ausgelöst wenn ein Event kommt.
Ich habe darauf mal den Vorschlag aufgegriffen, das mit at und setreading zu bewerkstelligen.
So sieht das jetzt aus, geht aber leider nicht.....

+*00:01:00 my $d= ReadingsVal("PF_Betrieb_soll","Stundensoll","");my $e= 5;setreading PF_Betrieb_soll Stundensoll $d+$e

Siehst du, woran es liegen kann. Der setreading Befehl geht einzeln, aber das mit den Variablen funktioniert irgendwie nicht.
Kommt als Ergebnis immer "$d+$e" im userreading raus.

Gruß
Norbert
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

MadMax-FHEM

Vermutlich weil die Addition in Perl gemacht werden muss...
...und ReadingsVal bzw. ReadingsNum (wenn du nur Zahlen zurück willst) sind auch Perl-Funktionen...

Also musst du erst mal nach Perl wechseln: geschweifte Klammer

Dann wenn du setreading aufrufst (das ist fhem) musst du zurück nach fhem: "fhem-Funktion"

Also in etwa so:


+*00:01:00 {my $d= ReadingsNum("PF_Betrieb_soll","Stundensoll",0) + 5;fhem("setreading PF_Betrieb_soll Stundensoll $d");}


Siehe hier: https://wiki.fhem.de/wiki/Klammerebenen

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)

cocojambo

Vielen Dank, das funktioniert einwandfrei. Mit den verschiedenen Ebenen sitze ich oft davor und kriege irgendwas nicht hin.
Meistens habe ich Glück, das ich ein Hinweis im Internet finde und mir da was "klauen" kann.
Aber ich bin froh das es geht, und auch danke für den Hinweis auf Wiki.
Gruß
Norbert
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

MadMax-FHEM

Bitte gerne!

Bitte noch [gelöst] vor den ersten Beitrag...

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)

cocojambo

Ja weiß ich Joachim,

werde ich auch zeitnah machen, aber ich habe nur noch eine Frage an Dich, wo du mir ja so schnell geholfen hast.
Könntest du mir auch einen Tip geben wie ich das mit einmal im Monat lösen könnte?

Gruß
Norbert
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

cocojambo

#8
Ich habe schon hier im Board einige Hinweise dazu gefunden und auch probiert das ganze in meinen Befehl einzubauen, aber habe immer das Problem welche Zeichen und Klammern an welche Stelle müßen. Auch der Hinweis auf die Wiki Klammern Regel hat mir nicht geholfen:

+*00:01:00 $mday==3 {my $d= ReadingsNum("PF_Betrieb_soll","Stundensoll",0) + 5.1;fhem("setreading PF_Betrieb_soll Stundensoll $d");}

Hier sollte also heute am 3.11. jede Minute "5" dazu gezählt werden, tut es aber nicht.

Gruß
Norbert

Ergänzung:

+*00:01:00 {$mday==3; my $d= ReadingsNum("PF_Betrieb_soll","Stundensoll",0) + 5.1;fhem("setreading PF_Betrieb_soll Stundensoll $d");}

So wird zwar erhöht, aber auch wenn ich statt 3 eine andere Zahl eingebe. Geht also immer noch nicht.
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

MadMax-FHEM

Du musst schon "prüfen" ob $mday == 3 ist, also: if($mday==3){mache etwas}

Und wenn du Perl verwendest, dann immer eine geschweifte Klammer auf...

Also evtl. so:


+*00:01:00 {my $d= ReadingsNum("PF_Betrieb_soll","Stundensoll",0) + 5.1;if($mday==3){fhem("setreading PF_Betrieb_soll Stundensoll $d");}}


Wobei ich jetzt nicht weiß, ob $mday bei at existiert...
...bzw. generell schon "gesetzt" ist...

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)

cocojambo

#10
Ja funktioniert. Prima.

$mday==3      >= jede Minute 1X 5 addiert
$mday==2 oder 4 Jede Minute wird als Next gezählt, aber keine Addition.

Vielen Dank nochmal
Norbert

REM: Erste Frage im Thread auf Tag/Monat geändert und als gelöst gekennzeichnet.
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000