nymea-plugins/philipsaircontrol/integrationpluginphilipsaircontrol.py
2021-04-29 00:52:59 +02:00

41 lines
1.3 KiB
Python

import nymea
from pyairctrl.http_client import HTTPAirClient
# py-air-control library: https://github.com/rgerganov/py-air-control/blob/master/pyairctrl/airctrl.py
# Map nymea things to library devices
purifiersMap = {}
def discoverThings(info):
logger.log("Discovering Philips air purifiers...")
try:
devices = HTTPAirClient.ssdp(timeout=1, repeats=3)
except Exception as e:
logger.warn("Discovery failed:", str(e))
info.finish(nymea.ThingErrorHardwareNotAvailable, "No air purifiers found. Make sure it is connected to your WiFi.");
return
for device in devices:
logger.log("Found Philips air purifier:", device["ip"])
thingDescriptor = nymea.ThingDescriptor(purifierThingClassId, device["modelName"], device["modelNumber"], device["friendlyName"])
# TODO: Store serial number instead of IP in params and re-discover in setupThing
thingDescriptor.params = [
nymea.Param(purifierThingIpParamTypeId, device["ip"])
]
info.addDescriptor(thingDescriptor)
logger.log("Discovery finished.")
info.finish(nymea.ThingErrorNoError)
def setupThing(info):
ip = info.paramValue(purifierThingIpParamTypeId)
purifier = HTTPAirClient(ip, debug=True)
purifiersMap[info.thing] = purifier
info.finish(nymea.ThingErrorNoError)
return