IEEE1888 GateWay sample that handles only 1 sensor. This is older repository, see IEEE1888_MULTI_SENSOR_GW. The newer version can handle multiple sensors.
Dependencies: EthernetInterface FiapV2 HTTPClientForSOAP NTPClient mbed-rtos mbed spxml
Fork of temp_FIAP by
This program sends only *1* data to FIAP storage with IEEE1888 format.
The data represents temperature degree Celsius taken from LM35 at P20. The LM35 is temperature sensor made by National Semiconductor.
Note 1: Newer repository is available. IEEE1888 (FIAP) multi sensor gateway can handle multiple sensors.
NOTE 2: You should define 2 constants at least before using this program. The constants are FIAP_STORAGE and POINT_ID, contained in main.h file. And You can also define other constants in main.h .
from here, in Japanese. これは、IEEE1888 形式でデータを *1種類だけ* 送信するプログラムです。 このプログラムは、P20 に接続した温度センサー LM35 の値を送信します。
注意: 下記のリポジトリーのプログラムは、複数のセンサーのデータをまとめて送信したい場合を考慮した、新しい Version です。 IEEE1888 (FIAP) multi sensor gateway
また、使用前に、main.h ファイルの定数を定義する必要があります。 (少なくとも FIAP_STORAGE および POINT_ID の2つ )
Diff: main.cpp
- Revision:
- 8:e482433c9593
- Parent:
- 6:cccef292257b
- Child:
- 9:0d34968a5de1
diff -r 67c3d630530a -r e482433c9593 main.cpp --- a/main.cpp Tue Feb 12 16:39:04 2013 +0000 +++ b/main.cpp Wed Feb 13 04:56:10 2013 +0000 @@ -11,63 +11,85 @@ AnalogIn ain(p15);//censor DigitalOut led1(LED1);//NTP error -DigitalOut led2(LED2);//tick() running +DigitalOut led2(LED2);//sendFIAP +DigitalOut led3(LED3);//LAN speed (1 = error) +DigitalOut led4(LED4);//LAN link (1 = error) -char timezone[] = "+09:00"; // JST +DigitalIn lnk(P1_25);//LAN link +DigitalIn spd(P1_26);//LAN speed +//DigitalOut speed(p29);//LAN speed (1 = OK) +//DigitalOut link(p30); //LAN link (1 = OK) + char atemp[6]; -char TimeBuffer[9]; +int exitTimer; +int this_year; +int this_month; float ftemp; struct fiap_element element[]= { - {DataIdentify,atemp,NULL,NULL,NULL,NULL,NULL,NULL,timezone}, +//!! {DATA_IDENTIFY,atemp,NULL,NULL,NULL,NULL,NULL,NULL,TIME_ZONE_CHAR}, + {DATA_IDENTIFY,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TIME_ZONE_CHAR}, }; struct tm t; -FIAP fiap(FIAPStorage); +FIAP fiap(FIAP_STORAGE); -void tick(void ) +void sendFIAP(void ) { - led2=1; - ftemp=ain*330.0; //in case of LM35D + ftemp=ain*330.0; //(3.3 * 100.0) + sprintf(atemp,"%4.1f",ftemp); ctTime = time(NULL); - strftime(TimeBuffer,9,"%X",localtime(&ctTime)); -// Save to FIAPStorage - sprintf(atemp,"%4.1f",ftemp); t = *localtime(&ctTime); element[0].value=atemp; - element[0].year=t.tm_year+1900; - element[0].month=t.tm_mon+1; + element[0].year=this_year; + element[0].month=this_month; element[0].day=t.tm_mday; element[0].hour=t.tm_hour; element[0].minute=t.tm_min; element[0].second=t.tm_sec; fiap.post(element,1); - led2=0; } int main() { - led1 = led2 = 0; + led1 = led2 = led3 = led4 = 0; + //speed = link = 0; //Ethernet Initialize eth.init(); //Use DHCP eth.connect(); printf("%s\r\n", eth.getIPAddress()); printf("Trying to update time...\r\n"); - if (ntp.setTime(NTPServer) == 0) { - printf("Set time successfully\r\n"); - time_t ctTime; - ctTime = time(NULL); - ctTime+=32400; - set_time(ctTime); - ctTime = time(NULL); - printf("Time is set to (JST): %s\r\n", ctime(&ctTime)); - } else { - printf("Error"); + if (ntp.setTime(NTP_SERVER) != 0) { + printf("NTP Error\r\n"); led1 = 1; return -1; } + time_t ctTime; + ctTime = time(NULL); + ctTime+= TIME_ZONE_SECONDS; + set_time(ctTime); + ctTime = time(NULL); + printf("Time is set to (JST): %s\r\n", ctime(&ctTime)); + t = *localtime(&ctTime); + this_year=t.tm_year+1900; + this_month=t.tm_mon+1; + fiap.debug_mode=DEBUG_MODE; - while(true) { - tick(); - wait(5); + exitTimer = WAIT_LAN_ERROR; + while(exitTimer > 0) { + led3 = spd; + led4 = lnk; + if (led4 == 1 || led3 == 1) { + exitTimer--; + wait(2); + } else { + led2 = 1; + exitTimer = WAIT_LAN_ERROR; + sendFIAP(); + led2 = 0; + wait(5); + } } + eth.disconnect(); + printf("Disconnected\r\n"); + return -1; } \ No newline at end of file