Hi,
neuerdings läuft mein Log mit obiger Meldung voll, wobei die Line-Nummern unterschiedlich sind.
Im Forum gibt es ähnliche Fragestellungen, die sich auf ein Structure beziehen. Ich habe nur zwei Structures, von denen eines STATE und state "undefined" aufweist, weshalb ich dieses verdächtige ;-)
Kann natürlich aber auch daneben liegen.
Dieses Structure sieht so aus:
defmod Alarmleuchten structure room HUEDevice1 HUEDevice3 HUEDevice5 HUEDevice7 (insgesamt 33 Devices, die alle tatsächlich existieren)
attr Alarmleuchten room Geräte,HUEDevice
setstate Alarmleuchten undefined
setstate Alarmleuchten 2023-01-18 17:23:04 LastDevice HUEDevice54
setstate Alarmleuchten 2023-01-18 17:23:04 LastDevice_Abs HUEDevice54
setstate Alarmleuchten 2023-01-18 17:23:04 state undefined
Hat jemand eine Idee, wie ich die Meldung wegbekomme - oder noch besser: den Fehler finden und beheben kann?
LG
PS: Hmmm...In der Batterieüberwachung taucht ein OK auf. Das ist das zweite Structure. Im state und STATE steht OK. Das RAW:
defmod structBatteriestatus structure Batteriestatus Bewegungssensor.Haustuer Bewegungssensor.Nacht.Flur Bewegungssensor.SZ.Ingo Bewegungssensor.Spuele Bewegungssensor.Vorratsraum Bewegungssensor.oberer.Flur Bewegungssensor.Basis.WZ TempSensor.Flur TempSensor.Haustuer TempSensor.Kueche TempSensor.SZ.Ingo TempSensor.oberer.Flur
attr structBatteriestatus userattr myBatteryStatus
attr structBatteriestatus clientstate_behavior relative
attr structBatteriestatus clientstate_priority OK nOK
attr structBatteriestatus event-on-change-reading .*
attr structBatteriestatus room Geräte
setstate structBatteriestatus OK
Kann es das sein?
Wenn die Meldung alleine und bezuglos im Log steht, dann hilft u.U. "stacktrace unter global zu aktivieren" ...
Danke, OdfFhem, probiere ich sofort aus.
Kurios.... Die Fehlermeldung will sich wohl nicht in die Karten gucken lassen :o
Jedenfalls erscheint die Meldung derzeit nicht mehr. Mal morgen sehen...
Wenn die Meldung das "ok" tatsächlich in Kleinbuchstaben ausgibt, dann wird das eher nicht aus einer Deiner structures kommen, denn dort sehe ich nirgends ein kleingeschriebenes "ok". Außerdem hat die structure keinen Grund, numerische Werte zu vergleichen.
Das stimmt wohl. Die Fehlermeldung taucht jetzt neuerdings im räumlichen Zusammenhang mit unserem Zisternensensor auf (wobei die Anzeige am Gerät einwandfrei funktioniert). Typisches Beispiel:
SI_Liquid_Check: Zisterne no Sensor found or Read-Error
2023.01.19 06:48:44 3: error while requesting http://device_ip: ???:80/infos.json - http://device_ip: ???:80/infos.json: malformed or unsupported URL
2023.01.19 06:53:44 3: SI_Liquid_Check: Zisterne no Sensor found or Read-Error
2023.01.19 06:55:24 3: error while requesting http://device_ip: ???:80/infos.json - http://device_ip: ???:80/infos.json: malformed or unsupported URL
2023.01.19 06:56:17 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 382509) line 1.
2023.01.19 07:00:24 3: SI_Liquid_Check: Zisterne no Sensor found or Read-Error
2023.01.19 07:02:04 3: error while requesting http://device_ip: ???:80/infos.json - http://device_ip: ???:80/infos.json: malformed or unsupported URL
2023.01.19 07:05:01 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 382895) line 1.
Die Internals der Zisterne zeigten einen Error, wobei anscheinend der Sensor nicht gefunden wurde. Hab danach den Sensor über das Menue suchen lassen
2023.01.19 10:30:36 3: SI_Liquid_Check: Zisterne Set <suche_sensor> called
2023.01.19 10:30:37 3: SI_Liquid_Check: Zisterne get_sensor_addr liquidcheck, 192.168.178.102
und die Internals waren wieder okay.
Scheint der Fehler zu sein.... ich werde mal beobachten.
Hm, jetzt gibt es den ersten stacktrace, mit dem ich allerdings nicht viel anfangen kann:
2023.01.19 15:35:34 1: PERL WARNING: Argument "ok" isn't numeric in numeric gt (>) at (eval 513492) line 1.
2023.01.19 15:35:34 1: stacktrace:
2023.01.19 15:35:34 1: main::__ANON__ called by (eval 513492) (1)
2023.01.19 15:35:34 1: (eval) called by ./FHEM/33_readingsGroup.pm (357)
2023.01.19 15:35:34 1: main::lookup2 called by ./FHEM/33_readingsGroup.pm (1445)
2023.01.19 15:35:34 1: main::readingsGroup_Notify called by fhem.pl (3976)
2023.01.19 15:35:34 1: main::CallFn called by fhem.pl (3888)
2023.01.19 15:35:34 1: main::DoTrigger called by fhem.pl (4995)
2023.01.19 15:35:34 1: main::readingsEndUpdate called by ./FHEM/88_HMCCU.pm (9105)
2023.01.19 15:35:34 1: main::HMCCU_EndBulkUpdate called by ./FHEM/88_HMCCU.pm (4843)
2023.01.19 15:35:34 1: main::HMCCU_UpdateParamsetReadings called by ./FHEM/88_HMCCU.pm (4959)
2023.01.19 15:35:34 1: main::HMCCU_UpdateMultipleDevices called by ./FHEM/88_HMCCURPCPROC.pm (878)
2023.01.19 15:35:34 1: main::HMCCURPCPROC_Read called by fhem.pl (3976)
2023.01.19 15:35:34 1: main::CallFn called by fhem.pl (784)
Das Wiki kann mir bei der Interpretation nicht weiterhelfen. Gehe ich recht in der Annahme, dass der Fehler gleich durch mehrere Ursachen herbeigeführt wird? Oder handelt es sich um verschiedene Fehler mit ganz unterschiedlichen Ursachen?
HMCCU sind meine Heizungsthermostate. Mit dem Rest kann ich nichts anfangen. _ANON_? CallFn? lookup2? DoTrigger (neuer Dortmunder Stürmer??) ua......Wie kann man wohl die Bedeutung entschlüsseln?
LG
Ganz grob könnte man sagen, dass ein HMCCU-Reading aktualisiert und eine readingsGroup darüber informiert wurde. Beim Neuaufbau der readingsGroup sorgt der Wert "ok" in einem numerischen Vergleich für den Fehler.
U.U. reicht die "dünne" Info schon, um ein verdächtiges HMCCU- oder readingsGroup-Device ausfindig zu machen ...
Das einzige Feld mit einem "ok" ist das für die Batterie:
battery ok 2023-01-19 16:27:02
Und tatsächlich wurde der Fehler exakt zur selben Zeit gemeldet, als das Device (genauer: alle vier Thermostate) aktualisiert wurde...
Da kann ich nur den Maintainer ansprechen, oder?
Vielen Dank, OdfFhem!
Zitat von: is2late am 19 Januar 2023, 15:54:34
Das Wiki kann mir bei der Interpretation nicht weiterhelfen.
Warum sollte das Wiki das auch tun?
Zitat von: is2late am 19 Januar 2023, 15:54:34
Gehe ich recht in der Annahme, dass der Fehler gleich durch mehrere Ursachen herbeigeführt wird?
Oder handelt es sich um verschiedene Fehler mit ganz unterschiedlichen Ursachen?
Nein, es ist nur ein Fehler.
Zitat von: is2late am 19 Januar 2023, 15:54:34
Wie kann man wohl die Bedeutung entschlüsseln?
Indem man die "called by" Liste unterhalb der Meldung stacktrace von unten nach oben liest.
Letzte Zeile vor dem "main::__ANON__" benennt die aufgerufene Funktion, aus der die Perl Warnung stammt: main::lookup2 im Modul readingsGroup
Zitat von: is2late am 19 Januar 2023, 17:05:42
Da kann ich nur den Maintainer ansprechen, oder?
Nein, warum? Die Meldung tritt doch offenbar nur bei Dir auf und ist somit vermutlich kein Modul-Problem.
Zeig doch mal ein list von Deiner readingsGroup, in der das reading steht und angezeigt werden soll.
Danke!
ZitatZeig doch mal ein list von Deiner readingsGroup, in der das reading steht und angezeigt werden soll.
Wie fertigt man das an?
ACTIVE_PROFILE
2
ACTUAL_TEMPERATURE
14.4
ACTUAL_TEMPERATURE_STATUS
NORMAL
BOOST_MODE
false
BOOST_TIME
0
FROST_PROTECTION
false
IODev
d_ccu
LEVEL
0
LEVEL_STATUS
NORMAL
PARTY_MODE
false
PARTY_SET_POINT_TEMPERATURE
0.0
PARTY_TIME_END
2023-01-19 17:40:00
PARTY_TIME_START
2023-01-19 17:40:00
QUICK_VETO_TIME
0
SET_POINT_MODE
manual
SET_POINT_TEMPERATURE
5.0
SWITCH_POINT_OCCURED
false
VALVE_ADAPTION
false
VALVE_STATE
ADAPTION_DONE
WINDOW_STATE
closed
activity
alive
battery
ok
control
5.0
desired-temp
5.0
devstate
ok
hmstate
14.4
measured-temp
14.4
rssidevice
-80
rssipeer
-79
state
14.4
voltage
2.8
Hab oben die Readingsgroup reinkopiert, aber sicher gibt es besseren Weg...
Zitat von: is2late am 20 Januar 2023, 13:03:04
Wie fertigt man das an?
In der Device Ansicht gaaanz unten: Copy for forum.fhem.de
Den Inhalt der Zwischenablage dann in eine Nachricht kopieren.
Grüße Jörg
@Jörg und wie zitiert man richtig? Also so, dass die eigene Antwort nicht im Zitat des Fragestellers steht? 8)
Zitat von: JoWiemann am 20 Januar 2023, 13:23:50
In der Device Ansicht gaaanz unten: Copy for forum.fhem.de
Den Inhalt der Zwischenablage dann in eine Nachricht kopieren.
Dir ist hoffentlich klar, dass das bei vielen FHEM Nutzern so nicht funktioniert?
Zitat von: is2late am 20 Januar 2023, 13:03:04
Wie fertigt man das an?
Für das, was wir hier brauchen, ist der einfachste Weg:
"list -r <nameDerReadingsgroup>"
und dann das Ergebnis hier in den Thread posten, bitte innerhalb von code-Tags (das war ja schon richtig gemacht)
Zitat von: betateilchen am 20 Januar 2023, 13:26:04
@Jörg und wie zitiert man richtig? Also so, dass die eigene Antwort nicht im Zitat des Fragestellers steht? 8)
Dir ist hoffentlich klar, dass das bei vielen FHEM Nutzern so nicht funktioniert?
Stimmt. Habe das auf dem kleinen SmartPhone Bildschirm nicht gesehen.
Und, warum funktioniert das nicht? Wg. älterer Version oder wg. Handling?
Grüße Jörg
Zitat von: JoWiemann am 20 Januar 2023, 13:33:26
Und, warum funktioniert das nicht? Wg. älterer Version oder wg. Handling?
Weil das nur unter Windows funktioniert.
Unter macOS gibt es den Link "Copy for forum" in den devices überhaupt nicht.
@JoWiemann: Dankeschön, hat funktioniert
@betateilchen: Merci, merke ich mir
Wobei da unterschiedliche Ergebnisse herauszukommen scheinen....
list -r Fitness_Thermostat (oder ist die Readingsgroup anders benannt als das Device?)
define Fitness_Thermostat HMCCUCHN 00201D89A7F7D9:1
attr Fitness_Thermostat cmdIcon auto:sani_heating_automatic manu:sani_heating_manual boost:sani_heating_boost on:general_an off:general_aus
attr Fitness_Thermostat room Geräte,Homematic
attr Fitness_Thermostat substexcl desired-temp
attr Fitness_Thermostat webCmd desired-temp:auto:manu:boost:on:off
attr Fitness_Thermostat widgetOverride desired-temp:slider,4.5,0.5,30.5,1
setstate Fitness_Thermostat 14.1
setstate Fitness_Thermostat 2023-01-20 14:22:29 ACTIVE_PROFILE 2
setstate Fitness_Thermostat 2023-01-20 14:22:29 ACTUAL_TEMPERATURE 14.1
setstate Fitness_Thermostat 2023-01-20 14:22:29 ACTUAL_TEMPERATURE_STATUS NORMAL
setstate Fitness_Thermostat 2023-01-20 14:22:29 BOOST_MODE false
setstate Fitness_Thermostat 2023-01-20 14:22:29 BOOST_TIME 0
setstate Fitness_Thermostat 2023-01-20 14:22:29 FROST_PROTECTION false
setstate Fitness_Thermostat 2023-01-19 17:39:34 IODev d_ccu
setstate Fitness_Thermostat 2023-01-20 14:22:29 LEVEL 0
setstate Fitness_Thermostat 2023-01-20 14:22:29 LEVEL_STATUS NORMAL
setstate Fitness_Thermostat 2023-01-20 14:22:29 PARTY_MODE false
setstate Fitness_Thermostat 2023-01-19 17:40:00 PARTY_SET_POINT_TEMPERATURE 0.0
setstate Fitness_Thermostat 2023-01-19 17:40:00 PARTY_TIME_END
setstate Fitness_Thermostat 2023-01-19 17:40:00 PARTY_TIME_START
setstate Fitness_Thermostat 2023-01-20 14:22:29 QUICK_VETO_TIME 0
setstate Fitness_Thermostat 2023-01-20 14:22:29 SET_POINT_MODE manual
setstate Fitness_Thermostat 2023-01-20 14:22:29 SET_POINT_TEMPERATURE 5.0
setstate Fitness_Thermostat 2023-01-20 14:22:29 SWITCH_POINT_OCCURED false
setstate Fitness_Thermostat 2023-01-19 17:40:00 VALVE_ADAPTION false
setstate Fitness_Thermostat 2023-01-20 14:22:29 VALVE_STATE ADAPTION_DONE
setstate Fitness_Thermostat 2023-01-20 14:22:29 WINDOW_STATE closed
setstate Fitness_Thermostat 2023-01-20 15:34:38 activity alive
setstate Fitness_Thermostat 2023-01-20 14:22:29 battery ok
setstate Fitness_Thermostat 2023-01-20 14:22:29 control 5.0
setstate Fitness_Thermostat 2023-01-20 14:22:29 desired-temp 5.0
setstate Fitness_Thermostat 2023-01-20 15:34:38 devstate ok
setstate Fitness_Thermostat 2023-01-20 15:34:38 hmstate 14.1
setstate Fitness_Thermostat 2023-01-20 14:22:29 measured-temp 14.1
setstate Fitness_Thermostat 2023-01-20 15:34:38 rssidevice -81
setstate Fitness_Thermostat 2023-01-20 12:49:55 rssipeer -79
setstate Fitness_Thermostat 2023-01-20 14:22:29 state 14.1
setstate Fitness_Thermostat 2023-01-20 14:22:29 voltage 2.8
Copy for forum:
define Fitness_Thermostat HMCCUCHN 00201D89A7F7D9:1
attr Fitness_Thermostat cmdIcon auto:sani_heating_automatic manu:sani_heating_manual boost:sani_heating_boost on:general_an off:general_aus
attr Fitness_Thermostat room Geräte,Homematic
attr Fitness_Thermostat substexcl desired-temp
attr Fitness_Thermostat webCmd desired-temp:auto:manu:boost:on:off
attr Fitness_Thermostat widgetOverride desired-temp:slider,4.5,0.5,30.5,1
# DEF 00201D89A7F7D9:1
# FUUID 63209701-f33f-a080-be2f-0be40214a02e98d1
# IODev d_ccu
# NAME Fitness_Thermostat
# NR 463
# STATE 14.1
# TYPE HMCCUCHN
# ccuaddr 00201D89A7F7D9:1
# ccudevstate active
# ccuif HmIP-RF
# ccuname Fitness Thermostat
# ccurolectrl HEATING_CLIMATECONTROL_TRANSCEIVER
# ccurolestate HEATING_CLIMATECONTROL_TRANSCEIVER
# ccusubtype TRV-B
# ccutype HmIP-eTRV-B
# eventCount 90
# firmware 1.0.20
# readonly no
# READINGS:
# 2023-01-20 14:22:29 ACTIVE_PROFILE 2
# 2023-01-20 14:22:29 ACTUAL_TEMPERATURE 14.1
# 2023-01-20 14:22:29 ACTUAL_TEMPERATURE_STATUS NORMAL
# 2023-01-20 14:22:29 BOOST_MODE false
# 2023-01-20 14:22:29 BOOST_TIME 0
# 2023-01-20 14:22:29 FROST_PROTECTION false
# 2023-01-19 17:39:34 IODev d_ccu
# 2023-01-20 14:22:29 LEVEL 0
# 2023-01-20 14:22:29 LEVEL_STATUS NORMAL
# 2023-01-20 14:22:29 PARTY_MODE false
# 2023-01-19 17:40:00 PARTY_SET_POINT_TEMPERATURE 0.0
# 2023-01-19 17:40:00 PARTY_TIME_END
# 2023-01-19 17:40:00 PARTY_TIME_START
# 2023-01-20 14:22:29 QUICK_VETO_TIME 0
# 2023-01-20 14:22:29 SET_POINT_MODE manual
# 2023-01-20 14:22:29 SET_POINT_TEMPERATURE 5.0
# 2023-01-20 14:22:29 SWITCH_POINT_OCCURED false
# 2023-01-19 17:40:00 VALVE_ADAPTION false
# 2023-01-20 14:22:29 VALVE_STATE ADAPTION_DONE
# 2023-01-20 14:22:29 WINDOW_STATE closed
# 2023-01-20 15:34:38 activity alive
# 2023-01-20 14:22:29 battery ok
# 2023-01-20 14:22:29 control 5.0
# 2023-01-20 14:22:29 desired-temp 5.0
# 2023-01-20 15:34:38 devstate ok
# 2023-01-20 15:34:38 hmstate 14.1
# 2023-01-20 14:22:29 measured-temp 14.1
# 2023-01-20 15:34:38 rssidevice -81
# 2023-01-20 12:49:55 rssipeer -79
# 2023-01-20 14:22:29 state 14.1
# 2023-01-20 14:22:29 voltage 2.8
# hmccu:
# channels 1
# detect 1
# devspec 00201D89A7F7D9:1
# nodefaults 1
# role 1:HEATING_CLIMATECONTROL_TRANSCEIVER
# setDefaults 0
# cmdlist:
# get
# set holiday:noArg on:noArg desired-temp manu:noArg auto:noArg boost:noArg off:noArg toggle:noArg
# control:
# chn 1
# dpt SET_POINT_TEMPERATURE
# dp:
# 0.APPLICATION_VERSION:
# SERVICE:
# NVAL 1.0.20
# ONVAL 1.0.20
# OSVAL 1.0.20
# OVAL 1.0.20
# SVAL 1.0.20
# VAL 1.0.20
# VALUES:
# 0.ARR_TIMEOUT:
# MASTER:
# NVAL 10
# ONVAL 10
# OSVAL 10
# OVAL 10
# SVAL 10
# VAL 10
# VALUES:
# 0.BOOTLOADER_VERSION:
# SERVICE:
# NVAL 1.14.0
# ONVAL 1.14.0
# OSVAL 1.14.0
# OVAL 1.14.0
# SVAL 1.14.0
# VAL 1.14.0
# VALUES:
# 0.CONFIG_PENDING:
# VALUES:
# NVAL 0
# ONVAL 0
# OSVAL false
# OVAL 0
# SVAL false
# VAL 0
# 0.CYCLIC_INFO_MSG:
# MASTER:
# NVAL 1
# ONVAL 1
# OSVAL 1
# OVAL 1
# SVAL 1
# VAL 1
# VALUES:
# 0.CYCLIC_INFO_MSG_DIS:
# MASTER:
# NVAL 1
# ONVAL 1
# OSVAL 1
# OVAL 1
# SVAL 1
# VAL 1
# VALUES:
# 0.CYCLIC_INFO_MSG_DIS_UNCHANGED:
# MASTER:
# NVAL 20
# ONVAL 20
# OSVAL 20
# OVAL 20
# SVAL 20
# VAL 20
# VALUES:
# 0.CYCLIC_INFO_MSG_OVERDUE_THRESHOLD:
# MASTER:
# NVAL 2
# ONVAL 2
# OSVAL 2
# OVAL 2
# SVAL 2
# VAL 2
# VALUES:
# 0.DAYLIGHT_SAVINGS_TIME:
# MASTER:
# NVAL 1
# ONVAL 1
# OSVAL 1
# OVAL 1
# SVAL 1
# VAL 1
# VALUES:
# 0.DISABLE_MSG_TO_AC:
# MASTER:
# NVAL 0
# ONVAL 0
# OSVAL 0
# OVAL 0
# SVAL 0
# VAL 0
# VALUES:
# 0.DST_END_DAY_OF_WEEK:
# MASTER:
# NVAL 0
# ONVAL 0
# OSVAL 0
# OVAL 0
# SVAL 0
# VAL 0
# VALUES:
# 0.DST_END_MONTH:
# MASTER:
# NVAL 10
# ONVAL 10
# OSVAL 10
# OVAL 10
# SVAL 10
# VAL 10
# VALUES:
# 0.DST_END_TIME:
# MASTER:
# NVAL 180
# ONVAL 180
# OSVAL 180
# OVAL 180
# SVAL 180
# VAL 180
# VALUES:
# 0.DST_END_WEEK_OF_MONTH:
# MASTER:
# NVAL 5
# ONVAL 5
# OSVAL 5
# OVAL 5
# SVAL 5
# VAL 5
# VALUES:
# 0.DST_START_DAY_OF_WEEK:
# MASTER:
# NVAL 0
# ONVAL 0
# OSVAL 0
# OVAL 0
# SVAL 0
# VAL 0
# VALUES:
# 0.DST_START_MONTH:
# MASTER:
# NVAL 3
# ONVAL 3
# OSVAL 3
# OVAL 3
# SVAL 3
# VAL 3
# VALUES:
# 0.DST_START_TIME:
# MASTER:
# NVAL 120
# ONVAL 120
# OSVAL 120
# OVAL 120
# SVAL 120
# VAL 120
# VALUES:
# 0.DST_START_WEEK_OF_MONTH:
# MASTER:
# NVAL 5
# ONVAL 5
# OSVAL 5
# OVAL 5
# SVAL 5
# VAL 5
# VALUES:
# 0.DUTYCYCLE_LIMIT:
# MASTER:
# NVAL 180
# ONVAL 180
# OSVAL 180
# OVAL 180
# SVAL 180
# VAL 180
# VALUES:
# 0.DUTY_CYCLE:
# VALUES:
# NVAL 0
# ONVAL 0
# OSVAL false
# OVAL 0
# SVAL false
# VAL 0
# 0.ENABLE_ROUTING:
# MASTER:
# NVAL 1
# ONVAL 1
# OSVAL 1
# OVAL 1
# SVAL 1
# VAL 1
# VALUES:
# 0.GLOBAL_BUTTON_LOCK:
# MASTER:
# NVAL 0
# ONVAL 0
# OSVAL 0
# OVAL 0
# SVAL 0
# VAL 0
# VALUES:
# 0.HARDWARE_VERSION:
# SERVICE:
# NVAL 3
# ONVAL 3
# OSVAL 3
# OVAL 3
# SVAL 3
# VAL 3
# VALUES:
# 0.INSTALL_TEST:
# VALUES:
# NVAL true
# ONVAL true
# OSVAL true
# OVAL true
# SVAL true
# VAL true
# 0.LOCAL_RESET_DISABLED:
# MASTER:
# NVAL 0
# ONVAL 0
# OSVAL 0
# OVAL 0
# SVAL 0
# VAL 0
# VALUES:
# 0.LOW_BAT:
# VALUES:
# NVAL 0
# ONVAL 0
# OSVAL ok
# OVAL 0
# SVAL ok
# VAL 0
# 0.LOW_BAT_LIMIT:
# MASTER:
# NVAL 2.2
# ONVAL 2.2
# OSVAL 2.2
# OVAL 2.2
# SVAL 2.2
# VAL 2.2
# VALUES:
# 0.OPERATING_VOLTAGE:
# VALUES:
# NVAL 2.8
# ONVAL 2.8
# OSVAL 2.8
# OVAL 2.8
# SVAL 2.8
# VAL 2.8
# 0.OPERATING_VOLTAGE_STATUS:
# VALUES:
# NVAL 0
# ONVAL 0
# OSVAL NORMAL
# OVAL 0
# SVAL NORMAL
# VAL 0
# 0.OS_VERSION:
# SERVICE:
# NVAL 1.30.1
# ONVAL 1.30.1
# OSVAL 1.30.1
# OVAL 1.30.1
# SVAL 1.30.1
# VAL 1.30.1
# VALUES:
# 0.RSSI_DEVICE:
# VALUES:
# NVAL -81
# ONVAL -82
# OSVAL -82
# OVAL -82
# SVAL -81
# VAL -81
# 0.RSSI_PEER:
# VALUES:
# NVAL -79
# ONVAL -79
# OSVAL -79
# OVAL -79
# SVAL -79
# VAL -79
# 0.TEST_STATUS:
# SERVICE:
# NVAL 0
# ONVAL 0
# OSVAL 0
# OVAL 0
# SVAL 0
# VAL 0
# VALUES:
# 0.UNREACH:
# VALUES:
# NVAL 0
# ONVAL 0
# OSVAL alive
# OVAL 0
# SVAL alive
# VAL 0
# 0.UPDATE_PENDING:
# VALUES:
# NVAL 0
# ONVAL 0
# OSVAL 0
# OVAL 0
# SVAL 0
# VAL 0
# 0.UTC_DST_OFFSET:
# MASTER:
# NVAL 120
# ONVAL 120
# OSVAL 120
# OVAL 120
# SVAL 120
# VAL 120
# VALUES:
# 0.UTC_OFFSET:
# MASTER:
# NVAL 60
# ONVAL 60
# OSVAL 60
# OVAL 60
# SVAL 60
# VAL 60
# VALUES:
# 1.ACTIVE_PROFILE:
# VALUES:
# NVAL 2
# ONVAL 2
# OSVAL 2
# OVAL 2
# SVAL 2
# VAL 2
# 1.ACTUAL_TEMPERATURE:
# VALUES:
# NVAL 14.1
# ONVAL 14.2
# OSVAL 14.2
# OVAL 14.2
# SVAL 14.1
# VAL 14.1
# 1.ACTUAL_TEMPERATURE_STATUS:
# VALUES:
# NVAL 0
# ONVAL 0
# OSVAL NORMAL
# OVAL 0
# SVAL NORMAL
# VAL 0
# 1.ADAPTIVE_REGULATION:
# MASTER:
# NVAL 2
# ONVAL 2
# OSVAL 2
# OVAL 2
# SVAL 2
# VAL 2
# VALUES:
# 1.APPLICATION_VERSION:
# SERVICE:
# NVAL 1.0.20
# ONVAL 1.0.20
# OSVAL 1.0.20
# OVAL 1.0.20
# SVAL 1.0.20
# VAL 1.0.20
# VALUES:
# 1.BOOST_AFTER_WINDOW_OPEN:
# MASTER:
# NVAL 0
# ONVAL 0
# OSVAL 0
# OVAL 0
# SVAL 0
# VAL 0
# VALUES:
# 1.BOOST_MODE:
# VALUES:
# NVAL 0
# ONVAL 0
# OSVAL false
# OVAL 0
# SVAL false
# VAL 0
# 1.BOOST_POSITION:
# MASTER:
# NVAL 80
# ONVAL 80
# OSVAL 80
# OVAL 80
# SVAL 80
# VAL 80
# VALUES:
# 1.BOOST_TIME:
# VALUES:
# NVAL 0
# ONVAL 0
# OSVAL 0
# OVAL 0
# SVAL 0
# VAL 0
# 1.BOOST_TIME_PERIOD:
# MASTER:
# NVAL 5
# ONVAL 5
# OSVAL 5
# OVAL 5
# SVAL 5
# VAL 5
# VALUES:
# 1.BOOTLOADER_VERSION:
# SERVICE:
# NVAL 1.14.0
# ONVAL 1.14.0
# OSVAL 1.14.0
# OVAL 1.14.0
# SVAL 1.14.0
# VAL 1.14.0
# VALUES:
# 1.DECALCIFICATION_TIME:
# MASTER:
# NVAL 22
# ONVAL 22
# OSVAL 22
# OVAL 22
# SVAL 22
# VAL 22
# VALUES:
# 1.DECALCIFICATION_WEEKDAY:
# MASTER:
# NVAL 6
# ONVAL 6
# OSVAL 6
# OVAL 6
# SVAL 6
# VAL 6
# VALUES:
# 1.DURATION_5MIN:
# MASTER:
# NVAL 0
# ONVAL 0
# OSVAL 0
# OVAL 0
# SVAL 0
# VAL 0
# VALUES:
# 1.FROST_PROTECTION:
# VALUES:
# NVAL 0
# ONVAL 0
# OSVAL false
# OVAL 0
# SVAL false
# VAL 0
# 1.HARDWARE_VERSION:
# SERVICE:
# NVAL 3
# ONVAL 3
# OSVAL 3
# OVAL 3
# SVAL 3
# VAL 3
# VALUES:
# 1.LEVEL:
# VALUES:
# NVAL 0
# ONVAL 0
# OSVAL 0
# OVAL 0.0
# SVAL 0
# VAL 0.0
# 1.LEVEL_STATUS:
# VALUES:
# NVAL 0
# ONVAL 0
# OSVAL NORMAL
# OVAL 0
# SVAL NORMAL
# VAL 0
# 1.MANU_MODE_PRIORITIZATION:
# MASTER:
# NVAL 1
# ONVAL 1
# OSVAL 1
# OVAL 1
# SVAL 1
# VAL 1
# VALUES:
# 1.MIN_MAX_VALUE_NOT_RELEVANT_FOR_MANU_MODE:
# MASTER:
# NVAL 0
# ONVAL 0
# OSVAL 0
# OVAL 0
# SVAL 0
# VAL 0
# VALUES:
# 1.OPTIMUM_START_STOP:
# MASTER:
# NVAL 0
# ONVAL 0
# OSVAL 0
# OVAL 0
# SVAL 0
# VAL 0
# VALUES:
# 1.OS_VERSION:
# SERVICE:
# NVAL 1.30.1
# ONVAL 1.30.1
# OSVAL 1.30.1
# OVAL 1.30.1
# SVAL 1.30.1
# VAL 1.30.1
# VALUES:
# 1.P1_ENDTIME_FRIDAY_1:
# MASTER:
# NVAL 420
# ONVAL 420
# OSVAL 420
# OVAL 420
# SVAL 420
# VAL 420
# VALUES:
# 1.P1_ENDTIME_FRIDAY_10:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_FRIDAY_11:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_FRIDAY_12:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_FRIDAY_13:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_FRIDAY_2:
# MASTER:
# NVAL 600
# ONVAL 600
# OSVAL 600
# OVAL 600
# SVAL 600
# VAL 600
# VALUES:
# 1.P1_ENDTIME_FRIDAY_3:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_FRIDAY_4:
# MASTER:
# NVAL 1320
# ONVAL 1320
# OSVAL 1320
# OVAL 1320
# SVAL 1320
# VAL 1320
# VALUES:
# 1.P1_ENDTIME_FRIDAY_5:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_FRIDAY_6:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_FRIDAY_7:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_FRIDAY_8:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_FRIDAY_9:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_MONDAY_1:
# MASTER:
# NVAL 420
# ONVAL 420
# OSVAL 420
# OVAL 420
# SVAL 420
# VAL 420
# VALUES:
# 1.P1_ENDTIME_MONDAY_10:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_MONDAY_11:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_MONDAY_12:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_MONDAY_13:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_MONDAY_2:
# MASTER:
# NVAL 600
# ONVAL 600
# OSVAL 600
# OVAL 600
# SVAL 600
# VAL 600
# VALUES:
# 1.P1_ENDTIME_MONDAY_3:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_MONDAY_4:
# MASTER:
# NVAL 1320
# ONVAL 1320
# OSVAL 1320
# OVAL 1320
# SVAL 1320
# VAL 1320
# VALUES:
# 1.P1_ENDTIME_MONDAY_5:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_MONDAY_6:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_MONDAY_7:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_MONDAY_8:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_MONDAY_9:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SATURDAY_1:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SATURDAY_10:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SATURDAY_11:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SATURDAY_12:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SATURDAY_13:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SATURDAY_2:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SATURDAY_3:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SATURDAY_4:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SATURDAY_5:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SATURDAY_6:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SATURDAY_7:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SATURDAY_8:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SATURDAY_9:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SUNDAY_1:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SUNDAY_10:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SUNDAY_11:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SUNDAY_12:
# MASTER:
# NVAL 1440
# ONVAL 1440
# OSVAL 1440
# OVAL 1440
# SVAL 1440
# VAL 1440
# VALUES:
# 1.P1_ENDTIME_SUNDAY_13:
# MASTER:
# NVAL 1440
# ONVAL 1440
Jetzt fehlt noch die readingsGroup ...
Entschuldige die blöde Frage: Wo finde ich denn die?
So bekommst Du eine Liste:
list TYPE=readingsGroup
Dann müsstest Du wissen, welche davon fürs Zeigen in Frage kommen könnte ...
Super, danke OdfFhem!
Da gibt es nur wenige ReadingsGroups, nämlich acht von/für Sonos und eine einzige für battery. Dessen List sieht so aus:
define ui_battery readingsGroup .*:[Bb]attery
attr ui_battery alias Batteriestatus
attr ui_battery mapping %ALIAS
attr ui_battery notime 1
attr ui_battery room Geräte
attr ui_battery style text-align:left;;
attr ui_battery valueFormat {return "0" if ($VALUE > 3.2 and $VALUE < 26);;\
return "25" if ($VALUE > 25 and $VALUE < 51);;\
return "50" if ($VALUE > 50 and $VALUE < 76);;\
return "75" if ($VALUE > 75 and $VALUE < 100);;\
return "100"}
attr ui_battery valueIcon {'battery.0' => '10px-kreis-rot',\
'battery.25' => '10px-kreis-rot',\
'battery.50' => '10px-kreis-gelb',\
'battery.75' => '10px-kreis-gelb',\
'battery.100' => '10px-kreis-gruen',\
}
attr ui_battery verbose 0
In dieser Gruppe sind verschiedene Geräte zusammengefasst:
- Thermostate (Reading "battery" mit Wert ok)
- Bewegungssensoren (Reading myBatteryStatus mit Wert OK, Reading battery mit nummerischem Wert) ->Klein-/Großschreibung wurde beachtet
- Hue ambient light sensoren OHNE Wert ok oder OK -> Reading "battery" und "batteryPercent" ist dort nummerisch angegeben.
- Helligkeitssensoren, Dimmer, Temperatursensoren (wie Hue ambient. )
Scheint so, als ob die Thermostate verantwortlich sind, oder? Obwohl im List ja auch kein ok erscheint..
Könnte man das Problem beseitigen, indem das Reading "battery" bei den Thermostaten entweder entfernt oder aber mit einem nummerischen Wert auf Basis des Readings "voltage" oder mit einem beliebigen nummerischen Wert - zB 100 - gefüllt wird? Dieses Reading wird bei den Thermostaten nicht wirklich benötigt.
LG
-
Das Attribut "valueFormat" geht schon mal davon aus, dass $VALUE einen numerischen Wert enthält ... "ok" würde hier nicht passen ...
Eben darauf wollte ich ja mit meinen Fragen hinaus: das Problem ist vom Anwender hausgemacht und hat nichts mit irgendwelchen Modulen (insbesondere nicht HMCCU) zu tun, worum sich ein Modulautor kümmern müsste.
Das Problem dürfte schlichweg sein, dass Dein HMCCU device überhaupt keine Spannungswert als reading "battery" liefert
setstate Fitness_Thermostat 2023-01-20 14:22:29 battery ok
Die Batteriespannung steht im reading "voltage"
setstate Fitness_Thermostat 2023-01-20 14:22:29 voltage 2.8
Aber warum Du die Zuordnungen in Deinem valueFormat zwischen 3,2 und 26 machen (und mit anderen Wertebereichen, die nach Prozente aussehen!) möchtest, erschließt sich mir nicht.
Wenn das reading "battery" einen text "ok" liefert, kannst Du den jedenfalls nicht gegen numerische Wertebereiche vergleichen und brauchst Dich über perl Warnungen, dass das nicht geht, nicht zu wundern.
---
ZitatAber warum Du die Zuordnungen in Deinem valueFormat zwischen 3,2 und 26 machen (und mit anderen Wertebereichen, die nach Prozente aussehen!) möchtest, erschließt sich mir nicht.
Ich kann so etwas garnicht. Hab es von einer Vorlage übernommen und es hat - bis die Thermostate hinzugekommen sind - auch prima funktioniert. Frage ist doch, wie man das lösen kann.
Würde es denn funktionieren, wenn man "ok" als Zahl - zB 100 - interpretierte, etwa so:
return "100" if ($VALUE = okay);;\
Oder kennt Ihr eine Möglichkeit, das Reading "battery" beim Device anders zu füllen, nämlich grundsätzlich mit einer Zahl, die durchaus bezugslos sein kann, etwa "100"?
Verstehst Du überhaupt, was Du da tust und was das Ergebnis sein soll?
Mit "Vorlage übernehmen" ohne zu verstehen, was die Vorlage tut, kommt man selten weiter.
Zitat von: is2late am 20 Januar 2023, 17:52:29
Oder kennt Ihr eine Möglichkeit, das Reading "battery" beim Device anders zu füllen,
Brauchst Du doch gar nicht. Du musst einfach nur in Deinem valueFormat dafür sorgen, dass der Wert "ok" mit berücksichtigt wird.
attr ui_battery valueFormat {return "100" if ($VALUE eq "ok");;\
return "0" if ($VALUE > 3.2 and $VALUE < 26);;\
return "25" if ($VALUE > 25 and $VALUE < 51);;\
return "50" if ($VALUE > 50 and $VALUE < 76);;\
return "75" if ($VALUE > 75 and $VALUE < 100);;\
return "100"}
Genau nach diesem Schema musst Du natürlich auch noch eine Abfrage für den Fall einbauen, dass ein Text zurückgeliefert wird, der "nicht ok" bedeutet - diesen musst Du dann auf "0" mappen.
ZitatVerstehst Du überhaupt, was Du da tust
Leute, seid nicht so streng mit mir. Nein, ich verstehe maximal in Teilen, was da vor sich geht. Behaupte aber auch nicht anderes. Bin Anfänger und werde es als unbedarfter Rentner bleiben. Habe trotzdem dank der Hilfe aus dem Forum und -ja! - Copy and Paste eine funktionierende Homeautomation zusamengebracht. Wenn es im Betrieb durch neue Geräte oä hakt und ich nicht weiterkomme, muss ich halt mal fragen. Ich will aber niemanden belästigen. Wer sich also durch meine Unwissenheit belästigt fühlt, mag sich frei fühlen, meine Anfragen zu ignorieren.
@betateilchen: Danke für den Code!
Weder bin ich streng, noch fühle ich mich belästigt.
Eigentlich bin ich nur sehr irritiert, dass Du eine readingsGroup verwendest, ohne zu wissen, wie das funktioniert.
Das ist halt der Fluch von copy & paste.
Und in dem Zusammenhang finde ich es halt manchmal fragwürdig, sich auf die Hilfe aus dem Forum zu verlassen, anstatt sich selbst ein paar Grundlagen anzueignen.
Versteh mich bitte nicht falsch: Du sollst nicht professioneller Programmierer werden. Aber eine Fehlermeldung (oder eine perl Warnung) zumindest inhaltlich einordnen zu können, ist m.E. von einem Anwender nicht zuviel verlangt.