ESP32でTWSNMPのセンサー開発3日目:WifiとBluetoothの共存でおこるプログラムのサイズ問題は解決したがパニックに遭遇する
今朝は3時半に起きると助手の猫さんが待っていました。
4時から開発開始です。
昨日、悩んでいたWifiとBluetoothのライブラリを
のように使った時のプログラムのサイズ問題は、なんとか解決できました。
FLASHメモリー増量のボードを買わずにすみました。
解決策は、この方が書いている内容と同じですが、Arudino IDE 2.xを使うともっとスマートな方法でできました。ツールのメニューに、
パーテションの設定を変更するメニューがあったのです。これをOTAなしの2MB+2MBに変えるとビルド成功して書き込みで起動もできました。
昨日、この方法を見つけた時にモチベーションが最高レベルまでアップしました。ESP32は最高!
twBlueScanセンサーの移植を開始しました。
オムロンの環境センサー
やSwitchBotの温度、湿度センサー、
人感センサー
電力センサー
から情報を取得することができました。
これをTWSNMPにsyslogで送信しようとすると、プログラムがパニックで再起動を繰り返すようになりました。
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x40092da4 PS : 0x00060130 A0 : 0x801d2df0 A1 : 0x3ffcdbb0
A2 : 0xffffffb7 A3 : 0xffffffb3 A4 : 0x000000ff A5 : 0x0000ff00
A6 : 0x00ff0000 A7 : 0xff000000 A8 : 0x00000000 A9 : 0x3ffce00c
A10 : 0x3ffcdffb A11 : 0x3fff1598 A12 : 0x00000011 A13 : 0x3fff1b88
A14 : 0x00000000 A15 : 0x00000001 SAR : 0x00000004 EXCCAUSE: 0x0000001c
EXCVADDR: 0xffffffb7 LBEG : 0x40092dc5 LEND : 0x40092dd5 LCOUNT : 0xfffffffb
Backtrace: 0x40092da1:0x3ffcdbb0 0x401d2ded:0x3ffcdbc0 0x401d9e22:0x3ffcded0 0x401d9e5e:0x3ffcdf60 0x400d986a:0x3ffcdfa0 0x400d378e:0x3ffce040 0x400d39b3:0x3ffce130 0x400d3af1:0x3ffce220 0x400da83d:0x3ffce240
このエラーメッセージだけだと、どこで発生しているか検討がつきません。syslog送信のための追加したソースコードを削除して、少しずつ追加してみてやっと場所がわかりました。これで1時間悩みました。
syslogのメッセージを組み立てる
msg.printf("<%d>%s %s twBlueScan: type=SwitchBotEnv,address=%s,name=,rssi=%d,temp=%.02f,hum=%.02f,bat=%d", 21 * 8 + 6, getTimeStamp().c_str(),wifi.localIP().toString().c_str(),address.c_str(),rssi,temp,hum,bat);
コードのホスト名の代わりのIPアドレスが抜けていたため、文字列のポインターがおかしな値になっていたようです。
修正してなんとかsyslogを送信できるようになりました。
ESP32開発のモチベーションアップしてから寝たので、寝ながら壮大なアイデアが浮かびました。
今週は、そのアイデアを実現していこうと思いますが、今朝は時間切れです。
明日に続く
開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。