smd.iotkit2.ch / Mbed 2 deprecated HTTP_POST_ThinkSpeak

Dependencies:   EthernetInterface TMP175 mbed-rtos mbed

Fork of 2-07-04-Uebung by smd.iotkit2.ch

Committer:
stefan1691
Date:
Mon Jun 08 13:40:14 2015 +0000
Revision:
8:2ecceb32e68b
Parent:
7:4972e81b4b17
Child:
11:4822e060bf3d
7.4 Sensordaten schreiben via HTTP POST

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stefan1691 8:2ecceb32e68b 1 /** 7.4 Sensordaten schreiben via HTTP POST
stefan1691 5:13c63366d788 2 */
WiredHome 0:fb5060c39dd1 3 #include "mbed.h"
WiredHome 0:fb5060c39dd1 4 #include "HTTPClient.h"
marcel1691 1:2e29a33cd918 5 #include "HTTPText.h"
WiredHome 0:fb5060c39dd1 6 #include "EthernetInterface.h"
stefan1691 8:2ecceb32e68b 7 #include "TMP175.h"
WiredHome 0:fb5060c39dd1 8
WiredHome 0:fb5060c39dd1 9 EthernetInterface eth;
stefan1691 3:aad64a4b6ff6 10 // HTTPClient Hilfsklasse
WiredHome 0:fb5060c39dd1 11 HTTPClient http;
stefan1691 3:aad64a4b6ff6 12 // I/O Buffer
stefan1691 5:13c63366d788 13 char str[512];
WiredHome 0:fb5060c39dd1 14
stefan1691 8:2ecceb32e68b 15 // Sensoren
stefan1691 8:2ecceb32e68b 16 AnalogIn poti ( A0 );
stefan1691 8:2ecceb32e68b 17 AnalogIn light ( A1 );
stefan1691 8:2ecceb32e68b 18 AnalogIn hall ( A2 );
stefan1691 8:2ecceb32e68b 19 TMP175 temp ( D14, D15 );
stefan1691 8:2ecceb32e68b 20 // Separater Buffer um die Sensorwerte als String abzustellen
stefan1691 8:2ecceb32e68b 21 char fa[4] [12];
stefan1691 8:2ecceb32e68b 22
WiredHome 0:fb5060c39dd1 23 DigitalOut myled(LED1);
WiredHome 0:fb5060c39dd1 24
stefan1691 8:2ecceb32e68b 25 /** Float nach String wandeln
stefan1691 8:2ecceb32e68b 26 * @param pos Position in I/O Buffer
stefan1691 8:2ecceb32e68b 27 * @param value Wert
stefan1691 8:2ecceb32e68b 28 * @return Pointer auf I/O Buffer
stefan1691 8:2ecceb32e68b 29 */
stefan1691 8:2ecceb32e68b 30 char* ftoa( int pos, float value )
stefan1691 8:2ecceb32e68b 31 {
stefan1691 8:2ecceb32e68b 32 sprintf( fa[pos], "%4.4f", value );
stefan1691 8:2ecceb32e68b 33 return ( fa[pos] );
stefan1691 8:2ecceb32e68b 34 }
stefan1691 8:2ecceb32e68b 35
marcel1691 1:2e29a33cd918 36 int main()
marcel1691 1:2e29a33cd918 37 {
stefan1691 5:13c63366d788 38 printf("HTTP Client - POST\n");
WiredHome 0:fb5060c39dd1 39 eth.init();
WiredHome 0:fb5060c39dd1 40 eth.connect();
stefan1691 8:2ecceb32e68b 41
stefan1691 8:2ecceb32e68b 42 temp.vSetConfigurationTMP175( SHUTDOWN_MODE_OFF | COMPARATOR_MODE | POLARITY_0 |FAULT_QUEUE_6 | RESOLUTION_12, 0x48 );
stefan1691 8:2ecceb32e68b 43 temp.vSetTemperatureLowTMP175( 0.0 );
stefan1691 8:2ecceb32e68b 44 temp.vSetTemperatureHighTMP175( 60.0 );
WiredHome 0:fb5060c39dd1 45
marcel1691 1:2e29a33cd918 46 while(1)
marcel1691 1:2e29a33cd918 47 {
WiredHome 0:fb5060c39dd1 48 myled = 1;
stefan1691 5:13c63366d788 49
stefan1691 5:13c63366d788 50 // Hilfsklasse um die Response vom Server zu formatieren
stefan1691 5:13c63366d788 51 HTTPText inText(str, 512);
stefan1691 5:13c63366d788 52
stefan1691 5:13c63366d788 53 // MAP (Argument=Wert)
stefan1691 5:13c63366d788 54 HTTPMap map;
stefan1691 8:2ecceb32e68b 55 map.put( "poti", ftoa( 1, poti.read() ) );
stefan1691 8:2ecceb32e68b 56 map.put( "light", ftoa( 2, light.read() ) );
stefan1691 8:2ecceb32e68b 57 map.put( "hall", ftoa( 3, hall.read() ) );
stefan1691 8:2ecceb32e68b 58 map.put( "temp", ftoa( 4, temp.fReadTemperatureTMP175() ) );
stefan1691 5:13c63366d788 59
stefan1691 6:48a4698a3416 60 // lokale Variante mit CGI-Script auf Raspberry Pi. Wenn nicht Funktioniert: raspi2x durch IP-Adresse ersetzen
stefan1691 8:2ecceb32e68b 61 int ret = http.post("http://raspi2x/cgi-bin/rest", map, &inText);
stefan1691 5:13c63366d788 62 if ( ! ret )
marcel1691 1:2e29a33cd918 63 {
stefan1691 5:13c63366d788 64 printf("Executed POST successfully - read %d characters\n", strlen(str));
stefan1691 5:13c63366d788 65 printf("Result: %s\n", str);
stefan1691 5:13c63366d788 66 }
stefan1691 5:13c63366d788 67 else
stefan1691 5:13c63366d788 68 {
stefan1691 5:13c63366d788 69 printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode());
WiredHome 0:fb5060c39dd1 70 }
marcel1691 1:2e29a33cd918 71
WiredHome 0:fb5060c39dd1 72 myled = 0;
marcel1691 1:2e29a33cd918 73
WiredHome 0:fb5060c39dd1 74 wait(10);
WiredHome 0:fb5060c39dd1 75 }
stefan1691 5:13c63366d788 76 //eth.disconnect();
stefan1691 5:13c63366d788 77 }