Make一覧

久しぶりにmake系でも

寝室の照明のコントロールにraspbery pi zerowに赤外線LEDを付けたのを使ってる。こいつが反応しなくなっていたので調査。
ログファイルを見る限りgoogle homeからIFTTT通ってzerowまでは通っている。赤外線発光コマンド irsendがこけていた。どうやら最近のカーネルでlirc関連の制限値が変わったようで、それでエラーとなってる。仕方無いからカーネルバージョンを巻き戻したら難なく動きやがりました。まったくなんで値(LIRCBUF_SIZE)を小さく変えるんだよ。

m5camera
ESP32使ったカメラモジュール。前、ベランダでやってたように定期アップロードを試みた。前なんて、Arduinoでシリアル接続のカメラをベランダに置いて、部屋の中のmbedとXBeeで無線通信させて使っていたんだが。今は消しゴムサイズで全部やってくれる。
アップロード先は自分サーバではなくクラウドストレージにした。AmazonPhotoが空いてるので使おうかと思ったが、今はAPI公開してないらしい。なのでGoogleDrive。最初、サンプル見つけてなかなかうまくいかなかった。原因はサンプルについてるgoogle.comの証明書が古かった。修正して無事定期アップロードできた。あとは光センサーと連動さえて、真っ暗な時はアップロードしなくしよう。

台風で退避した雨センサー
台風19号の時に部屋に退避していた。ついでだからと電池を交換していたら外装が砕けた。ベランダの雨のあたるところに設置してあるから紫外線浴びまくりで樹脂がボロボロになってた。2年前退院してきた時も同じように壊れたが、あの時はまだ同じサイズのケースがあったので事なきを得た。
今回はジップロックに入れて仮運用となった。まぁ、中のXBeeモジュールもケースが錆さびだしそろそろ終わりかと。
そういうわけでESP使って新センサーを作ろうとは思ってる。間欠deepsleep運用すればWiFiでも電池でなんとかなるんでないかと。問題ははんだ付けとケース加工。時間かければ&ツレに手伝ってもらえばなんとかなろう。


ESP32-CAM準備中


 ESP32-CAMなるものがお安く売られてるのに気づいて、テスト用に1つゲット。意外と日本語の情報がすくなくて海外サイトを探り中。リセットSWが基盤裏にありピンにがRESET端子が出てないのが厄介。プログラミング後のRESETはコードをOTA対応にすればなんとかなるものの。WiFiが死んでるとそれではリセットできずになる。最終的には防犯的に使えればいいが、ちょっとづついじります。


ベランダセンサーを入れ替え

 連休前半はベランダのセンサーの作り替え。
 明るさ(CDS)、気圧、温度、湿度(BMP280)だけにした。データは今まではプルだったのを5分おきのプッシュに変更。この変更を入れたので、google home&ifttt&raspberry piでやってた外の気温レポートを修正した。いままではベランダセンサーに気温を聞いていたところをambientから取得するように切り替えでOK。リアルタイムのデータは取れないけど、5分毎だからまぁ良いだろう。多少データにスパイクがあるものの動作はしている。
 あ、あとOTAでのプログラムコード書き込みに対応させたので「ベランダに出てボードを外して来て書き換えてまた戻す」といった作業が基本的には要らなくなった。部屋の中からプログラムコード書き換えができる。バグってループさせたりしなければ大丈夫な筈。


湿度センサつけました

昨日テストしておいた通りに、午前中にベランダからセンサーブレッドボードを持ってきてAM2302を配線した。(画像の右上の白いのがAM2302。)データ入力ピンは25ピンからセンサーに近い13に変更した。
 湿度センサ、長くもってくれるといいのだが。次に試すのなら本来今回使いたかったAM2320ですね。


ベランダの湿度センサが調子悪くて

 ここんとこベランダの湿度センサの調子が悪く、値が100%を超え1000くらい出ることがあった。なので昨日一旦湿度センサを引っこ抜いて引退させた。
 ただセンサを引っこ抜いただけだと、コードで変な値が取れてしまいrebootを繰り返してしまうようだ。「ようだ」と書いたがそういう風にコードを書いたのは自分だが。
 コードを書き直して、存在しない湿度センサを読みに行かないようにして値は常に−1を返すようにしておいた。
 併せて違う湿度センサも入手済みでというか。AM2302(DHT22)だよ!。本当はインターフェイスにi2cが使えるAM2320がほしかったのに間違えた。もったいないからAM2302の1wireもどきのインターフェイスで対応とした。テスト用ESP32で正常動作を確認できたので明日ベランダのブレッドボードにセンサーを取り付けよう。ついでだがESP32のコンパイル環境もLinuxLite上につくった。Liteであとやり残してるのは、・BlueToothスピーカの自動接続 ・スマホとUSB接続したときに安定してストレージが見えるように ・Ubuntu派生系なら環境整備を自動化できるように ってところかと。


