Junichi Katsu
/
MilkcocoaSampleESP8266_Temp
ワークショップ用のプログラム
main.cpp@0:d0b3a5d1ba28, 2016-09-22 (annotated)
- Committer:
- jksoft
- Date:
- Thu Sep 22 00:49:42 2016 +0000
- Revision:
- 0:d0b3a5d1ba28
????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jksoft | 0:d0b3a5d1ba28 | 1 | #include "mbed.h" |
jksoft | 0:d0b3a5d1ba28 | 2 | #include "MQTTESP8266.h" |
jksoft | 0:d0b3a5d1ba28 | 3 | #include "MQTTClient.h" |
jksoft | 0:d0b3a5d1ba28 | 4 | #include "SoftSerialSendOnry.h" |
jksoft | 0:d0b3a5d1ba28 | 5 | #include "Milkcocoa.h" |
jksoft | 0:d0b3a5d1ba28 | 6 | #include "MClient.h" |
jksoft | 0:d0b3a5d1ba28 | 7 | |
jksoft | 0:d0b3a5d1ba28 | 8 | // The default setting is for the Simple IoT Board(mbed LPC1114FN28) |
jksoft | 0:d0b3a5d1ba28 | 9 | // Please change to fit the platform |
jksoft | 0:d0b3a5d1ba28 | 10 | SoftSerialSendOnry pc(dp10); // tx |
jksoft | 0:d0b3a5d1ba28 | 11 | DigitalOut myled(dp18); |
jksoft | 0:d0b3a5d1ba28 | 12 | AnalogIn thermistor(dp13); /* Temperature sensor connected to Analog Grove connector */ |
jksoft | 0:d0b3a5d1ba28 | 13 | |
jksoft | 0:d0b3a5d1ba28 | 14 | /************************* WiFi Access Point *********************************/ |
jksoft | 0:d0b3a5d1ba28 | 15 | |
jksoft | 0:d0b3a5d1ba28 | 16 | #define WLAN_SSID "...SSID..." |
jksoft | 0:d0b3a5d1ba28 | 17 | #define WLAN_PASS "...PASS..." |
jksoft | 0:d0b3a5d1ba28 | 18 | |
jksoft | 0:d0b3a5d1ba28 | 19 | /************************* Your Milkcocoa Setup *********************************/ |
jksoft | 0:d0b3a5d1ba28 | 20 | |
jksoft | 0:d0b3a5d1ba28 | 21 | #define MILKCOCOA_APP_ID "...YOUR_MILKCOCOA_APP_ID..." |
jksoft | 0:d0b3a5d1ba28 | 22 | #define MILKCOCOA_DATASTORE "esp8266" |
jksoft | 0:d0b3a5d1ba28 | 23 | |
jksoft | 0:d0b3a5d1ba28 | 24 | /************* Milkcocoa Setup (you don't need to change this!) ******************/ |
jksoft | 0:d0b3a5d1ba28 | 25 | |
jksoft | 0:d0b3a5d1ba28 | 26 | #define MILKCOCOA_SERVERPORT 1883 |
jksoft | 0:d0b3a5d1ba28 | 27 | |
jksoft | 0:d0b3a5d1ba28 | 28 | /************ Global State (you don't need to change this!) ******************/ |
jksoft | 0:d0b3a5d1ba28 | 29 | |
jksoft | 0:d0b3a5d1ba28 | 30 | // Create an ESP8266 WiFiClient class to connect to the MQTT server. |
jksoft | 0:d0b3a5d1ba28 | 31 | // The default setting is for the Simple IoT Board(mbed LPC1114FN28) |
jksoft | 0:d0b3a5d1ba28 | 32 | // Please change to fit the platform |
jksoft | 0:d0b3a5d1ba28 | 33 | MQTTESP8266 ipstack(dp16,dp15,dp26,WLAN_SSID,WLAN_PASS); // TX,RX,Reset,SSID,Password,Baud |
jksoft | 0:d0b3a5d1ba28 | 34 | MClient client(&ipstack); |
jksoft | 0:d0b3a5d1ba28 | 35 | |
jksoft | 0:d0b3a5d1ba28 | 36 | const char MQTT_SERVER[] = MILKCOCOA_APP_ID ".mlkcca.com"; |
jksoft | 0:d0b3a5d1ba28 | 37 | const char MQTT_CLIENTID[] = __TIME__ MILKCOCOA_APP_ID; |
jksoft | 0:d0b3a5d1ba28 | 38 | |
jksoft | 0:d0b3a5d1ba28 | 39 | Milkcocoa milkcocoa = Milkcocoa(&client, MQTT_SERVER, MILKCOCOA_SERVERPORT, MILKCOCOA_APP_ID, MQTT_CLIENTID); |
jksoft | 0:d0b3a5d1ba28 | 40 | |
jksoft | 0:d0b3a5d1ba28 | 41 | extern void onpush(MQTT::MessageData& md); |
jksoft | 0:d0b3a5d1ba28 | 42 | |
jksoft | 0:d0b3a5d1ba28 | 43 | float getTemperature() |
jksoft | 0:d0b3a5d1ba28 | 44 | { |
jksoft | 0:d0b3a5d1ba28 | 45 | unsigned int a, beta = 3975; |
jksoft | 0:d0b3a5d1ba28 | 46 | float temperature, resistance; |
jksoft | 0:d0b3a5d1ba28 | 47 | |
jksoft | 0:d0b3a5d1ba28 | 48 | a = thermistor.read_u16(); /* Read analog value */ |
jksoft | 0:d0b3a5d1ba28 | 49 | |
jksoft | 0:d0b3a5d1ba28 | 50 | /* Calculate the resistance of the thermistor from analog votage read. */ |
jksoft | 0:d0b3a5d1ba28 | 51 | resistance= (float) 10000.0 * ((65536.0 / a) - 1.0); |
jksoft | 0:d0b3a5d1ba28 | 52 | |
jksoft | 0:d0b3a5d1ba28 | 53 | /* Convert the resistance to temperature using Steinhart's Hart equation */ |
jksoft | 0:d0b3a5d1ba28 | 54 | temperature=(1/((log(resistance/10000.0)/beta) + (1.0/298.15)))-273.15; |
jksoft | 0:d0b3a5d1ba28 | 55 | |
jksoft | 0:d0b3a5d1ba28 | 56 | return(temperature); |
jksoft | 0:d0b3a5d1ba28 | 57 | } |
jksoft | 0:d0b3a5d1ba28 | 58 | |
jksoft | 0:d0b3a5d1ba28 | 59 | |
jksoft | 0:d0b3a5d1ba28 | 60 | int main() { |
jksoft | 0:d0b3a5d1ba28 | 61 | // void setup() { |
jksoft | 0:d0b3a5d1ba28 | 62 | pc.baud(9600); |
jksoft | 0:d0b3a5d1ba28 | 63 | pc.printf("Milkcocoa mbed ver demo\n\r\n\r\n\r"); |
jksoft | 0:d0b3a5d1ba28 | 64 | pc.printf("Connecting to %s\n\r",WLAN_SSID); |
jksoft | 0:d0b3a5d1ba28 | 65 | milkcocoa.connect(); |
jksoft | 0:d0b3a5d1ba28 | 66 | pc.printf("\n\rWiFi connected\n\r"); |
jksoft | 0:d0b3a5d1ba28 | 67 | |
jksoft | 0:d0b3a5d1ba28 | 68 | pc.printf("%d\n\r",milkcocoa.on(MILKCOCOA_DATASTORE, "push", onpush)); |
jksoft | 0:d0b3a5d1ba28 | 69 | |
jksoft | 0:d0b3a5d1ba28 | 70 | // } |
jksoft | 0:d0b3a5d1ba28 | 71 | while(1) { |
jksoft | 0:d0b3a5d1ba28 | 72 | // void loop() { |
jksoft | 0:d0b3a5d1ba28 | 73 | milkcocoa.loop(); |
jksoft | 0:d0b3a5d1ba28 | 74 | |
jksoft | 0:d0b3a5d1ba28 | 75 | DataElement elem = DataElement(); |
jksoft | 0:d0b3a5d1ba28 | 76 | elem.setValue("Temperature", getTemperature()); |
jksoft | 0:d0b3a5d1ba28 | 77 | |
jksoft | 0:d0b3a5d1ba28 | 78 | milkcocoa.push(MILKCOCOA_DATASTORE, elem); |
jksoft | 0:d0b3a5d1ba28 | 79 | wait(7.0); |
jksoft | 0:d0b3a5d1ba28 | 80 | } |
jksoft | 0:d0b3a5d1ba28 | 81 | } |
jksoft | 0:d0b3a5d1ba28 | 82 | |
jksoft | 0:d0b3a5d1ba28 | 83 | void onpush(MQTT::MessageData& md) |
jksoft | 0:d0b3a5d1ba28 | 84 | { |
jksoft | 0:d0b3a5d1ba28 | 85 | MQTT::Message &message = md.message; |
jksoft | 0:d0b3a5d1ba28 | 86 | DataElement de = DataElement((char*)message.payload); |
jksoft | 0:d0b3a5d1ba28 | 87 | pc.printf("onpush\n\r"); |
jksoft | 0:d0b3a5d1ba28 | 88 | pc.printf("%d\n\r",de.getInt("v")); |
jksoft | 0:d0b3a5d1ba28 | 89 | } |