FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: oli82 am 09 November 2017, 10:06:38

Titel: Reading ohne Einheit möglich?
Beitrag von: oli82 am 09 November 2017, 10:06:38
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
Titel: Antw:Reading ohne Einheit möglich?
Beitrag von: Frank_Huber am 09 November 2017, 10:13:29
wie machst denn deine Überwachung?
evtl kannst es da direkt anpassen, alternativ machst Dir ein UserReading.
Titel: Antw:Reading ohne Einheit möglich?
Beitrag 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.
Titel: Antw:Reading ohne Einheit möglich?
Beitrag von: Frank_Huber am 09 November 2017, 10:37:03
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.
Titel: Antw:Reading ohne Einheit möglich?
Beitrag von: Thorsten Pferdekaemper am 09 November 2017, 10:42:04
ReadingsNum statt ReadingsVal ?
Titel: Antw:Reading ohne Einheit möglich?
Beitrag von: screetch82 am 09 November 2017, 10:42:35
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' ")}\
};;\
}
Titel: Antw:Reading ohne Einheit möglich?
Beitrag von: Frank_Huber am 09 November 2017, 10:50:41
für die ReadingsGroup habe ich keine Lösung,

dein Notify kannst Du auf REadingsNum umstellen, da ist die Einheit raus.
Titel: Antw:Reading ohne Einheit möglich?
Beitrag von: marvin78 am 09 November 2017, 10:51:19
Ein userReading ohne Einheit.
Titel: Antw:Reading ohne Einheit möglich?
Beitrag von: Frank_Huber am 09 November 2017, 10:51:29
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.
Titel: Antw:Reading ohne Einheit möglich?
Beitrag von: oli82 am 09 November 2017, 11:01:36
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
Titel: Antw:Reading ohne Einheit möglich?
Beitrag 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.

Gruß
Dan
Titel: Antw:Reading ohne Einheit möglich?
Beitrag von: oli82 am 09 November 2017, 11:51:49
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.


Titel: Antw:Reading ohne Einheit möglich?
Beitrag von: justme1968 am 09 November 2017, 13:13:10
 in ReadingsGroup kann man $NUM statt $VALUE verwenden.