【Python】Dyson空気清浄扇風ヒーターの操作と室温、湿度などの取得

2020年12月31日

pythonでHP03の操作とセンサーデータを取得するサンプルも自分用に作成したので、備忘録としてコード乗っけときます。参考サイトの内容をほぼ流用してます。

家電のセットアップは下記の記事を参考にしてください。

パスワードなどの取得は私が参考にしたサイトを参考にすると良いかもです。

今回のテストコードはpaho-mqttを使用します。

https://github.com/eclipse/paho.mqtt.python

pipコマンドなら

pip install paho-mqtt

テストコード

# coding: UTF-8

import paho.mqtt.client as mqtt
import time
import threading

HOST = 'IP Address'
PORT = 1883
USERNAME = 'user name'
PASSWORD = 'password'
MODEL = '455'

# Dyson setting get request
def on_connect(client, userdata, flags, respons_code):
	print('status : ' + str(respons_code))
	topic = MODEL + '/' + USERNAME + '/status/current'
	client.subscribe(topic)

# current Dyson setting receive
def on_message(client, userdata, msg):
	print('-----' + msg.topic + '-----')
	print(msg.payload)

# Dyson control function
def  control():
	topic = MODEL + '/' + USERNAME + '/command'

	#Dyson Start
	PAYLOAD = '{"msg":"STATE-SET","time":"2020-06-11T19:55:44Z","data":{"fmod":"FAN","fnsp":"0001"}}'
	client.publish(topic, PAYLOAD)

	#wait 10 second
	time.sleep(10)

	#Dyson Stop
	PAYLOAD = '{"msg":"STATE-SET","time":"2020-06-11T19:55:44Z","data":{"fmod":"OFF"}}'
	client.publish(topic, PAYLOAD)


if __name__ == '__main__':
	#connect
	client = mqtt.Client(protocol=mqtt.MQTTv311)
	client.username_pw_set(USERNAME, PASSWORD)
	client.on_connect = on_connect
	client.on_message = on_message
	client.connect(HOST, port=PORT, keepalive=60)

	#Dyson Fan operation with another thread
	t1 = threading.Thread(target=control)
	t1.start()

	client.loop_forever()
実行結果(一部)

{“msg”:”ENVIRONMENTAL-CURRENT-SENSOR-DATA”,”time”:”2020-06-22T13:07:02.001Z”,”data”:{“tact”:”OFF”,”hact”:”OFF”,”pact”:”0003″,”vact”:”0001″,”sltm”:”OFF”}}

実行するとHP03が起動し約10秒後に停止します。

関連記事

IoT, Python

Posted by nompor