Скетч запрашивающей ноды
Код: Выделить всё
#define MY_RADIO_RF24
#define MY_DEBUG
#define MAGIC_SENSOR 5
#define SENDER_NODE 10
byte magic;
byte mem_parent_id;
static uint32_t reset_timer;
static uint16_t reset_interval = 5000; // Интервал опроса удаленной ноды
#include <MySensors.h>
void preHwInit()
{
}
void before()
{
}
void presentation()
{
sendSketchInfo("TEST_NODE_D", "1.1");
}
void setup() {
mem_parent_id = _transportConfig.parentNodeId;
reset_timer = millis();
}
void loop()
{
if (millis() - reset_timer > reset_interval) {
reset_timer = millis();
_transportConfig.parentNodeId = SENDER_NODE;
request(MAGIC_SENSOR, V_VAR1, SENDER_NODE);
_transportConfig.parentNodeId = mem_parent_id;
wait(2000, C_SET, V_VAR1);
}
}
void receive(const MyMessage &message)
{
if (message.sender == SENDER_NODE) {
if (message.sensor == MAGIC_SENSOR) {
if (message.type == V_VAR1) {
magic = message.getByte();
CORE_DEBUG(PSTR("MyS: DELIVEED MAGIC: %d\n"), magic);
}
}
}
}
Код: Выделить всё
#define MY_RADIO_RF24
#define MY_DEBUG
#define MAGIC_SENSOR 5
#include <MySensors.h>
byte magic = 5;
byte mem_parent_id;
MyMessage MsgMagic(MAGIC_SENSOR, V_VAR1);
void preHwInit()
{
}
void before()
{
}
void presentation()
{
sendSketchInfo("TEST_NODE_S", "1.1");
}
void setup() {
mem_parent_id = _transportConfig.parentNodeId;
}
void loop()
{
}
void receive(const MyMessage &message)
{
if (mGetCommand(message) == C_REQ) {
if (message.sensor == MAGIC_SENSOR) {
if (message.type == V_VAR1) {
_transportConfig.parentNodeId = message.sender;
send(MsgMagic.setDestination(message.sender).set(magic));
_transportConfig.parentNodeId = mem_parent_id;
if (magic == 255) {
magic = 0;
} else {
magic = magic + 5;
}
}
}
}