Страница 3 из 3

Re: "Умный выключатель"

Добавлено: Пт апр 07, 2017 9:26 am
Ivan
Вот здесь есть перечень конфигурационных настроек.
В них есть определения чтобы выключить обязательную регистрацию в гейте
http://mysensors.jad.ru/download/sensor_api_20/

Re: "Умный выключатель"

Добавлено: Вс апр 09, 2017 12:24 am
ahelper
Перечитал весь MyConfig, менял настройки в скетче и в самом MyConfig, ничего не выходит.
Пока нода не получит сообщение от гейта даже настройки void setup() не выставляются.
Скетч урезал до
SPOILERSPOILER_SHOW

Код: Выделить всё

#define MY_DEBUG // Включаем отладочные сообщения в порт ноды

#define MY_RADIO_NRF24 // Определаем тип радио модуля

//#define MY_NODE_ID 5 // Задаем ID ноды

//#define MY_REGISTRATION_FEATURE // Если функция включена, нода сначала регистрируется на гейте,
//а уже потом передает данные с сенсоров

//#define MY_REGISTRATION_RETRIES (1u) // Количество попыток регистрации
//если гейт или контроллер не отвечают

//#define MY_REGISTRATION_DEFAULT true // Регистрация по умолчанию,
//если нода не получила ответ о регистрации от гейта

//#define MY_REGISTRATION_CONTROLLER

#define MY_RF24_CE_PIN 9  // Специфические настройки пинов для радиомодулей RF24
#define MY_RF24_CS_PIN 10 // Специфические настройки пинов для радиомодулей RF24 

#include <SPI.h>
#include <MySensors.h>
#include <Bounce2.h>

#define RELAY_1  3  // номер цифрового пина для 1 реле
#define RELAY_2  4  // номер цифрового пина для 2 реле
#define RELAY_ON 1  // состояние влюченного реле
#define RELAY_OFF 0 // состояние выключенного реле
#define BUTTON_PIN_1 6 // номер цифрового пина для 1 выключателя
#define BUTTON_PIN_2 7 // номер цифрового пина для 2 выключателя

Bounce debouncer1 = Bounce();
Bounce debouncer2 = Bounce();

void setup()
{  
  pinMode(BUTTON_PIN_1, INPUT); // Установки состояния выключателя №1
  digitalWrite(BUTTON_PIN_1,HIGH); // Устанавливаем состояния выключателя pull-up
  debouncer1.attach(BUTTON_PIN_1); // После настройки кнопки, установка debouncer
  debouncer1.interval(5);
  
  pinMode(BUTTON_PIN_2, INPUT); // Установки состояния выключателя №2
  digitalWrite(BUTTON_PIN_2,HIGH); // Устанавливаем состояния выключателя pull-up
  debouncer2.attach(BUTTON_PIN_2); // После настройки кнопки, установка debouncer
  debouncer2.interval(5);

  // Устанавливаем состояние контактов реле 1
  pinMode(RELAY_1, OUTPUT);
  // Устанавливаем реле на последнее известное состояние
  digitalWrite(RELAY_1, loadState(1)?RELAY_ON:RELAY_OFF);
  
  // Устанавливаем состояние контактов реле 2
  pinMode(RELAY_2, OUTPUT);
  // Устанавливаем реле на последнее известное состояние
  digitalWrite(RELAY_2, loadState(2)?RELAY_ON:RELAY_OFF);   
}

void loop(){}
 
Все, что закомментировано и немного другого пробовал менять. В параметре loadState(2) оставил единицу, чтобы понять, отрабатывает void setup() или нет. В порт пишет нет гейта
SPOILERSPOILER_SHOW

Код: Выделить всё

6150 !TSM:FPAR:NO REPLY
6152 TSM:FPAR
6188 TSF:MSG:SEND,5-5-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
8196 !TSM:FPAR:FAIL
8197 TSM:FAIL:CNT=1
8199 TSM:FAIL:PDT
Даже если регистрация с гейтом пройдет и гейт потом выключить то перестает отрабатывать кнопки, постоянный поиск гейта.
Мое мнение, что данная библиотека годится только для датчиков, а для выключателя нужно что то другое. Т. к. в данном режиме работы он бесполезен?
Подскажите как из этого положения выйти, есть ли решение?

Re: "Умный выключатель"

Добавлено: Вс апр 09, 2017 12:59 am
Ivan
Вчера разбирались с этим в чате. В библиотеке ошибка. На неделе буду делать в либу патч

Re: "Умный выключатель"

Добавлено: Вт апр 18, 2017 11:52 pm
ahelper
Нашел все таки то,что искал. Очень интересный код, мультикнопочнорелейный.
Код с форума forum.mysensors.org работает именно так как нужно.
Помнит последнее состояние реле, при выкл/вкл питания возвращает последнее состояние Алисе (шлюзу MySensors).
При пропадании шлюза работает автономно!
Скетч под библиотеку MySensors 1.5.4