Add commands for fanLevel and deviceMode
New topics to listen to...
This commit is contained in:
parent
5f4fdcc57d
commit
255a61f40b
2 changed files with 40 additions and 3 deletions
|
@ -37,6 +37,8 @@ These topics can control the device:
|
||||||
| CMD Topic | Values expected | Meaning |
|
| CMD Topic | Values expected | Meaning |
|
||||||
|--------------------------------------------|------------------------------|----------------------------------------------------------------------------|
|
|--------------------------------------------|------------------------------|----------------------------------------------------------------------------|
|
||||||
| `{mqtt_topic}/CMD/devicePower` | on/off | Turn the device on or off |
|
| `{mqtt_topic}/CMD/devicePower` | on/off | Turn the device on or off |
|
||||||
|
| `{mqtt_topic}/CMD/deviceMode` | Auto, Silent, Favorite, Fan | The mode to run (turns the device on) |
|
||||||
|
| `{mqtt_topic}/CMD/fanLevel` | 1, 2, 3 | The fanlevel preset to run (turns the device on) |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,9 @@ def on_mqttDisconnect(client, userdata, rc):
|
||||||
def on_mqttConnect(client, userdata, flags, rc):
|
def on_mqttConnect(client, userdata, flags, rc):
|
||||||
log(1, "MQTT broker connected")
|
log(1, "MQTT broker connected")
|
||||||
|
|
||||||
|
## Log unknown MQTT Message Data Values
|
||||||
|
def msgDataUnknown():
|
||||||
|
log(2, "The data inside the MQTT topic is invalid")
|
||||||
|
|
||||||
## MQTT Subscription Loop Callback Function
|
## MQTT Subscription Loop Callback Function
|
||||||
def on_mqttMessage(client, userdata, message):
|
def on_mqttMessage(client, userdata, message):
|
||||||
|
@ -60,11 +63,43 @@ def on_mqttMessage(client, userdata, message):
|
||||||
log(2, "RECEIVED: " + mqttMsgTopic + ":" + mqttMsgData)
|
log(2, "RECEIVED: " + mqttMsgTopic + ":" + mqttMsgData)
|
||||||
if ( mqttMsgTopic == mqtt_cmdTopic+"devicePower" ):
|
if ( mqttMsgTopic == mqtt_cmdTopic+"devicePower" ):
|
||||||
if (mqttMsgData == "on"):
|
if (mqttMsgData == "on"):
|
||||||
|
log(2, "ACTION: Power on")
|
||||||
ap.on()
|
ap.on()
|
||||||
log(2, "ACTION: Power On")
|
|
||||||
elif (mqttMsgData == "off"):
|
elif (mqttMsgData == "off"):
|
||||||
|
log(2, "ACTION: Power off")
|
||||||
ap.off()
|
ap.off()
|
||||||
log(2, "ACTION: Power Off")
|
else:
|
||||||
|
msgDataUnknown()
|
||||||
|
elif ( mqttMsgTopic == mqtt_cmdTopic+"fanLevel" ):
|
||||||
|
if ( mqttMsgData == "1" ):
|
||||||
|
log(2, "ACTION: Set fanLevel 1")
|
||||||
|
ap.set_fan_level(1)
|
||||||
|
elif ( mqttMsgData == "2" ):
|
||||||
|
log(2, "ACTION: Set fanLevel 2")
|
||||||
|
ap.set_fan_level(2)
|
||||||
|
elif ( mqttMsgData == "3" ):
|
||||||
|
log(2, "ACTION: Set fanLevel 3")
|
||||||
|
ap.set_fan_level(3)
|
||||||
|
else:
|
||||||
|
msgDataUnknown()
|
||||||
|
elif ( mqttMsgTopic == mqtt_cmdTopic+"deviceMode" ):
|
||||||
|
if ( mqttMsgData == "Auto" ):
|
||||||
|
log(2, "ACTION: Set deviceMode Auto")
|
||||||
|
ap.set_mode(miio.airpurifier_miot.OperationMode.Auto)
|
||||||
|
elif ( mqttMsgData == "Fan" ):
|
||||||
|
log(2, "ACTION: Set deviceMode Fan")
|
||||||
|
ap.set_mode(miio.airpurifier_miot.OperationMode.Fan)
|
||||||
|
elif ( mqttMsgData == "Favorite" ):
|
||||||
|
log(2, "ACTION: Set deviceMode Favorite")
|
||||||
|
ap.set_mode(miio.airpurifier_miot.OperationMode.Favorite)
|
||||||
|
elif ( mqttMsgData == "Silent" ):
|
||||||
|
log(2, "ACTION: Set deviceMode Silent")
|
||||||
|
ap.set_mode(miio.airpurifier_miot.OperationMode.Silent)
|
||||||
|
else:
|
||||||
|
msgDataUnknown()
|
||||||
|
else:
|
||||||
|
log(2, "The MQTT topic is invalid")
|
||||||
|
|
||||||
## Force update of STATE after switching things
|
## Force update of STATE after switching things
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
updateMqttStateTopic()
|
updateMqttStateTopic()
|
||||||
|
@ -97,7 +132,7 @@ time.sleep(5)
|
||||||
|
|
||||||
## Subscribe to mqtt command topics and start the loop
|
## Subscribe to mqtt command topics and start the loop
|
||||||
mqtt_cmdTopic = mqtt_topic + "/CMD/"
|
mqtt_cmdTopic = mqtt_topic + "/CMD/"
|
||||||
mqttClient.subscribe(mqtt_cmdTopic+"power")
|
mqttClient.subscribe(mqtt_cmdTopic+"#")
|
||||||
mqttClient.on_message = on_mqttMessage
|
mqttClient.on_message = on_mqttMessage
|
||||||
mqttClient.on_connect = on_mqttConnect
|
mqttClient.on_connect = on_mqttConnect
|
||||||
mqttClient.on_disconnect = on_mqttDisconnect
|
mqttClient.on_disconnect = on_mqttDisconnect
|
||||||
|
|
Reference in a new issue