LoRa Buttonの検証④ 押し方に応じたデータ変化の読み取り

はじめに

今回は LoRa Button の押し方によって、取得したデータのどこに変化があるのか調べてみました。

元々の仕様

参考元のGitHubページ を見ると、LoRa Button は、1回押し・2回押し・3回以上押し・長押し の4パターンの押し方ができるよう初期設定されています。

取得データの分析

前回の記事で確認したデータ部分に着目して、それぞれの押し方で複数回取得したデータから傾向をとりました。

ChatGPTにデータを流したところ・・・

4桁ずつ区切ったうちの4番目。
つまりpayload[20]~[23]の数字が怪しいという結果になりました。

そこで、追加で複数のデータを取り・・・(途中でなんとなくの結論が見えてきました。)

このデータを使用するにはあまりにも精度が低そうです。

イマイチ何に使用するデータなのかわかりかねました。

payloadフォーマッタ

GitHub ページには、LoRaWANサーバー上に設定するCodec が存在しました。
これをChirpStack 上に設定していきます。

登録済のプログラム

LoRaButtonの検証③ Modbus経由でNodeREDにLoRaButtonのデータを送る方法 で、
すでに 2回押し・3回押しと長押しの対応 を為すプログラムを登録しました。

フォーマッタの登録

Device Profiles の Codec を開き、JavaScript functions を選択します。

payload フォーマッタ ページから、ソースコードをコピーしペーストします。

動作確認

Applications の Events からデータを参照します。
「+ up 」をクリックすることで JSON で参照できます。

フォーマット前のデータ

フォーマット後のデータ

フォーマット前後を見比べると、object: が追加されており、電池電圧とボタンの押され方に応じた数字が追加されています。

button_pressed は、1回押し→1、2回押し→2、3回以上押し→3、長押し→11 と反映されます。

読み取りの結論

前回取得したデータから押し方を判別することは難しいということがわかりました。

また、payload フォーマッタを登録することで押し方を判別する機能を持たせられる。

しかし、今回の検証では、すべての押し方から得られたデータが 1 と 11 のみであったため、
押してすぐ離した場合か、長押しした場合かの 2パターン しか得られませんでした。