QNAP NAS + Arduino Yun 开发实作小记 - MQTT, NodeRED
- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
轉貼自:Arduino中文社区
jackhebe LV1
2016-10-22 15:04
QNAP NAS + Arduino 开发实作小记

今天入手一套Arduino开发套装,开始捣鼓这套开发板。手上有一台 QNAP NAS TS-251查看了官方资料,发现支持QIOT技术,于是开始研究。

给开发者的「QIoT Containers」Starter Kits
开发者仅需数十美金的成本,在开发板 (如:Raspberry Pi) 上连接上烟雾、温度、或湿度传感器,即可快速开发出一套简易的智能家庭项目。QIoT Containers 提供多种通讯协议以及 Dashboard 组件,帮助用户轻易地将传感器接至开发板,并在 QNAP NAS 中设置 MQTT、Node-RED、Freeboard 等组件。由传感器接收到的数据则会通过网络回传至 NAS,用户可通过 Dashboard 的呈现来同时远程监测家中环境质量。


它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是利用 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。



第二只绿灯 当按下旁边的按钮,它会常亮。
第三只绿灯 当收到满足条件的信号会亮




这段的作用是 向MQTT服务器订阅消息,当收到传来的消息,就做相应硬件的控制。在这个例子里,我们控制第三只灯亮。
下面贴上代码:
[mw_shl_code=applescript,true]#include
#include
#include
#define LED_PIN 7
#define RED_LIGHT_PIN 13
IPAddress server(0xA, 0xC, 0x13, 0xD2);
YunClient yunClient;
PubSubClient client(server,1883,callback,yunClient);
void callback(char* topic,byte* payload, unsigned int length){
if(0 == strcmp(topic,"/command/light/")){
Serial.println(length);
char buf[length + 1];
memset(buf,'\0',sizeof(buf));
memcpy(buf,(char*)payload,length);
digitalWrite(LED_PIN, 0 == strcmp(buf,"false") ? LOW: HIGH);
Serial.println(buf);
}else
if(0 == strcmp(topic,"/command/airconditioning/")){
Serial.println(length);
char buf[length + 1];
memset(buf,'\0',sizeof(buf));
memcpy(buf,(char*)payload,length);
digitalWrite(RED_LIGHT_PIN, 0 == strcmp(buf,"false") ? LOW: HIGH);
Serial.println(buf);
}
};
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
if (client.connect("arduinoClient")) {
Serial.println("connected");
client.publish("/info/login/","{'Deivceid'}");
client.subscribe("/command/#");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void setup() {
// put your setup code here, to run once:
//Initialize serial and wait for port to open:
Serial.begin(9600);
//while (!Serial) {
//; // wait for serial port to connect. Needed for Leonardo only
// }
Bridge.begin();
// initialize digital pin 13 as an output.
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH);
pinMode(RED_LIGHT_PIN, OUTPUT);
digitalWrite(RED_LIGHT_PIN, HIGH);
}
void loop() {
// put your main code here, to run repeatedly:
if (!client.connected()) {
reconnect();
}
client.loop();
}
[/mw_shl_code]
这里讲怎么安装Container 及 MQTT服务器

进入到NAS的 App Center

找到Container Station

搜索qiot-ponte 然后下载安装

搜索qiot-node 下载安装

稍等些时间,就会下载完毕,然后安装。

安装好后, 打开qiot-node 点击如图片所示链接

打开后,编辑MQTT消息处理的规则
最后写了一个手机APP发布MQTT消息给服务器,就能控制到灯。
最后写了一个手机APP发布MQTT消息给服务器,就能控制到灯。

以下是我用手机端MQTT工具模拟发送指令使第三只灯亮的视频。
http://v.youku.com/v_show/id_XMTc2OTM2NTQ0NA==.html
http://v.youku.com/v_show/id_XMTc2OTM2NTQ0NA==.html
更多QNAP IoT應用分享:
- 使用家用閘道器連結QNAP IoT Suite和QVR Pro Bata
- Edison+NAS:將住家變成智慧家庭
- IFROGLAB 將QNAP NAS 變身為LORA GATEWAY
- QNAP 與 Canonical 深度合作展開 Ubuntu IoT 應用
QNAP 推出物聯網應用QIoT Suite Lite,在QIoT Blog上有許多實用教學文,推薦:
關於QNAP NAS 如何在物聯網應用中使用可以看這篇介紹
留言
張貼留言
歡迎留言一起討論