技術検証済。MVP!ゆーしょー 🍻
連投禁止w 定期的なイベントならタイマー回してバケツリレーしたらいいからな、温度が変わったときだけ不定期に通信するように修正した。初期値が気になるけどしばらくこれでー
Socket.IO
https://socket.io/get-started/chat
WebSocket proxying
http://nginx.org/en/docs/http/websocket.html
備忘:
WebSocket周りはSocket.IOライブラリのサンプルをコピペ/流用している。マイコンとかリバースプロキシ周りで時間がかかったなー
- MicroPythonの開発環境「Thonny」をインストール
Arduino IDE/Thonny/VScodeの3択。Arduino IDEはArduino言語なので不採用。VScodeの拡張機能は使いづらかったので不採用。Thonnyはエディタとして宜しくないけど消去法で採用。It’s a thonny! - MicroPythonのスクリプトのOSErrorやHTTPErrorのハンドリング
無限ループは落としてはいけない。 - Raspi4とPicoのどちらかが停止/起動した場合の動作確認
マイコンのPicoは無条件に毎秒通知してくる。 - サービスの依存関係?(未解決事件)
raspi4(サーバ側)だけをOS再起動した場合、初回のWebSocket通信からエラーが通知されて復旧できない。systemdのserviceファイルを書いてNginxとアプリに依存関係を設定してみたり起動順序を入れ替えても解消せず。
“””
websocket.js:122 WebSocket connection to ‘wss://kozawa.tokyo/api/socket.io/?EIO=4&transport=websocket&sid=wNbbtvtR6kbla2AIAAAA’ failed: WebSocket is closed before the connection is established.
“””
Nginx単独の再起動が必要となる。
→serviceファイルを作成して暫定対処済。 - アプリのサービス化
バックエンドにNode.jsのAPIサーバを立てて、Nginx/リバースプロキシを設定して、Socket.IOで/api/のサブディレクトリを使用するようにあれこれ試行錯誤した。Nginxの公式ドキュメントにたどり着くまでが長かった。プロトコルのバージョン?アップグレード?https/ws周りググって勉強にはなった。 - お天気API
気象庁がJSONファイルを公開していた。
https://www.jma.go.jp/bosai/forecast/data/forecast/130000.json
weatherCode
https://www.jma.go.jp/bosai/forecast/ にアクセスしてデバックツールの Console にて「Forecast.Const.TELOPS」を実行すると最新のweatherCodeが取得できる。情報豊富、先人の方々に感謝ー
→副産物的な「今日の天気」を作成&公開した。
バックエンドにAPIサーバがあったら何ができるー?わくわく
コメントを残す