2021年04月

2021年05月・2021年04月・2021年03月

2021/04/18(日)

ESP32-WROVER-EでMQTTSを試してみた


新型コロナウイルス、緊急事態宣言が解除されワクチン接種が広がるまでの間は経済も重視でハンマー&ダンス方式かと思っていたのですが、変異株の流行を抑えられずダンス期間も取れない想定外な状況でしょうか。まん延防止等重点措置対象地域が増え、再度緊急事態宣言クラスの制限がありそうな状況。もうすぐやってくる今年のゴールデンウィークも去年と同じかと思いつつ。宣言解除後の通勤経路の混雑具合からしても然もありなんと思わなくもないわけですが。
繰り返しになりますが、普段どういう行動をしている人がどういう行動をして感染しているのか豊富な情報が欲しい所です。日々の感染者数だけでは気を付けようにもなぁ。
外出自粛ついでに前から試したかった事に時間を割くことに。
産業用プラント等で利用されているらしいMQTT。利用する機会がなかったので試してみる事に。
MQTTSはMQTTにTLSの機能を付加したもの。
今回はエッジデバイスとしてESP32-WROVER-Eを利用。
なぜESP32-WROVER-Eを利用したかと言われれば、WiFi機能を搭載しているESP32系で新しめのデバイスだったから(平日の夜中に深く考えずに注文)。 Cで開発した方が高速で安定動作するイメージがあるわけですが、MQTTを利用して新たに作りたいものがあるわけではなく試すのに時間をかけたくないのでESP32-WROVER-EをArduino化。UARTでCO2センサーと接続、値を取得してMQTTブローカーにPublishする所まで。 サーバ側でMosquittoを利用してサーバをbrokerに。クライアント側はPythonでpahoライブラリを利用してSubscribeまで。
対応したライブラリがなくとも、Web系言語であればWebSocket経由で何とでもといった感じでしょうか。
TCP/IPで独自実装するよりも汎用性を考え、IoT絡みで何か作るモノがあれば今後はMQTTS(MQTT)ベースにしようかなぁその方が楽だなぁと思った次第です。


2021/04/04(日)

Raspberry Pi PicoでW5500


Raspberry Pi PicoとW5500搭載モジュールで時刻を取得してみました。OLEDへ表示まで。
DHCPとDNS部分は既にSTM32系で実現、利用していましたが、NTPサーバから時刻を取得するのは初だったのでメモがわりの記録。
全てUDP通信、IPv4で実現。
1-1. 68番ポートで67番ポート宛、DHCPのDiscoverパケットをブロードキャスト。
1-2. DHCPサーバ(一般家庭では普通はルータ上で稼働)からの返信Offerパケットを受信し、IPアドレス、ネットマスク、デフォルトゲートウェイ、DNSサーバの情報を取得。
1-3. DHCPのRequestパケット(IPアドレスを返信)をブロードキャスト。
1-4. DHCPサーバからの返信Ackパケットを受信し、IPアドレス、ネットマスク、デフォルトゲートウェイ、DNSサーバの情報をモジュールに設定。

2-1. DHCPで取得した通信先、DNSサーバに対して53番ポート宛、NTPサーバ(今回はntp.nict.jpを利用)のIPアドレス問い合わせパケットを送信。
2-2. DNSサーバから問い合わせ返信パケットを受信、NTPサーバのIPアドレスを取得し通信先としてモジュールに設定。

3-3. DNSで取得した通信先、NTPサーバに123番ポートで123番ポート宛にパケットを送信。
3-4. NTPサーバからNTP返信パケットを受信し64ビットNTP TimeStampのうち、秒部分の32ビット(1900年1月1日 0時0分0秒からの経過秒数)を利用、うるう年等を計算して時刻を表示。


Blog

CCNA(Cisco Certified Network Associate)取得を目指している取得した取得後有効期限満了したぎりぎり20代30代突入30代30代後半40代突入管理人のブログです。

Google Maps API

googlemap.jpg
地図 ブログ

 

Twitter

Recent Entries

Category

Monthly Archives