Hallo
ich scheitere mal wieder an was einfachem:
ich habe bei einem PlugS ein userReadings angelegt um die Kosten zu berechnen:
relay_0_energy_kWh monotonic { ReadingsVal("Softub","relay_0_energy",0)/60/1000.0}, Kosten {ReadingsVal("Softub","relay_0_energy_kWh",0)*.2 ." €"}
Als Ergebnis habe ich dann ein Readings Kosten
Nun wollte ich dies mit sprintf formatieren : {sprintf("%.2f",ReadingsVal("Softub","Kosten",0))." €"}
Bei einem Temperatursensor kann ich dies ohne Probleme mit stateFormat durchführen.
Egal ob ich ReadingsVal oder ReadingsNum verwende bzw. satt Softub den Shelly Namen verwende tut sich nix.......
Was mach ich da falsch?
hier ein List von Softub
Internals:
CID shellyplug_s_B86B05
DEF shellyplug_s_B86B05
DEVICETOPIC Softub
FUUID 5f3a6d23-f33f-ee2d-6a32-ecea64d8a5af6272
IODev myBrokerHaus
LASTInputDev myBrokerHaus
MSGCNT 23438
NAME Softub
NR 603
STATE on
TYPE MQTT2_DEVICE
myBrokerHaus_MSGCNT 23438
myBrokerHaus_TIME 2021-02-11 18:37:59
READINGS:
2021-02-11 18:37:59 Kosten 1.23475666666667 €
2020-08-17 13:44:22 actions_stats_skipped 0
2020-08-17 13:44:22 attrTemplateVersion 20200522 or prior
2020-08-17 13:44:22 cfg_changed_cnt 0
2020-08-17 13:44:22 cloud_connected false
2020-08-17 13:44:22 cloud_enabled false
2020-08-17 13:44:22 fs_free 164656
2020-08-17 13:44:22 fs_size 233681
2021-02-10 18:08:57 fw_ver 20210115-103659/v1.9.4@e2732e05
2020-08-17 13:44:22 has_update false
2021-02-10 18:08:57 id shellyplug-s-B86B05
2021-02-10 18:08:57 ip 10.0.0.xxx
2021-02-10 18:08:57 mac 98F4ABB86B05
2020-08-17 13:44:22 meters_1_counters_1 0.000
2020-08-17 13:44:22 meters_1_counters_2 0.000
2020-08-17 13:44:22 meters_1_counters_3 0.000
2020-08-17 13:44:22 meters_1_is_valid true
2020-08-17 13:44:22 meters_1_overpower 0.00
2020-08-17 13:44:22 meters_1_power 0.00
2020-08-17 13:44:22 meters_1_timestamp 1597671862
2020-08-17 13:44:22 meters_1_total 0
2021-02-10 18:08:57 model SHPLG-S
2020-08-17 13:44:22 mqtt_connected true
2021-02-10 18:08:57 new_fw false
2021-02-10 18:08:57 online true
2021-02-11 18:37:46 overtemperature 0
2020-08-17 13:44:22 ram_free 39472
2020-08-17 13:44:22 ram_total 51080
2021-02-11 18:37:46 relay0 on
2021-02-11 18:37:59 relay_0_energy 307103
2021-02-11 18:37:59 relay_0_energy_kWh 6.17378333333337
2021-02-11 18:37:59 relay_0_kWh 5.12
2021-02-11 18:37:45 relay_0_power 3.51
2020-08-17 13:44:22 relays_1_has_timer false
2020-08-17 13:44:22 relays_1_ison false
2020-08-17 13:44:22 relays_1_overpower false
2020-08-17 13:44:22 relays_1_source input
2020-08-17 13:44:22 relays_1_timer_duration 0
2020-08-17 13:44:22 relays_1_timer_remaining 0
2020-08-17 13:44:22 relays_1_timer_started 0
2020-08-17 13:44:22 serial 2
2021-02-11 18:37:46 state on
2021-02-11 18:37:46 temperature 13.09
2021-02-11 18:37:46 temperature_f 55.57
2020-08-17 13:44:22 time 13:44
2020-08-17 13:44:22 tmp_is_valid true
2020-08-17 13:44:22 tmp_tC 33.19
2020-08-17 13:44:22 tmp_tF 91.74
2020-08-17 13:44:22 unixtime 1597671862
2020-08-17 13:44:22 update_has_update false
2020-08-17 13:44:22 update_new_version 20200812-091824/v1.8.0@8acf41b0
2020-08-17 13:44:22 update_old_version 20200812-091824/v1.8.0@8acf41b0
2020-08-17 13:44:22 update_status idle
2020-08-17 13:44:22 uptime 37
2020-08-17 13:44:22 wifi_sta_connected true
2020-08-17 13:44:22 wifi_sta_ip 10.0.0.xxx
2020-08-17 13:44:22 wifi_sta_rssi -86
2020-08-17 13:44:22 wifi_sta_ssid Jadiegibtes
Attributes:
IODev myBrokerHaus
alias Softub
devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "false" ? "rot" : ReadingsVal($name,"new_fw","false") eq "true" ? "gelb" : "gruen";; my $light = ReadingsVal($name,"state","off");; my $show = '<a href="';;$show .= $onl eq "gelb" ? "/fhem?cmd.dummy=set $name x_update&XHR=1\">" : "http://".ReadingsVal($name,"ip","none").' "target="_blank">';;$show .= FW_makeImage("10px-kreis-".$onl)."</a>";; "<div> $show <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a></div>" }
genericDeviceType switch
getList power:noArg shellies/shellyplug-s-B86B05/relay/power power
model shellyplug
readingList shellies/shellyplug-s-B86B05/relay/0:.* state
shellies/shellyplug-s-B86B05/relay/0:.* relay0
shellies/shellyplug-s-B86B05/input/0:.* input0
shellies/shellyplug-s-B86B05/online:.* online
shellies/shellyplug-s-B86B05/announce:.* { json2nameValue($EVENT) }
shellies/announce:.* { $EVENT =~ m,..id...shellyplug-s-B86B05...mac.*, ? json2nameValue($EVENT) : return }
shellyplug_s_B86B05:shellies/shellyplug-s-B86B05/info:.* { json2nameValue($EVENT) }
shellyplug_s_B86B05:shellies/shellyplug-s-B86B05/relay/0/power:.* relay_0_power
shellyplug_s_B86B05:shellies/shellyplug-s-B86B05/relay/0/energy:.* relay_0_energy
shellyplug_s_B86B05:shellies/shellyplug-s-B86B05/temperature:.* temperature
shellyplug_s_B86B05:shellies/shellyplug-s-B86B05/temperature_f:.* temperature_f
shellyplug_s_B86B05:shellies/shellyplug-s-B86B05/overtemperature:.* overtemperature
shellyplug_s_B86B05:shellies/shellyplug-s-B86B05/relay/0/energy:.* {'relay_0_kWh' => sprintf("%.2f",$EVENT/60/1000)}
room MQTT2_DEVICE,Terrasse
setList off:noArg shellies/shellyplug-s-B86B05/relay/0/command off
on:noArg shellies/shellyplug-s-B86B05/relay/0/command on
x_update:noArg shellies/shellyplug-s-B86B05/command update_fw
x_mqttcom shellies/shellyplug-s-B86B05/command $EVTPART1
userReadings relay_0_energy_kWh monotonic { ReadingsVal("Softub","relay_0_energy",0)/60/1000.0}, Kosten {ReadingsVal("Softub","relay_0_energy_kWh",0)*.2 ." €"}
Danke für eure Hilfe
Gruß
helmut
Hallo
Gut ReadingsVal war hier natürlich der falsche Ansatz
Wenn ich in der Eingabezeile von FHEM
{sprintf("%.2f",ReadingsNum("Softub","Kosten",0))." €"}
eingebe, bekomme ich den Wert Kosten auf 2 Nachkommastellen angezeigt.
Nur wenn ich das an das userReadings anhänge, funktioniert es nicht.
ich muss es doch beim userReadings anhängen oder?
relay_0_energy_kWh monotonic { ReadingsVal("Softub","relay_0_energy",0)/60/1000.0}, Kosten {ReadingsVal("Softub","relay_0_energy_kWh",0)*.2 ." €"}, {sprintf("%.2f",ReadingsNum("Softub","Kosten",0))." €"}
Gruß
Helmut
Hallo
keiner eine Idee wie ich weiterkomme?
Mit Dr. Google habe ich nichts gefunden und auch in der AnfängerDoku nix
Danke und Gruß
Helmut
Im attrTemplate "shelly1_w_energy_measuring_washer_example" gibt's etwas Code in die Richtung (da aber mit einem bevorrechtigt gecheckten zentralen Gerät für den aktuellen Strompreis). Kannst du sicher ausschlachten:
attr DEVICE userReadings total_temp:loadState:.on { ReadingsNum("$name","relay_0_kWh",0) },wash:loadState:.off { ReadingsNum("$name","total",0) - ReadingsNum("$name","total_temp",0) },price:loadState:.off {sprintf("%.2f",ReadingsNum("$name","wash",1)*ReadingsNum("kWh_Price","state",0.30))},time:loadState:.off {strftime("%H:%M", localtime(ReadingsAge("$name","total_temp",0)-3600))}
Anmerkungen:
- userReadings immer mit Trigger!
- $name ist erlaubt;
- habe Zweife, ob es Sinn macht, Einheiten in den Reading-Wert reinzuknödeln; persönliche Tendez wäre: nur runden;
- das dritte userReading hat nicht nur keinen trigger, sondern auch keinen Namen. Das kann m.E. nicht klappen.
So müsste es gehen:
relay_0_energy_kWh:relay_0_energy.* monotonic {
ReadingsVal($NAME,"relay_0_energy",0)/60/1000.0
},
Kosten_Euro {
sprintf("%.2f €",ReadingsVal($NAME,"relay_0_energy_kWh",0)*.2);;
}
Ich würde aber auch eher Folgendes machen:
relay_0_energy_kWh:relay_0_energy.* monotonic {
ReadingsVal($NAME,"relay_0_energy",0)/60/1000.0
},
Kosten_Euro {
sprintf("%.2f",ReadingsVal($NAME,"relay_0_energy_kWh",0)*.2);;
}
und dann so etwas wie:
attr <device> stateFormat {sprintf("%.02f €",ReadingsVal($name,"Kosten","0"))}
@ eki
Herzlichen Dank. So hat es funktioniert:
relay_0_energy_kWh:relay_0_energy.* monotonic {
ReadingsVal($NAME,"relay_0_energy",0)/60/1000.0},
Kosten_Euro {
sprintf("%.2f",ReadingsVal($NAME,"relay_0_energy_kWh",0)*.2);;}
Schönen Tag noch - gesund bleiben
Gruß
Helmut
Gibt es Gründe, warum du keinen trigger für das 2. userReading verwendest?
(Einfach mal eine Zeitlang den Event-Monitor mitlaufen lassen und filtern, was der Shelly so produziert; dann wird das ggf. klarer, warum die Frage nochmal gestellt wird).
Servus
sorry da kann ich dir nicht folgen.....
Das hat der gesprächige ausgeworfen:
2021-02-15 15:01:00 MQTT2_DEVICE Softub relay_0_kWh: 30.30
2021-02-15 15:01:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:00 MQTT2_DEVICE Softub relay_0_energy: 1817743
2021-02-15 15:01:00 MQTT2_DEVICE Softub relay_0_energy_kWh: 31.3504500000001
2021-02-15 15:01:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:00 MQTT2_DEVICE Softub relay_0_power: 4.08
2021-02-15 15:01:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:00 MQTT2_DEVICE Softub relay_0_kWh: 30.30
2021-02-15 15:01:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:00 MQTT2_DEVICE Softub relay_0_energy: 1817743
2021-02-15 15:01:00 MQTT2_DEVICE Softub relay_0_energy_kWh: 31.3504500000001
2021-02-15 15:01:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:00 MQTT2_DEVICE Softub relay0: on
2021-02-15 15:01:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:00 MQTT2_DEVICE Softub on
2021-02-15 15:01:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:00 MQTT2_DEVICE Softub temperature: 13.09
2021-02-15 15:01:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:00 MQTT2_DEVICE Softub temperature_f: 55.57
2021-02-15 15:01:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:00 MQTT2_DEVICE Softub overtemperature: 0
2021-02-15 15:01:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:30 MQTT2_DEVICE Softub relay_0_power: 3.95
2021-02-15 15:01:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:30 MQTT2_DEVICE Softub relay_0_kWh: 30.30
2021-02-15 15:01:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:30 MQTT2_DEVICE Softub relay_0_energy: 1817743
2021-02-15 15:01:30 MQTT2_DEVICE Softub relay_0_energy_kWh: 31.3504500000001
2021-02-15 15:01:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:30 MQTT2_DEVICE Softub relay0: on
2021-02-15 15:01:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:30 MQTT2_DEVICE Softub on
2021-02-15 15:01:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:30 MQTT2_DEVICE Softub temperature: 13.09
2021-02-15 15:01:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:30 MQTT2_DEVICE Softub temperature_f: 55.57
2021-02-15 15:01:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:01:30 MQTT2_DEVICE Softub overtemperature: 0
2021-02-15 15:01:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:00 MQTT2_DEVICE Softub relay_0_kWh: 30.30
2021-02-15 15:02:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:00 MQTT2_DEVICE Softub relay_0_energy: 1817747
2021-02-15 15:02:00 MQTT2_DEVICE Softub relay_0_energy_kWh: 31.3505166666667
2021-02-15 15:02:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:00 MQTT2_DEVICE Softub relay_0_power: 3.99
2021-02-15 15:02:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:00 MQTT2_DEVICE Softub relay_0_kWh: 30.30
2021-02-15 15:02:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:00 MQTT2_DEVICE Softub relay_0_energy: 1817747
2021-02-15 15:02:00 MQTT2_DEVICE Softub relay_0_energy_kWh: 31.3505166666667
2021-02-15 15:02:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:00 MQTT2_DEVICE Softub relay0: on
2021-02-15 15:02:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:00 MQTT2_DEVICE Softub on
2021-02-15 15:02:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:00 MQTT2_DEVICE Softub temperature: 13.09
2021-02-15 15:02:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:00 MQTT2_DEVICE Softub temperature_f: 55.57
2021-02-15 15:02:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:00 MQTT2_DEVICE Softub overtemperature: 0
2021-02-15 15:02:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:30 MQTT2_DEVICE Softub relay_0_power: 4.20
2021-02-15 15:02:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:30 MQTT2_DEVICE Softub relay_0_kWh: 30.30
2021-02-15 15:02:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:30 MQTT2_DEVICE Softub relay_0_energy: 1817747
2021-02-15 15:02:30 MQTT2_DEVICE Softub relay_0_energy_kWh: 31.3505166666667
2021-02-15 15:02:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:30 MQTT2_DEVICE Softub relay0: on
2021-02-15 15:02:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:30 MQTT2_DEVICE Softub on
2021-02-15 15:02:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:30 MQTT2_DEVICE Softub temperature: 13.09
2021-02-15 15:02:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:30 MQTT2_DEVICE Softub temperature_f: 55.57
2021-02-15 15:02:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:02:30 MQTT2_DEVICE Softub overtemperature: 0
2021-02-15 15:02:30 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:03:00 MQTT2_DEVICE Softub relay_0_kWh: 30.30
2021-02-15 15:03:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:03:00 MQTT2_DEVICE Softub relay_0_energy: 1817751
2021-02-15 15:03:00 MQTT2_DEVICE Softub relay_0_energy_kWh: 31.3505833333334
2021-02-15 15:03:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:03:00 MQTT2_DEVICE Softub relay_0_power: 4.10
2021-02-15 15:03:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:03:00 MQTT2_DEVICE Softub relay_0_kWh: 30.30
2021-02-15 15:03:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:03:00 MQTT2_DEVICE Softub relay_0_energy: 1817751
2021-02-15 15:03:00 MQTT2_DEVICE Softub relay_0_energy_kWh: 31.3505833333334
2021-02-15 15:03:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:03:00 MQTT2_DEVICE Softub relay0: on
2021-02-15 15:03:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:03:00 MQTT2_DEVICE Softub on
2021-02-15 15:03:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:03:00 MQTT2_DEVICE Softub temperature: 13.09
2021-02-15 15:03:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:03:00 MQTT2_DEVICE Softub temperature_f: 55.57
2021-02-15 15:03:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
2021-02-15 15:03:00 MQTT2_DEVICE Softub overtemperature: 0
2021-02-15 15:03:00 MQTT2_DEVICE Softub Kosten_Euro: 6.27
Würdest du es mir bitte an einem konkreten Beispiel erklären - Herzlichen Dank
Gruß Helmut
Zitat von: Beta-User am 15 Februar 2021, 14:51:38
Gibt es Gründe, warum du keinen trigger für das 2. userReading verwendest?
(Einfach mal eine Zeitlang den Event-Monitor mitlaufen lassen und filtern, was der Shelly so produziert; dann wird das ggf. klarer, warum die Frage nochmal gestellt wird).
Nein, gibt es nicht, habe ich schlicht und einfach vergessen (ist aber super wichtig, um die Prozessorlast zu begrenzen).
@Helmi55:
relay_0_energy_kWh:relay_0_energy.* monotonic {
ReadingsVal($NAME,"relay_0_energy",0)/60/1000.0},
Kosten_Euro:relay_0_energy_kWh.* {
sprintf("%.2f",ReadingsVal($NAME,"relay_0_energy_kWh",0)*.2);;}
...hatte mich nur gewundert, weil ich vorher extra noch auf den Punkt hingewiesen hatte...
"Superwichtig" würde ich es nicht nennen, aber man sieht an dem Log-Auszug eben auch, dass bei jeder Statusrückmeldung "Relay ist noch an" eben auch diese Berechnung durchgeführt wird. Ist halt unsauber, und wenn man z.B. irgendwas über so einen Mechanismus zählt, ist/wird es schlicht falsch!
(Btw: die weitere Frage wäre, ob es nicht Sinn macht, die reguläre Aktualisierung auf "0" zu stellen oder die eocr-Familie passend zu setzen, damit man unnötige Events insgesamt vermeidet und wirklich den letzten SCHALT-Zeitpunkt sieht, und nicht den (mAn. völlig uninteressanten) letzten AKTUALISIERUNGS-Zeitpunkt.)
Falls unklar ist, was mit "eocr-Familie" etc. gemeint ist: die letzten Beiträge im Shelly-attrTemplate-Thread durchgehen...
Hallo danke euch
der Shelly Plug wird eigentlich nicht geschaltet.
Ich missbrauche ihn eigentlich nur um zu sehen wieviel der Softub Whirlpool so an Strom frisst.
Vielleicht schalte ich ja im Frühjahr wenns wärmer ist dafür einen 1er Shelly mit pm in eine Dose.....
Muss ich mir noch überlegen ob es Sinn macht
Das mit eocr werde ich mir jetzt dann ansehen
Nochmals Danke
Helmut