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 Yasushi TAUCHI

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つ )

/media/uploads/strysd/fiap_node.jpg

Files at this revision

API Documentation at this revision

Comitter:
strysd
Date:
Wed Feb 13 04:56:10 2013 +0000
Parent:
7:67c3d630530a
Child:
9:0d34968a5de1
Commit message:
add LEDs for LAN control

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
main.h Show annotated file Show diff for this revision Revisions of this file
--- 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
--- a/main.h	Tue Feb 12 16:39:04 2013 +0000
+++ b/main.h	Wed Feb 13 04:56:10 2013 +0000
@@ -1,7 +1,10 @@
-#define NTPServer "ntp.jst.mfeed.ad.jp"
+#define NTP_SERVER   "ntp.jst.mfeed.ad.jp"
+#define TIME_ZONE_CHAR    "+09:00"
+#define TIME_ZONE_SECONDS 32400
 //define these values before use!!
-//#define FIAPStorage "http://your.host.name/axis2/services/FIAPStorage"
-//#define DataIdentify "http://your.identify.url/path"
+//#define FIAP_STORAGE  "http://your.host.name/axis2/services/FIAPStorage"
+//#define DATA_IDENTIFY "http://your.identify.url/path"
 //Example:
 //#define FIAPStorage "http://ec2-999-999-999-999.ap-northeast-1.compute.amazonaws.com/axis2/services/FIAPStorage"
-#define DEBUG_MODE false
\ No newline at end of file
+#define DEBUG_MODE false
+#define WAIT_LAN_ERROR 10
\ No newline at end of file