Guten Morgen.
Ich habe einige Sensoren von Neo Coolcam, die ihren Batteriestand in % angebeben. Leider beinhaltet das Reading auch das %-Zeichen.
Das Zeichen macht mir bei der Überwachung des Batteriestandes Probleme.
Kann ich das Reading so beeinflussen, dass es ohne %-Zeichen aufgeführt wird?
Internals:
CFGFN
DEF XXXXXXXX 11
IODev ZWDongle_0
LASTInputDev ZWDongle_0
MSGCNT 20
NAME EG.Alarm
NR 17728
STATE off
TYPE ZWave
ZWDongle_0_MSGCNT 20
ZWDongle_0_RAWMSG 0004000b0380035b
ZWDongle_0_TIME 2017-11-08 22:29:01
ZWaveSubDevice no
cmdsPending 0
homeId XXXXXXXXX
isWakeUp
lastMsgSent 1510176480.05014
nodeIdHex 0b
READINGS:
2017-11-08 22:28:00 alarm 14_unknown: Event cleared: unknown event 1, arg 0101
2017-11-08 22:26:55 assocGroup_1 Max 5 Nodes ZWDongle_0
2017-11-08 22:26:55 assocGroup_2 Max 5 Nodes
2017-11-08 22:26:55 assocGroup_3 Max 5 Nodes
2017-11-08 22:26:55 assocGroups 3
2017-11-08 22:29:01 battery 91 %
2017-11-08 22:25:40 model Neo CoolCam Siren Alarm
2017-11-08 22:25:40 modelConfig shenzen_neo/nas-ab01z.xml
2017-11-08 22:25:40 modelId 0258-XXXX-XXXX
2017-11-08 22:28:00 reportedState off
2017-11-08 22:28:00 state off
2017-11-08 22:28:00 timeToAck 0.030
2017-11-08 22:28:00 transmit OK
Attributes:
IODev ZWDongle_0
classes ZWAVEPLUS_INFO VERSION MANUFACTURER_SPECIFIC DEVICE_RESET_LOCALLY POWERLEVEL CONFIGURATION ASSOCIATION ASSOCIATION_GRP_INFO SWITCH_BINARY ALARM INDICATOR BATTERY
room 11_Security
vclasses ALARM:8 ASSOCIATION:2 ASSOCIATION_GRP_INFO:1 BATTERY:1 CONFIGURATION:1 DEVICE_RESET_LOCALLY:1 INDICATOR:1 MANUFACTURER_SPECIFIC:2 POWERLEVEL:1 SWITCH_BINARY:1 VERSION:2 ZWAVEPLUS_INFO:2
Danke für die Hilfe
Oli
wie machst denn deine Überwachung?
evtl kannst es da direkt anpassen, alternativ machst Dir ein UserReading.
Ich prüfe das Reading "battery" bzw. "batteryLevel" global auf alle Geräte, die dieses Reading besitzen.
Durch das % erhalte ich u.a. eine Perl Warnung:
PERL WARNING: Argument "91 %" isn't numeric in numeric lt (<) at (eval 399228) line 1.
Zitat von: oli82 am 09 November 2017, 10:32:06
Ich prüfe das Reading "battery" bzw. "batteryLevel" global auf alle Geräte, die dieses Reading besitzen.
Durch das % erhalte ich u.a. eine Perl Warnung:
PERL WARNING: Argument "91 %" isn't numeric in numeric lt (<) at (eval 399228) line 1.
und wie? gib doch mal ein List deines Prüfvorgangs.
ReadingsNum statt ReadingsVal ?
haha wir haben fast zeitgleich das gleiche Thema eröffnen und haben wohl Geräte mit dem selben Readings. Dein problem bin ich gestern angegangen:
define rg_battery readingsGroup .*:batteryLevel|[Bb]attery
attr rg_battery alias Batteriestatus
attr rg_battery mapping %ALIAS
attr rg_battery notime 1
attr rg_battery room Devices
attr rg_battery style style="text-align:left"
attr rg_battery valueFormat {return "0" if( $VALUE eq "low" );; return "100" if( $VALUE eq "ok" );; return "25" if( $VALUE < 25 );; return "50" if( $VALUE < 50 );; return "75" if( $VALUE < 75 );; return "100"}
attr rg_battery valueIcon {'battery.0' => 'measure_battery_0@red','battery.100' => 'measure_battery_100@green','Battery.0' => 'measure_battery_0@red','Battery.100' => 'measure_battery_100@green','batteryLevel.0' => 'measure_battery_0@red','batteryLevel.25' => 'measure_battery_25@red','batteryLevel.50' => 'measure_battery_50@orange','batteryLevel.75' => 'measure_battery_75@green','batteryLevel.100' => 'measure_battery_100@green'}
define BatteryLowTelegram at *19:00:00 { if ( $mday <= 6 && $wday == 0 )\
{if (ReadingsVal("Fibaro_Nebentuer", "battery", "-1") eq "20 %")\
{fhem ("set telebot message 'Fibaro Nebeneingang' 'Bitte Batterie tauschen' ")}\
};;\
{if (ReadingsVal("Fibaro_haupteingang", "battery", "-1") eq "20 %")\
{fhem ("set telebot message 'Fibaro Haupteingang' 'Bitte Batterie tauschen' ")}\
};;\
{if (ReadingsVal("Kuche_Motion_Light", "battery", "-1") eq "20")\
{fhem ("set telebot message 'Hue Bewegungsmelder Küche' 'Bitte Batterie tauschen' '")}\
};;\
{if (ReadingsVal("keller_Motion_Temp", "battery", "-1") eq "20")\
{fhem ("set telebot message 'Hue Bewegungsmelder Gästezimmer' 'Bitte Batterie tauschen' ")}\
};;\
{if (ReadingsVal("Office_Motion_Move", "battery", "-1") eq "20")\
{fhem ("set telebot message 'Hue Bewegungsmelder Office' 'Bitte Batterie tauschen' ")}\
};;\
{if (ReadingsVal("pflanze1", "batteryLevel", "-1") eq "20")\
{fhem ("set telebot message 'Pflanzensensor 1' 'Bitte Batterie tauschen' ")}\
};;\
}
für die ReadingsGroup habe ich keine Lösung,
dein Notify kannst Du auf REadingsNum umstellen, da ist die Einheit raus.
Ein userReading ohne Einheit.
Zitat von: Thorsten Pferdekaemper am 09 November 2017, 10:42:04
ReadingsNum statt ReadingsVal ?
wenn er ReadingsVal verwendet wäre das die Idee.
Aber es weis ja niemand wie er es macht.
Danke schon mal für die Ansätze.
Abfrage erfolgt zuerst über eine ReadingsGroup:
DEF:
.*:[Bb]atteryLevel
.*:[Bb]attery
Attributes:
notime 1
room CUL_HM
valueFormat {return "0" if( $VALUE eq "low" );; return "100" if( $VALUE eq "ok" );; return "25" if( $VALUE < 2.1 );; return "50" if( $VALUE < 2.3 );; return "75" if( $VALUE < 2.5 );; return "100"}
valueIcon {'battery.0' => 'measure_battery_0@red','battery.100' => 'measure_battery_100@green','Battery.0' => 'measure_battery_0@red','Battery.100' => 'measure_battery_100@green','batteryLevel.0' => 'measure_battery_0@red','batteryLevel.25' => 'measure_battery_25@red','batteryLevel.50' => 'measure_battery_50@orange','batteryLevel.75' => 'measure_battery_75@green','batteryLevel.100' => 'measure_battery_100@green'}
Die Benachrichtigung überwacht aktuell nur Geräte, die ein "low" als Batteriestatus aufweisen können:
Internals:
DEF ([":^battery:.*low"] or [":^Battery:.*low"] ) (set Smarthome message @#Smarthome 🔋 Batteriewarnung. \nDie Batterie von $DEVICE neigt sich dem Ende zu. Bitte die Batterie wechseln!) Attributes:
do always
icon batterie
repeatcmd 7200
Du könntest die Anzeige von % auch über das Modul readingsChange unterdrücken.
Oder valueFormat entsprechend anpassen.
Gruß
Dan
Zitat von: DeeSPe am 09 November 2017, 11:14:30
Du könntest die Anzeige von % auch über das Modul readingsChange unterdrücken.
Oder valueFormat entsprechend anpassen.
Das Modul schaue ich mir mal an. Kannte ich noch gar nicht.
in ReadingsGroup kann man $NUM statt $VALUE verwenden.