MQTT version for enno SDK
Dependencies: EthernetInterface MQTT mbed-rtos mbed serialzation_lib
Fork of HelloMQTT by
main.cpp@21:c5f6350a292d, 2015-12-02 (annotated)
- Committer:
- weiarm2015
- Date:
- Wed Dec 02 01:54:31 2015 +0000
- Revision:
- 21:c5f6350a292d
- Parent:
- 20:3858e42b0cd3
This is a alpha version of enno SDK for mbed
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
weiarm2015 | 21:c5f6350a292d | 1 | /* |
weiarm2015 | 21:c5f6350a292d | 2 | * ennoForMbed.c |
weiarm2015 | 21:c5f6350a292d | 3 | * |
weiarm2015 | 21:c5f6350a292d | 4 | * Created on: 2015年11月20日 |
weiarm2015 | 21:c5f6350a292d | 5 | * Author: v-chawei |
weiarm2015 | 21:c5f6350a292d | 6 | */ |
weiarm2015 | 20:3858e42b0cd3 | 7 | #include "mbed.h" |
weiarm2015 | 21:c5f6350a292d | 8 | #include "MQTTClient.h" |
weiarm2015 | 20:3858e42b0cd3 | 9 | #include "enno_api.h" |
icraggs | 18:07a79d8f01c3 | 10 | |
weiarm2015 | 21:c5f6350a292d | 11 | |
icraggs | 17:0811bdbdd78a | 12 | #define MQTTCLIENT_QOS2 1 |
weiarm2015 | 20:3858e42b0cd3 | 13 | DigitalOut led1(LED1); |
weiarm2015 | 20:3858e42b0cd3 | 14 | DigitalOut led2(LED2); |
weiarm2015 | 20:3858e42b0cd3 | 15 | DigitalOut led3(LED3); |
weiarm2015 | 20:3858e42b0cd3 | 16 | DigitalOut led4(LED4); |
icraggs | 0:0cae29831d01 | 17 | |
icraggs | 8:a3e3113054a1 | 18 | |
weiarm2015 | 21:c5f6350a292d | 19 | int main(int argc, char* argv[]){ |
weiarm2015 | 21:c5f6350a292d | 20 | Error_t rc = NONE_ERROR; |
weiarm2015 | 20:3858e42b0cd3 | 21 | float version = 0.5; |
weiarm2015 | 21:c5f6350a292d | 22 | char *ennoCommandPrefix = "SiteWhere/commands/"; |
weiarm2015 | 21:c5f6350a292d | 23 | char *ennoSystemPrefix = "SiteWhere/system/"; |
weiarm2015 | 21:c5f6350a292d | 24 | char *ennoSystemInbound = "SiteWhere/input/protobuf"; |
weiarm2015 | 21:c5f6350a292d | 25 | char *deviceId = "enno-xbed-test-30"; |
weiarm2015 | 21:c5f6350a292d | 26 | char *topicType = "command"; |
weiarm2015 | 21:c5f6350a292d | 27 | char *hostURL = "139.217.10.99"; |
weiarm2015 | 21:c5f6350a292d | 28 | int port = 1883; |
weiarm2015 | 21:c5f6350a292d | 29 | char *appKey = NULL; |
weiarm2015 | 21:c5f6350a292d | 30 | |
weiarm2015 | 20:3858e42b0cd3 | 31 | led1=1;led2=1;led3=1;led4=1; //light on |
weiarm2015 | 20:3858e42b0cd3 | 32 | wait(0.5); |
weiarm2015 | 20:3858e42b0cd3 | 33 | led1=!led1;led2=!led2;led3=!led3;led4=!led4; //light off |
weiarm2015 | 20:3858e42b0cd3 | 34 | wait(0.5); |
weiarm2015 | 20:3858e42b0cd3 | 35 | led1=!led1;led2=!led2;led3=!led3;led4=!led4; //light on |
weiarm2015 | 20:3858e42b0cd3 | 36 | wait(0.5); |
weiarm2015 | 20:3858e42b0cd3 | 37 | led1=!led1;led2=!led2;led3=!led3;led4=!led4; //light off |
weiarm2015 | 20:3858e42b0cd3 | 38 | |
weiarm2015 | 20:3858e42b0cd3 | 39 | printf("HelloMQTT: version is %f\n", version); |
weiarm2015 | 20:3858e42b0cd3 | 40 | |
weiarm2015 | 21:c5f6350a292d | 41 | printf("Connecting to enno server %s:%d...\n",hostURL,port); |
weiarm2015 | 21:c5f6350a292d | 42 | |
weiarm2015 | 21:c5f6350a292d | 43 | rc = enno_connect(hostURL, port, appKey); |
weiarm2015 | 21:c5f6350a292d | 44 | if (NONE_ERROR != rc) { |
weiarm2015 | 21:c5f6350a292d | 45 | printf("Error(%d) on connecting.\n", rc); |
weiarm2015 | 21:c5f6350a292d | 46 | exit(rc); |
weiarm2015 | 21:c5f6350a292d | 47 | } |
weiarm2015 | 21:c5f6350a292d | 48 | printf("connected.\n"); |
weiarm2015 | 21:c5f6350a292d | 49 | |
weiarm2015 | 21:c5f6350a292d | 50 | printf("Subscribing system topic..."); |
weiarm2015 | 21:c5f6350a292d | 51 | char systemTopic[64]; |
weiarm2015 | 21:c5f6350a292d | 52 | char commandTopic[64]; |
weiarm2015 | 21:c5f6350a292d | 53 | strcpy(systemTopic,ennoSystemPrefix); |
weiarm2015 | 21:c5f6350a292d | 54 | strcat(systemTopic,deviceId); |
weiarm2015 | 21:c5f6350a292d | 55 | |
weiarm2015 | 21:c5f6350a292d | 56 | rc = enno_subscribe(systemTopic, topicType); |
weiarm2015 | 21:c5f6350a292d | 57 | if (NONE_ERROR != rc) { |
weiarm2015 | 21:c5f6350a292d | 58 | printf("Error on subscrie system topic."); |
weiarm2015 | 21:c5f6350a292d | 59 | exit(rc); |
weiarm2015 | 21:c5f6350a292d | 60 | } |
weiarm2015 | 21:c5f6350a292d | 61 | printf("subscribed.\n"); |
weiarm2015 | 21:c5f6350a292d | 62 | |
weiarm2015 | 21:c5f6350a292d | 63 | printf("Send device registeration...\n"); |
weiarm2015 | 21:c5f6350a292d | 64 | |
weiarm2015 | 21:c5f6350a292d | 65 | EnnoMessages Messages_enno = EnnoMessagesDefault; |
weiarm2015 | 21:c5f6350a292d | 66 | Messages_enno.Register.pHardwareId = deviceId; |
weiarm2015 | 21:c5f6350a292d | 67 | Messages_enno.messageType = 'R'; |
weiarm2015 | 21:c5f6350a292d | 68 | rc = enno_publish(ennoSystemInbound, &Messages_enno); |
weiarm2015 | 21:c5f6350a292d | 69 | if (NONE_ERROR != rc) { |
weiarm2015 | 21:c5f6350a292d | 70 | printf("Error on Registering device.\n"); |
weiarm2015 | 21:c5f6350a292d | 71 | exit(rc); |
weiarm2015 | 21:c5f6350a292d | 72 | } |
weiarm2015 | 21:c5f6350a292d | 73 | |
weiarm2015 | 21:c5f6350a292d | 74 | printf("sent.\n"); |
weiarm2015 | 21:c5f6350a292d | 75 | Messages_enno.messageType = 'L'; |
weiarm2015 | 21:c5f6350a292d | 76 | // main loop |
weiarm2015 | 21:c5f6350a292d | 77 | while (NONE_ERROR == rc) { |
weiarm2015 | 21:c5f6350a292d | 78 | enno_loop(1000); |
weiarm2015 | 21:c5f6350a292d | 79 | // sleep(1); |
weiarm2015 | 21:c5f6350a292d | 80 | rc = enno_publish(ennoSystemInbound, &Messages_enno); |
weiarm2015 | 21:c5f6350a292d | 81 | led3=!led3; |
weiarm2015 | 21:c5f6350a292d | 82 | printf("Location updated.\n"); |
weiarm2015 | 21:c5f6350a292d | 83 | } |
weiarm2015 | 21:c5f6350a292d | 84 | |
weiarm2015 | 21:c5f6350a292d | 85 | return rc; |
icraggs | 2:638c854c0695 | 86 | } |
icraggs | 0:0cae29831d01 | 87 | |
icraggs | 2:638c854c0695 | 88 | |
icraggs | 2:638c854c0695 | 89 | |
icraggs | 0:0cae29831d01 | 90 | |
weiarm2015 | 20:3858e42b0cd3 | 91 |