11import asyncio
2- import enapter
32import os
4- from pysnmp .hlapi import *
3+
4+ import enapter
55
66SNMP_HOST = os .environ ["ENAPTER_SNMP_HOST" ]
77SNMP_PORT = os .environ ["ENAPTER_SNMP_PORT" ]
88SNMP_COMMUNITY = os .environ ["ENAPTER_SNMP_COMMUNITY" ]
99
10+
1011def snmpget (oid ):
1112 from pysnmp .entity .rfc3413 .oneliner import cmdgen
1213
@@ -19,71 +20,75 @@ def snmpget(oid):
1920 errorIndication , errorStatus , errorIndex , varBinds = cmdGen .getCmd (
2021 cmdgen .CommunityData (SNMP_COMMUNITY ),
2122 cmdgen .UdpTransportTarget ((SNMP_HOST , SNMP_PORT )),
22- oid
23+ oid ,
2324 )
2425
2526 # Check for errors and print out results
2627 if errorIndication :
2728 print (errorIndication )
2829 else :
2930 if errorStatus :
30- print ('%s at %s' % (
31- errorStatus .prettyPrint (),
32- errorIndex and varBinds [int (errorIndex )- 1 ] or '?'
31+ print (
32+ "%s at %s"
33+ % (
34+ errorStatus .prettyPrint (),
35+ errorIndex and varBinds [int (errorIndex ) - 1 ] or "?" ,
3336 )
3437 )
3538 else :
3639 for name , val in varBinds :
37- #print('%s = %s' % (name.prettyPrint(), val.prettyPrint()))
40+ # print('%s = %s' % (name.prettyPrint(), val.prettyPrint()))
3841 return val
3942
43+
4044async def main ():
4145 await enapter .vucm .run (EatonUPS )
4246
47+
4348class EatonUPS (enapter .vucm .Device ):
4449 def __init__ (self , ** kwargs ):
4550 super ().__init__ (** kwargs )
4651 self .telemetry = {}
47- self .properties = {}
52+ self .properties = {}
4853
4954 async def task_get_telemetry_data (self ):
5055 while True :
51- if (value := snmpget (' 1.3.6.1.4.1.534.1.6.1.0' )) is not None :
52- self .telemetry ["temperature" ] = int (value )
56+ if (value := snmpget (" 1.3.6.1.4.1.534.1.6.1.0" )) is not None :
57+ self .telemetry ["temperature" ] = int (value )
5358
54- if (value := snmpget (' 1.3.6.1.4.1.534.1.2.4.0' )) is not None :
55- self .telemetry ["capacity" ] = int (value )
59+ if (value := snmpget (" 1.3.6.1.4.1.534.1.2.4.0" )) is not None :
60+ self .telemetry ["capacity" ] = int (value )
5661
57- if (value := snmpget (' 1.3.6.1.4.1.534.1.2.5.0' )) is not None :
58- self .telemetry ["status" ] = str (value )
62+ if (value := snmpget (" 1.3.6.1.4.1.534.1.2.5.0" )) is not None :
63+ self .telemetry ["status" ] = str (value )
5964
60- if (value := snmpget (' 1.3.6.1.2.1.33.1.3.3.1.2.1' )) is not None :
61- self .telemetry ["grid_freq" ] = int (value ) * 0.1
65+ if (value := snmpget (" 1.3.6.1.2.1.33.1.3.3.1.2.1" )) is not None :
66+ self .telemetry ["grid_freq" ] = int (value ) * 0.1
6267
63- if (value := snmpget (' 1.3.6.1.4.1.534.1.4.2.0' )) is not None :
64- self .telemetry ["ups_freq" ] = int (value ) * 0.1
68+ if (value := snmpget (" 1.3.6.1.4.1.534.1.4.2.0" )) is not None :
69+ self .telemetry ["ups_freq" ] = int (value ) * 0.1
6570
66- if (value := snmpget (' 1.3.6.1.4.1.534.1.3.4.1.2.1' )) is not None :
67- self .telemetry ["grid_v" ] = int (value )
71+ if (value := snmpget (" 1.3.6.1.4.1.534.1.3.4.1.2.1" )) is not None :
72+ self .telemetry ["grid_v" ] = int (value )
6873
69- if (value := snmpget (' 1.3.6.1.4.1.534.1.4.1.0' )) is not None :
70- self .telemetry ["out_load" ] = int (value )
74+ if (value := snmpget (" 1.3.6.1.4.1.534.1.4.1.0" )) is not None :
75+ self .telemetry ["out_load" ] = int (value )
7176
72- if (value := snmpget (' 1.3.6.1.4.1.534.1.4.4.1.4.1' )) is not None :
73- self .telemetry ["ac_out_active_power" ] = int (value )
77+ if (value := snmpget (" 1.3.6.1.4.1.534.1.4.4.1.4.1" )) is not None :
78+ self .telemetry ["ac_out_active_power" ] = int (value )
7479
7580 await asyncio .sleep (10 )
7681
7782 async def task_get_properties_data (self ):
7883 while True :
79- if (value := snmpget (' 1.3.6.1.2.1.33.1.1.2.0' )) is not None :
80- self .properties ["model" ] = str (value )
81- if (value := snmpget (' 1.3.6.1.2.1.33.1.1.1.0' )) is not None :
82- self .properties ["manufacturer" ] = str (value )
83- if (value := snmpget (' 1.3.6.1.2.1.33.1.1.3.0' )) is not None :
84- self .properties ["fw_ver" ] = str (value )
85- if (value := snmpget (' 1.3.6.1.2.1.33.1.1.4.0' )) is not None :
86- self .properties ["agent_ver" ] = str (value )
84+ if (value := snmpget (" 1.3.6.1.2.1.33.1.1.2.0" )) is not None :
85+ self .properties ["model" ] = str (value )
86+ if (value := snmpget (" 1.3.6.1.2.1.33.1.1.1.0" )) is not None :
87+ self .properties ["manufacturer" ] = str (value )
88+ if (value := snmpget (" 1.3.6.1.2.1.33.1.1.3.0" )) is not None :
89+ self .properties ["fw_ver" ] = str (value )
90+ if (value := snmpget (" 1.3.6.1.2.1.33.1.1.4.0" )) is not None :
91+ self .properties ["agent_ver" ] = str (value )
8792 await asyncio .sleep (60 )
8893
8994 async def task_telemetry_sender (self ):
@@ -96,5 +101,6 @@ async def task_properties_publisher(self):
96101 await self .send_properties (self .properties )
97102 await asyncio .sleep (10 )
98103
104+
99105if __name__ == "__main__" :
100106 asyncio .run (main ())
0 commit comments