資料介紹
描述
什么是安全工作區
安全工作區旨在創建一個點對點網絡,其中一堆AWS IoT EduKit將共享一個通用接口。該接口將由 BLE(Bluetooth LOW ENERGY) UART 協議創建。這些設備可以一次在它們之間共享一個消息。
當一個設備(Sender)想要發送消息時,它會與其他設備(Recipient)連接并收集它的GATT屬性。這些屬性是由接收設備提供的服務和特性。收集這些屬性后,發送方設備可以在該接口上讀取/寫入數據,接收方設備將監聽這些數據。
一個 android 應用程序將作為管理設備也與該界面相關聯。如果任何設備想要向管理應用程序發送消息,它也是可能的。
為什么選擇安全工作區
近來,自然災害的加劇已成為大多數國家的可怕局面。這些自然災害包括地震、暴雨造成的山體滑坡、海嘯對人口地區造成巨大損失,尤其是附近有工作場所的情況下。此外,我們不能否認與這些事件有關的死亡對社會造成沉重打擊的事實。
有時辦公室和工作場所不承認情況的嚴重性。即使是天氣預報也無法預測影響的確切時間和情況的嚴重程度。以下是地震造成可怕情況的一些案例。6.4級地震使建筑物倒塌| 來源。以及因大地震而導致14人死亡的倒塌建筑| 來源。
在大多數情況下,被困在倒塌建筑物瓦礫下的人可以存活一段時間,但他們無法通知外面的人或他們的代表當局他們的存在。雖然救援隊及時趕到并盡了最大努力,但問題是,他們不知道去哪里尋找還活著的人。結果,那些僅僅幸存下來的人無法從倒塌的建筑物中活著逃脫。
即使不僅是辦公室或工作場所,在 Covid-19 期間,許多員工也不得不在家工作。但它也不安全,因為當任何自然災害來襲時,住宅區或住宅區可能會受到影響。
此外,人為的有缺陷的建筑物和結構故障、建筑物著火而找不到逃生門的問題可能會導致與地震或任何自然災害相同的麻煩。拉納廣場事件造成1134人死亡,數千人受傷| 來源。過去十年以來,采礦作業中發生的事故也奪走了很多人的生命| 來源。
這就是 Secure Workspace 發揮作用的地方。在物聯網的現代時代,藍牙/低功耗藍牙 (BLE) 等高級連接選項使通信選項變得簡單可靠。小型集成設備,例如:AWS IoT EduKit具有 IoT 云訪問和 BLE UART 通信協議。因此,可以構建通信網絡并將消息從一個設備傳遞或接收到另一個設備。
每當有人陷入不穩定的情況或遇到問題時,他/她可以通過向最近的與 BLE 連接的AWS IoT EduKit設備發送 SOS 消息來通知。此外,還將有一個管理員 android 應用程序,它可以搜索活動設備并與之連接并監聽響應。
安全工作區的特點
- 個性化注冊:注冊過程包括提供姓名、密碼和信息。
- 每個用戶一臺設備:Secure Workspace 旨在在工作場所建立一個網絡,每個員工都有一個AWS IoT EduKit,他/她可以在緊急情況下發送 SOS 消息。為此,必須為每個用戶提供經過身份驗證的登錄名和用戶配置文件。
- 管理應用程序和主動搜索:用戶有權將 SOS 消息直接發送到管理應用程序。此外,在發生災難或威脅事件后,管理員可以搜索活動設備并與之連接。
- 點對點連接:一個設備可以使用與管理應用程序相同的 BLE UART 協議向另一臺設備發送消息。
用于安全工作區的技術堆棧
- AWS IoT Core:AWS IoT Core 用于偵聽來自設備的 MQTT 消息并采取相應措施。
- AWS DynamoDB:AWS DynamoDB 用于存儲用戶配置文件,例如名稱、密碼和消息。
- AWS Lambda函數:AWS Lambda 函數用作與 AWS IoT Core 事件綁定的無服務器計算機。當 MQTT 消息到達時,我們可以通過 lambda 函數觸發一些事件,例如:從 DynamoDB 獲取數據并發送到設備。
- BLE UART:通用異步接收器/發送器 (UART) 是最流行的協議,用于通過串行端口與計算機設備通信。我們將使用的是 BLE over UART 協議。集成和偵聽數據更改或通過端口寫入數據很容易。
在繼續之前閱讀
- AWS 賬戶:本項目教程強烈建議擁有一個 AWS 賬戶。我們可以在老師的幫助下使用 AWS Educate 帳戶。或者,我們可以使用 gmail 地址創建自己的地址,就像我使用 rahulmohoto.icpc@gmail.com 創建的一樣,然后啟動AWS 免費套餐包。該項目與 AWS 免費套餐兼容。
- 設置角色和策略:在使用 AWS 服務之前,有必要知道我們正在使用它做什么。角色和策略需要根據我們的需要來設置。否則,把所有事情都做對不會得到我們想要的結果。
- 管理員應用:通過“關于管理員應用的一些注意事項”部分對應用程序有一個簡要的了解。
- 關于代碼:AWS IoT EduKit 和 Android 應用程序的代碼可在附加的 GitHub 存儲庫中找到。
環境設置
在我們繼續之前,我們需要為AWS IoT EduKit設備設置環境。需要關注的一些關鍵點:
- 該應用程序使用 UIFlow MicroPython 固件 1.12 構建。構建版本 1.8.1。
- 對于這個項目,我將使用Microsoft Visual Studio Code作為我的代碼編輯器。軟件下載鏈接。
- 我們必須為Microsoft Visual Studio Code 安裝一個插件,它的名稱是vscode-m5stack-mpy。按照此鏈接獲取該插件。
- 我的環境設置如何 -
- 為了在AWS IoT EduKit設備中閃存和燒錄固件,使用了另一個名為M5 Burner的軟件。按照此鏈接獲取該軟件。
- 要了解有關 UIFlow 和 MicroPython 庫的更多信息,請參閱它們的官方文檔。按照這個鏈接將直接到他們的官方文件。
安全工作區如何工作
為了便于理解,我們可以將系統分為兩部分。
- 如果我們發現數據庫中不存在用戶數據 ->注冊過程(第 1.1 節)
- 如果我們發現數據庫中存在用戶數據 -> Dashboard Operations(Section:1.2)
1.1 未找到用戶數據時的注冊流程
注冊背后發生了什么:
- 第 1.1.1 節:檢查現有用戶數據
- 第 1.1.2 節:在完成鍵盤輸入姓名、密碼和消息后進行注冊
1.1.1 如何檢查用戶數據是否存在于 DynamoDB
要檢查 DynamoDB 上是否存在用戶數據,我們需要創建一個可以調用觸發器的事件。作為回報,我們將獲得來自 DynamoDB 的記錄。對于我們需要執行的任務,沒有可用的操作,例如:在“AWS IoT Core 規則”部分從 DynamoDB 獲取數據。
為此,我們可以做的是創建一個AWS Lambda 函數。 Lambda 函數用作無服務器計算機,它可以在觸發某種事件時執行任務。對于我們的案例,我們將使用格式化的 MQTT 消息來觸發事件。在輸出中,我們還將獲得一個 MQTT 響應,但加載了我們想要從 DynamoDB 獲得的記錄的 JSON 數據。
讓我們關注列出的 lambda 函數中的“SendMQTTtoCORE2AWS”函數。
# SendMQTTtoCORE2AWS Lambda Function
# Python 3.8
...
# TODO implement
client = boto3.resource("dynamodb")
table = client.Table("Save_User_Data")
data = table.scan()["Items"]
client = boto3.client('iot-data', region_name='us-west-2', endpoint_url='https://a25wmxf9jzsaoa-ats.iot.us-west-2.amazonaws.com')
# Change topic, qos and payload
response = client.publish(
topic='env/core',
qos=0,
payload=json.dumps(data[0]["User_Data"])
)
...
不僅是一個 lambda 函數,我們還需要一個IoT 規則,它可以作為觸發器來調用該函數。這是我的 IoT 規則“Fetch_Data”來調用“ SendMQTTtoCORE2AWS” lambda 函數。
“Fetch_Data”規則是什么:
- 關于規則:該規則的作用是調用 lambda 函數“SendMQTTtoCORE2AWS”,從 DynamoDB 中獲取數據并作為 MQTT 消息發送到設備。
- 事件觸發:
SELECT Tag FROM 'env/msg' WHERE Tag = "Fetch_Data"
- 行動:調用 lambda 函數。
AWS IoT EduKit發生了什么:
# UiFlow MicroPython 1.12 Firmware
# .. Dictionary["Tag"]="Fetch_Data" this is must otherwise, SQL query won't match
...
aws = AWS(things_name='AWS_CORE2', host='a25wmxf9jzsaoa-ats.iot.us-west-2.amazonaws.com', port=8883, keepalive=60, cert_file_path="/flash/res/certificate.pem.crt", private_key_path="/flash/res/private.pem.key")
aws.start()
aws.publish(str('env/msg'),str((json.dumps((Dictionary)))))
...
**請參閱此處了解如何設置 DynamoDB 表和存儲設備數據
**請參閱此處了解如何使用 python 創建 Lambda 函數
這樣,我們可以從 dynamoDB 獲取數據并將其作為 MQTT 消息發送到AWS IoT EduKit。
搜索現有數據并在設備部分獲取結果已完成。現在,我們可以進入下一部分,即將數據插入數據庫,我們剛剛通過鍵盤提供。
1.1.2 當我們完成姓名、密碼和留言的數據輸入時
在我們完成名稱、消息和密碼的輸入后,將使用該名稱、消息和密碼創建一個字典[一個保存鍵和值對的 python 數據結構]。
# Uiflow MicroPython 1.12 Firmware
...
DictionaryOfSendingInfo={"Name_Data":listOfInputs[0],"Password":listOfInputs[1],"Message":listOfInputs[2],"Tag":"Send_Data"}
...
稍后,字典被發送到 AWS DynamoDB 并作為記錄存儲在表下Save_User_Data.
但是,要在 DynamoDB 上存儲數據這樣的操作,必須觸發一些事件。因此,我們需要在AWS IoT Core 中為此制定規則。
這些是我的物聯網規則。目前,我們只關注“Save_Data”規則。
什么是“Save_Data”規則:
- 關于規則:此規則的功能是在 DynamoDB 上插入設備數據(MQTT 消息),從AWS IoT EduKit 發送。
- 事件觸發:
SELECT Name_Data, Password, Message, Tag FROM 'env/msg' WHERE Tag = "Send_Data"
- 行動:在 DynamoDB 表中插入一條消息。
**請參閱此處了解如何設置 DynamoDB 表和存儲設備數據
AWS IoT EduKit發生了什么:
# UiFlow MicroPython 1.12 Firmware
# .. Dictionary["Tag"]="Send_Data" this is must otherwise, SQL query won't match
...
aws = AWS(things_name='AWS_CORE2', host='a25wmxf9jzsaoa-ats.iot.us-west-2.amazonaws.com', port=8883, keepalive=60, cert_file_path="/flash/res/certificate.pem.crt", private_key_path="/flash/res/private.pem.key")
aws.start()
aws.publish(str('env/msg'),str((json.dumps((Dictionary)))))
...
這樣,字典數據(名稱、密碼和消息)將作為 MQTT 消息(JSON 有效負載)傳輸并存儲在 DynamoDB 上。如果沒有找到現有數據,這就是用戶注冊部分的全部內容。
1.2 找到用戶數據時的儀表板操作
儀表板背后發生了什么
-
Profile view and edit button:
與之前一樣,使用“SendMQTTtoCORE2AWS” Lambda 函數從 AWS DynamoDB 獲取數據。如果按下配置文件視圖按鈕,則可以在“配置文件視圖頁面”上看到輸出。如有必要,我們可以從這里編輯注冊的數據。要編輯數據,我們需要另一個事件,這與我們之前在 DynamoDB 中所做的插入操作不同。現在,我們將不得不創建另一個規則,可以編輯之前保存的數據。
為了達到我們的目的,我們將使用這個 lambda 函數“EditFunctionDynamoDB”。
# EditFunctionDynamoDB Lambda Function
# Python 3.8
...
client = boto3.resource("dynamodb")
table = client.Table("Save_User_Data")
response = table.update_item(
Key={
'Record_Time': data[0]["Record_Time"],
},
UpdateExpression="set User_Data.Name_Data=:n, User_Data.Message=:m, User_Data.Password=:p, User_Data.Tag=:t",
ExpressionAttributeValues={
':n': event["Name_Data"]
':m': event["Message"],
':p': event["Password"],
':t': event["Tag"]
},
ReturnValues="UPDATED_NEW"
)
...
但要調用該函數,必須有一條關于“AWS IoT Core”的規則。在這里,我們將使用“Edit_Data”規則。
什么是“Edit_Data”規則:
- 關于規則:此規則的功能將更新AWS DynamoDB 上的現有數據。
- 事件觸發:
SELECT Name_Data, Password, Message, Tag FROM 'env/msg' WHERE Tag = "Edit_Data"
- 行動:調用 lambda 函數“EditFunctionDynamoDB”。
有了這個,我們可以更新之前保存在 AWS DynamoDB 上的記錄。現在,我們進入下一節。
-
SOS button:
在緊急情況下,我們可以使用此按鈕將之前存儲的 SOS 消息直接發送到附近的設備。將使用BLE UART 進行通信。
# UiFlow Micropython 1.12 Firmware
...
uart_ble = ble_uart.init(user_info["Name_Data"])
uart_ble.write(message)
...
等待!!
我們已經到了可以向AWS IoT EduKit設備或管理應用程序發送 SOS 消息的地步。所以,我們分成兩個部分。
- 發送到另一個AWS IoT EduKit設備(第 2.1 節)
- 發送給管理員android 應用程序(第 2.2 節)
雖然,在這兩種情況下,通過 BLE UART 發送消息是相同的,但接收設備不同。這就是為什么區分它們,將使我們更好地理解。
2.1 兩臺 AWS IoT EduKit 設備之間的點對點通信
來自發件人:
# Sample Code Snippet
# UiFlow Micropython 1.12 Firmware
# From Sender
from ble import ble_uart
...
uart_ble = ble_uart.init("Device 1")
uart_ble.write(message)
...
致收件人:
# Sample Code Snippet
# UiFlow Micropython 1.12 Firmware
# Receive data on recipient
from ble import ble_uart
label0 = M5Label('Received Data', x=133, y=99, color=0x000, font=FONT_MONT_14, parent=None)
...
def on_recv():
# global params
global label0
# Show the received text and make an alarm
speaker.playWAV("res/Alarm.wav")
label0.set_text(str(uart_ble.read()))
...
2.2 向管理應用程序發送 SOS 消息
來自發件人:
# UiFlow Micropython 1.12 Firmware
# From Sender
from ble import ble_uart
...
uart_ble = ble_uart.init(user_info["Name_Data"])
uart_ble.write(message)
...
致收件人:
// Java 8 Android API - 23
// On recipient
...
if(Read.equals(characteristic.getUuid().toString()))
{
value = characteristic.getStringValue(0);
Log.w(TAG, "Value--> "+ value);
// receives data when GATT characteristics match with device service UUID
...
關于管理員申請的一些注意事項
- 在儀表板部分,我們可以添加設備以立即連接和監聽數據變化。
- 搜索后單擊可用設備列表中的特定設備,將彈出一個對話框。在那里可以看到兩個選項。選擇連接:立即連接設備。添加到收藏夾:這會將設備添加到收藏夾列表。所有這些數據都將存儲在Firebase 實時數據庫中。
- 應用程序如何與 FireBase 交互:
- 現在,我的AWS IoT EduKit設備的 GATT 特性 - “READ”已硬編碼在 android 項目中(我們需要為另一臺設備更改它)。因此,現在只能使用該特定設備讀取/接收消息。當我們想通過 BLE 與某個設備連接時,我們必須知道該設備提供了哪些 GATT(通用屬性配置文件)服務,以及確認了哪些特征。由于現在這是硬編碼的,它將適用于一對一的連接,但對于多個設備,這種方法必須是動態的。
視頻演示
在這里,重要的討論主題將是:
- “安全工作區”應用程序如何在AWS IoT EduKit 上運行。
- 管理應用程序如何在 Android 設備上運行。
- BLE over UART 協議如何建立通信并將消息從AWS IoT EduKit發送到 android 設備。
為什么我們如此專注于 BLE 連接
BLE,或者簡單來說,低功耗藍牙連接提供了兩個設備之間的短距離通信協議。連接后,兩個設備都可以共享數據。它們中的任何一個都可以充當發送者(服務器),而另一個可以充當接收者(客戶端)。而且它不需要任何集中式服務器來相互連接。
直到兩個設備都有足夠的電池來打開它們的 BLE 模塊,它們才能進行通信。當任何自然災害發生時,首先斷開的是互聯網連接。出于這個原因,我們無法與他人交流并告知他們我們正在經歷的絕境。但是有了BLE,就可以尋求幫助。
這就是為什么 BLE 是 Secure Workspace 的支柱。
未來的工作
目前,Secure Workspace已通過一對一設備(與另一臺 AWS IoT EduKit設備或管理應用程序)進行測試和運行,以傳輸 SOS 消息。但是,網絡范式中會有很多這樣的AWS IoT EduKit設備。所以,應該有一些操作來知道哪一個要發送數據。
因此,構建輪詢操作將是成功實施 Secure Workspace 的下一個任務。
結論
對于建筑基礎設施脆弱的第三世界國家來說,像安全工作空間這樣的項目非常需要,以應對不斷增加的自然災害/災難,因為它可以對尋找幸存者產生良好的影響,并且當這些災難發生在工作場所或家。
試圖使項目文檔盡可能詳細,并在每個部分之后附加有用的鏈接。希望能幫助到你 :)
?
- 在設計中使用MOSFET安全工作區曲線
- 在DC-DC變換器中繪制安全工作區曲線的方法
- 自然保護區智慧化建設解決方案
- 水族館飼養區追蹤器開源分享
- IGBT安全工作區(SOA)知識點
- 整流器的反向偏置安全工作區(SOA)-AN90015
- 整流器的反向偏置安全工作區(SOA)-AN90015_ZH
- 看懂MOSFET數據表,第2部分—安全工作區 (SOA) 圖
- 《電力安全工作規程》題庫配電部分
- 開源網絡協議分析器WireShark軟件下載 15次下載
- LT3081演示電路范圍安全工作區電源(2.7-40V至1.5V@1.5A)
- 開源課程行動倡議及科學導論綜述 6次下載
- 終端區管制運行效率的集成綜合評估模型 5次下載
- MOSFET 安全工作區對實現穩固熱插拔應用的意義所在
- 基于ZigBee的液氨罐區安全檢測系統的設計_應華平 1次下載
- Linux在車載HPC安全方面的工作原理 247次閱讀
- 了解下什么是壓敏電阻的三個工作區 181次閱讀
- MOS管的安全工作區SOA詳解限制線介紹 668次閱讀
- ?【AWTK開源智能串口屏方案】方案介紹和工作原理 742次閱讀
- 使用Rust和Nomad進行開源游戲服務器管理 517次閱讀
- 前沿開源技術領域的開源大數據一一解讀 1005次閱讀
- 什么是安全工作區?SOA具體如何應用和測試呢? 3287次閱讀
- MOSFET安全工作區和熱插拔電路 2406次閱讀
- 如何掌握用于ARMv8-M軟件開發的信任區 743次閱讀
- 三極管工作在飽和區電路設計整體步驟及實例分析 1.1w次閱讀
- 推薦兩個工作流的springboot項目 1592次閱讀
- 在貼片加工廠中有哪些安全防護需要了解 1306次閱讀
- 光控安全保護電路工作過程 3200次閱讀
- CPU與GPU維護數據結構來保證環形緩沖區的正確工作 6332次閱讀
- 詳述安全繼電器設計及工作原理 3.2w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多