服务器具有挂起的重新启动_ESP8266与网络服务器实时通讯
背景知識視頻教程
Bootstrap 4布局:響應式單頁設計?viadean.comNode.js,Express,MongoDB等:2020年完整的訓練營 - 國外課棧?viadean.com高級Express - 國外課棧?viadean.com目前,所有已呈現的通信都是基于請求響應方法的,其中一個實體發送請求,另一實體發回響應。 但是在某些情況下,您需要ESP8266模塊與服務器之間的實時通信,而不僅僅是事務。
實時通訊協議
ESP8266流數據
要從ESP8266流傳輸數據,我們首先需要在ESP8266與服務器之間建立連接; 通過連接流式傳輸的數據將是X,Y和Z軸的加速度值。 ESP8266將從ADXL345芯片讀取它們,并將其發送到nodeJS服務器。 可以從服務器將數據發送到同一服務器上連接的瀏覽器,也可以將其寫入數據庫以進行進一步分析:
最終電路還可以包括一個時間序列數據庫,例如InfluxDb,用于存儲由ADXL345傳輸的值。
添加數據庫可以使您從多個加速度傳感器收集各種數據,將它們存儲在數據庫中,根據要求檢索它們以將它們與當前值進行比較,或者使用當前和歷史數據繪制漂亮的圖形。
服務器還可以對某些值做出反應,并發送警報(電子郵件,SMS),并將數據發送到其他ESP8266模塊以做出反應,或發送到其他服務器。
ADXL345加速度計
它是由Analog Devices(AD)生產的一種超低功耗3軸加速度計,能夠進行高達±16g的高分辨率測量。 如果您僅打算測量地球的重力,那么±2g可能就足夠了。 對于汽車運動,±4g很好,但是如果您要跟蹤突然停止的物體,則需要±16g:
加速計連接ESP8266
代碼
由于該sketch還有一些用于WebSocket連接的額外類,因此這里僅顯示.ino文件的基本部分。
包含庫:
實例化一個accel對象并創建一個唯一標識作為類構造函數的參數:
為服務器名稱或其IP地址分配空間,并將默認端口設置為1234。稍后,用戶將能夠在Wi-Fi設置過程中選擇一個:
聲明將使用的全局變量:
如果要格式化SPIFFS并將clean-g再次刷新到ESP8266,請將clean_g設置為1:
通知我們需要將配置保存到SPIFFS上的config.json文件的回調函數為:
在setup()函數中,它將初始化并設置ADXL345芯片:
初始化傳感器。 如果傳感器未連接到ESP8266開發板,請等待:
將范圍設置為適合您的項目的任何范圍。 ADXL345最多可支持±16g。 根據您的應用程序,可以通過更改SetRange函數的參數來選擇其他值:
接下來,從SPIFFS config.json文件中讀取配置。 如果未找到配置文件,則ESP8266會假設它未配置,因此它將以接入點模式啟動,并等待用戶設置Wi-Fi SSID,Wi-Fi密碼,服務器名稱和服務器的端口,將用于連接到:
使用自定義字段(例如服務器名稱和服務器端口)以及將保存到SPIFFS的Wi-Fi SSID和Wi-Fi密碼配置WiFiManager,以便在每次ESP8266重啟時自動連接:
現在,我們擁有將保存到SPIFFS的所有信息。 本部分僅在首次配置ESP8266時調用。 引入的信息將是持久性的,因為現在可以在每次引導時對其進行保存和檢索:
現在,我們將連接到服務器,然后,我們將發送一條連接消息,其中包含從ESP8266的MAC地址派生的唯一標識。
服務器可以使用此消息來識別ESP8266并動態構造一些Web界面。 在這種情況下,如果服務器收到連接消息,它將構建一個圖形,該圖形將實時顯示所有三個軸的接收值:
在主循環中,我們將:
- 在每個時間間隔讀取加速度的值,并將構造一個JSON消息,該消息將發送到服務器
- 檢查是否有來自服務器的傳入消息。您還可以從服務器控制ESP8266; 您可以設置一些參數,重新啟動ESP8266,觸發某個GPIO,甚至通過格式化SPIFFS將ESP8266重置為其默認值。
- 檢查連接狀態,如果有必要,請重新連接到服務器。
同樣,在loop()函數中將檢查連接狀態,如果有必要,如果連接丟失,則重新連接到服務器:
檢查是否有來自服務器的傳入消息:
如果ESP8266收到一條名為welcome的消息,它將以一條名為connection的消息及其唯一ID響應:
如果收到的消息為resetModule,則EPS8266會自行重置。 可以在此處添加很多消息,以更改GPIO的狀態,讀取GPIO狀態,從A0讀取值或將PWM寫入GPIO:
檢查與服務器的連接,如果有必要,請重新連接:
服務器端
服務器端使用了Node.js和Express.js.。啟動服務器步驟:
打開瀏覽器,將其指向服務器的IP地址和端口,您將在SmoothieJS提供的漂亮圖形上看到加速:
按下重新啟動ESP8266將遠程重新啟動您的模塊,如果您從網頁上按下重新初始化ESP8266按鈕,則ESP8266將重置Wi-Fi憑證,IP地址和端口號的所有數據。
您可以在同一服務器上添加多個模塊,對于每個新連接,服務器將為其添加新的圖形和新的按鈕。 這樣,您可以監視同一頁面中的多個傳感器,而無需刷新它或執行任何操作。 如果您想為您的家庭自動化平臺提供一個不錯的儀表板,這非常好
作為改進,您可以添加時間序列數據庫(例如InfluxDB)來存儲接收到的值,并具有所需的持久性。 要創建更復雜的儀表板,可以使用Grafana(https://grafana.com/):
服務器端代碼包含兩部分:
后端代碼
參閱
ESP8266與網絡服務器實時通訊 - 國外課棧?viadean.com總結
以上是生活随笔為你收集整理的服务器具有挂起的重新启动_ESP8266与网络服务器实时通讯的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中类和对象的一些注意事项 ---继
- 下一篇: linux mpeg-4,嵌入式MPEG