マイコン一覧

liva経由アップロード

センサーデータのアップロードの仕組みを変更した。

自宅CentOS7なlivaにmysql5.7を入れて、各センサーノードはここへまずアップロード。livaの中でcronでmysqlからambientやgcpにアップロード。自宅内の一次DBなのでディスク容量の余裕ができたため、データのアップロード間隔を短くした。cronで外にアップロードするのは5分とか10分おきで様子見。

一次DBのデータを元にpiと5インチLCDで気温とか消費電力やら表示させる予定。スマートスピーカでの音声問答まで行けたらいいなと思ってます。


ベランダセンサーちょっと変更

ベランダセンサーをちょっとプログラムを変更。
昨日のアップロードチェックとからんで。このセンサーボード、2月末から稼働してますが過去2回ほどハングしてます。
それも困るので、watch dogを導入してみた。ハング時にはうまくリセットかかるかな。


今日の電子工作作戦0407

1) 水槽水温計をmbedからmicropython on ESP32に移行した。ココだけでなくabmientへのデータアップロードも対応。水温センサー部分はmbed版のを流用。ブレッドボード作成なので、ジップロックで埃よけとした。

2) ここへのデータアップロードが正しく動作してるかの確認用にスクリプトを入れた。3時間毎に起動して、直近1時間に1件もアップがないモノをリストアップして自分メール。だたこのサーバ入れてるgoogle cloud platformのgoogle compute engineでは、port25,465,58でsmtpが通りません。こないだ宅内liva用にsendgridのアカウントを作ったのでそれを利用。postfixをインスコして設定。無事メール送信できるようになった。

3) micropython on ESP32でWi-SUNのテスト。
ネット上のいくつかのコードをサンプルに移植をしてたが、
・通常pythonからmicro系への変換
・不要機能のコードの削除、変更
・python2系からpython3系の変換
と変える部分が多くて、一番やっかいなのがpython2系からの変換。まとめてやってたら疲れちゃったのでこの件は一旦放置とする。
Linux上でpython2で動作確認した上で、python3への変更と動作確認・不要機能の削除を実施。そのうえでmicropythonへの移植 と段階をおかないと駄目だ。


micropython on ESP32

ESP32が宅内に増殖してるのでmicropythonも試している。
ssl使ったらメモリが無くて落ちたけど、httpなら大丈夫かな。
水層水温をココとambientにアップロードするのに使いたい。
Wi-SUNのスマートメーター電力情報も、今はmbedからpi zero wに切り替えて仮運用してるけど、micropython on ESP32で安定すればさらに切り替えたいなぁ。


クラウドでなく自宅内の細々Linux機をいじる

piの構築を楽にするべくansibleを使うべくCentOSを入れようとx86なマシンを出してきた。Livaの初期型。メモリ2GでストレージはeMMC64Gでファンレス。Windows8が入ってて10にアップグレードしてあったけど捨ててCentOS7.4を投入した。CentOS、昔はeMMCにはインストールできなかったが、時が解決したようで何の問題も無かった。
で、SElinuxはdisabledにしたが、firewalldはiptableに戻すこと無くそのまま使う。通知メール用に最近取得したsendgridの無料アカウントでpostfixからメールも送れるようにした。logwatchもいれて、どうせなのでpiでやってるdnsmasqをこっちに移した。

その後、pi zero wでwi-sunモジュールのテストを試みるがまったくつながらない。pi B+では動いたのだが・・・。いろいろ調べると最近のbluetooth搭載piはttyAMA0がBTと直結になって邪魔してるみたい。切り離し方法を見つけてそのとおりにやったら無事動作しました。


ひたすら作業

ひたすらGCPのサーバの環境構築作業。
wordpressの方は動作確認して、後はデータを移すくらい。imageのリンク切れがあるのでそこは直したい。古いタイプのgoogle mapの埋め込み地図の残骸とかも。
センサーのデータに関する部分は、テーブルにアップ出来るとこまでは確認した。水槽画像はアカヒレとエビしかいないので一旦停止して、raspberry piともっと性能の良いカメラで再構築か。今のカメラはシリアル接続ですよ。マイコン部分は最初Arduinoでmbedにコード移植して安定してるけどね。
早ければ連休明けにはこっちを閉じられるかな。 左手だけのキータイプなのでtypoが多くて時間がかかります。


ベランダセンサーの値が変

16:40からベランダのセンサーの値がおかしい。気温なんかマイナス135.08度だし、UV指数は655.35。どれも固定値で変動はなし。ただ、CDSをつかった明るさセンサーは通常の動作を記録していた。他のセンサーとの違いはCDSは分圧した電圧をADCで計測している。他のセンサーは全部i2cバス接続。んーi2cでなんか起こったか?調べる手立てもないので(ロッジックアナライザは退院後の掃除で捨てた)リセットして復帰させた。あまりに変な値だったら、自己リセットするようにコードを書き換えたらいいかな。



センサ関連だいたい移行

 雨センサを移行したので今までの arduino,mbedの環境を停止し片付けた。雨センサのXBeeからの情報はraspberry piにUSB-UARTアダプタでつないだXBeeで受信してる。受信ソフトはpython3 (3.6)で書いて。XBeeのライブラリはxbee-python。digi謹製のdigi-xbeeと両方試したが前者の方がほしい情報に早く行きついた。余裕あるときにdigi-xbee用に書き換えてもよい。
 っていうより、雨なのに雨センサが感知してないです。コード断線したかな、チェックしよう。センサーの電池の電圧はXBeeのremote_at(%V)でモニターできてます。センサー側がperiodic sleepで寝てるので、雨データを送ってきた時に寝る前にすかさずremote_atを送り込んで返してもらってます。
 さて、ベランダのセンサーの値はココのperconaとambientにおくってるけど、piにも置いておこうとsqliteを検討。そのデータをすぐみられるように、piにAmazonでタイムセールになってた5インチモニタをつけた。静電容量で無く感圧だがタッチパネル。で、表示するアプリの環境はErectronを考えてる。となると、センサーか読みとってここやambientに送ってる部分やXBeeまわりを node.jsに変えたくなるなぁ。どうも pythonの閉じがないブロックに慣れない。


わかりにくいけど、やっぱ切れてました。センサー接続部が。まとめ買いした基板のあまりがあったので、線をはんだ付けして取り替えました。線をよじってつなげるだけでも片手だと大変です。なので右手も参加してもらうんだけど手関節(=手首)が自由に動かないもんだから方向が合わないんです。


風が強いので工作ひきこもり

 ベランダにあらたに作ったLuxセンサが滑らかな値にならないので、CDSでの分圧のADC入力を追加した。ESP8266の時は0-1V測定で使いづらかったADCもESP32では減衰器が入って0-3.6Vで測れるのでgood。1個センサーがふえるとベランダハード&ソフト・中継用mbedとRaspberry Pi・AWSのDBと変更をかける必要がある。
 ベランダのハード&ソフトを変えるので、雨除けジップロックも横向きに変更。雨が電源のUSBケーブルを伝ってESP32まで届かないように。
 つづいて、雨センサーの中継の変更。PiにコーディネータのXBeeつないで対応する。この実験中に雨センサのケースを破壊してしまった。紫外線でもろくなってた。同じプラケースを宅内で捜索してなんとか発見。こいつの中も結露とかの所為かXBeeの金属部分に錆がういていた。で、Xbee-Python、まだ理解しきれてない。ArduinoとmbedはC/C++だったから楽だったけど、慣れれば何とかなるでしょう。今週末までにPythonに移行したい。