![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
pomera + FlashAir + ODIN-W2 + AS289R2 demo
Fork of mbed-os-example-wifi-ThingSpeak by
Diff: main.cpp
- Revision:
- 8:72d49a084297
- Parent:
- 1:aea78e21a7da
- Child:
- 11:bad115ba016c
--- a/main.cpp Thu Dec 15 16:30:04 2016 +0000 +++ b/main.cpp Thu Dec 22 10:14:52 2016 +0000 @@ -1,5 +1,6 @@ -/* WiFi Example +/* WiFi Example with ThingSpeak * Copyright (c) 2016 ARM Limited + * Fuji Electronics Hiroaki Okoshi 2016.12.22 Modify. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +29,11 @@ ESP8266Interface wifi(D1, D0); #endif +#include "LM75B.h" // 温度センサー +LM75B sensor(D14,D15); + +DigitalOut led1(LED1); + const char *sec2str(nsapi_security_t sec) { switch (sec) { @@ -60,8 +66,7 @@ ap = new WiFiAccessPoint[count]; count = wifi->scan(ap, count); - for (int i = 0; i < count; i++) - { + for (int i = 0; i < count; i++) { printf("Network: %s secured: %s BSSID: %hhX:%hhX:%hhX:%hhx:%hhx:%hhx RSSI: %hhd Ch: %hhd\r\n", ap[i].get_ssid(), sec2str(ap[i].get_security()), ap[i].get_bssid()[0], ap[i].get_bssid()[1], ap[i].get_bssid()[2], ap[i].get_bssid()[3], ap[i].get_bssid()[4], ap[i].get_bssid()[5], ap[i].get_rssi(), ap[i].get_channel()); @@ -71,28 +76,36 @@ delete[] ap; } -void http_demo(NetworkInterface *net) +/* + * ThingSpeak Demo + */ + +void ThingSpeak_demo(NetworkInterface *net) { TCPSocket socket; + socket.open(net); // ソケットオープン - printf("Sending HTTP request to www.arm.com...\r\n"); + socket.connect("api.thingspeak.com", 80); + char urlBuffer[128]; - // 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); + // 温度情報取得 + float temperature = sensor.read(); + + // メッセージ用テキストを生成 + urlBuffer[0]=0; + sprintf(urlBuffer, "GET /update?api_key=%s&field1=%f\r\n\r\n", MBED_CONF_APP_THINGSPEAK_KEY, temperature); - // 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); + // ThingSpeed にメッセージを送信 + int BuffreLen = strlen(urlBuffer); + int scount = socket.send(urlBuffer, BuffreLen+1); + printf ("strlen=%d,urlBuffer=%.*s",BuffreLen,BuffreLen-2,urlBuffer); - // 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); + // for debug // デバグ時に受信内容を確認する。 + // 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(); + socket.close(); //ソケットクローズ } int main() @@ -115,9 +128,17 @@ printf("Gateway: %s\r\n", wifi.get_gateway()); printf("RSSI: %d\r\n\r\n", wifi.get_rssi()); - http_demo(&wifi); + printf("ThingSpeak Demo\r\n"); + + // 60秒に1回メッセージを送信する。 + for (int i=0 ; i<1000 ; i++) { + led1 = !led1; + printf ("%d:",i); + ThingSpeak_demo(&wifi); //ThingSpeed に + Thread::wait(60000); //60秒に一回送信 + } wifi.disconnect(); - printf("\r\nDone\r\n"); + printf ("Done\r\n"); }