
ESP32でTelegram用のボットを動かすとき、Wi-Fi切断やメモリ不足でメッセージが消えてしまう問題に悩まされた経験はないだろうか。Maker「Victek」氏が公開した「KissTelegram」は、メッセージをフラッシュメモリに保存して再起動後も送信を継続でき、外部ライブラリへの依存もゼロという設計だ。
ESP32でTelegramボットを構築するライブラリはいくつか存在するが、多くはArduinoのStringクラスに依存している。Stringは便利だが、動的メモリ確保を繰り返すとヒープ領域が断片化し、長時間稼働させるとメモリリークで動作が不安定になりやすい。
KissTelegramはStringを使わず、固定長のchar[]配列でメッセージを処理する。メモリの断片化が起きないため、24時間365日の連続稼働を想定したシステムでも安定して動作するという。
クラッシュしてもメッセージを失わない
送信待ちのメッセージはLittleFSに保存される。Wi-Fiが切断されても、ESP32が再起動しても、キューに入ったメッセージは消えない。接続が復旧すれば自動的に送信を再開する。メッセージには優先度(CRITICAL、HIGH、NORMAL、LOW)を設定でき、重要なアラートを先に送信する制御も可能だ。
電力管理も細かく設計されている。BOOT、LOW、IDLE、ACTIVE、TURBO、MAINTENANCEの6モードを備え、待機中はポーリング間隔を延ばして消費電力を抑える。大量のメッセージが溜まるとTURBOモードに切り替わり、50ms間隔で10件ずつ処理して素早くキューを消化する。
PIN認証付きのOTAアップデート
ファームウェアの無線アップデート(OTA)機能も内蔵している。Telegram経由で.binファイルを送信すると、PIN認証とチェックサム検証を経てアップデートが適用される。更新後60秒以内に/otaokコマンドで動作確認しなければ、自動的に前のファームウェアにロールバックする仕組みだ。
カスタムパーティションにより、ESP32-S3の16MBフラッシュのうち13MBをSPIFFSに割り当てられる。標準構成の5MBと比較して8MB多く使える計算になる。ドキュメントは英語、スペイン語、フランス語、ドイツ語、イタリア語、ポルトガル語、中国語の7言語で用意されている。
対応ハードウェアはESP32-S3(16MBフラッシュ、8MB PSRAM搭載モデル)で、MITライセンスで公開されている。

