[gelöst] Eventmap nur für bestimmtes Reading (oder ganz andere Lösung)

Begonnen von DerBodo, 11 August 2021, 20:26:53

Vorheriges Thema - Nächstes Thema

DerBodo

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 !



Otto123

#1
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

DerBodo

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.

DerBodo

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 !