雨センサーの電池交換 2018

 日曜くらいから値が取れなくなっていたベランダ設置の雨センサーの電池を交換した。交換したらXBee通信中のLEDも点くようになって無事に値が取れるようになった。換えた電池は単2のエボルタNEOを直列2本。交換したての状態でXBeeの電源ADCでの計測値は3.113V。前回電池交換したのは2017/9/13。ほぼ1年です。雨センサはESPで2代目作成を計画してるので、出来たらどっちが電池がもつか比較したい。
 


pi2 aptで壊れて再構築

 宅内IoTにしてるraspberry piの一つが壊れた。ベランダセンサーからデータを取得したり雨センサーからの通知をxbeeで受け取ったり、そしてそのデータを別マシンのRDBに書き込む役割をしていた。こいつのソフトアップデートしとこうと木曜帰宅後にapt updateしてapt upgradeした。いつもより時間がかかる。1つのアプリで数時間かかりそうなのがあったので、キャンセルしてみた。で、再起動して再度aptを実行すると E: Error reading the CPU tableでどうにもならん。
 というわけで再インストール。昨晩、最新のRASPBIAN STRETCH LITEをダウンロードさせながら寝たので別microSDにインストール。もとのSDも読める部分はあるのでLinux Liteからpythonアプリのコードを無事退避。raspbianの初期設定(password変更、ホスト名変更、locale変更, timezone変更、ipv6禁止、ipv4固定化、swap禁止、vim-tyny消して普通のvimを導入 など)を実施。この辺り、自動化させないとなぁと思いつつしてない。(仕事でも自動化させたいブツが入りそうだがWindowsなんだよなぁ)。
 改めてapt update, apt upgradeを実施。pythonコードを戻して、pip3でライブラリをインストール。手起動でpythonコードの動作確認してcron登録して復帰完了。左手だけでも1時間半くらい。SDにイメージ焼くのとaptが時間かかる。
 さて、自動化のために ansibleのplaybook書くかね。


その後のベランダセンサーのi2c

 前述のように変更してから半月以上経つが、異常なデータが取れたりハングしたりすることなく稼働中。
 外したBME280は室内用に転換して再検証しようと思った。というのも、室内に設置してた温度湿度計付きの電波時計。こいつのの液晶パターンが一部駄目になってきたから。8月中に出来れば良いかな。


今日の小細工

其の1 ベランダセンサーの動作チェックの通知メールを変更した。
・直近1時間にデータが1つも上がってないセンサーがあった時送信。
・朝6時はデータが上がってきてても送信。

其の2 スマートスピーカによるベランダ気温読み上げの変更
ベランダの気温は少数点以下2位までDBに保管してるが、google home miniで読み上げるときはround()で小数点以下1位までとした。ここで1つ為になったのはpython2とpython3でround()の仕様が違うこと。python3のは学校で一般的に習うのとは違うけど浮動小数点値に対しては精度が上がるとのこと。


BME280をやめてBMP085に

 ベランダにて環境値測定している自作機器。i2cバスのセンサー値がおかしくなったり、ハングしたりどうにも安定しない。先代はマイコン部をATmega328pでやってて全然安定稼働していたのに、ESP32に変えてから不安定。全く動かないのではなく連続稼働させてるとだめになる。仕方なしに1日1回リセットするようにしたがそれでもおかしくなる。ESP32のi2cは癖があるらしいけどドライバのメンテまでしたくない。
 思い切って、i2cの気圧・湿度センサーBME280を手持ちの気圧センサーBMP085と湿度センサーSi7021に載せ替えた版を作って、7/12のハング時に切り替えた。1日1回のリセットも無しのバージョン。で、本日7/21で変更してから1週間以上たつが、今まで色々対策してた苦労が嘘だったかのように安定稼働している。これならリセット無しのバージョンのままで良いかなと思う。3時間おきにセンサー値のDBが更新されてるかチェックしてメール飛ばしてるのも、データ未更新時と朝1回の更新チェック機能自体の確認のメールだけに変更しようと思う。