![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
EthW5500+STM32
Dependencies: MQTT WIZnet_Library mbed
Fork of EthW5500 by
Diff: main.cpp
- Revision:
- 2:566a6b762cdf
- Parent:
- 1:9689429a0a29
- Child:
- 3:54ad271708ff
--- a/main.cpp Fri Aug 25 15:46:28 2017 +0000 +++ b/main.cpp Thu Apr 19 13:57:24 2018 +0000 @@ -2,85 +2,37 @@ #include "WIZnetInterface.h" #include "MQTTSocket.h" #include "MQTTClient.h" +#include "ETHW5500.h" DigitalIn BTN(PC_13); - //W5500接线 mosi,miso,sclk,cs,reset -WIZnetInterface wiz(PA_7,PA_6,PA_5,PB_6,PC_7); //节点名称任取 -#define NODE_NAME "n_12345" +char *NODE_NAME="n_12345"; //接在同一子网下的设备MAC地址必须不同 uint8_t mac_addr[6]={0x50,0x51,0x50,0x00,0x00,0x01}; -typedef MQTT::Client<MQTTSocket,Countdown> MClient; -void meta_report(MClient& client, const char* ns, const char* type, - const char* payload = NULL, size_t payload_len = 0, - bool retain = false, MQTT::QoS qos = MQTT::QOS1){ - char topic[64]; - sprintf(topic, "/%s/" NODE_NAME "/%s", ns, type); - int ret = client.publish(topic, (void*)payload, payload_len, qos, retain); - printf("client.publish()=%d\r\n",ret); -} -void messageArrived(MQTT::MessageData& md) -{ - MQTT::Message &message = md.message; - char buf[64]; - int value, len = sizeof(buf)-1; - if(message.payloadlen < len) - len = message.payloadlen; - memcpy(buf, message.payload, len); - buf[len] = '\0'; - sscanf(buf, "%d", &value); - printf("received %d\r\n", value); -} - int main() { - int ret; - wiz.init(mac_addr); - printf("DHCP...\r\n"); - wiz.connect(); - printf("IP: %s\r\n", wiz.getIPAddress()); - - MQTTSocket sock; - MClient client(sock); - - ret = sock.connect("tdxls-iot.xicp.net",1883); - if(ret != 0){ - printf("failed to connect to TCP server\r\n"); - return 1; - } - printf("sock.connect()=%d\r\n",ret); - - ret = client.connect(); - if(ret != 0){ - printf("MQTT connect failed\r\n"); - return 1; - } - printf("client.connect()=%d\r\n",ret); const char* actuators = "switch,int\n"; const char* sensors = "analog,mV\n"; - - ret = client.subscribe("/control/" NODE_NAME "/switch", MQTT::QOS1, messageArrived); - printf("sock.subscribe()=%d\r\n",ret); - - //节点上线消息 - meta_report(client, "events","online"); - //报告所有可接受的控制指令 - meta_report(client, "capability","control", actuators, strlen(actuators), true); - //报告所有的传感器 - meta_report(client, "capability","values", sensors, strlen(sensors), true); + + Eth_Init(mac_addr);//初始化 + + Eth_Subscribe("control",NODE_NAME,"switch");//订阅服务器信息 - bool btn = 0; + Eth_Report("event",NODE_NAME,"online",NULL,0,false);//报告节点状态 + Eth_Report("capability",NODE_NAME,"control",actuators,strlen(actuators),true);//报告传感器参数 + Eth_Report("capability",NODE_NAME,"values",sensors,strlen(sensors),true); + bool btn = 0;//报告GPIO电平 while(1){ bool newBTN = BTN; if(newBTN != btn){ char buf[16]; int value = newBTN ? 3300 : 0; sprintf(buf, "%d mV", value); - meta_report(client, "values","analog",buf,strlen(buf),true); + Eth_Report("values",NODE_NAME,"analog",buf,strlen(buf),true); btn = newBTN; }else{ - client.yield(100); + wait(0.1); } } }