日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

HasS Python 温湿度检测系统及小程序实现 (一) 温湿度检测及数据上云

發布時間:2024/3/12 windows 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HasS Python 温湿度检测系统及小程序实现 (一) 温湿度检测及数据上云 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

偶然的機會接觸到阿里云的HaaS Python物聯網開發框架,幾天的使用下來發現使用起來開發速度非常快,數據采集,上云,應用開發一氣呵成。即使對硬件不熟悉的程序員也可以快速地完成物聯網全流程的開發,通過復現我之前做的小項目 基于MQTT應用層協議的物聯網家庭溫濕度監測系統 并記錄全過程,作為學習HaaS的學習筆記。

本系列文章主要實現三個任務

  • 采用HaaS Python 框架實現硬件設備端溫濕度檢測及數據上云
  • 采用阿里云IOT studio開發移動端應用程序,實現用手機可以查看硬件設備端數據
  • 將移動端應用程序遷移至手機小程序,實現小程序查看數據
  • 對比采用HaaS和不采用HaaS開發的區別

    HaaS

    • 阿里云官方提供硬件固件,猜測固件封裝了操作系統,文件系統以及python解釋器。開發者編寫python腳本上傳至硬件即可運行代碼,不用編譯
    • 固件自帶網絡,設備驅動和MQTT等網絡協議,不用自己移植,后期方便加入AI應用,真正實現端云一體開發
    • 云端和自己開發的無差別都采用阿里云物聯網平臺。但HaaS采用阿里云推出的IOT studio來完成Web應用或小程序應用的開發,無需自己再搭建服務器,打通了整個物聯網數據的全生命周期管理。
    • IOT studio類似于之前我使用的nodered,應用界面和數據邏輯都可以通過圖形化拖拽的方式建立,加快了應用速度

    HaaS整體框圖如下

    不采用HaaS開發

    • 硬件設備端采用C語言,需要自己移植MQTT等協議和底層驅動,開發周期較長,而且需要開發者對硬件有一定了解
    • 需要自己搭建應用服務器,這里我采用了阿里云服務器ECS,運行nodered實現web應用。搭建服務器過程繁瑣,且不能和阿里云物聯網一些AI和云計算等服務做整合,比較簡單粗暴

    下面是自己之前不采用HaaS開發的整體框圖

    相關鏈接

    HaaS EDU,對HaaS有較全面的資料文檔,方便小白入門
    https://gitee.com/haasedu/haasedu
    HaaS 主頁
    https://haas.iot.aliyun.com/haasv2

    硬件準備

    • nodemcu esp32s 開發板一個
    • SHT3X-DIS溫濕度傳感器一個
    • RGB三色LED燈一個
    • 杜邦線若干
    • Micro-USB數據線一條

    硬件連接如下圖

    實物圖如下

    軟件準備

    本文基于HaaS EDU中的示例項目 花卉養殖系統 在進行進一步開發之前,首先要根據官網教程配置好如下軟件環境

    • HaaS Studio開發環境
    • ESP32固件燒錄

    正文

    在讀取硬件設備端的數據之前,需要配置云端的數據模型,以便和硬件設備端的數據對應,這樣云端接收到硬件設備端的數據就知道這些數據對應著什么樣的信息。

    云端數據配置

    云端數據配置分為以下三步

    1.創建云端產品
    2.創建產品屬性(物模型)
    3.創建云端設備(獲取三元組)

    云端的數據結構可以用面向對象的思想來類比

    • 云端產品就是一個類
    • 產品屬性(物模型)是類的屬性,一個類的所有對象都有這些屬性
    • 云端設備等同于類的對象,是類的一個具體實現

    比如人是一個類,屬于云端產品;人的年齡身高是類的屬性,屬于物模型;你,是一個具體的人,是人類的具體對象,屬于云端設備。

    創建云端產品

    進入阿里云物聯網控制臺,并開通公共實例
    https://iot.console.aliyun.com/

    點擊創建產品

    輸入產品名稱,選擇自定義品類,WIFI直連設備,其他保持默認

    創建產品屬性(物模型)

    點擊定義物模型

    點擊編輯草稿

    添加自定義功能

    這里添加兩個功能,溫度和濕度,配置如下


    添加完成后點擊發布上線,然后在產品界面點擊發布才能使當前物模型更改生效,每次更改物模型后都要這么操作

    創建云端設備(獲取三元組)

    首先點擊添加設備

    基于 溫濕度檢測設備 這個產品添加一個設備

    設備生成成功后可以查看設備的三元組,云端設備也就對應著一個實際的物理設備。設備三元組可以唯一確定一個物理設備,三元組要留好,待會要用

    硬件設備端開發

    打開安裝好 haas插件的 vscode,在快速開始界面選擇創建項目


    創建好項目后,找到HaaS官方花卉養殖系統的 代碼倉庫,將其中的代碼復制到自己的項目中去


    最終如下圖所示

    在main.py中將設備三元組信息改成剛剛創建的云端設備的三元組信息,并修改wifi名稱和密碼

    點擊部署運行,通過串口可以看到已經可以讀取到溫濕度信息

    在阿里云控制臺,也可以看到溫濕度數據如下

    進階實驗

    前面實現了溫濕度數據檢測及上云,實現了硬件設備向云端發送數據,下面要實現云端向硬件設備發送數據,實現云端對硬件設備的控制。
    下面要把RGB三色燈用起來,通過云端控制三色燈的亮滅。

    云端物模型更改

    首先在產品界面-功能定義-點擊編輯草稿,編輯物模型

    添加三個物模型屬性,對應RGB三個顏色的燈
    下面是紅燈的物模型屬性定義

    三色燈屬性定義完成后圖所示,點擊發布上線,完成物模型的更改

    硬件設備端代碼更改

    將board.json中代碼用下面的代碼覆蓋,增加了RGB燈的GPIO設置

    {"name": "esp32","version": "1.0.0","io": {"sht3x": {"type": "I2C","port": 0,"addrWidth": 7,"freq": 400000,"mode": "master","devAddr": 68},"led_r": {"type": "GPIO","port": 25,"dir": "output","pull": "pullup"},"led_g": {"type": "GPIO","port": 26,"dir": "output","pull": "pullup"},"led_b": {"type": "GPIO","port": 27,"dir": "output","pull": "pullup"}},"debugLevel": "ERROR","repl": "disable" }

    將main.py中代碼用下面的代碼覆蓋,記得wifi名稱密碼和三元組改成你自己的

    #!/usr/bin/env python # -*- encoding: utf-8 -*- ''' @File : main.py @Description: 溫濕度上云 @Author : franhawk @version : 1.0 ''' from aliyunIoT import Device # aliyunIoT組件是連接阿里云物聯網平臺的組件 import network # Wi-Fi功能所在庫 import utime # 延時API所在組件 from driver import I2C # I2C總線驅動庫 from driver import GPIO import sht3x # SHT3X-DIS溫濕度傳感器驅動庫 import ujson # json庫 # 物聯網平臺連接標志位 iot_connected = False# 空調和加濕器狀態變量 airconditioner = 0 humidifier = 0 airconditioner_value = 0 humidifier_value = 0# RGB狀態變量 led_r = 0 led_g = 0 led_b = 0 led_r_value = 0 led_g_value = 0 led_b_value = 0# 三元組信息 productKey = "改成你自己的" deviceName = "改成你自己的" deviceSecret = "改成你自己的"# Wi-Fi SSID和Password設置 wifiSsid = "改成你自己的" wifiPassword = "改成你自己的"wlan = None# 物聯網設備實例 device = Nonei2cObj = None humitureDev = None# 等待Wi-Fi成功連接到路由器 def get_wifi_status():global wlanwifi_connected = Falsewlan = network.WLAN(network.STA_IF) #創建WLAN對象wifi_connected = wlan.isconnected() # 獲取Wi-Fi連接路由器的狀態信息if not wifi_connected:wlan.active(True) #激活界面wlan.scan() #掃描接入點#print("start to connect ", wifiSsid)wlan.connect(wifiSsid, wifiPassword) # 連接到指定的路由器(路由器名稱為wifiSsid, 密碼為:wifiPassword)while True:wifi_connected = wlan.isconnected() # 獲取Wi-Fi連接路由器的狀態信息if wifi_connected: # Wi-Fi連接成功則退出while循環breakelse:utime.sleep(0.5)print("wifi_connected:", wifi_connected)ifconfig = wlan.ifconfig() #獲取接口的IP/netmask/gw/DNS地址print(ifconfig)utime.sleep(0.5)# 通過溫濕度傳感器讀取溫濕度信息 def get_temp_humi():global humitureDev'''# 如果需要同時獲取溫濕度信息,可以呼叫getTempHumidity,實例代碼如下:humniture = humitureDev.getTempHumidity() # 獲取溫濕度傳感器測量到的溫濕度值temperature = humniture[0] # get_temp_humidity返回的字典中的第一個值為溫度值humidity = humniture[1] # get_temp_humidity返回的字典中的第二個值為相對濕度值'''temperature = humitureDev.getTemperature() # 獲取溫度測量結果# print("The temperature is: %.1f" % temperature)humidity = humitureDev.getHumidity() # 獲取相對濕度測量結果# print("The humidity is: %d" % humidity)return temperature, humidity # 返回讀取到的溫度值和相對濕度值# 物聯網平臺連接成功的回調函數 def on_connect(data):global iot_connectediot_connected = True# 設置props 事件接收函數(當云平臺向設備下發屬性時) def on_props(request):global led_r,led_g,led_b,led_r_value,led_g_value,led_b_valuepayload = ujson.loads(request['params'])# print (payload)# 獲取dict狀態字段 注意要驗證鍵存在 否則會拋出異常if "led_r" in payload.keys():led_r_value = payload["led_r"]if (led_r_value):print("紅燈亮")else:print("紅燈滅")if "led_g" in payload.keys():led_g_value = payload["led_g"]if (led_g_value):print("綠燈亮")else:print("綠燈滅")if "led_b" in payload.keys():led_b_value = payload["led_b"]if (led_b_value):print("藍燈亮")else:print("藍燈滅")print(led_r_value, led_g_value,led_b_value)led_r.write(led_r_value)led_g.write(led_g_value) led_b.write(led_b_value) # 要將更改后的狀態同步上報到云平臺prop = ujson.dumps({'led_r': led_r_value,'led_g': led_g_value,'led_b': led_b_value,})upload_data = {'params': prop}# 上報空調和加濕器屬性到云端device.postProps(upload_data)def connect_lk(productKey, deviceName, deviceSecret):global device, iot_connectedkey_info = {'region': 'cn-shanghai','productKey': productKey,'deviceName': deviceName,'deviceSecret': deviceSecret,'keepaliveSec': 60}# 將三元組信息設置到iot組件中device = Device()# 設定連接到物聯網平臺的回調函數,如果連接物聯網平臺成功,則調用on_connect函數device.on(Device.ON_CONNECT, on_connect)# 配置收到云端屬性控制指令的回調函數,如果收到物聯網平臺發送的屬性控制消息,則調用on_props函數device.on(Device.ON_PROPS, on_props)# 啟動連接阿里云物聯網平臺過程device.connect(key_info)# 等待設備成功連接到物聯網平臺while(True):if iot_connected:print('物聯網平臺連接成功')breakelse:print('sleep for 1 s')utime.sleep(1)print('sleep for 2s')utime.sleep(2)# 上傳溫度信息和濕度信息到物聯網平臺 def upload_temperature_and_Humidity():global devicewhile True:data = get_temp_humi() # 讀取溫度信息和濕度信息# 生成上報到物聯網平臺的屬性值字串prop = ujson.dumps({'CurrentTemperature': data[0],'CurrentHumidity': data[1]})print('uploading data: ', prop)upload_data = {'params': prop}# 上傳溫度和濕度信息到物聯網平臺device.postProps(upload_data)utime.sleep(2)if __name__ == '__main__':# 硬件初始化i2cObj = I2C()i2cObj.open("sht3x") # 按照board.json中名為"sht3x"的設備節點的配置參數(主設備I2C端口號,從設備地址,總線頻率等)初始化I2C類型設備對象print("sht3x inited!")humitureDev = sht3x.SHT3X(i2cObj) # 初始化SHT3X-DIS傳感器# 初始化 GPIOled_r = GPIO()led_g = GPIO()led_b = GPIO()led_r.open('led_r') # 使用board.json中led_g節點定義的GPIO,對應開發板上的紅燈led_g.open('led_g') # 使用board.json中led_b節點定義的GPIO,對應開發板上的綠燈led_b.open('led_b') # 使用board.json中led_b節點定義的GPIO,對應開發板上的藍燈# 請替換物聯網平臺申請到的產品和設備信息,可以參考文章:https://blog.csdn.net/HaaSTech/article/details/114360517get_wifi_status()connect_lk(productKey, deviceName, deviceSecret)upload_temperature_and_Humidity()i2cObj.close()

    然后點擊部署運行,部署到硬件上

    云端調試

    在阿里云物聯網控制臺點擊-監控運維-在線調試-選擇要調試的設備,設置RGB燈的開啟和關閉,最后點擊設置

    可以看到相應的燈亮起來了

    總結

    本文實現了溫濕度檢測及數據上云,并且在官方示例的基礎上增加了云端控制設備端RGB燈的亮滅的功能。之后會在此基礎上采用阿里云IOT studio開發移動端應用程序,實現用手機可以查看硬件設備端數據,從而構成一個完整的物聯網應用。
    對于HaaS 我也有一些小建議,建議把固件開源,重視開發者社區的建設,從而讓開發者可以通過更改固件支持需要的設備,如攝像頭,語音等,讓更多的人為HaaS添磚加瓦,促進HaaS的發展。

    總結

    以上是生活随笔為你收集整理的HasS Python 温湿度检测系统及小程序实现 (一) 温湿度检测及数据上云的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 变态另类丨国产精品 | 四虎1515hh.com| 免费黄色三级 | 2020av视频 | 奇米影视在线视频 | 国产精品99久久久久久久久久久久 | 成人午夜免费网站 | 丁香av| 成人免费网站www网站高清 | 熟睡人妻被讨厌的公侵犯 | 国产麻豆成人 | 亚洲一区二区观看播放 | 亚洲国产区 | 91中文字幕视频 | 激情伦成人综合小说 | 国产毛片网 | 丁香综合 | 蜜臀视频一区二区三区 | 51精品国产 | 亚洲一区二区视频在线播放 | 国产日韩免费 | 一区二区在线播放视频 | 久久久久久久久久一级 | 色窝窝无码一区二区三区成人网站 | 少妇又色又爽又高潮极品 | 日剧再来一次第十集 | 人人妻人人澡人人爽人人欧美一区 | youjizz欧美 | 特级淫片aaaaaaa级 | 国产亚洲精品久久久久丝瓜 | 香蕉一区二区 | 中文字幕一区二区三区波野结 | 免费的av片 | 精品国产无码一区二区三区 | 狠狠干天天干 | 久久久亚洲欧洲 | 久久作爱 | 国产九色在线播放九色 | 手机在线免费观看av | 中日韩精品一区二区三区 | 久久精品性爱视频 | 污污网站在线 | 日韩福利社 | 中文字幕在线观看不卡 | 精品人妻一区二区三 | 日本另类视频 | jizz欧洲| 第一页国产 | 欧美一级片播放 | 午夜亚洲aⅴ无码高潮片苍井空 | 芒果视频在线观看免费 | 99re8在线精品视频免费播放 | 韩国av在线免费观看 | 国产精品黄网站 | 日本日皮视频 | 天天看夜夜看 | 久久精品中文闷骚内射 | 国产成人无码精品久久久电影 | 欧美mv日韩mv国产网站 | 国产成人无码精品久久久久久 | 99久久精品一区二区成人 | 女生被草 | 性色av一区二区三区免费 | 久久久久成人精品免费播放动漫 | 老熟妇精品一区二区三区 | 成人精品亚洲人成在线 | 亚洲一线二线在线观看 | 亚洲在线视频观看 | 99精品无码一区二区 | 日本三级中文字幕 | 亚洲专区欧美 | 国产蜜臀av一区二区 | 亚洲第三区 | 日剧大尺度床戏做爰 | 久久aaa | 99爱在线| 亚洲第一页综合 | 九九综合网 | 亚洲福利在线播放 | 亚洲精品国产99 | 这里只有精品在线播放 | 中文无码精品一区二区三区 | 婷婷综合国产 | 国产又大又黑又粗免费视频 | 熟女俱乐部五十路六十路av | 成人精品一区二区三区电影黑人 | 亚洲精品国产精品国自产在线 | 中文字幕日本在线观看 | 美女一级视频 | 一区二区精品视频 | 亚洲欧美一级 | 色丁香综合 | 亚洲4438| 91拔萝卜视频| 欧美狂猛xxxxx乱大交3 | 91精品系列 | 黄色aaaaa| 日韩伊人网 | 99精品视频免费观看 |