FHEM Forum
FHEM => Anfängerfragen => Thema gestartet von: Helmi55 am 30 November 2021, 13:54:00
-
Hallo Leute
ich habe einen Shelly 1pm per MQTT2 in FHEM eingebunden.
Alles funktioniert NUR es lässt sich kein userReadings erstellen
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);;}
Es sollte "relay_0_energy_kWh" erstellt werden und dann noch "Kosten_Euro"
Selbiges funktioniert bei einem Shelly Plug s - aber das ist doch nicht vom Schalter abhängig......
Hier habe ich noch ein List angehängt
Internals:
CID shelly1pm_E09806A9DB91
DEF shelly1pm_E09806A9DB91
DEVICETOPIC Brunnen_Heizung
FUUID 61a61678-f33f-b033-336c-da6852207f8689b9
IODev myBroker
LASTInputDev myBroker
MSGCNT 326
NAME Brunnen_Heizung
NR 560
STATE 6.8
TYPE MQTT2_DEVICE
myBroker_MSGCNT 326
myBroker_TIME 2021-11-30 13:51:57
READINGS:
2021-11-30 13:51:57 0_hwID 28db600222200170
2021-11-30 13:51:57 0_tC 6.8
2021-11-30 13:51:57 0_tF 44.3
2021-11-30 13:41:56 IODev myBroker
2021-11-30 13:42:02 actions_stats_skipped 0
2021-11-30 13:42:02 cfg_changed_cnt 0
2021-11-30 13:42:02 cloud_connected false
2021-11-30 13:42:02 cloud_enabled false
2021-11-30 13:42:02 event
2021-11-30 13:42:02 event_cnt 0
2021-11-30 13:42:02 ext_sensors_temperature_unit C
2021-11-30 13:51:57 ext_temperature_0 6.8
2021-11-30 13:42:02 ext_temperature_0_hwID 28db600222200170
2021-11-30 13:42:02 ext_temperature_0_tC 8.94
2021-11-30 13:42:02 ext_temperature_0_tF 48.09
2021-11-30 13:51:57 ext_temperature_f_0 44.3
2021-11-30 13:42:02 fs_free 149345
2021-11-30 13:42:02 fs_size 233681
2021-11-30 13:42:02 fw_ver 20211109-130756/v1.11.7-g682a0db
2021-11-30 13:42:02 has_update false
2021-11-30 13:42:02 id shelly1pm-E09806A9DB91
2021-11-30 13:51:32 input_0 0
2021-11-30 13:42:02 inputs_1_event
2021-11-30 13:42:02 inputs_1_event_cnt 0
2021-11-30 13:42:02 inputs_1_input 0
2021-11-30 13:42:02 ip 10.0.0.159
2021-11-30 13:42:02 mac E09806A9DB91
2021-11-30 13:42:02 meters_1_counters_1 0.000
2021-11-30 13:42:02 meters_1_counters_2 1643.561
2021-11-30 13:42:02 meters_1_counters_3 1567.388
2021-11-30 13:42:02 meters_1_is_valid true
2021-11-30 13:42:02 meters_1_overpower 0.00
2021-11-30 13:42:02 meters_1_power 0.00
2021-11-30 13:42:02 meters_1_timestamp 1638279722
2021-11-30 13:42:02 meters_1_total 9579
2021-11-30 13:42:02 model SHSW-PM
2021-11-30 13:42:02 mqtt_connected true
2021-11-30 13:42:02 new_fw false
2021-11-30 13:42:02 online true
2021-11-30 13:51:32 overtemperature 0
2021-11-30 13:42:02 ram_free 37720
2021-11-30 13:42:02 ram_total 50472
2021-11-30 13:51:32 relay_0 off
2021-11-30 13:51:32 relay_0_energy 11128
2021-11-30 13:51:32 relay_0_power 0.00
2021-11-30 13:42:02 relays_1_has_timer false
2021-11-30 13:42:02 relays_1_ison false
2021-11-30 13:42:02 relays_1_overpower false
2021-11-30 13:42:02 relays_1_source mqtt
2021-11-30 13:42:02 relays_1_timer_duration 0
2021-11-30 13:42:02 relays_1_timer_remaining 0
2021-11-30 13:42:02 relays_1_timer_started 0
2021-11-30 13:42:02 serial 55
2021-11-30 13:44:50 state relay_0
2021-11-30 13:51:32 temperature 26.73
2021-11-30 13:51:32 temperature_f 80.11
2021-11-30 13:51:32 temperature_status Normal
2021-11-30 13:42:02 time 13:42
2021-11-30 13:42:02 tmp_is_valid true
2021-11-30 13:42:02 tmp_tC 29.75
2021-11-30 13:42:02 tmp_tF 85.55
2021-11-30 13:42:02 unixtime 1638276122
2021-11-30 13:42:02 update_has_update false
2021-11-30 13:42:02 update_new_version 20211109-130756/v1.11.7-g682a0db
2021-11-30 13:42:02 update_old_version 20211109-130756/v1.11.7-g682a0db
2021-11-30 13:42:02 update_status idle
2021-11-30 13:42:02 uptime 1421
2021-11-30 13:42:02 wifi_sta_connected true
2021-11-30 13:42:02 wifi_sta_ip 10.0.0.159
2021-11-30 13:42:02 wifi_sta_rssi -30
2021-11-30 13:42:02 wifi_sta_ssid Dahoam
Attributes:
event-on-change-reading ext_temperature_0,relay_0
readingList shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/ext_temperature/0:.* ext_temperature_0
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/ext_temperature_f/0:.* ext_temperature_f_0
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/ext_temperatures:.* { json2nameValue($EVENT) }
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/ext_temperatures_f:.* { json2nameValue($EVENT) }
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/relay/0:.* relay_0
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/input/0:.* input_0
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/relay/0/power:.* relay_0_power
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/relay/0/energy:.* relay_0_energy
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/temperature:.* temperature
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/temperature_f:.* temperature_f
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/overtemperature:.* overtemperature
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/temperature_status:.* temperature_status
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/input_event/0:.* { json2nameValue($EVENT) }
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/online:.* online
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/announce:.* { json2nameValue($EVENT) }
shelly1pm_E09806A9DB91:shellies/shelly1pm-E09806A9DB91/info:.* { json2nameValue($EVENT) }
room Brunnen,Favoriten,MQTT2_DEVICE
setList relay_0:iconSwitch,on,li_wht_off,off,li_wht_on shellies/shelly1pm-E09806A9DB91/relay/0/command $EVTPART1
x_mqttcom shellies/shelly1pm-E09806A9DB91/command $EVTPART1
stateFormat ext_temperature_0
userReadings 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);;}
verbose 5
webCmd relay_0
webCmdLabel :
Zur Sicherheit habe ich auch schon einen Neustart vom FHEM durchgeführt.
Im Logfile mit verbose 5 sehe ich auch keine Auffälligkeiten
2021.11.30 13:44:36 3: MQTT2_DEVICE set Brunnen_Heizung relay_0 on
2021.11.30 13:44:37 4: MQTT2_DEVICE_Parse: Brunnen_Heizung shellies/shelly1pm-E09806A9DB91/relay/0 => relay_0
2021.11.30 13:44:39 4: MQTT2_DEVICE_Parse: Brunnen_Heizung shellies/shelly1pm-E09806A9DB91/relay/0/power => relay_0_power
2021.11.30 13:44:39 4: MQTT2_DEVICE_Parse: Brunnen_Heizung shellies/shelly1pm-E09806A9DB91/relay/0/energy => relay_0_energy
2021.11.30 13:44:42 4: MQTT2_DEVICE_Parse: Brunnen_Heizung shellies/shelly1pm-E09806A9DB91/ext_temperature/0 => ext_temperature_0
2021.11.30 13:44:42 4: MQTT2_DEVICE_Parse: Brunnen_Heizung shellies/shelly1pm-E09806A9DB91/ext_temperature_f/0 => ext_temperature_f_0
2021.11.30 13:44:42 4: MQTT2_DEVICE_Parse: Brunnen_Heizung shellies/shelly1pm-E09806A9DB91/ext_temperatures => { json2nameValue($EVENT) }
2021.11.30 13:44:42 4: MQTT2_DEVICE_Parse: Brunnen_Heizung shellies/shelly1pm-E09806A9DB91/ext_temperatures_f => { json2nameValue($EVENT) }
2021.11.30 13:44:50 3: MQTT2_DEVICE set Brunnen_Heizung relay_0 off
Was mach ich da bitte falsch?
Danke
Helmut
-
Hi,
drei Dinge: $NAME bei notify - aber $name bei userReadings.
Den trigger auf ein Reading was im gleichen Code Abschnitt erstellt wird, kann sein das gibt keinen Event wegen Verhinderung von Schleifen.
Besser ReadingsNum() für Zahlen nehmen
Gruß Otto
-
Hallo Otto
Danke für deine Zeit.
Ich habe jetzt mal auf ein userReadings begrenzt
relay_0_energy_kWh:relay_0_energy.* monotonic {ReadingsNum($name,"relay_0_energy",0)/60/1000.0}
und ReadingsNum und $name (auch $NAME) verwendet.
Leider ohne Erfolg....
Was ich überhaupt nicht verstehe, wieso funktioniert meine "alteVersion" bei anderen Devices??
Hast du noch eine Idee bitte?
Gruß
Helmut
-
hast Du events verhindert?
list relay_0_energy_kWh event-on-change-reading
-
Eventuell ist aber auch das mit der Schleife noch relevant?
relay_0_energy_kWh:relay_0_energy.*
weil relay_0_energy.* auch auf relay_0_energy_kWh reagiert...
Gruß, Joachim
-
Hallo
also ich hatte das attr "event-on-change-reading ext_temperature_0,relay_0" gesetzt.
Was hat das für eine Auswirkung auf "relay_0_energy" ? Wird hier alles mit relay_0..... getriggert?
Sie sieht das userReadings nun aus
relay_0_energy_kWh:relay_0_energy.* monotonic {ReadingsNum($name,"relay_0_energy",0)/60/1000.0}, Kosten_Euro:relay_0_energy_kWh.* { sprintf("%.2f",ReadingsNum($name,"relay_0_energy_kWh",0)*.2);;}
und es funktioniert wie es soll.
Hat mich ja gewundert, da ich dieses userReadings auch in anderen Devices verwende.
Auslöser war event-on-change......
Danke für eure Hilfe
Gesund bleiben
Helmut
-
Hallo Helmut,
hier steht nicht von regExp oder so
event-on-change-reading
Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings". Wenn gesetzt, erzeugen nur Veränderungen der gelisteten "readings" ein Ereignis. Wenn die aktualiserten Werte der gelisteten "readings" identisch sind, wird kein Ereignis generiert.
Wenn hinter dem Namen eines "readings" eine :Schwelle angegeben ist, wird das Event nur getriggert wenn die Änderung grösser als diese Schwelle ist.
Die unterschiedlichen Bedeutungen von event-on-update-reading und event-on-change-reading sind folgende:
Wenn beide Attribute nicht gesetzt sind erzeugt jede Aktualisierung eines jeden "readings" eines Gerätes ein Ereignis.
Wenn eines der Attribute gesetzt ist, erzeugen nur Updates oder änderungen von "readings" die in einem der Attribute gesetzt sind ein Ereignis.
Wenn ein "reading" in event-on-update-reading aufgeführt ist, erzeugt eine Aktualisierung ein Ereignis unabhängig ob das "reading" auch in event-on-change-reading aufgelistet ist.
also wenn reading nicht gelistet dann kein Event!
Gruß Otto