async def async_setup_platform(opp, config, async_add_entities, discovery_info=None): """Set up the SNMP sensor.""" name = config.get(CONF_NAME) host = config.get(CONF_HOST) port = config.get(CONF_PORT) community = config.get(CONF_COMMUNITY) baseoid = config.get(CONF_BASEOID) unit = config.get(CONF_UNIT_OF_MEASUREMENT) version = config.get(CONF_VERSION) username = config.get(CONF_USERNAME) authkey = config.get(CONF_AUTH_KEY) authproto = config.get(CONF_AUTH_PROTOCOL) privkey = config.get(CONF_PRIV_KEY) privproto = config.get(CONF_PRIV_PROTOCOL) accept_errors = config.get(CONF_ACCEPT_ERRORS) default_value = config.get(CONF_DEFAULT_VALUE) value_template = config.get(CONF_VALUE_TEMPLATE) if value_template is not None: value_template.opp = opp if version == "3": if not authkey: authproto = "none" if not privkey: privproto = "none" request_args = [ SnmpEngine(), UsmUserData( username, authKey=authkey or None, privKey=privkey or None, authProtocol=getattr(hlapi, MAP_AUTH_PROTOCOLS[authproto]), privProtocol=getattr(hlapi, MAP_PRIV_PROTOCOLS[privproto]), ), UdpTransportTarget((host, port)), ContextData(), ] else: request_args = [ SnmpEngine(), CommunityData(community, mpModel=SNMP_VERSIONS[version]), UdpTransportTarget((host, port)), ContextData(), ] errindication, _, _, _ = await getCmd(*request_args, ObjectType(ObjectIdentity(baseoid))) if errindication and not accept_errors: _LOGGER.error("Please check the details in the configuration file") return data = SnmpData(request_args, baseoid, accept_errors, default_value) async_add_entities([SnmpSensor(data, name, unit, value_template)], True)
def __init__( self, name, host, port, community, baseoid, commandoid, version, username, authkey, authproto, privkey, privproto, payload_on, payload_off, command_payload_on, command_payload_off, ): """Initialize the switch.""" self._name = name self._baseoid = baseoid # Set the command OID to the base OID if command OID is unset self._commandoid = commandoid or baseoid self._command_payload_on = command_payload_on or payload_on self._command_payload_off = command_payload_off or payload_off self._state = None self._payload_on = payload_on self._payload_off = payload_off if version == "3": if not authkey: authproto = "none" if not privkey: privproto = "none" self._request_args = [ SnmpEngine(), UsmUserData( username, authKey=authkey or None, privKey=privkey or None, authProtocol=getattr(hlapi, MAP_AUTH_PROTOCOLS[authproto]), privProtocol=getattr(hlapi, MAP_PRIV_PROTOCOLS[privproto]), ), UdpTransportTarget((host, port)), ContextData(), ] else: self._request_args = [ SnmpEngine(), CommunityData(community, mpModel=SNMP_VERSIONS[version]), UdpTransportTarget((host, port)), ContextData(), ]
async def async_setup_platform( hass: HomeAssistant, config: ConfigType, async_add_entities: AddEntitiesCallback, discovery_info: DiscoveryInfoType | None = None, ) -> None: """Set up the SNMP sensor.""" host = config.get(CONF_HOST) port = config.get(CONF_PORT) community = config.get(CONF_COMMUNITY) baseoid = config.get(CONF_BASEOID) version = config[CONF_VERSION] username = config.get(CONF_USERNAME) authkey = config.get(CONF_AUTH_KEY) authproto = config[CONF_AUTH_PROTOCOL] privkey = config.get(CONF_PRIV_KEY) privproto = config[CONF_PRIV_PROTOCOL] accept_errors = config.get(CONF_ACCEPT_ERRORS) default_value = config.get(CONF_DEFAULT_VALUE) unique_id = config.get(CONF_UNIQUE_ID) if version == "3": if not authkey: authproto = "none" if not privkey: privproto = "none" request_args = [ SnmpEngine(), UsmUserData( username, authKey=authkey or None, privKey=privkey or None, authProtocol=getattr(hlapi, MAP_AUTH_PROTOCOLS[authproto]), privProtocol=getattr(hlapi, MAP_PRIV_PROTOCOLS[privproto]), ), UdpTransportTarget((host, port), timeout=DEFAULT_TIMEOUT), ContextData(), ] else: request_args = [ SnmpEngine(), CommunityData(community, mpModel=SNMP_VERSIONS[version]), UdpTransportTarget((host, port), timeout=DEFAULT_TIMEOUT), ContextData(), ] errindication, _, _, _ = await getCmd( *request_args, ObjectType(ObjectIdentity(baseoid)) ) if errindication and not accept_errors: _LOGGER.error("Please check the details in the configuration file") return data = SnmpData(request_args, baseoid, accept_errors, default_value) async_add_entities([SnmpSensor(hass, data, config, unique_id)], True)