国产乱人伦精品一区二区,国产在线麻豆精品观看,国产在线播精品第三,亚洲欧美国产制服动漫

您的位置:首頁>智東西 >

全球通訊!將物聯網邊緣設備與云原生分析集成,以獲得更智能的監測

來源:感知論壇  

想象一下,你是一家智能農業公司,使用物聯網傳感器幫助農民優化作物產量。你們出售各種傳感器,可以監測農田中的土壤濕度、溫度、濕度和光照水平。

為了幫助農民充分利用他們的資源,你需要建立一個集中的系統。該系統收集來自所有田地的傳感器數據,并提供對作物健康和生長的實時監測。有了這些數據,農民可以在知情的情況下決定何時灌溉、施肥和收割作物。

使用Neo4j,一種圖形數據庫技術,可以成為從收集的數據中釋放有價值監測的關鍵。它還使智能農業系統能夠充分發揮其潛力。


(資料圖片)

在這篇博客文章中,我們探討了如何使用Neo4j來構建一個強大的智能農業系統。我們首先討論什么是Neo4j,以及為什么它是存儲和查詢復雜、互連數據的理想選擇。然后,我們深入研究Neo4j在智能農業中的具體用例,例如識別作物模式、預測作物產量和優化資源利用。最后,我們將逐步介紹如何構建基于Neo4j的智能農業系統,幫助農民做出更好的決策,提高作物產量。

架構

硬件組件

軟件組件

Jetson Nano開發套件SD卡固件:

https://developer.nvidia.com/embedded/l4t/r32_release_v7.1/jp_4.6.1_b110_sd_card/jeston_nano/jetson-nano-jp461-sd-card-image.zip

etcher:https://www.balena.io/etcher/

desktop Docker:

https://www.docker.com/products/docker-desktop/

Neo4j Aura數據庫實例:

https://neo4j.com/cloud/platform/aura-graph-database

步驟1:為操作系統安裝準備Jetson Nano SD卡映像

要將Jetson Nano SD卡映像閃存到SD卡,您可以按照以下步驟操作:

