FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: DerBodo am 11 August 2021, 20:26:53

Titel: [gelöst] Eventmap nur für bestimmtes Reading (oder ganz andere Lösung)
Beitrag von: DerBodo am 11 August 2021, 20:26:53
Hallo zusammen,

ich besitze seit kurzem eine GUDE Expert PDU welche ich via SNMP über das SYSSTAT Modul abfrage.

Die Rückgabewerte pro Schaltausgang werden mit 0 = off und 1 = on zurückgegeben.
Nun würde ich diese Werte gerne mit on/off darstellen.
EventMap tut hier genau was es soll.

Allerdings kann die Power pro Schaltausgang ja auch 0 oder 1 Watt sein (Rückgabewert ohne Einheit), damit würde mir das Eventmap auch diese Werte ersetzen und das Logging/Graphen unbrauchbar machen.
Wie kann ich das EventMap nur auf das Reading für den Schaltausgang anwenden (und ggf. ein weiteres für die Power da manchmal einfach -1 statt 0 zurückgegeben wird).

Anbei noch ein List vom Port_1 der PDU:


Internals:
   CFGFN     
   DEF        5 5 192.168.200.3
   FUUID      611237f0-f33f-98e1-7a8b-3ae965bc5e615cca
   HAS_Net::SNMP 1
   HOST       192.168.200.3
   INTERVAL   60
   LAST_DISCONNECT 2021-08-10 10:25:30
   NAME       Gude_Port_1
   NR         3373761
   NTFY_ORDER 50-Gude_Port_1
   PARSED     0
   PARTIAL   
   SENT       1
   STARTED    0
   STATE      noSuchObject noSuchObject noSuchObject
   SystemDescription Expert Power Control 8226-1
   SystemName sysName
   TYPE       SYSSTAT
   USE_SNMP   1
   interval_fs
   snmpCommunity private
   snmpVersion 2
   QUEUE:
   READINGS:
     2021-08-10 10:25:30   connection      disconnected
     2021-08-11 20:25:46   load            noSuchObject
     2021-08-11 20:25:46   port_power      0 W
     2021-08-11 20:25:46   port_state      1
     2021-08-11 20:25:46   raw_port_power  0
     2021-08-11 20:25:46   raw_port_state  1
     2021-08-11 20:25:46   state           noSuchObject noSuchObject noSuchObject
   helper:
Attributes:
   eventMap   -1:0
   mibs       .1.3.6.1.4.1.28507.58.1.3.1.2.1.3.1:raw_port_state
.1.3.6.1.4.1.28507.58.1.5.5.2.1.4.1:raw_port_power
   noSSH      1
   room       06_Test
   snmp       1
   snmpCommunity private
   snmpVersion 2
   suppressReading load,state
   userReadings port_state:raw_port_state.* { ReadingsVal($name,"raw_port_state",0)},
port_power:raw_port_power.* { ReadingsVal($name,"raw_port_power",0)." W"}



Vielen Dank !


Titel: Antw:Eventmap nur für bestimmtes Reading (oder ganz andere Lösung)
Beitrag von: Otto123 am 11 August 2021, 22:34:45
Hi,

Sei vorsichtig mit eventmap...
Wenn Du einfach dein userreadings entsprechend gestaltest? Statt einfach nur readingsval , dies hier:
ReadingsVal($name,"raw_port_state",0) ? 'on':'off'

Oder exakter
ReadingsNum($name,"raw_port_state",0) == 1 ? 'on':'off'
Beschreibung siehe perldoc ternärer Operator.
In der Art geht es auch für dein Power Reading.

Gruß Otto
Titel: Antw:Eventmap nur für bestimmtes Reading (oder ganz andere Lösung)
Beitrag von: DerBodo am 12 August 2021, 08:13:59
Danke Otto für den Schubs in eine bessere Richtung.

Für das Power Reading schaue ich mir die entsprechenden Stellen in der Perldoc mal an.
Titel: Antw:[gelöst] Eventmap nur für bestimmtes Reading (oder ganz andere Lösung)
Beitrag von: DerBodo am 16 August 2021, 15:34:02
Nach Ottos Hinweis habe ich es nun nach Vorlage mit den Userreadings hinbekommen.


port_state:raw_port_state.* { ReadingsNum($name,"raw_port_state",0) == 1 ? 'on':'off'},
port_power:raw_port_power.* { my $val = ReadingsNum($name,"raw_port_power",0);($val == -1) ? '0' : $val;}


Vielen Dank !