繼上次的智能大棚溫濕度系統(tǒng)后骚烧,我們這次在上次的基礎(chǔ)上,做了一個(gè)智慧園區(qū)系統(tǒng)的實(shí)訓(xùn)闰围。這次實(shí)訓(xùn)的內(nèi)容如下:
一赃绊、修改代碼
在上次代碼的基礎(chǔ)上,增加了一些代碼羡榴,實(shí)現(xiàn)了更多的功能碧查,如:可以讀取光照值、氣壓值校仑、LED值忠售,并且還可以寫LED燈的值。
void write_callback(
uint16_t objid,
uint16_t instid,
uint16_t resid,
nbiot_value_t *data)
{
printf("write /%d/%d/%d:%d\r\n",
objid,
instid,
resid, data->value.as_bool);
if((objid == 3311) &&(instid == 0) &&(resid == 5850))
{
Led1_Set(data->value.as_bool);
}
}
void read_callback(
uint16_t objid,
uint16_t instid,
uint16_t resid,
nbiot_value_t *data)
{
if(objid==3301&&instid==0&&resid==5700)
{
BH1750_test();
illumi.value.as_float=result_lx ;
}
else if (objid == 3303 && instid == 0 && resid == 5700) {
SHT20_INFO sht20 = { 0 };
sht20 = SHT20_GetValue();
temp.value.as_float = (int64_t)sht20.tempreture;
} else if (objid == 3304 && instid == 0 && resid == 5700) {
SHT20_INFO sht20 = { 0 };
sht20 = SHT20_GetValue();
humi.value.as_float = (int64_t)sht20.humidity;
}
else if(objid==3323&&instid==0&&resid==5700)
{
BMP180_test();
press.value.as_float=bmp180.p ;
}
}
void res_update(time_t interval)
{
SHT20_INFO sht20;
if (cur_time >= last_time + interval) {
cur_time = 0;
last_time = 0;
temp.flag |= NBIOT_UPDATED;
humi.flag |= NBIOT_UPDATED;
sht20 = SHT20_GetValue();
temp.value.as_float = ((float)((int)((sht20.tempreture + 0.05) * 100)) / 100);
humi.value.as_float = sht20.humidity;
illumi.flag |= NBIOT_UPDATED;
BH1750_test();
illumi.value.as_float=result_lx ;
press.flag |= NBIOT_UPDATED;
BMP180_test() ;
press.value .as_float =bmp180.p;
led.flag |= NBIOT_UPDATED;
led.value.as_bool=ledStatus.Led1Sta;
} else if (cur_time == 0 && last_time == 0) {
cur_time = nbiot_time();
last_time = cur_time;
} else {
cur_time = nbiot_time();
}
}
//添加光照資源
illumi.type = NBIOT_FLOAT;
illumi.flag = NBIOT_READABLE;
ret = nbiot_resource_add(dev,
3301,
0,
5700,
&illumi);
if (ret)
{
nbiot_device_destroy(dev);
printf("device add resource(illumi) failed, code = %d.\r\n", ret);
}
//添加氣壓資源
press.type = NBIOT_FLOAT;
press.flag = NBIOT_READABLE;
ret = nbiot_resource_add(dev,
3323,
0,
5700,
&press);
if (ret)
{
nbiot_device_destroy(dev);
printf("device add resource(press) failed, code = %d.\r\n", ret);
}
//添加LED資源
led.type = NBIOT_BOOLEAN;
led.flag = NBIOT_READABLE | NBIOT_WRITABLE;
ret = nbiot_resource_add(dev,
3311,
0,
5850,
&led);
if (ret)
{
nbiot_device_destroy(dev);
printf("device add resource(led) failed, code = %d.\r\n", ret);
}
代碼修改完成后編譯下載迄沫,然后登錄onenet平臺(tái)稻扬。
二、平臺(tái)命令(寫LED燈)
這次的實(shí)訓(xùn)不但可以多讀取光照羊瘩、氣壓泰佳、LED值,還可以在onenet平臺(tái)上寫入LED燈的值尘吗,并在板子上做出相應(yīng)的改變逝她。
image.png
IMG_20210406_150828.jpg
三、POSTMAN調(diào)用API
不但可以用代碼和平臺(tái)上下發(fā)命令來(lái)控制燈睬捶,還可以用其他方法來(lái)做黔宛,比如:在postman里調(diào)用API一樣可以實(shí)現(xiàn)。
image.png
首先配置好URL擒贸,然后添加參數(shù)臀晃、代碼,最后酗宋,在Body里积仗,如果Val等于1,那么燈就亮蜕猫,如果等于0寂曹,燈就熄滅。
四回右、觸發(fā)器
除了以上兩種方法隆圆,我們還學(xué)習(xí)了第三種方法:觸發(fā)器。觸發(fā)器是有觸發(fā)條件的翔烁,當(dāng)觸發(fā)資源條件達(dá)到一個(gè)值時(shí)燈就亮渺氧,或者熄滅。
Z0%B1WMEC2VD`DI$OQK1)VT.png
TZ8UV}D1USQH6}K)YQD)SBL.png
五蹬屹、輕應(yīng)用
基于設(shè)備的數(shù)據(jù)流侣背,用戶可以為設(shè)備下的數(shù)據(jù)流創(chuàng)建相關(guān)的應(yīng)用并在線發(fā)布白华,通過(guò)發(fā)布頁(yè)面,可以對(duì)數(shù)據(jù)趨勢(shì)進(jìn)行直觀展示贩耐,用戶也可以很方便的查看數(shù)據(jù)有無(wú)異常弧腥。
image.png