【 IoTを試そう [ODIN-W2(WiFi) + 温度計 + milkcocoa ] 】 ODIN-W2 にmbed ApplicationShiled をつないで、 https://developer.mbed.org/components/mbed-Application-Shield/ 温度のデータをMilkcocoaにアップするプログラムです。

Dependencies:   LM75B Milkcocoa-os

Fork of mbed-os-example-mbed5-wifi by mbed-os-examples

Revision:
17:79fa29aa6724
Parent:
10:5b5beb106156
--- a/main.cpp	Mon Apr 10 16:30:03 2017 +0100
+++ b/main.cpp	Tue Apr 18 07:22:04 2017 +0000
@@ -31,6 +31,26 @@
 
 #endif
 
+#include "Milkcocoa.h"
+/************************* Your Milkcocoa Setup *********************************/
+#define MILKCOCOA_APP_ID      CONFIG_MILKCOCOA_APP_ID
+#define MILKCOCOA_DATASTORE   CONFIG_MILKCOCOA_DATASTORE
+/************* Milkcocoa Setup (you don't need to change this!) ******************/
+
+#define MILKCOCOA_SERVERPORT  1883
+
+/************ Global State (you don't need to change this!) ******************/
+const char MQTT_SERVER[]  = MILKCOCOA_APP_ID ".mlkcca.com";
+const char MQTT_CLIENTID[] = __TIME__ MILKCOCOA_APP_ID;
+
+extern void onpush(MQTT::MessageData& md);
+
+RawSerial pc(USBTX,USBRX);
+
+#include "LM75B.h"              //  温度センサー機能追加
+LM75B sensor(D14,D15);
+DigitalOut led1(LED1);
+
 const char *sec2str(nsapi_security_t sec)
 {
     switch (sec) {
@@ -74,33 +94,10 @@
     delete[] ap;
 }
 
-void http_demo(NetworkInterface *net)
-{
-    TCPSocket socket;
-
-    printf("Sending HTTP request to www.arm.com...\r\n");
-
-    // Open a socket on the network interface, and create a TCP connection to www.arm.com
-    socket.open(net);
-    socket.connect("www.arm.com", 80);
-
-    // Send a simple http request
-    char sbuffer[] = "GET / HTTP/1.1\r\nHost: www.arm.com\r\n\r\n";
-    int scount = socket.send(sbuffer, sizeof sbuffer);
-    printf("sent %d [%.*s]\r\n", scount, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);
-
-    // Recieve a simple http response and print out the response line
-    char rbuffer[64];
-    int rcount = socket.recv(rbuffer, sizeof rbuffer);
-    printf("recv %d [%.*s]\r\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);
-
-    // Close the socket to return its memory and bring down the network interface
-    socket.close();
-}
-
 int main()
 {
-    printf("WiFi example\r\n\r\n");
+    pc.baud(MBED_SERIAL_UART_SPEED);
+    pc.printf("Milkcocoa mbed os ver demo\n\r\n\r\n\r");
 
     scan_demo(&wifi);
 
@@ -117,10 +114,34 @@
     printf("Netmask: %s\r\n", wifi.get_netmask());
     printf("Gateway: %s\r\n", wifi.get_gateway());
     printf("RSSI: %d\r\n\r\n", wifi.get_rssi());
+    
+    Milkcocoa* milkcocoa = new Milkcocoa(&wifi, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID);
+    
+    milkcocoa->connect();
+    
+    printf("%d\n\r",milkcocoa->on(MILKCOCOA_DATASTORE, "push", onpush));
+    
+    milkcocoa->setLoopCycle(5000);
+    milkcocoa->start();
 
-    http_demo(&wifi);
+    for (int i=0 ; i<1000 ; i++) {
+        float temperature = sensor.read();  // 温度情報取得
+        DataElement elem = DataElement();
+        elem.setValue("temp", temperature);
+        milkcocoa->push(MILKCOCOA_DATASTORE, elem);
+        Thread::wait(60000);    // 60秒に一回1000個アップする。
+    }
 
     wifi.disconnect();
 
     printf("\r\nDone\r\n");
 }
+
+void onpush(MQTT::MessageData& md)
+{
+    MQTT::Message &message = md.message;
+    DataElement de = DataElement((char*)message.payload);
+    pc.printf("onpush\n\r");
+    pc.printf("%d\n\r",de.getInt("temp"));
+}
+