. 從NVIDIA(https://developer.nvidia.com/embedded/downloads)下載Jetson Nano SD卡映像。

. 將SD卡插入計算機的SD卡讀卡器。

. 從下載并安裝Etcher軟件https://www.balena.io/etcher/.

. 打開Etcher并選擇要閃存的Jetson Nano SD卡映像文件。

. 解壓縮從下載的SD卡映像https://developer.nvidia.com/embedded/downloads

. 選擇SD卡驅動器作為下載目標。

. 點擊“燒錄!”開始燒錄進程。

步驟2:連接傳感器

Seeed Studio的BME680傳感器是一款緊湊型環境傳感器,專為移動應用和可穿戴設備設計。它可以高精度測量溫度、壓力、濕度和室內空氣質量,并且設計為功耗非常低。該傳感器與流行的微控制器平臺兼容,如樹莓派Arduino,使其易于集成到項目中。

Grove Base Hat是一款40針Grove附加板,旨在與樹莓派板兼容。然而,通過將其連接到適當的GPIO引腳,它也可以與NVIDIA Jetson Nano一起使用。它有15個Grove連接器,包括6個數字、4個模擬、3個I2C、1個UART和1個PWM。

該硬件模塊提供了一種將Grove傳感器和執行器連接到Jetson Nano的簡單方便的方法。它支持各種Grove模塊,如溫度、濕度、光線和聲音傳感器,以及電機和顯示器等執行器。

要將Grove Base Hat連接到Jetson Nano,您必須連接以下引腳:

. Jetson Nano上的VCC至3.3V引腳

. Jetson Nano上的GND到GND引腳

. SDA至Jetson Nano的引腳3(SDA1)

. SCL至Jetson Nano的引腳5(SCL1)

一旦您將Grove Base Hat連接到Jetson Nano,您就可以開始在Jetson Nano項目中使用Grove傳感器和執行器。將傳感器連接到Grove后,建議使用i2cdetect命令運行I2C檢測,以驗證您是否看到設備:在我們的情況下,它顯示76。請注意,傳感器使用I2C或SPI通信協議與微控制器進行通信。

$ i2cdetect -r -y 1     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- 76 --

步驟3:編寫Python代碼以獲取傳感器值

以下是從BME680傳感器獲取傳感器值的Python腳本:

from bme680 import BME680# Initialize BME680 sensor objectsensor = BME680()# Check sensor is connectedif not sensor.begin():    print("Failed to initialize BME680 sensor.")    exit()# Read and print sensor valueswhile True:    if sensor.get_sensor_data():        temperature = round(sensor.data.temperature, 2)        humidity = round(sensor.data.humidity, 2)        pressure = round(sensor.data.pressure, 2)        gas_resistance = round(sensor.data.gas_resistance, 2)        print("Temperature: {} C".format(temperature))        print("Humidity: {} %".format(humidity))        print("Pressure: {} hPa".format(pressure))        print("Gas Resistance: {} Ohms".format(gas_resistance))    else:        print("Error reading BME680 sensor data.")    time.sleep(1)

from bme680 import bme680語句導入bme680傳感器庫,該庫提供了從傳感器讀取環境數據的接口。傳感器變量初始化BME680傳感器對象。if not sensor.begin():語句檢查傳感器是否正確連接和初始化。如果初始化失敗,代碼將退出并打印一條錯誤消息。

代碼的主循環重復讀取BME680傳感器的傳感器數據,并將值打印到控制臺。time.sleep(1)語句在循環的每次迭代之間暫停代碼執行1秒。

此腳本使用BME680庫從連接到運行腳本的系統的BME680傳感器讀取溫度、濕度、壓力和氣體電阻值。結果以循環方式打印到控制臺,每次讀取之間有1秒的延遲。

假設BME680傳感器已連接并正常工作,則輸出如下所示:

溫度:26.68攝氏度

濕度:41.35%

壓力:1008.6 hPa

氣體電阻:3110.63歐姆

溫度、濕度和壓力值分別以攝氏度、百分比和百帕斯卡為單位,使用round()函數四舍五入到小數點后兩位。氣體電阻值以歐姆為單位,也可以四舍五入到小數點后兩位。

如果讀取BME680傳感器數據時出錯,腳本將在控制臺上打印消息“讀取BME680sensor data時出錯”

步驟4:編寫Python程序,將BME680傳感器值發送到Neo4j圖形數據庫

現在是時候編寫Python代碼,使用Neo4j驅動程序和BME680環境傳感器建立與Neo4j Graph數據庫的連接了。

from neo4j import GraphDatabasefrom bme680 import BME680import time # Set up the Neo4j driveruri = "neo4j+s://41275b2a.databases.neo4j.io"driver = GraphDatabase.driver(uri, auth=("neo4j", "3DXXXXXXXXXXXXXXXaM")) # Set up the BME680 sensorsensor = BME680() # Define a function to create a sensor reading node in Neo4jdef create_sensor_reading(tx, temperature, humidity, pressure, gas):    tx.run("CREATE (:SensorReading {temperature: $temperature, humidity: $humidity, pressure: $pressure, gas: $gas, timestamp: $timestamp})",           temperature=temperature, humidity=humidity, pressure=pressure, gas=gas, timestamp=int(time.time())) # Generate and insert sensor readings into Neo4j every 5 secondswhile True:    if sensor.get_sensor_data():        temperature = round(sensor.data.temperature, 2)        humidity = round(sensor.data.humidity, 2)        pressure = round(sensor.data.pressure, 2)        gas = round(sensor.data.gas_resistance, 2)         with driver.session() as session:            session.write_transaction(create_sensor_reading, temperature, humidity, pressure, gas)            print(f"Inserted sensor reading - temperature: {temperature}, humidity: {humidity}, pressure: {pressure}, gas: {gas}")    else:        print("Error reading BME680 sensor data.")     time.sleep(5)

此Python代碼使用Neo4j驅動程序和BME680環境傳感器建立與Neo4j圖形數據庫的連接。然后,它定義了一個函數,在圖形數據庫中創建一個傳感器讀取節點,其中包含當前的溫度、濕度、壓力、氣體阻力和時間戳。代碼的主循環每5秒重復生成一次傳感器讀數,并使用定義的函數將其插入圖形數據庫。

from neo4j import GraphDatabase語句導入neo4j驅動程序,該驅動程序允許Python代碼與neo4j數據庫交互。from bme680 import bme680語句導入bme680傳感器庫,該庫提供了從傳感器讀取環境數據的接口。

uri變量指定Neo4j數據庫的位置和訪問該數據庫的憑據。驅動程序變量使用指定的uri和憑據初始化Neo4j驅動程序。

傳感器變量初始化BME680傳感器對象。create_sensor_reading函數接收Neo4j事務對象(tx)和當前傳感器讀數(溫度、濕度、壓力、氣體和時間戳)。然后使用給定的設備在圖形數據庫中創建一個新節點。

代碼的主循環重復讀取BME680傳感器的傳感器數據,并使用Neo4j事務將讀數插入圖形數據庫。time.sleep(5)語句在循環的每次迭代之間暫停代碼的執行5秒

步驟5:導入Neo4j Python模塊

gitclonehttps://github.com/collabnix/bme680-jetson-neo4jcd bme680-jetson-neo4j

導入Neo4j Python模塊

您可以使用pip為Python安裝Neo4j驅動程序:

pip install neo4jpython3sensorloader.py

結果

Inserted sensor reading - temperature: 26.68, humidity: 41.35, pressure: 1008.6, gas: 3110.63Inserted sensor reading - temperature: 12.42, humidity: 49.71, pressure: 1149.34, gas: 4815.11Inserted sensor reading - temperature: 27.73, humidity: 77.2, pressure: 1081.24, gas: 4737.95Inserted sensor reading - temperature: 19.22, humidity: 50.17, pressure: 958.73, gas: 516.57

步驟6:設置Neo4j Docker擴展

Neo4j Aura是Neo4j提供的一種完全托管的云數據庫服務。它是一個數據庫即服務(DBaaS)產品,允許您在云中創建、部署和管理自己的圖形數據庫。這就不必擔心底層基礎設施和維護任務。假設您已經安裝并配置了Neo4j Aura DB連接UI,下一步將安裝Neo4j Docker Desktop。

打開Docker Dashboard>Extensions>安裝Neo4j Docker Extension。

要允許Neo4 Docker Extension連接到遠程Neo4j Aura DB,您必須提供連接URL、身份驗證類型和憑據。一旦成功,您應該能夠開始運行密碼查詢。

步驟7:測量氣體濃度

BME680傳感器測量幾種不同氣體的濃度,包括揮發性有機化合物(VOC)、一氧化碳(CO)和二氧化氮(NO2)。這是除了測量溫度、濕度和壓力之外的。要從傳感器中獲取這些氣體的濃度,可以使用BME680類的get_sensor_data()方法。這將返回一個包含最新傳感器讀數的BME680Data對象。然后,您可以使用以下屬性訪問BME680Data對象中的氣體濃度值:

. gas_reresistance:氣體傳感器的電阻,單位為歐姆,與空氣中揮發性有機物的濃度有關。

. gas(List):不同氣體的濃度,單位為百萬分之一(ppm),包括CO和NO2。

from neo4j import GraphDatabaseimport timeimport bme680
# Set up the Neo4j driveruri = "neo4j+s://your-neo4j-instance-url-here"driver = GraphDatabase.driver(uri, auth=("neo4j", "your-neo4j-instance-password-here"))
# Set up the BME680 sensorsensor = bme680.BME680(bme680.I2C_ADDR_PRIMARY)
# Define a function to create a CO2 reading node in Neo4jdef create_co2_reading(tx, co2_concentration):    tx.run("CREATE (:CO2Reading {concentration: $concentration, timestamp: $timestamp})",           concentration=co2_concentration, timestamp=int(time.time()))
# Wait for the sensor to warmupprint("Warming up sensor...")sensor.set_gas_status(bme680.ENABLE_GAS_MEAS)time.sleep(300)
# Start retrieving CO2 concentration data and inserting it into Neo4jprint("Starting CO2 data collection...")while True:    if sensor.get_sensor_data():        co2_concentration = round(sensor.data.gas_resistance / 10, 2)        with driver.session() as session:            session.write_transaction(create_co2_reading, co2_concentration)            print(f"Inserted CO2 reading - concentration: {co2_concentration}")    else:        print("Error retrieving sensor data")    time.sleep(60)

執行腳本

python3 sensorloader_co2.py

結果

Warming up sensor... (takes 4-5 minutes)Starting CO2 data collection...Inserted CO2 reading - concentration: 1294686.

與典型的室內二氧化碳水平相比,1294686.06ppm(百萬分之一)的二氧化碳濃度相當高。在通風良好的室內環境中,二氧化碳濃度應在400-1000ppm左右。二氧化碳含量超過1000ppm會導致嗜睡、頭痛和其他癥狀,而超過5000ppm會對健康造成嚴重影響,在極端情況下甚至死亡。

然而,對二氧化碳水平的解釋取決于測量的背景和環境。例如,在一些工業環境中,如啤酒廠或溫室,出于特定目的,CO2水平可能會故意升高。同樣重要的是要考慮可能影響室內空氣質量的其他因素,如濕度、通風和其他污染物的存在。

步驟8:對BME680傳感器建模

以下是如何在Neo4j中對BME680傳感器及其讀數進行建模的示例。首先,您將創建一個“傳感器”節點來表示您的BME680傳感器。此節點可能具有“名稱”和“制造商”等屬性,以及您要存儲的有關傳感器的任何其他信息。

CREATE (:Sensor {name: "BME680", manufacturer: "Bosch"})

接下來,您將創建一個“時間戳”節點來表示讀取的特定時間點。此節點可能有一個“時間戳”屬性,用于存儲讀取的日期和時間。

CREATE (:Timestamp {timestamp: datetime()})

然后,您將在Sensor節點和Timestamp節點之間創建一個“READS”關系?!皽囟取薄ⅰ皦毫Α?、“濕度”等財產表示當時從傳感器讀取的值。例如,要創建溫度為25攝氏度、壓力為1000hPa、濕度為50%的讀數,可以使用以下查詢:

MATCH (s:Sensor {name: "BME680"}), (t:Timestamp)CREATE (s)-[:READS {temperature: 37.0, pressure: 1168.83, humidity: 37.23}]->(t)

此查詢在傳感器節點和時間戳節點之間創建“READS”關系。溫度、壓力和濕度的財產分別設置為25、1000和50。然后,您可以使用Cypher查詢來:

. 從數據庫中檢索讀數;

. 根據時間范圍或傳感器類型等標準對其進行篩選,以及

. 使用Neo4j Bloom等工具或其他可視化工具以各種方式可視化數據

步驟9:將其繪制到Grafana儀表板

Neo4j為Grafana提供了一個數據源插件,允許您直接在Grafana儀表板內可視化和分析存儲在Neo4j圖形數據庫中的數據。要使用Neo4j數據源插件,您必須從Grafana插件庫安裝該插件。安裝插件后,您可以通過指定數據庫URL、用戶名和密碼將其配置為連接到Neo4j數據庫。一旦配置了數據源,就可以使用Neo4j查詢語言Cypher創建可視化。Cypher是一種功能強大的圖形查詢語言,允許您遍歷和操作存儲在Neo4j數據庫中的圖形數據。

您可以在幾秒鐘內在Docker Desktop上打開Grafana來使用Grafana Docker擴展。訪問Grafana儀表板并使用默認的admin/admin作為用戶名/密碼登錄。

登錄后,單擊“設置”>“數據源”>“插件”,然后搜索Neo4j數據源

安裝Grafana數據源。

提供Neo4j Aura實例的連接URL、用戶名和密碼,然后連接。

Grafana使用Neo4j數據源插件的好處包括:

. 能夠在用戶友好的界面中可視化和分析復雜的圖形數據。

. 與Grafana中提供的各種其他數據源和插件集成。

. 具有動態、交互式可視化功能的可定制儀表板。

. 支持基于Neo4j數據庫事件的實時數據流和警報。

一旦連接到遠程Neo4j Aura數據庫,就應該能夠對傳感器數據運行密碼查詢。

MATCH (sr:SensorReading)WHERE sr.timestamp >= $timeFrom AND sr.timestamp <= $timeToRETURN sr.timestamp as time, sr.temperature as temp, sr.humidity as hum, sr.pressure as press, sr.gas as gas_resORDER BY sr.timestamp ASC

查詢使用MATCH子句指定節點標簽,并指定一個變量sr來表示具有該標簽的節點。WHERE子句使用變量$timeFrom和$timeTo指定一系列時間戳。RETURN子句指定每個傳感器讀數要返回的財產。ORDER BY子句按時間戳升序對結果進行排序。

最后,您應該能夠創建所有四個儀表板——溫度、壓力、濕度和氣體阻力,如下所示:

結論

圖形數據庫能夠高效查詢復雜且相互關聯的數據,使其成為數據往往相互關聯的環境監測應用程序的理想選擇。這與農業尤其相關,因為農業需要這些數據來提高作物產量。

在這個博客中,我們討論了如何使用Python將BME680環境傳感器與Neo4j圖形數據庫接口。BME680傳感器能夠測量溫度、濕度、壓力和氣體阻力。這使其成為環境監測應用的理想傳感器,可以改善農業行業的決策。

Ajeet S Raina是Docker的開發者倡導者,也是Arm開發者計劃的大使。

審核編輯 :李倩

關鍵詞:

最新文章
国产乱人伦精品一区二区,国产在线麻豆精品观看,国产在线播精品第三,亚洲欧美国产制服动漫
99精品久久免费看蜜臀剧情介绍| 久久精品成人| 欧美精品激情blacked18| 久久精品人人做人人爽电影蜜月| 欧美激情成人在线| 久久综合狠狠综合久久综合88| 欧美国产日韩视频| 久久国产精品久久久久久| 亚洲欧美日韩国产中文在线| 久久久91精品国产一区二区精品| 亚洲小视频在线观看| 欧美日韩一区二区视频在线观看| 亚洲国产1区| 亚洲第一福利社区| 国产日韩专区在线| 亚洲精品美女免费| 久久一二三四| 欧美黄网免费在线观看| 欧美日韩一卡| 久久国产乱子精品免费女| 国产精品社区| 久久影音先锋| 久久久水蜜桃av免费网站| 亚洲欧美综合| 国产精品日韩欧美一区| 猫咪成人在线观看| 久久午夜视频| 欧美亚洲一区二区三区| 国产精品免费看片| 久久久99精品免费观看不卡| 亚洲第一页中文字幕| 欧美三级电影网| 国产精品一区一区三区| 欧美午夜一区二区| 国产精品一区视频| 欧美国产乱视频| 欧美 日韩 国产一区二区在线视频| 1024成人网色www| 国产精品久久九九| 欧美精品乱码久久久久久按摩| 久久免费午夜影院| 国产精品v日韩精品v欧美精品网站| 国产日韩欧美成人| 美日韩在线观看| 老妇喷水一区二区三区| 久久久久久久久一区二区| 欧美精品乱码久久久久久按摩| 亚洲国产精品ⅴa在线观看| 亚洲视频 欧洲视频| 99视频一区| 欧美伊人久久久久久久久影院| 久久免费精品日本久久中文字幕| 欧美精品v国产精品v日韩精品| 国产精品美女在线| 欧美日韩在线视频一区二区| 亚洲影院在线观看| 欧美精品18videos性欧美| 亚洲最新色图| 91久久精品国产91久久性色| 亚洲激情视频在线播放| 欧美国产精品v| 在线成人免费观看| 国产精品日本欧美一区二区三区| 亚洲人www| 国产精品影院在线观看| 国产视频一区在线观看| 欧美系列电影免费观看| 国产欧美一区二区色老头| 久久一区免费| 国产亚洲二区| 在线不卡a资源高清| 国产精品久久久久7777婷婷| 欧美激情麻豆| 国产欧美日韩一区二区三区在线观看| 91久久精品国产91性色tv| 欧美精品久久99久久在免费线| 日韩一级在线观看| 香蕉久久夜色精品国产| 久久精品国产免费| 香蕉久久夜色精品| 国产欧美日韩综合一区在线播放| 依依成人综合视频| 99re视频这里只有精品| 久久午夜视频| 一区二区日韩伦理片| 亚洲视频网在线直播| 欧美三级视频在线| 欧美日韩精品不卡| 欧美日韩一区二区在线观看| 久久久www免费人成黑人精品| 亚洲一区在线视频| 国产区精品视频| 一本色道久久88综合亚洲精品ⅰ| 国产一区av在线| 91久久精品一区二区别| 亚洲午夜精品久久久久久浪潮| 国产日韩欧美精品| 国产一在线精品一区在线观看| 国产色综合网| 久久精品国产免费观看| 久久久99久久精品女同性| 久久噜噜噜精品国产亚洲综合| 黄色免费成人| 久久综合伊人| 久久精品国产久精国产爱| 亚洲永久免费精品| 国产精品久久久久久一区二区三区| 国产午夜精品全部视频在线播放| 在线观看欧美精品| 欧美另类一区二区三区| 亚洲精品中文字幕在线| 国产欧美激情| 免费看精品久久片| 欧美日韩一区在线视频| 亚洲天堂成人在线视频| 久久视频在线看| 国产精品综合| 亚洲一区二区三区免费观看| 女人天堂亚洲aⅴ在线观看| 久久人人爽人人爽爽久久| 香蕉免费一区二区三区在线观看| 在线免费观看日本欧美| 免费观看欧美在线视频的网站| 国产精品一区二区三区免费观看| 亚洲国产日韩欧美在线99| 亚洲一区二区三区精品在线观看| 欧美日韩不卡在线| 国产欧美日韩高清| 99精品视频免费观看视频| 亚洲一区在线观看免费观看电影高清| 日韩视频在线一区二区| 亚洲欧美日韩网| 欧美系列精品| 99人久久精品视频最新地址| 欧美日韩亚洲一区| 亚洲欧美日韩在线播放| 亚洲国产精品激情在线观看| 国产婷婷97碰碰久久人人蜜臀| 好看的亚洲午夜视频在线| 国产精品美女久久久| 午夜视频在线观看一区二区| 亚洲欧美精品中文字幕在线| 欧美激情一级片一区二区| 久久午夜视频| 欧美激情成人在线视频| 男女精品网站| 亚洲一区二区三区在线看| 午夜亚洲精品| 亚洲午夜国产成人av电影男同| 国产日本欧洲亚洲| 免费久久99精品国产| 久久久噜噜噜久久中文字免| 亚洲国产精品一区| 国产精品视频yy9299一区| 亚洲欧洲综合另类| 国产亚洲欧美日韩一区二区| 国产精品精品视频| 亚洲少妇在线| 国产精品人成在线观看免费| 欧美日韩在线综合| 亚洲国产精品视频一区| 国产伊人精品| 国产日韩视频| 国产精品视频导航| 黄色成人片子| 在线观看日韩av电影| 91久久精品国产91性色tv| 国模精品一区二区三区色天香| 中文日韩电影网站| 欧美国产大片| 欧美—级高清免费播放| 国内成人精品视频| 一区二区三区四区蜜桃| 好吊视频一区二区三区四区| 亚洲男人天堂2024| 亚洲茄子视频| 欧美成人乱码一区二区三区| 久久精品综合网| 久久精品理论片| 美乳少妇欧美精品| 亚洲免费av网站| 欧美国产精品中文字幕| 国产嫩草一区二区三区在线观看| 韩国一区二区三区在线观看| 亚洲精品裸体| 99亚洲伊人久久精品影院红桃| 国产精品专区一| 国产日本欧美一区二区三区在线| 欧美日韩中文精品| 日韩一区二区精品| 日韩亚洲欧美成人| 欧美成人一区二区| 国产精品久久久一本精品| 在线亚洲观看| 欧美高清视频www夜色资源网| 亚洲精品一线二线三线无人区| 欧美高清视频| 国产在线成人| 久久久久国产精品一区二区| 欧美一区激情|