内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

yeelink在PX2上的運(yùn)用是怎樣的

今天就跟大家聊聊有關(guān)yeelink在PX2上的運(yùn)用是怎樣的,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)林芝,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18982081108

首先介紹yeelink,這嘛,是一個(gè)開(kāi)放的云服務(wù)器平臺(tái),大家都可以去注冊(cè)一個(gè)自己的賬號(hào),然后就可以使用它的服務(wù)器就是,只要你的設(shè)備能夠聯(lián)網(wǎng),無(wú)論你人在哪里,就能從網(wǎng)絡(luò)上控制你的設(shè)備,而它就提供各種API接口,我們只要熟悉一點(diǎn)tcp的編程我們就可以簡(jiǎn)單使用了,另外值得注意的一點(diǎn)是,yeelink也可以在微信公眾號(hào)上查看,修改我們的設(shè)備,十分簡(jiǎn)便。

官網(wǎng)是這個(gè),http://www.yeelink.net/ ,注冊(cè)完之后我們進(jìn)入用戶中心就可以看到這樣的界面

 yeelink在PX2上的運(yùn)用是怎樣的 

而在賬戶中找到我們的apikey,這個(gè)值在編程時(shí)會(huì)用到,另外在設(shè)備管理中,我們可以創(chuàng)建自己的設(shè)備,選擇在設(shè)備里創(chuàng)建個(gè)自己的傳感器,可選擇數(shù)值型和開(kāi)關(guān)型等,如下,可以在傳感器的這個(gè)位置,看到設(shè)備的ID,和傳感器的ID,這兩個(gè)值也是需要的

yeelink在PX2上的運(yùn)用是怎樣的  

然后我們先測(cè)試下通信是否能成功,可以使用網(wǎng)絡(luò)助手作為一個(gè)服務(wù)器端,作為一個(gè)設(shè)備向yeelink服務(wù)器發(fā)送命令

下面兩個(gè)命令中一個(gè)是發(fā)送數(shù)值到服務(wù)器,一個(gè)是從服務(wù)器獲取數(shù)值,通信成功的效果如下,若通信失敗的話,可以嘗試重新獲取下apikey的值,在賬戶那邊可以重新獲取。(記得將下面的ID值和apikey值改為自己的)

yeelink在PX2上的運(yùn)用是怎樣的    

yeelink在PX2上的運(yùn)用是怎樣的

然后我們就可以寫(xiě)個(gè)tcp通信程序,并且將設(shè)備的開(kāi)啟加入其中了,樓主這里就簡(jiǎn)單用個(gè)GPIO口做個(gè)例子,如果想的話,我們也可以寫(xiě)個(gè)溫度檢測(cè)的程序,然后通過(guò)微信實(shí)時(shí)檢測(cè)家里或某個(gè)地方的溫度。

程序如下

#include<stdlib.h>

#include<stdio.h>

#include<errno.h>

#include<netdb.h>

#include<string.h>

#include<sys/types.h>

#include<netinet/in.h>

#include<sys/socket.h>

#include <fcntl.h>

#include<string.h>

#define portnumber 80//yeelink的服務(wù)器端口

#define DEVICE_NAME     "/dev/rkpx2_GPIO"//gpio的設(shè)備,提供的kernel已包含,里面定義里gpio4的1234四個(gè)引腳,這里用到1引腳

int main(int argc,char *argv[])

