Ну в общем-то говоря есть следующий код для виртуального устройства:
defineVirtualDevice("myRelay", {
title: "Dingtian IOT Relay 2Channel Relay Board",
cells: {
relay1: {
type: "switch",
value: false
},
relay2: {
type: "switch",
value: false
}
}
});
Устройство создано, все успешно:

Для него соответственно появился топик MQTT:

Также имеется возможность пощелкать реле физически (воткнул проводок в землю) , и, соответственно могу изменять значение реле, что отражается в топике MQTT оригинального девайса, а также того самого звука переключения (щелкание):

После того, как поработал проводом:

Теперь я взял виртуальный топик и попробовал сделать таким образом, чтобы если у меня на виртуальном стоит 0, тогда на мейн девайс посылать ON (ну и наоборот тоже):
import paho.mqtt.client as mqtt
import json
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected to broker: {}".format(broker))
# client.subscribe("/test_relay/relay16584/out/#")
client.subscribe("/devices/myRelay/controls/relay1")
else:
print('Not connected')
def on_message(client, userdata, msg):
"""BLOCK OF CODE THAT WILL PLACE THE VALUE TO THE TOPIC"""
message1 = None # define the message from the current topic
data = {"idx": "1", "status": "OFF"}
if '/devices/myRelay/controls/relay1' in msg.topic and 'meta' not in msg.topic:
inter_topic = '/test_relay/relay16584/out/r1'
inter_topic2 = '/test_relay/relay16584/out/relay1'
# get the message of the relay_1 status (if we work with the Dingt relay, we should decode the value)
if msg.payload.decode('utf-8') == '1':
message1 = 'OFF'
# print(msg.topic, msg.payload.decode('utf-8'))
else:
message1 = 'ON'
print(message1)
client.publish(inter_topic, payload=message1, qos=1, retain=True)
client.publish(inter_topic2, payload=json.dumps(data), qos=1, retain=True)
else:
pass
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(broker, port=port)
client.loop_forever()
Но после выполнения данного кода значение на мейн девайсе хоть и изменилось (ненадолго), но никакого звука “щелчка” не произошло.
Я же хочу добиться того, чтобы можно было слышать данный звук не только, когда физически прикладываешь проводок, но также и с помощью манипуляций на веб-странице.