Wb-rules и publish извне


#1

Здравствуйте, друзья!
Например, есть виртуальное устройство с топиком типа switch и есть правило типа whenChanged на данный топик. Если я меняю этот топик виджетом на дашборде - все ок, правило стабильно срабатывает. Но если я делаю публикацию в топик из внешнего приложения, то виджет на дашборде правильно отображет состояние, при этом правило не срабатывает. Т.е. изменения не доходят в wb-rules.
Что можно сделать чтобы заработало?


#2

Объясни более предметно.
Покажи настройку tile на DashBoard`е. Что за внешнее приложение, покажи как там tile настроен.


#3

Некоторое уточнение, данная проблема актуальна только для виртуальных устройств. Я попробовал для “wb-gpio/EXT1_K1” все хорошо работает.
Попробовать воспроизвести можно так:

  1. в rules.js добавить такое:

     defineVirtualDevice("Virtual", {
         title: "Virtual device",  
         cells: {  
           	Ping_Pong: {
               type: "switch",
               value: false
             }
         }
     });
    
     defineRule("test", {
     	whenChanged: "Virtual/Ping_Pong",
     	then: function (newValue, devName, cellName) {
     		log(dev["Virtual/Ping_Pong"]);        
     	}
     });
    
  2. в sh такое:
    mosquitto_pub -t “/devices/Virtual/controls/Ping_Pong” -m “1” -r

и потом

cat /var/log/messages | grep wb-rules


#4

Если хотите изменить состояние, то в конце топика надо добавить /on
https://wirenboard.com/wiki/index.php/MQTT#.D0.9D.D0.B0.D0.B6.D0.B0.D1.82.D0.B8.D0.B5_.D0.BA.D0.BD.D0.BE.D0.BF.D0.BA.D0.B8_.D0.B2_.D0.B2.D0.B5.D0.B1-.D0.B8.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D0.B5_.D0.B8_.D0.BF.D0.B5.D1.80.D0.B5.D0.BA.D0.BB.D1.8E.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D1.80.D0.B5.D0.BB.D0.B5_.D0.BD.D0.B0_.D0.B2.D0.BD.D0.B5.D1.88.D0.BD.D0.B5.D0.BC_.D0.BC.D0.BE.D0.B4.D1.83.D0.BB.D0.B5


#5

Спасибо! Все работает!