ThingSpeakからデータを取り出す
だいたいできるようになった。
前回の記事で、readAPIkeyと、readchannelIDを使って、thingSpeakReadで読み出す。この際、データ数が8000/回に制限される。140回/日であれば、57日分になる。
Sens'itを試す3
IFTTTのvalue1,2,3、少しわかった気がする。IFTTTでは、この変数名は融通が効かず、この変数名でbodyに引渡しやらないとダメのようだ。SORACOM Harvestでデータを可視化する際、バイナリパーサに「@sensit」を設定している(そもそもそういうふうに誘導されてた)ので、valueという文字列がない。
したがって、定義済の「@sensit」ではなく、独自にバイナリパーサの設定が必要。しかし、データ構造がわからない。
Sens'itを試す2
前回からの続き
SORACOMのBeamを使うと外部サーバを叩けるみたい。これを使って他のサーバに通知を送って表示するようにすれば良いのだろうが、いろいろとばっちりの投稿がない上に、あっても用語がわからず頓挫してしまう。(わからない用語が多すぎる)。最終的に解決したのは、IFTTTという連携サービスを使ってLINEグループへの通知させるというもの。
Sens'itを試す
実家の親が独居になったとき、実妹から「見守りで冷蔵庫の開閉を監視するのがある」、というのを何度も聞かされた。それがあるのは知っていたが、
なぜ何度も言うのか
それをしたい(やったらどうかという暗黙の指令なのか)ということだろうか、、と考えsigfoxで実現できそうなので、いろいろ思惑を考えていたが、振動センサーや加速度、あるいは磁気センサーなど。電池駆動で長期間というのは少々敷居が高いかもななんて耽っていたら随分時間が経ってしまっていた。過去にあった(現在は販売されてない)見守りくんは冷蔵庫の中に設置して扉が開くと庫内の電気がつくので照度センサーで開いたところを狙ってデータを送信するというものだったと思う。
M5Stack用Sigfoxモジュール
SNOCのSigfox Breakout Board [BRKWS01]が購入できなくなった。今だけかもしれないが市場にはなさそうである。共立にたくさん在庫があったようだが、販売終了になっていた。開発キットを拡販することはもう終わりにして事業収益に特化するような動きになっているのかもしれない。
23年5月時点で入手できたものに、M5Stack用のモジュールがある。スイッチサイエンスで、現時点で在庫が10個。売り尽くしたら販売終了となると考えられる。
ThingSpeakにcallbackする
Ambient.ioのデータ保管期間が1年となっていたので、1年超えたデータもまとめておきたいなと思い彷徨っていたところ、MathWorksのThingSpeakがデータ保存期間について言及されてなかった。(ほんとはあるのかもしれないが)matlabのライセンスを持っていなくても使え、4channelまでなら無料で使える模様。英語サイトしかないけど、特に問題はないと思う。
偶然にもmatlabライセンスも持っているので、データ表示したら楽しいかも、とか。
ユーザ登録できれば、チャンネル作るところまでは普通にできると思う。view関係のタブの横にAPI keyというのがあり、そこを開くと、キーが記載され、しかも、GETによる埋め込みコードが既に作成されている。
sigfox+Nucleo
sigfox、開発キットの1年間無料枠がなくなったが、2台目を購入した。稼働しているmsp430の内蔵温度センサは継続するとして、BME280の環境センサーを使った、温湿度気圧を同時に蓄積しようとかんがえたが、MSP430のI2Cがどうにもうまく設定できない。
MSP430のI2CはG2452のUSIでよく使っているので、気にしてなかったが、G2553のUSCIだとどうにもうまく設定できず、通信できたりできなかったりでつまづいたまま。USIはSPIとI2Cのみサポートしている。USCIはUARTもサポートしている。チャンネルは複数使えるはずだし端子も間違ってない。sigfoxDevKitはUARTなので、G2553を使うしかないのだが、現在あきらめ中。
そこで、Nucleoのmbedで実験していみた。簡単に実現できるのだが、OS5.15だからか?単3乾電池新品で半月ってところ・・・う〜っむ、マイコンしか乗ってない基板を作り直してるので、OSじゃなければ、そんなことないと思うけどなー。
バイトHEX文字列を数値に変換する
MATLABのところでも書いた。バイトHEX文字列を数値に変換する
Pythonではunpackを使う。これが分かりにくい、僕にとっては。しかし、pythonの方がこの手の記事は見つけやすい。
バイトHEX文字列を数値に変換する
sigfoxにデータを送信する際に、floatデータならそのまま4byteデータとして送信するが、これの復元で調べまくった。
25.9964371は、41cff8b4 と表現される。これは、c言語で共用体を使えばそれほど難しくない。
union {
unsigned long longDeg;
float floatDeg;
} temp32;
floatデータとして変数に格納すればlong整数で取り出せ、その逆も然り。このデータをmatlabで復元したいが、matlabは標準でdoubleになっていて、単精度浮動小数だとうまくいかない
hex2num('41cff8b4') は、1.072785408000000e+09 と算出されてしまう。41cff8b4を倍精度に変えてしまえば良い。ここに変換サイトがある。