Для того чтобы устройство стало MySensors нодой, в скетч необходимо добавить немного кода, описанного
здесь.
В начале скетча должны быть прописаны флаги конфигурации MySensors которые начинаются с
#define, ознакомится с ними можно в таблице по ссылке выше, там же описано какие значения присвоятся тем или иным флагам при компиляции, если их не прописать в скетче. Например, мы создаём ноду, которая будет работать по радио nRF24 и автономно на случай если отвалился гейт для этого нам необходимо добавить следующий код в шапку перед подключением библиотеки MySensors.h
Код: Выделить всё
#define MY_TRANSPORT_WAIT_READY_MS 1000
#define MY_RADIO_RF24
#include <MySensors.h>
Если необходимо подключить дебаг или присвоить ноде номер по своему усмотрению, необходимо добавить соответствующие дефайны из таблицы перед подключением библиотеки.
Далее необходимо создать контейнеры для хранения и передачи информации, в данном случае необходимо два контейнера с типом V_STATUS, таких контейнеров может быть от 0-254, по ссылке выше это так называемые child-sensor-id, список поддерживаемых типов датчиков, а соответственно и контейнеров можно посмотреть
здесь.
Код: Выделить всё
MyMessage msg1(0, V_STATUS);
MyMessage msg2(1, V_STATUS);
msg, это переменная и может быть названа как вам угодно хоть msg_light1, главное чтобы она была уникальной, в нашем случае msg1 и msg2.
Далее ноде необходимо представиться контроллеру и для этого необходимо создать функцию презентации.
Код: Выделить всё
void presentation()
{
sendSketchInfo("Relay+Button", "1.0");
present(0, S_BINARY,"Relay1");
present(1, S_BINARY,"Relay2");
}
Текст в кавычках пишите по своему усмотрению, он будет отображаться на контроллере, для информативности при настройке последнего.
Далее идёт секция
void setup(), в ней можно запросить или передать информацию о текущем состоянии релюшек при загрузке или перезагрузке. Для того чтобы после отключения электроэнергии реле либо обнулялись, либо запрашивали у контролера какое должно быть их состояние или загружали из памяти последнее сохранённое состояние.
Следующая секция
void loop(), здесь в данном случае необходимо добавить отправку на контроллер переменных статус1 и статус2 после их изменения. Про отправку и приём сообщений можно почитать
здесь.
Код: Выделить всё
void loop(){
ваш код;
send(msg1.set(статус1));
...;
send(msg2.set(статус2));
Ну и в конце нам необходимо создать функцию обработки входящих сообщений
void receive(
const MyMessage &message), для возможности управления реле с контроллера и подтверждения доставки сообщения до получателя.
Код: Выделить всё
void receive(const MyMessage &message){
if ((message.type == V_STATUS)&&(message.sensor == 0)) статус1 = message.getBool();
if ((message.type == V_STATUS)&&(message.sensor == 1)) статус2 = message.getBool();
}
Про подтверждение описано в теме по ссылке выше.