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つ )
main.cpp
- Committer:
- strysd
- Date:
- 2013-02-14
- Revision:
- 11:6c8e791ea45d
- Parent:
- 10:51ef659414a9
- Child:
- 12:96ad8d612f6e
File content as of revision 11:6c8e791ea45d:
#include "main.h" #include "mbed.h" #include "EthernetInterface.h" #include "NTPClient.h" #include "fiap.h" EthernetInterface eth; NTPClient ntp; time_t ctTime; AnalogIn ain(p20);//temperature sensor DigitalOut led1(LED1);//NTP error DigitalOut led2(LED2);//sendFIAP DigitalOut led3(LED3);//LAN speed (1 = error) DigitalOut led4(LED4);//LAN link (1 = error) DigitalIn lnk(P1_25);//LAN link DigitalIn spd(P1_26);//LAN speed DigitalOut speed(p29);//LAN speed for RJ45 (1 = OK) DigitalOut link(p30); //LAN link for RJ45 (1 = OK) char atemp[6]; int exitTimer; int this_year; int this_month; float ftemp; struct fiap_element element[]= { {DATA_IDENTIFY,NULL,NULL,NULL,NULL,NULL,NULL,NULL,TIME_ZONE_CHAR}, }; struct tm t; FIAP fiap(FIAP_STORAGE); //if you set LEDs for LAN indicator in real time. /* Ticker flipper; void myflip() { led3 = spd; led4 = lnk; speed = !spd; link = !lnk; } */ void sendFIAP(void ) { ftemp=ain*330.0; //(3.3v * 100.0) ctTime = time(NULL); t = *localtime(&ctTime); sprintf(atemp,"%4.1f",ftemp); if (DEBUG_MODE == false){ //instead of displaying FIAP protocol printf("Time: %s , Temp: %s\n\r", ctime(&ctTime), atemp); } element[0].value=atemp; 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); } int main() { led1 = led2 = led3 = led4 = speed = link = 0; //if you set LEDs for LAN indicator in real time. //interval : 0.1 = 100ms //flipper.attach(&myflip, 0.1); eth.init(); //Use DHCP eth.connect(); printf("IP: %s\r\n", eth.getIPAddress()); led1 = 1; if (ntp.setTime(NTP_SERVER) != 0) { printf("NTP Error\r\n"); return -1; } led1 = 0; time_t ctTime; ctTime = time(NULL); ctTime+= TIME_ZONE_SECONDS; set_time(ctTime); ctTime = time(NULL); printf("Time: %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; exitTimer = WAIT_LAN_ERROR_TIMES; while(exitTimer > 0) { led3 = spd; led4 = lnk; if (led4 == 1 || led3 == 1) { exitTimer--; wait(WAIT_LAN_ERROR_SECONDS); } else { led2 = 1; exitTimer = WAIT_LAN_ERROR_TIMES; sendFIAP(); led2 = 0; wait(WAIT_NEXT_SEND); } } eth.disconnect(); printf("Disconnected\r\n"); led1 = led2 = led3 = led4 = speed = link = 0; return -1; }