【发布】arduino library leweiclient updated

2013-04-07 09:31

代码由@grissiom 提供

乐联网的相关Arduino代码托管在Github上,地址https://github.com/lewei50/leweiclient, 打开链接,点击Zip下载按钮,将名称为master.zip的文件下载到本地。

之前发布的传感器框架结构只支持DHT11,PPD42NS,bh1721,AD模式的传感器,很多用其他传感器的用户想加入自己的传感器需要修改库,很不方便。

这个版本恢复了之前提供的append方法,只要知道设备“标识”和该设备的值,就可以把数据推到网上了。

  lwc->append("INT", 112);
  lwc->append("DBL", -11.2238);

 

XML/HTML代码
  1. #include <LeweiClient.h>  
  2. #include <SPI.h>  
  3. #include <Ethernet.h>  
  4. #include <Wire.h> //BH1750 IIC Mode   
  5.   
  6. #define LW_USERKEY "a1b1f96axxxxx5f41d525111"   
  7. #define LW_GATEWAY "01"   
  8.   
  9. #define MY_NAME    "UNO1"   
  10. #define MY_DESC    "UNO test case"   
  11. char my_addr[50]="http://192.168.1.221/api";   
  12. int port =8889;   
  13. //delay between updates   
  14. LeWeiClient *lwc;   
  15.   
  16. LeWeiAnalogSensor the_UVSensor("UV", "UV_sensor", "UVsensor", 0);   
  17.   
  18. void setup() {   
  19.   String stringOne;   
  20.   Serial.begin(9600);   
  21.   
  22.   uint8_t mac[] = {   
  23.     0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED  };   
  24. #if 0   
  25.   IPAddress  myip(192, 168, 1, 233);   
  26.   IPAddress  dnsip(211, 98, 2, 4);   
  27.   IPAddress  gateway(192, 168, 1, 1);   
  28.   Ethernet.begin(mac, myip, dnsip, gateway);   
  29. #else   
  30.   Serial.println("DHCP in process !");    
  31.   if (Ethernet.begin(mac) == 0)   
  32.   {   
  33.     Serial.print(F("Failed to configure Ethernet using DHCP "));   
  34.   }   
  35.   else   
  36.   {   
  37.     Serial.print("My IP address: ");   
  38.     for (byte thisByte = 0; thisByte < 4; thisByte++) {   
  39.       // print the value of each byte of the IP address:   
  40.       Serial.print(Ethernet.localIP()[thisByte], DEC);   
  41.       Serial.print(".");    
  42.     }   
  43.     Serial.println();   
  44.     Serial.println(F("Ethernet configuration OK "));   
  45.     stringOne="http://";   
  46.     stringOne+=Ethernet.localIP()[0];   
  47.     stringOne+=".";   
  48.     stringOne+=Ethernet.localIP()[1];   
  49.     stringOne+=".";   
  50.     stringOne+=Ethernet.localIP()[2];   
  51.     stringOne+=".";   
  52.     stringOne+=Ethernet.localIP()[3];   
  53.     stringOne+=":";   
  54.     stringOne+=port;   
  55.     stringOne+="/api";       
  56.     Serial.println(stringOne);   
  57.     stringOne.toCharArray(my_addr, 50);    
  58.   }   
  59. #endif   
  60.   
  61.   // hope no exception here   
  62.   lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr, (LeWeiClient::flag)((LeWeiClient::isControlled)|(LeWeiClient::internetAvailable)));   
  63.   // lwc = new LeWeiClient(LW_USERKEY, LW_GATEWAY,MY_NAME, MY_DESC, my_addr, (LeWeiClient::flag)(LeWeiClient::isControlled));   
  64.   
  65.   lwc->registerSensor(the_UVSensor);   
  66.   
  67.   Serial.print(lwc->nrSensors());   
  68.   Serial.println(F(" sensors registered."));   
  69.   Serial.print(lwc->nrActuators());   
  70.   Serial.println(F(" actuators registered."));   
  71.   
  72.   lwc->initDevices();   
  73.   
  74.   Serial.println(F("upload gateway info to server"));   
  75.   int retry = 10;   
  76.   while (lwc->uploadInfo() < 0 && --retry)   
  77.   {   
  78.     delay(500);   
  79.   
  80.     Serial.print("retry: ");   
  81.     Serial.println(retry);    
  82.   }   
  83.   if (!retry)   
  84.     Serial.println(F("uploadInfo failed in 10 times"));   
  85.   else   
  86.     Serial.println(F("uploadInfo done"));   
  87. }   
  88.   
  89. void loop()   
  90. {   
  91.   static unsigned int loop_count;   
  92.   if (lwc)   
  93.   {   
  94.     loop_count++;   
  95.   
  96.     Serial.print(F("*** loop nr: "));   
  97.     Serial.println(loop_count);   
  98.     lwc->append("INT", 112);   
  99.     lwc->append("DBL", -11.2238);   
  100.     lwc->scanSensors();   
  101.   }   
  102.   delay(500);   
  103. }