Как определять с помощью чего было изменено свойство объекта?
Добавлено: Сб июн 24, 2023 6:46 pm
Подскажите,
У меня есть микроконтроллер на котором реализован веб. интерфейс контроля выключателей и розеток. Так же на нем реализован MQTT клиент.
Вопрос: Как нужно реализовать логику на стороне MajorDomo что бы правильно обрабатывать MQTT сообщения?
Я написал метод и привязал его к свойству объекта для MQTT. Но, он мне не нравиться т.к. не могу различать изменения кнопок сделанные от прикосновения на планшете и изменения сделанные микроконтроллером по таймеру!?
Метод срабатывает каждый раз когда произошло изменение свойства объекта! И согласно моему коду на микроконтроллер каждый раз отправляется MQTT publish т.к. произошло изменение свойства! Даже если сам микроконтроллер сделал это изменение! Как по мне - это не правильно!
У меня есть микроконтроллер на котором реализован веб. интерфейс контроля выключателей и розеток. Так же на нем реализован MQTT клиент.
Вопрос: Как нужно реализовать логику на стороне MajorDomo что бы правильно обрабатывать MQTT сообщения?
Я написал метод и привязал его к свойству объекта для MQTT. Но, он мне не нравиться т.к. не могу различать изменения кнопок сделанные от прикосновения на планшете и изменения сделанные микроконтроллером по таймеру!?
Метод срабатывает каждый раз когда произошло изменение свойства объекта! И согласно моему коду на микроконтроллер каждый раз отправляется MQTT publish т.к. произошло изменение свойства! Даже если сам микроконтроллер сделал это изменение! Как по мне - это не правильно!
Код: Выделить всё
//$str = "12-0";
$str = $this->getProperty('MQTTmsg');
//echo $str . "<br>";
$pairs = explode(";", trim($str));
$message = '';
$mqttmsg = '';
$output = '';
foreach ($pairs as $pair) {
$key_value = explode("-", trim($pair));
$key = $key_value[0];
$value = $key_value[1];
switch ($value) {
case 0:
$message = $value;
//echo $message;
if($key == 6){
$this->setProperty('Switch_green', $message);
$mqttmsg = $key . ":". $value;
echo $mqttmsg;
//$output = shell_exec("mosquitto_pub -h 192.168.18.100 -p 1883 -t Zagotovka/info -m $mqttmsg");
}
if($key == 12){
$this->setProperty('Switch_blue', $message);
$mqttmsg = $key . ":". $value;
//$output = shell_exec("mosquitto_pub -h 192.168.18.100 -p 1883 -t Zagotovka/info -m $mqttmsg");
}
if($key == 18){
$this->setProperty('Switch_red', $message);
$mqttmsg = $key . ":". $value;
echo $mqttmsg;
//$output = shell_exec("mosquitto_pub -h 192.168.18.100 -p 1883 -t Zagotovka/info -m $mqttmsg");
}
break;
case 1:
$message = $value;
//echo $message;
if($key == 6){
$this->setProperty('Switch_green', $message);
$mqttmsg = $key . ":". $value;
echo $mqttmsg;
//$output = shell_exec("mosquitto_pub -h 192.168.18.100 -p 1883 -t Zagotovka/info -m $mqttmsg");
}
if($key == 12){
$this->setProperty('Switch_blue', $message);
$mqttmsg = $key . ":". $value;
echo $mqttmsg;
//$output = shell_exec("mosquitto_pub -h 192.168.18.100 -p 1883 -t Zagotovka/info -m $mqttmsg");
}
if($key == 18){
$this->setProperty('Switch_red', $message);
$mqttmsg = $key . ":". $value;
//$output = shell_exec("mosquitto_pub -h 192.168.18.100 -p 1883 -t Zagotovka/info -m $mqttmsg");
}
break;
case 2:
$message = $value;
if($key == 6){
$this->setProperty('Switch_green', $message);
$mqttmsg = $key . ":". $value;
echo $mqttmsg;
//$output = shell_exec("mosquitto_pub -h 192.168.18.100 -p 1883 -t Zagotovka/info -m $mqttmsg");
}
if($key == 12){
$this->setProperty('Switch_blue', $message);
$mqttmsg = $key . ":". $value;
echo $mqttmsg;
//$output = shell_exec("mosquitto_pub -h 192.168.18.100 -p 1883 -t Zagotovka/info -m $mqttmsg");
}
if($key == 18){
$this->setProperty('Switch_red', $message);
$mqttmsg = $key . ":". $value;
echo $mqttmsg;
//$output = shell_exec("mosquitto_pub -h 192.168.18.100 -p 1883 -t Zagotovka/info -m $mqttmsg");
}
break;
}
}