{         

    int sockfd//tcp進(jìn)程號(hào)

    int fd//gpio的設(shè)備號(hào)

    int recdata//收到的數(shù)據(jù)長(zhǎng)度

    char *addr//一個(gè)字符型指針,用來(lái)找數(shù)據(jù)value的位置,后面的值即是網(wǎng)站上按鍵的值

    int offset//value的長(zhǎng)度,以便找到按鍵值

    char *yeelink//yeelink服務(wù)器ip地址

    char recv_data[1024]//收到數(shù)據(jù)的內(nèi)存

    char flag//按鍵值

    yeelink="42.96.164.52"

    struct sockaddr_in server_addr

    struct sockaddr_in cilent_addr

    char send_data1[300] = "GET /v1.0/device/××××××××/sensor/×××××××/datapoints HTTP/1.1\r\nHost: api.yeelink.net\r\nContent-Length: 11\r\nU-ApiKey:××××××××××××(這里請(qǐng)用自己的APIKEY代替包括前面的ID)\r\n\r\n{\"value\":0}\r\n">

    struct hostent *host

        fprintf(stderr,"start")

    while(1){//循環(huán)起來(lái),每隔5s讀一次按鍵值

            if((host=gethostbyname(yeelink))==NULL)//獲取服務(wù)器地址

            {fprintf(stderr,"gethostname Error:%s\a\n",strerror(errno))

                exit(1)

            }

        if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)//建立socket

            {

            fprintf(stderr,"socketError:%s\a\n")

                exit(1)}

        bzero(&server_addr ,sizeof(server_addr))//堆棧初始化,全部化為0

        server_addr.sin_family=AF_INET

        server_addr.sin_port=htons(portnumber)

        server_addr.sin_addr=*((struct in_addr *)host->h_addr)

            if(connect(sockfd,(struct sockaddr*)(&server_addr),sizeof( struct sockaddr))==-1)//申請(qǐng)連接

                {

                fprintf(stderr,"connect Error:%s\a\n",strerror(errno))

                exit(1)

            } 

        send(sockfd,send_data1,sizeof(send_data1),0)//將http文件頭發(fā)過(guò)去

         recdata = recv(sockfd, recv_data, sizeof(recv_data), 0)//接受服務(wù)器返回的數(shù)值

        recv_data[recdata]=' '//加上結(jié)束符        

        addr = strstr(recv_data,"\"value\"")//在接受到的數(shù)據(jù)中找到按鍵值的位置,即value,收到數(shù)據(jù)的樣式如下{“value”:key}

        offset=strlen("\"value\":")//判斷value的長(zhǎng)度,

        flag = *(addr + offset) //找到按鍵的值,賦值給flag

        fprintf(stderr,"the value is %c \n")

        close(sockfd)//關(guān)閉socket,記住,這里得提前關(guān)閉,不然會(huì)發(fā)生段錯(cuò)誤。

        fd=open(DEVICE_NAME,O_RDWR)//打開(kāi)GPIO設(shè)備

            if (fd==-1){

        fprintf(stderr,"open devices %s error\n",DEVICE_NAME)

    }

        if(flag=='1'){//判斷flag的值,然后執(zhí)行相應(yīng)的操作

        ioctl(fd,1)

        fprintf(stderr,"the value is %c \n",flag)

        }

        else

        {

        ioctl(fd,0)

        fprintf(stderr,"the value is %c \n",flag)

}      

        fprintf(stderr,"please wait 5s\n")

        sleep(10)//延時(shí)10s,讓實(shí)驗(yàn)效果更明顯

        close(fd)

}

        exit(0)

}

因?yàn)槭怯肎PIO口的,用的是板上的GPIO4_1樓主也不好加圖片,所以效果就不演示了,但是已驗(yàn)證可行,樓主用的使用的kernel和程序文件如下,都放壓縮包里了,有興趣可以下載過(guò)去研究下,壓縮包中的文件一個(gè)是kernel,這個(gè)是支持VGA顯示的,而且包含了樓主的一個(gè)GPIO驅(qū)動(dòng),在程序中會(huì)用到,一個(gè)是源碼,我們可以在源碼包中編譯出可執(zhí)行文件,最后一個(gè)是可執(zhí)行文件,可以用adb工具push進(jìn)板中,然后執(zhí)行起來(lái)就可以了,當(dāng)然,這里是樓主自己的帳號(hào),ID ,APIKEY都是樓主帳號(hào)的,所以你們想用的話,就得修改下,只需要在程序中改這三個(gè)值便行,然后就可以使用自己帳號(hào)的設(shè)備 控制,

yeelink在PX2上的運(yùn)用是怎樣的 yeelink.zip 

測(cè)試時(shí)的部分圖片如下,按那個(gè)開(kāi)關(guān)會(huì)改變GPIO端口的值,而改變端口時(shí),debug口也會(huì)有提示,這里也會(huì)有提示,大家可以使用這個(gè)端口電平的改變,控制燈,蜂鳴器之類的。

yeelink在PX2上的運(yùn)用是怎樣的       

yeelink在PX2上的運(yùn)用是怎樣的

yeelink在PX2上的運(yùn)用是怎樣的

yeelink在PX2上的運(yùn)用是怎樣的

現(xiàn)在說(shuō)說(shuō)程序中樓主遇到的幾個(gè)錯(cuò)誤。

1.發(fā)送過(guò)去的http文件頭,在{"value":**}的前面要有兩個(gè)回車(chē),這個(gè)別漏了,這是格式要求,漏了就沒(méi)法正常把值放到服務(wù)器了

2.獲取服務(wù)器的值的時(shí)候,我們得在服務(wù)器中的值處理,因?yàn)樗l(fā)過(guò)來(lái)的值時(shí)沒(méi)有結(jié)束符的,所以我們得手動(dòng)加上結(jié)束符。

看完上述內(nèi)容,你們對(duì)yeelink在PX2上的運(yùn)用是怎樣的有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

當(dāng)前文章:yeelink在PX2上的運(yùn)用是怎樣的
當(dāng)前網(wǎng)址:http://www.rwnh.cn/article22/ghcscc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、品牌網(wǎng)站制作、面包屑導(dǎo)航網(wǎng)頁(yè)設(shè)計(jì)公司電子商務(wù)、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
石家庄市| 卓资县| 井陉县| 额济纳旗| 靖江市| 绥中县| 阿鲁科尔沁旗| 新丰县| 海安县| 玉门市| 阿坝| 龙江县| 静海县| 林芝县| 定远县| 什邡市| 洪江市| 西安市| 山西省| 焦作市| 常州市| 安阳县| 衡阳县| 莎车县| 时尚| 渑池县| 岳阳县| 长宁区| 盖州市| 大渡口区| 三门县| 黄大仙区| 延寿县| 安塞县| 方正县| 泰来县| 双城市| 宣武区| 江达县| 即墨市| 定陶县|