Самовольно включается лампочка

Обьясните как такое возможно. Есть скрипт, который при уходе из дома вырубает все ненужные устройства.
Скрипт отработал, но одна лампочка в прихожей осталась гореть. При этом:

  1. Реле ее отключающее явно прописано в скрипте.
  2. Если нажать физическую кнопку, которая включает/выключает это реле, в логах будет запись (изменение счетчика нажатий логируется и используется в другом правиле). В данном случае в логах никаких записей о изменении счетчика.

При этом ошибка воспроизводится не всегда.
Не отработала строка dev[“wb-mr6cv3_16/K2”] = false;

defineRule("change_status", {
  whenChanged: ["master_switch/status"],
 	
  	then: function (newValue, devName, cellName) {
    log.info('Сработало правило смены статуса мастер-выключателя. Новое значение - ' + newValue);
 

    
    if (dev['master_switch/status'] == true)
        			{
      				log.info('Выключаем квартиру' );
   					    
             		//выключаем ПВУ, закрываем клапаны
    				dev["fan_speed/on-off"] = false;
                    dev["fan_speed/auto_mode"] = false;
                    dev["fan_speed/Virtual_fan"]=0;
                    dev["fan_speed/Virtual_input_fan"]=0;
                    dev["fan_speed/Virtual_output_fan"]=0;
                    dev["wb-mr6c_58/K1"] = false;
    				dev["wb-mr6c_58/K2"] = false;
    				dev["wb-mr6c_58/K3"] = false;
    				dev["wb-mr6c_58/K4"] = false;
    				dev["wb-mr6c_58/K5"] = false;
    
    				//выключаем свет мастер спальня+мастер-санузел+детский санузел
    				dev["wb-mdm3_84/K3"] = false;
    				dev["wb-mdm3_13/K2"] = false;
    				dev["wb-mdm3_13/K3"] = false;
    				dev["wb-mdm3_84/K2"] = false;
    				dev["wb-mdm3_84/K1"] = false;
    				dev["wb-mdm3_13/K1"] = false;
    
    				//выключаем свет детские
    				dev["wb-mr6cu_239/K6"] = false;
    				dev["wb-led_220/Channel 1"] = false;
    				dev["wb-led_220/Channel 2"] = false;
    				dev["wb-led_220/Channel 3"] = false;
    				dev["wb-mdm3_94/K1"] = false;
    				dev["wb-mdm3_94/K2"] = false;
    				dev["wb-mdm3_94/K3"] = false;
    
    				//выключаем свет гостевой санузел, ночная подсветка, все вытяжки
    				dev["wb-led_240/Channels 3_4"] = false;
    				dev["wb-led_220/Channel 4"] = false;
    				dev["wb-mdm3_66/K3"] = false; 
    				dev["wb-mr6cu_239/K1"] = false;
    				dev["wb-mr6cu_239/K2"] = false;
    				dev["wb-mr6cu_239/K3"] = false;
    				dev["wb-mr6cu_239/K4"] = false;
    				dev["wb-mr6cu_239/K5"] = false;
   
    				//выключаем свет гостиная, коридор, хозкомната
    				dev["wb-led_240/Channels 1_2"] = false;
    				dev["wb-mr6cv3_16/K3"] = false;
    				dev["wb-mr6cv3_16/K4"] = false; 
    				dev["wb-mr6cv3_16/K5"] = false;
    				dev["wb-mr6cv3_16/K6"] = false;
    				dev["wb-mdm3_66/K2"] = false;
    				dev["wb-mdm3_66/K1"] = false; 
    				dev["wb-mr6cv3_16/K2"] = false;
    				dev["wb-mr6cv3_16/K1"] = false;
    
    				//Перекрываем воду
    				dev["wb-mwac_24/K1"] = false;
    				dev["wb-mwac_24/K2"] = false;
    
    				//Отключаем теплые полы
    				dev["Termostat_balkon/TS_onoff"] = false;
    				dev["Termostat_guest_WC/TS_onoff"] = false;
    				dev["Termostat_podokonnik/TS_onoff"] = false;
    				dev["Termostat_room_1/TS_onoff"] = false;
    				dev["Termostat_room_2/TS_onoff"] = false;
    				dev["Termostat_room_3/TS_onoff"] = false;
                    
                    //ставим сервисную переменную в 0  
                    already_home=false;
                      
                  	log.info('Выключили квартиру, already_home= ' + already_home + ', master_switch/status= ' + dev['master_switch/status']);
                    };

Добрый день.
А нет ли в это время (во время выполнения скрипта) в логе wb-mqtt-serial ошибок связи?
То есть - нужно установить, выключался ли канал и если да - что его включило потом снова.
Участвует ли этот канал еще в каких-то скриптах?

Конкретно на этот выключатель не было логирования, но в начале скрипта есть лог «выключаем квартиру», а после окончания работы «выключили квартиру». Между этими записями в логах нет ошибок или потери связи.

Это реле включается/выключается соответствующей кнопкой этого же модуля.
Никаких правил, включающих это реле, нет.
Есть правило, которое триггерится при увеличении счетчика данного выключателя, но опять же это правило не включает данное реле.

Сегодня утром, когда осталась работать лампочка, в логах было вот так:

01-08-2023 10:17:01.608 [cron]	pam_unix(cron:session): session closed for user root
01-08-2023 10:17:01.583 [cron]	(root) CMD (   cd / && run-parts --report /etc/cron.hourly)
01-08-2023 10:17:01.568 [cron]	pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
01-08-2023 10:10:01.491 [cron]	pam_unix(cron:session): session closed for user root
01-08-2023 10:10:01.491 [cron]	pam_unix(cron:session): session closed for user root
01-08-2023 10:10:01.471 [cron]	(root) CMD (test -e /run/systemd/system || SERVICE_MODE=1 /sbin/e2scrub_all -A -r)
01-08-2023 10:10:01.453 [cron]	pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
01-08-2023 09:43:09.191 [wb-mqtt-db.service]	WARNING: [dblogger] Group data limit is reached: group all, row count 102003, limit 100000
01-08-2023 09:17:01.367 [cron]	pam_unix(cron:session): session closed for user root
01-08-2023 09:17:01.344 [cron]	(root) CMD (   cd / && run-parts --report /etc/cron.hourly)
01-08-2023 09:17:01.327 [cron]	pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
01-08-2023 08:56:52.741 [init.scope]	apt-daily.service: Consumed 31.548s CPU time.
01-08-2023 08:56:52.740 [init.scope]	Finished Daily apt download activities.
01-08-2023 08:56:52.737 [init.scope]	apt-daily.service: Succeeded.
01-08-2023 08:56:52.737 [init.scope]	apt-daily.service: Succeeded.
01-08-2023 08:56:19.949 [init.scope]	Starting Daily apt download activities...
01-08-2023 08:23:01.479 [wb-mqtt-db.service]	WARNING: [dblogger] Group data limit is reached: group all, row count 102001, limit 100000
01-08-2023 08:17:01.235 [cron]	pam_unix(cron:session): session closed for user root
01-08-2023 08:17:01.210 [cron]	(root) CMD (   cd / && run-parts --report /etc/cron.hourly)
01-08-2023 08:17:01.194 [cron]	pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
01-08-2023 08:06:35.291 [wb-mqtt-serial]	WARNING: [modbus] failed to read 1 holding(s) @ 11 of device modbus:1: Serial protocol error: request timed out
01-08-2023 08:06:24.859 [wb-rules]	INFO: [rule info] Выключили квартиру, already_home= false, master_switch/status= true
01-08-2023 08:06:24.761 [wb-rules]	INFO: [rule info] Выключаем квартиру
01-08-2023 08:06:24.759 [wb-rules]	INFO: [rule info] Сработало правило смены статуса мастер-выключателя. Новое значение - true
01-08-2023 08:06:24.759 [wb-rules]	INFO: [rule info] Сработало правило смены статуса мастер-выключателя. Новое значение - true
01-08-2023 08:06:24.758 [wb-rules]	INFO: [rule info] Сменили статус на true
01-08-2023 08:06:24.757 [wb-rules]	INFO: [rule info] Статус был false
01-08-2023 08:06:24.744 [wb-rules]	INFO: [rule info] Нажата физическая кнопка, связанная с правилом мастер-выключателя. Причина - wb-mr6c_58/Input 6 counter, новое значение - 70

08:06:24.744 нажали кнопку, которой активировался скрипт из первого сообщения. В 08:06:24.859 скрипт отработал штатно, все должно выключиться.
Правда, беспокоит задвоение лога в 08:06:24.759.

Ворнинг в 08:06:35.291 идет от другого канала 485-2, на нем сидит только вентустановка, работает на скорости 9600, и очень вольно отвечает на запросы ВБ, и вроде не влияет на общую работу.

Дальше уже никого дома нет, пошли работать всякие системные кроны, кто они и чем занимаются я без понятия, если честно.

Сейчас состояние релюшек “wb-mr6cv3_16/K2” и “wb-mr6cv3_16/K1” поставлены на логирование отдельным правилом, возможно, если ситуация повторится, я поймаю момент когда реле включилось.

Отличная диагностика, благодарю.
Какой релиз на контроллере? Если тестинг - то выложите диагностический архив, там пакеты меняются… Да и если стабильный - тоже архив нужен.
И какая прошивка в самом реле?
Попробую воспроизвести.

да я сам не уверен что получится воспроизвести :slight_smile:

Welcome to Wiren Board 7.3.2 (s/n ANRNAYGH), release wb-2304 (as stable)
Linux wirenboard-ANRNAYGH 5.10.35-wb133+wb102 #1 SMP Mon Jul 10 15:03:15 UTC 2023 armv7l GNU/Linux

Буквально позавчера делал wb-mcu-fw-updater update-all, обновились только датчики, то есть у всех остальных последняя стейбл прошивка

архив в личку или тут безопасно выклдывать?

1 лайк

Тут безопасно: там нет личной информации + если сохранить имя файла и не менять - он будет скрыт.

Господа, чувствую себя последним лошарой :frowning: Приношу свои извинения.
Сегодня увидел, что клиент сделал сценарий в спруте, который при сработке датчика движения в прихожей включал это реле. И оно само в 7-7.20 срабатывало. Видимо, рассветало и датчик давал ложную сработку, я не знаю почему (датчик не ваш). Клиента пытаю - клянется что не ходил там утром, поэтому сработку по датчику даже не рассматривал. А в правиле спрута отключить лампочку, спустя секунд 30 например, клиент не догадался.
В итоге в логах ВБ чисто, в моих правилах чисто, а лампочка горит :slight_smile:

1 лайк

Это хорошо что быстро выяснилось. Рад что поделились причиной.

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.