CharlesBlonde / libpurecoollink

Dyson Pure Cool link python library

Home Page:http://libpurecoollink.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Threads hanging about (Pure Hot+Cold Link)

theboyknowsclass opened this issue · comments

commented

hi,

i created a simple web service in flask, the problem i have is that the requests seem to leave an extra thread kicking about - this also seems to block some resources, and the fan will stop responding to requests after 3 or so have been made.

from libpurecoollink.dyson import DysonAccount
from libpurecoollink.const import FanSpeed, FanMode, NightMode, Oscillation, \
    FanState, StandbyMonitoring, QualityTarget, ResetFilter, HeatMode, \
    FocusMode, HeatTarget
from libpurecoollink.dyson_pure_state import DysonPureHotCoolState, \
  DysonPureCoolState, DysonEnvironmentalSensorState
from datetime import datetime
import re

app = Flask(__name__)

@app.route("/")
def home():
    return "Hello, Dyson!"

@app.route("/hellodyson/<ip>/set-heattarget/<heat>")
def setheattarget(ip, heat):
    dyson_account = DysonAccount(...)
    logged = dyson_account.login()

    if not logged:
        print('Unable to login to Dyson account')
        exit(1)

    devices = dyson_account.devices()
    name = devices[0].name

    if not devices[0].connected:
        devices[0].connect(ip)

    if devices[0].connected:
        devices[0].set_configuration(heat_target=HeatTarget.celsius(int(heat)))
        devices[0].disconnect()
        content = "Dyson Fan at IP " + ip + "(" + name + ") is set to temperature " + heat
    else:
        content = "ERROR: Setting Dyson Fan at IP " + ip + "(" + name + ") to temperature " + heat

    del dyson_account, logged, devices, name
    return content

@app.route("/hellodyson/<ip>/set-fanspeed/<speed>")
def setfanspeed(ip, speed):
    dyson_account = DysonAccount(...)
    logged = dyson_account.login()

    if not logged:
        print('Unable to login to Dyson account')
        exit(1)

    devices = dyson_account.devices()
    name = devices[0].name

    if not devices[0].connected:
        devices[0].connect(ip)

    if devices[0].connected:
        devices[0].set_configuration(fan_speed=FanSpeed(speed))
        devices[0].disconnect()
        content = "Dyson Fan at IP " + ip + "(" + name + ") is set to speed " + speed
    else:
        content = "ERROR: Setting Dyson Fan at IP " + ip + "(" + name + ") to speed " + speed

    del dyson_account, logged, devices, name
    return content