Hallo zusammen,
ich möchte gern eine einzige Anzeige bekommen, wenn bei einem von mehreren Devices die Batterieleistung unter einen bestimmten Wert fällt.
Die einzelnen Devices liefern einen Prozentwert im Reading "batteryPercent". Das Structure "Batteriestatus" soll idealerweise zwei Zustände annehmen: "grün", wenn alle Geräte >25 % liegen, "rot" im anderen Fall.
In der Def des Structure sind die Geräte aufgeführt. Jetzt wird vermutlich noch (mindestens) ein Attribut benötigt und ich tippe mal auf clientstate_priority oder -behavior, komme hier aber nicht weiter.
Kann mir jemand aufs Pferd helfen?
LG Ingo
Es ist zwar kein Structure aber eine ReadingsGroup:
defmod ui_battery readingsGroup .*:[Bb]attery
attr ui_battery alias Batteriestatus
attr ui_battery mapping %ALIAS
attr ui_battery notime 1
attr ui_battery style text-align:left;;
attr ui_battery valueFormat {return "0" if ($VALUE eq "low");;\
return "100" if ($VALUE eq "ok");;\
return "100" if ($VALUE eq "High");;\
return "75" if ($VALUE eq "High, Charging");;\
return "100" if ($VALUE eq "Online");;\
return "0" if ($VALUE < 2.2);;\
return "25" if ($VALUE < 2.3);;\
return "50" if ($VALUE < 2.4);;\
return "75" if ($VALUE < 2.7);;\
return "100" if ($VALUE > 2.6 and $VALUE < 3.3);;\
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',\
'Battery.0' => '10px-kreis-rot',\
'Battery.100' => '10px-kreis-gruen',\
'batteryLevel.0' => '10px-kreis-rot',\
'batteryLevel.25' => '10px-kreis-rot',\
'batteryLevel.50' => '10px-kreis-gelb',\
'batteryLevel.75' => '10px-kreis-gelb',\
'batteryLevel.100' => '10px-kreis-gruen',\
'batteryState.0' => '10px-kreis-rot',\
'batteryState.25' => '10px-kreis-rot',\
'batteryState.50' => '10px-kreis-gelb',\
'batteryState.75' => '10px-kreis-gelb',\
'batteryState.100' => '10px-kreis-gruen',\
'battery_LifePercent.0' => '10px-kreis-rot',\
'battery_LifePercent.25' => '10px-kreis-rot',\
'battery_LifePercent.50' => '10px-kreis-gelb',\
'battery_LifePercent.75' => '10px-kreis-gelb',\
'battery_LifePercent.100' => '10px-kreis-gruen'}
attr ui_battery verbose 0
Hi Yersinia,
vielen Dank! Sieht genial aus und ist es vermutlich auch. Keine Chance für mich, das ohne Deine Hilfe hinzubekommen.
Die Sensoren werden mit ihren Ladezuständen (und den farbigen Punkten) auch perfekt aufgelistet, aber die Gesamtauswertung (gelb/grün/rot) fehlt.
Womöglich hab ich einen Fehler drin...Könntest Du mal auf mein RAW sehen? Es ist einfach kopiert und sollte eigentlich keine Fehler beinhalten:
defmod 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 eq "low");;\return "100" if ($VALUE eq "ok");;\ return "100" if ($VALUE eq "High");;\ return "75" if ($VALUE eq "High, Charging");;\ return "100" if ($VALUE eq "Online");;\ return "0" if ($VALUE < 2.2);;\ return "25" if ($VALUE < 2.3);;\ return "50" if ($VALUE < 2.4);;\ return "75" if ($VALUE < 2.7);;\ return "100" if ($VALUE > 2.6 and $VALUE < 3.3);;\ 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',\ 'Battery.0' => '10px-kreis-rot',\ 'Battery.100' => '10px-kreis-gruen',\ 'batteryLevel.0' => '10px-kreis-rot',\ 'batteryLevel.25' => '10px-kreis-rot',\ 'batteryLevel.50' => '10px-kreis-gelb',\ 'batteryLevel.75' => '10px-kreis-gelb',\ 'batteryLevel.100' => '10px-kreis-gruen',\ 'batteryState.0' => '10px-kreis-rot',\ 'batteryState.25' => '10px-kreis-rot',\ 'batteryState.50' => '10px-kreis-gelb',\ 'batteryState.75' => '10px-kreis-gelb',\ 'batteryState.100' => '10px-kreis-gruen',\ 'battery_LifePercent.0' => '10px-kreis-rot',\ 'battery_LifePercent.25' => '10px-kreis-rot',\ 'battery_LifePercent.50' => '10px-kreis-gelb',\ 'battery_LifePercent.75' => '10px-kreis-gelb',\ 'battery_LifePercent.100' => '10px-kreis-gruen'}
attr ui_battery verbose 0
Etwas verdächtig kommt mir der valueFormat-Teil vor, weil ich mit einigen Werten, zB: $VALUE < 2.4);;
nichts anfangen kann. Muss ich da noch etwas anpassen?
Die einzelnen Sensoren sehen wie generell folgt aus:
defmod Bewegungssensor.Haustuer HUEDevice sensor 21 IODev=Hue
attr Bewegungssensor.Haustuer Batteriestatus_map battery
attr Bewegungssensor.Haustuer group Bewegungsmelder
attr Bewegungssensor.Haustuer model SML001
attr Bewegungssensor.Haustuer room HUEDevice
attr Bewegungssensor.Haustuer stateFormat batteryPercent
Die Icons sind alle verfügbar.
Dazu habe ich jetzt ein Structure angelegt, um die einzelnen Zustände als Gesamtauswertung zu bekommen (der Einfachheit halber hier nur mit zwei Devices):
defmod structBatteriestatus structure Batteriestatus Bewegungssensor.Haustuer Bewegungssensor.Nacht.Flur
attr structBatteriestatus clientstate_behavior relative
attr structBatteriestatus clientstate_priority 100 75 50 25 0
attr structBatteriestatus event-on-change-reading .*
attr structBatteriestatus room Geräte
STATE (und state) ist leider "undefined"
HILFE........ :'(
LG Ingo
Jetzt habe ich es angepasst, funktioniert aber leider immer noch nicht. Ich brauche Eure Hilfe...
Hier der Stand:
A) Sensoren:
defmod Bewegungssensor.Haustuer HUEDevice sensor 21 IODev=Hue
attr Bewegungssensor.Haustuer userattr Batteriestatus Batteriestatus_map room_map structexclude
attr Bewegungssensor.Haustuer group Bewegungsmelder
attr Bewegungssensor.Haustuer model SML001
attr Bewegungssensor.Haustuer room HUEDevice
attr Bewegungssensor.Haustuer stateFormat batteryPercent
Zustand wird korrekt angezeigt.
B) ReadingsGroup:
defmod 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 > 0 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'}
Die Werte der einzelnen Sensoren werden in "Batteriestatus" jetzt "gerundet" angezeigt, also zB 75 statt 88 %. Die farbigen Punkte sind entschwunden (macht zwar nichts, deutet aber wohl auf einen Fehler hin ;-)
C) Structure:
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 clientstate_behavior relative
attr structBatteriestatus clientstate_priority 75 100
attr structBatteriestatus event-on-change-reading .*
Zeigt jetzt "100" an, obwohl einzelne Sensoren bei 75 bzw 88 % liegen.
Bei clientstate_priority würde ich gern auch 0%, 25 % und 50 % angeben, hab aber nach Lektüre der Commandref den Eindruck, dass das nicht geht.
Sieht jemand, was falsch läuft?
LG Ingo
Ich kenne mich nicht mit structure aus, aber die von mir vorgeschlagene ReadingsGroup (https://forum.fhem.de/index.php/topic,124402.msg1189658.html#msg1189658) hat erstmal nichts mit structure zu tun. Es sammelt und listet alle Devices auf, welche ein reading battery oder Battery haben.
valueFormat ersetzt dann Werte wie ok zu 100(%) usw.
attr ui_battery valueFormat {return "0" if ($VALUE eq "low");;\
return "100" if ($VALUE eq "ok");;\
return "100" if ($VALUE eq "High");;\
return "75" if ($VALUE eq "High, Charging");;\
return "100" if ($VALUE eq "Online");;\
return "0" if ($VALUE < 2.2);;\
return "25" if ($VALUE < 2.3);;\
return "50" if ($VALUE < 2.4);;\
return "75" if ($VALUE < 2.7);;\
return "100" if ($VALUE > 2.6 and $VALUE < 3.3);;\
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"}
valueIcon ersetzt die Werte aus valueFormat durch farbige Kreise.
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',\
'Battery.0' => '10px-kreis-rot',\
'Battery.100' => '10px-kreis-gruen',\
'batteryLevel.0' => '10px-kreis-rot',\
'batteryLevel.25' => '10px-kreis-rot',\
'batteryLevel.50' => '10px-kreis-gelb',\
'batteryLevel.75' => '10px-kreis-gelb',\
'batteryLevel.100' => '10px-kreis-gruen',\
'batteryState.0' => '10px-kreis-rot',\
'batteryState.25' => '10px-kreis-rot',\
'batteryState.50' => '10px-kreis-gelb',\
'batteryState.75' => '10px-kreis-gelb',\
'batteryState.100' => '10px-kreis-gruen',\
'battery_LifePercent.0' => '10px-kreis-rot',\
'battery_LifePercent.25' => '10px-kreis-rot',\
'battery_LifePercent.50' => '10px-kreis-gelb',\
'battery_LifePercent.75' => '10px-kreis-gelb',\
'battery_LifePercent.100' => '10px-kreis-gruen'}
Wenn deine Devices keine Reading battery haben, werden die hier auch nicht gelistet. Du zeigst aber auch keine lists eines Devices.
Ob dies mit einer structure gehen würde, kann ich dir nicht sagen.
Hi Yersinia,
danke für Deine Antwort!
Hier das List eines der Devices:
Internals:
DEF sensor 21 IODev=Hue
FUUID 619ba2d0-f33f-a080-c6aa-d465ba5bb2a232f2
FVERSION 31_HUEDevice.pm:0.252490/2021-11-21
ID S21
INTERVAL
IODev Hue
NAME Bewegungssensor.Haustuer
NR 361
STATE 90
TYPE HUEDevice
lastupdated 2021-11-28 15:33:36
lastupdated_local 2021-11-28 16:33:36
manufacturername Signify Netherlands B.V.
modelid SML001
name Bewegungssensor Haustuer
on 1
reachable 1
sensitivity 0
sensitivitymax 2
swversion 6.1.1.27575
type ZLLPresence
uniqueid 00:17:88:01:02:03:4b:54-02-0406
READINGS:
2021-11-28 13:50:22 IODev Hue
2021-11-28 16:33:36 battery 90
2021-11-28 16:33:36 batteryPercent 90
2021-11-28 16:33:36 reachable 1
2021-11-28 16:33:36 state nomotion
helper:
devtype S
update_timeout 1
configList:
json:
manufacturername Signify Netherlands B.V.
modelid SML001
name Bewegungssensor Haustuer
productname Hue motion sensor
swversion 6.1.1.27575
type ZLLPresence
uniqueid 00:17:88:01:02:03:4b:54-02-0406
capabilities:
config:
alert none
battery 90
sensitivity 0
sensitivitymax 2
pending:
state:
lastupdated 2021-11-28T15:33:36
swupdate:
lastinstall 2019-12-05T14:33:15
state noupdates
setList:
Attributes:
group Bewegungsmelder
model SML001
room HUEDevice
stateFormat batteryPercent
userattr Batteriestatus Batteriestatus_map room_map structexclude
Ich nehme an, dass man das Structure benötigt, um eine zusammenfassende Auswertung zu bekommen, also etwa in dem Sinn:
Zeig einen roten Punkt, wenn die Batterie eines der Devices <25 %, zeige ansonsten einen grünen Punkt. Idealerweise sollte es noch einen Zwischenschritt geben, nämlich die Farbe Gelb bei Batteriekapazität zwischen 26 und 75 % oä. Das scheint aber mit clientstate_priority nicht zu gehen.
Die Devices verfügen alle über ein Reading "battery" und ein weiteres namens "batteryPercent". Beide weisen die gleichen Werte auf.
Was mir fehlt, ist halt die zusammenfassende Auswertung. Das Structure (s.o.) zeigt aktuell den falschen Wert, nämlich 100, obwohl der Wert einiger Devices <100 liegt.
LG Ingo
Um es noch mal zu wiederholen: ich beziehe mich auf eine readingsGroup (https://wiki.fhem.de/wiki/ReadingsGroup), von einer structure (https://wiki.fhem.de/wiki/Structure) habe ich ich keine Ahnung.
Die readingsGroup benötigt keine structure, mein Beispiel zeigt alle Devices an, die ein reading [B|b]attery haben und zeigt dieses an. Und ein solches haben ja deine Devices:
READINGS:
2021-11-28 16:33:36 battery 90
Wenn du die readingsGroup anlegst, müsstest zumindest dieses Device sehen.
Für das obige Beispiel müsste
valueFormat auf 75(%) übersetzen und dann via
valueIcon auf einen gelben Kreis anzeigen.
Zitat von: is2late am 28 November 2021, 17:05:39Ich nehme an, dass man das Structure benötigt, um eine zusammenfassende Auswertung zu bekommen, also etwa in dem Sinn:
Zeig einen roten Punkt, wenn die Batterie eines der Devices <25 %, zeige ansonsten einen grünen Punkt. Idealerweise sollte es noch einen Zwischenschritt geben, nämlich die Farbe Gelb bei Batteriekapazität zwischen 26 und 75 % oä. Das scheint aber mit clientstate_priority nicht zu gehen.
Die Devices verfügen alle über ein Reading "battery" und ein weiteres namens "batteryPercent". Beide weisen die gleichen Werte auf.
Wie gesagt, bezgl structure kann ich dir mangels eigener Erfahrung nicht weiterhelfen. :(
Hi Yersinia,
recht herzlichen Dank für Deine Mühe! Ich verstehe Deinen Code auch und habe ihn 1:1 übernommen. Die einzelnen Sensoren werden ja einwandfrei mit farbigem Punkt angezeigt, s. Anlage (hier vereinfacht mit nur zwei Devices). Was mit weiterhin fehlt, ist die Gesamtauswertung, dh eine einzige Anzeige sollte zeigen, ob irgendeines des Devices eine niedrige Batteriekapazität hat. Eine Readingsgroup, soweit ich den Text verstanden habe, kann das nicht, weshalb ich zusätzlich ein Structure versuche. Hab aber auch verstanden, dass Du mir dabei nicht weiterhelfen kannst. Also nochmals vielen Dank!
Kennt sich sonst jemand mit Structure aus und kann mir sagen, ob/wo ich schief liege?
LG Ingo
Bin jetzt einen Schritt weiter. Wie es scheint, kann die Structure nicht davon abgebracht werden, state als Bezugspunkt zu nehmen. Jedenfalls sind alle meine Versuche mit clientstate_behavior gescheitert. Es geht also wohl darum, state mit den entsprechenden Werten zu füttern, s.a. hier: https://forum.fhem.de/index.php/topic,40444.msg326967.html#msg326967 (https://forum.fhem.de/index.php/topic,40444.msg326967.html#msg326967).
defmod structBatteriestatus structure Batteriestatus Bewegungssensor.Haustuer Bewegungssensor.Nacht.Flur
attr structBatteriestatus clientstate_behavior relative
attr structBatteriestatus clientstate_priority battery (anstelle von battery funktioniert motion nomotion-> hilft ja nicht weiter)
attr structBatteriestatus event-on-change-reading .*
attr structBatteriestatus room Geräte
Aktuell wird in meinem state (weil es sich um Bewegungsmelder handelt) "nomotion" bzw. "motion" angezeigt. Ich möchte stattdessen aber eine Ansage wie "ok" bekommen, wenn keine Batterie unter zB 30 % liegt, und die Anzeige "fast leer" oä erhalten, wenn zumindest eine von mehreren Batterien sich dem Ende zuneigt. Die Prozentwerte liegen im Reading unter "battery".
Frage also, wie bekomme ich state dazu, diese Anzeigen auszugeben? Bitte erlöst mich; ich drehe sonst noch durch.
LG Ingo
Klar gehen andere Readings als state:
Zitat von: https://wiki.fhem.de/wiki/Structure
<struct_type>_map
Ohne dieses Attribut wertet structure erst das Reading state aus, und nur, falls das nicht existiert, das Internal STATE (beeinflussbar durch das allgemeine stateFormat-Attribut). Vor allem bei Geräten, bei denen z.B. auch Konfigurationsbefehle in state geschrieben werden (wie etwa bei Z-Wave-Komponenten), empfiehlt es sich daher, dieses Attribut zu setzen. Beispiel für einen ZWave-Fensterkontakt, der zur structure "Alarm" gehört:
attr <Sensorname> Alarm_map doorWindow
Gruß, Joachim
Was dann damit gehen würde:
an jedes Batterie-Device ein userReadings, welches die entsprechende "Vorverarbeitung" macht, also % unter einem bestimmten Wert -> nOK
Dann eine structure mit all diesen Devices und dann eben jeweils das Attribut auf das userReadings setzen.
Damit sollte dann die structure auf OK stehen, wenn das userReadings aller Devices OK hat und sobald eines auf nOK geht, geht auch die structure auf nOK...
So wolltest du das doch haben, oder?
Ansonsten: notify auf batteryPercent und dann in einer aufgerufenen Sub alle Batterie-Devices "durchklappern" und dann einen dummy entsprechend setzen (jaja: dummy ;) )...
...wobei mittlerweile glaube ich auch direkt im notify ein entsprechendes Reading zur "Anzeige" gesetzt werden kann (wenn ich mich nicht täusche bzw. einen entspr. Thread nicht missverstanden habe)...
Und: es gibt bestimmt ein Einzeiler-DOIF was auch schafft was du willst bzw. schlanker macht, was meine "notify-dummy-Variante" macht... ;)
Aber da ich DOIF nicht nutze, kann ich den Einzeiler nicht vorstellen ;)
Gruß, Joachim
Hi Joachim,
vielen Dank, das gibt mir Hoffnung ;)
Werde mal Deinen ersten Vorschlag probieren. Mit UserReadings hatte ich allerdings noch nicht zu tun; mal sehen, ob ich es hinbekomme.
LG Ingo
Naja evtl. so ähnlich:
attr Bewegungssensor.Haustuer userReadings myBatteryStatus:batteryPercent.* {ReadingsNum($name, "batteryPercent",0) < 25 ? return "nOK" : return "OK"}
damit bekommst du ein neues Reading namens "myBatteryStatus" (kannst du ja anpassen wie du willst ;) ), getriggert durch das Reading "batteryPercent" und abhängig vom Wert (hier ober/unter 25) eben "OK" oder "nOK" (kannst du auch anpassen ;) ) liefert...
25 halt auch anpassen wie du willst.
Das dann (leider) bei jedem Device, das du "betrachten" willst...
Damit sollte das dann mit structure klappen wie du willst, halt das Attribut wie oben geschrieben nicht vergessen, damit nicht "state" genommen wird...
Gruß, Joachim
Super, tausend Dank!
Ganz sicher bin ich mir noch nicht bezüglich
Zitathalt das Attribut wie oben geschrieben nicht vergessen,
Das neue Reading bei den Devices ist da. Bei der Structure muss ich jetzt unter "clientstate_behavior" "myBatteryStatus" setzen, richtig?
LG
Zitat von: is2late am 30 November 2021, 11:39:35
Super, tausend Dank!
Ganz sicher bin ich mir noch nicht bezüglich
Das neue Reading bei den Devices ist da. Bei der Structure muss ich jetzt unter "clientstate_behavior" "myBatteryStatus" setzen, richtig?
LG
Nö, clientstate_behavior lässt doch nur bestimmte Werte zu...
EDIT: da musst du halt lesen was dein erwartetes Verhalten ist. Und evtl. auch noch das Attribut "clientstate_priority" beachten...
Du musst das Attribut bei JEDEM Device setzen, wo du auch das userReadings hast.
Abhängig von deiner "Typ-Angabe" beim erstellen der structure heißt das Attribut auch anders ;)
Bei dir müsste das Attribut "Batteriestatus_map" heißen und dort dann das "neue" Reading angeben...
Gruß, Joachim
readingsgroup kann auch "ergebnisse/berechnungen" für spalten ausgeben.
aber wie fast überall: erst lesen
Ich stelle mich einfach zu blöd an. Klappt immer noch nicht.
Hier die Structure:
Internals:
ATTR Batteriestatus
CHANGEDCNT 1
DEF Batteriestatus Bewegungssensor.Haustuer Bewegungssensor.Nacht.Flur
FUUID 61a4fa15-f33f-a080-3aea-cb849da061087108
NAME structBatteriestatus
NOTIFYDEV Bewegungssensor.Nacht.Flur,global,Bewegungssensor.Haustuer
NR 278
NTFY_ORDER 50-structBatteriestatus
STATE undefined
TYPE structure
READINGS:
2021-11-30 13:39:24 LastDevice Bewegungssensor.Nacht.Flur
2021-11-30 13:39:24 LastDevice_Abs Bewegungssensor.Nacht.Flur
2021-11-30 13:39:24 state undefined
Attributes:
clientstate_behavior relative
clientstate_priority OK nOK
event-on-change-reading .*
room Geräte
userattr myBatteryStatus
und hier eines der (beiden Test-)Devices:
Internals:
DEF sensor 21 IODev=Hue
FUUID 61a4ad7b-f33f-a080-045b-72b6a1e0fd9ae3d1
FVERSION 31_HUEDevice.pm:0.252700/2021-11-28
ID S21
INTERVAL
IODev Hue
NAME Bewegungssensor.Haustuer
NR 275
STATE 87
TYPE HUEDevice
lastupdated 2021-11-30 12:18:05
lastupdated_local 2021-11-30 13:18:05
manufacturername Signify Netherlands B.V.
modelid SML001
name Bewegungssensor Haustuer
on 1
reachable 1
sensitivity 0
sensitivitymax 2
swversion 6.1.1.27575
type ZLLPresence
uniqueid 00:17:88:01:02:03:4b:54-02-0406
READINGS:
2021-11-30 13:39:23 IODev Hue
2021-11-30 13:18:05 battery 87
2021-11-30 13:18:05 batteryPercent 87
2021-11-30 13:18:05 myBatteryStatus OK
2021-11-30 13:18:05 reachable 1
2021-11-30 13:18:05 state nomotion
helper:
devtype S
update_timeout 1
configList:
json:
manufacturername Signify Netherlands B.V.
modelid SML001
name Bewegungssensor Haustuer
productname Hue motion sensor
swversion 6.1.1.27575
type ZLLPresence
uniqueid 00:17:88:01:02:03:4b:54-02-0406
capabilities:
config:
alert none
battery 87
sensitivity 0
sensitivitymax 2
pending:
state:
lastupdated 2021-11-30T12:18:05
swupdate:
lastinstall 2019-12-05T14:33:15
state noupdates
setList:
Attributes:
Batteriestatus_map myBatteryStatus
IODev Hue
model SML001
room Geräte
stateFormat batteryPercent
userReadings myBatteryStatus:batteryPercent.* {ReadingsNum($name, "batteryPercent",0) < 25 ? return "nOK" : return "OK"}
userattr Batteriestatus Batteriestatus_map room_map structexclude
In den Testdevices wird ordnungsgemäß das Reading "myBatteryStatus" mit Ok angezeigt.
Die Structure gibt "undefined" aus.
Was ist bloß falsch?
Hmm, keine Ahnung.
So viel mache ich mit structure auch nicht.
Ich habe eine structure für Anwesenheit (2 Devices: Handy und BT-Dongle) und eine für Internet-Verfügbar (2 Devices: google-ping und cloudflare-ping).
Aber da ist/soll das Verhalten anders sein:
sobald jeweils BEIDE Devices "weg" sind, soll auch die structure auf "weg" schalten...
...wenn jeweils eines (wieder) "da" anzeigt, soll auch die structure auf "da" gehen"...
Ich habe clientstate_behavior auf relativeKnown (aber so ich die Beschreibung verstehe, sollte das auch mit relative gehen, da es ja keine anderen Events geben sollte?)...
Es haben aber beide Devices schon mal Events des userreadings erzeugt seit dem du die structure (neu) hast?
Evtl. mal den Eventmonitor öffnen und schauen, ob auch tatsächlich beide Devices Events schicken.
Du kannst das auch beeinflussen: setreading Devicename Readingname Wert
(also einfach mal den batteryPercent auf einen Wert setzen [zum Test] und schauen, ob/dass auch Events kommen / der Wert wird ja durch ein zukünftiges Telegramm des Gerätes wieder "richtig gestellt" ;) / wie oft senden die Geräte denn den Batteriewert?)
@frank: ja, man kann auch in der readingsGroup Werte beeinflussen... Aber trotzdem stehen ja (erst mal) alle Devices mit einem passenden reading drin. Also nur EIN Device bzw. eine zentrale Anzeige: alles-iO bzw. mind. 1 Batterie (fast) leer ist so doch auch nicht so einfach möglich? Und das war ja der (ursprüngliche) Wunsch, so ich das richtig verstanden habe...
EDIT: unschön aber was auf alle Fälle geht ist ein notify und dann dort (oder "besser") in einer sub alle Devices "abklappern" und dann eben einen dummy entsprechend setzen... (jaja: wo bleibt der "dummy-Shitstorm" ;) )...
Gruß, Joachim
Hi Joachim,
ein Wunder: Auf einmal erscheint ein himmlisches "OK" bei structBatteriestatus. Selbiges findet sich jetzt auch bei "state".
Keine Ahnung, warum erst jetzt... hab schon vor Stunden gleich zweimal shutdown restart gemacht und immer "undefined" bekommen.
Aber egal, der Erfolg zählt. Dir herzlichen Dank für Deine unermüdliche Hilfe!
LG Ingo
Tja, unverhofft kommt oft... ;)
Gerne!
Viel Spaß noch, Joachim