DIY一款基于MySensors的ESP8266+NRF24L01的MQTT(WIFI)和RF无线网关(三)一个简单MySensors客户端的验证实验
一个简单MySensors客户端的验证实验
本文在前面一篇的基础上,利用两套wifi+RF模块来进行无线通信,通过domoticz来控制。
一套作为网关(Gateway),另一套作为客户端。
本文重点在客户端的源代码编写和domoticz平台的使用。
一、硬件和IDE
本文所述客户端的硬件跟前面一片文章的网关的硬件是一模一样的,用相同的ESP8266模块和NRF24L01+模块,线路接法也一样。
请参考:
https://blog.youkuaiyun.com/sqshining/article/details/87459032#_31
IDE也是使用Arduino,跟上一篇一样,需要安装有MySensors库,请参考上一篇文章。
二、客户端源代码
1、实验要达到的目标
本次实验,是用代码模拟一个继电器的控制器设备,定时每隔10秒钟,更变到跟当前相反的状态,并随时受domoticz平台的控制。
2、源码
我们借用Arduino上的MySensors库给的样例代码,在此基础上做修改。
打开Arduino,文件–>示例 第三方库示例–>MySensors–>RelayActuator,如下图:
把它另存为一个新的工程。
在那份代码基础上修改成如下:
// Enable debug prints to serial monitor
#define MY_DEBUG
// Enable and select radio type attached
#define MY_RADIO_RF24
#include <MySensors.h>
#define RELAY_ON 1 // 继电器吸合
#define RELAY_OFF 0 // 继电器断开
#define CHILD_ID_RELAY 1 //继电器在本无线节点上的设备ID号
MyMessage msgContacteur(CHILD_ID_RELAY, V_STATUS); //发送的消息,V_STATUS代表可以发二值消息,具体可以参考MySensors官方网站对它的定义
static os_timer_t relay_update_timer;//为定时更新状态定义一个系统定时器
static bool ReLayStatus = false; //记录继电器当前的状态
void RF24Send_Test_Task_Run(void *)
{
ReLayStatus = ReLayStatus ?