发 帖  
原厂入驻New
发烧友10周年庆典,全网超值优惠来袭!千元现金券,下单抽奖赶紧参与》》
[话题] 【NanoPi M1 Plus试用体验】3.CPU温度上云+读串口
2017-6-3 22:44:04  2445 中国移动 物联网
分享
本次测试将CPU温度上传至OneNET平台。OneNET是由中国移动打造的PaaS物联网开放平台。


1.1http协议接入OneNET平台可以参考官方手册http://open.iot.10086.cn/doc,在此不再赘述。
o1.JPG


o2.JPG
1.2记录下你的设备ID和API。


1.3然后复制进代码相应位置
  1. <font face="微软雅黑" size="4">#include <stdlib.h>
  2. #include <string.h>
  3. #include <unistd.h>
  4. #include <arpa/inet.h>
  5. #include <sys/socket.h>
  6. #include <sys/types.h>
  7. #include <sys/stat.h>
  8. #include <fcntl.h>

  9. #define  TEMP_PATH   "/sys/class/thermal/thermal_zone0/temp"
  10. #define  SIZE   32
  11. #define  APi   "xxxAPIXXX="
  12. #define  Id           "XXIDXX"  
  13. //IP:183.230.40.33 端口号:80
  14. #define Ip  "183.230.40.33"
  15. #define Port  "80"

  16. int read_temp(void)
  17. {
  18.         FILE *fp;
  19.         int  temp;
  20.         char buf[SIZE];
  21.         
  22.         fp=fopen(TEMP_PATH,"r");
  23.         IF(fp==NULL)
  24.         {
  25.                 printf("open error\n");
  26.                 return -1;
  27.         }
  28.         
  29.         if(fread(buf,1,SIZE,fp)>=0)
  30.         {
  31.                 puts("read successful");
  32.                
  33.                 temp=atoi(buf);
  34.                 printf("temp:%d\n",temp);
  35.         }
  36.         else
  37.         {
  38.                 printf("read error\n");
  39.                 return -1;
  40.         }
  41.         
  42.         
  43.         if(fclose(fp)==-1)
  44.         {
  45.                 printf("close error\n");
  46.                 return -1;
  47.         }
  48.         return temp;
  49.         
  50. }



  51. uint32_t HTTP_PostPkt(char *pkt, char *key, char *devid, char *dsid, char *val)
  52. {
  53.     char dataBuf[100] = {0};
  54.     char lenBuf[10] = {0};
  55.     *pkt = 0;

  56.     sprintf(dataBuf, ",;%s,%s", dsid, val);     //采用分割字符串格式:type = 5
  57.     sprintf(lenBuf, "%d", strlen(dataBuf));

  58.     strcat(pkt, "POST /devices/");
  59.     strcat(pkt, devid);
  60.     strcat(pkt, "/datapoints?type=5 HTTP/1.1\r\n");

  61.     strcat(pkt, "api-key:");
  62.     strcat(pkt, key);
  63.     strcat(pkt, "\r\n");

  64.     strcat(pkt, "Host:api.heclouds.com\r\n");

  65.     strcat(pkt, "Content-Length:");
  66.     strcat(pkt, lenBuf);
  67.     strcat(pkt, "\r\n\r\n");

  68.     strcat(pkt, dataBuf);

  69.     return strlen(pkt);
  70. }


  71. int main(void)
  72. {
  73.         int socke;
  74.         char tempStr[5];
  75.         int temp;
  76.         char HTTP_Buf[400]={0};
  77.         int len;
  78.         
  79.         struct sockaddr_in serv_addr;
  80.         
  81.         socke=socket(PF_INET,SOCK_STREAM,0);
  82.         if(socke == -1)
  83.         {
  84.                 printf("socket error!!");
  85.                 exit(1);
  86.         }
  87.         
  88.         memset(&serv_addr, 0, sizeof(serv_addr));
  89.         serv_addr.sin_family = AF_INET;
  90.         serv_addr.sin_addr.s_addr=inet_addr(Ip);
  91.         serv_addr.sin_port=htons(atoi(Port));
  92.         
  93.         if(connect(socke,(struct sockaddr*)&serv_addr,sizeof(serv_addr))== -1)
  94.         {
  95.                 printf("error connect!\n");
  96.                 exit(1);
  97.         }
  98.         
  99.         temp=read_temp();
  100.         sprintf(tempStr,"%d",temp);
  101.         len=HTTP_PostPkt(HTTP_Buf,APi,Id,"temp",tempStr);        
  102.         write(socke,HTTP_Buf,len);  //write to https
  103.         HTTP_Buf[len] = 0;
  104.         printf("Message from server: %s", HTTP_Buf);
  105.         close(socke);
  106.         
  107.         return 0;
  108.         
  109. }</font>
复制代码
1.4接下来就是编译
gcc ctemp.c -o ctemp


1.5返回onenet平台就可以看到数据了
o3.JPG
2接下来是m1 plus 读串口测试。
本次用到的是UART1,对应8 10脚。
33.JPG
pi的TX--RX
pi的RX--TX
44.JPG



0

uart_tft.rar

9.3 KB, 下载次数: 3

2017-6-3 22:44:04   评论 分享淘帖
1 个讨论

只有小组成员才能发言,加入小组>>

238个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /10 下一条

快速回复 返回顶部 返回列表