見出し画像

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の運営にも貢献できるのでよろしくお願います。