案例八:MQTT方式上传数据至machtalk-Arduino中文社区 - Powered by Discuz! Archiver

weijinhe 发表于 2014-8-29 10:36

案例八:MQTT方式上传数据至machtalk

本帖最后由 weijinhe 于 2014-10-15 12:46 编辑

http://machtalk.net/
服务器启动后,主动订阅一个公共主题,名字可以是/machtalk/commontopic,当设备需要上传数据时,publish一个消息到该主题,消息内容可以是{"APIKey":"7f3802bd3e474757bfba1f6ab20a8fbf","device_id":"861001002720064","device_value_id":"1","device_type_id":"3",”value”:XX}服务端收到该消息后,分析该设备的相关信息是否合法,合法的话就调用入库的代码。
1、硬件准备(1)Arduino uno (2)模拟声音传感器模块(3)Arduino Ethernet W5100 网络扩展板模块(4)网线一根
2、硬件连接(1)Arduino Ethernet W5100 网络扩展板模块与Arduino uno连接。(2)Arduino Ethernet W5100 网络扩展板模块插上网线(3)模拟声音传感VC GND out 分别与Arduino uno 5V GND A(0)连接   3、烧写代码
#include <SPI.h>
#include <Ethernet.h>
#include <PubSubClient.h>

byte mac[]    = {0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED };
byte server[] = { 60, 211, 253, 162 };//machtalk平台服务器
byte ip[]   = { 192, 168, 0, 100 };

void callback(char* topic, byte* payload, unsigned int length) {
// handle message arrived
}

EthernetClient ethClient;
PubSubClient client(server, 1883, callback, ethClient);
char json;
void setup()
{
//连接网络
Serial.begin(9600);
if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    Ethernet.begin(mac, ip);
}
}
void loop()
{
client.loop();
if (client.connect("arduinoClient")) {
    Serial.println("connected");
}
   int value=analogRead(A0);
   Serial.println(value);
//device_id、device_value_id、devce_type_id替换为自己IDsprintf(json,"{\"device_id\":\"4fa0ee5291f4402e8fc98e4d72e17ce0\",\"device_value_id\":\"1\",\"device_type_id\":\"1\",\"value\":%d}",value);
   client.publish("/machtalk/commontopic",json);
   Serial.println(json);
   delay(1000);
}
4、Machtalk物联网平台配置    Machtalk物联网平台配置、动作设置、触发器设置如http://machtalk.net/intro/regist所示,不再累述。www.mactalk.net技术交流群:300250166



walkers019 发表于 2018-1-9 13:38

你好, 我在使用client.publish的时候返回值是0,消息没有成功发送出去,我该如何分析原因?

谢谢!
页: [1]
查看完整版本: 案例八:MQTT方式上传数据至machtalk