mirror of
https://github.com/nymea/nymea-plugins.git
synced 2026-07-19 00:54:53 +02:00
41 lines
1.3 KiB
Python
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
|
|
|
|
|