デジタルガジェット一覧

今日の電子工作作戦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への移植 と段階をおかないと駄目だ。


google home mini を壁に貼り付けた。。。が、はがれた

『「Google Home Mini」の壁掛けホルダーを試して分かったこと』というキーワードを見かけた。記事では3Dプリンタで作成したホルダーを使っていた。うちにもデルタな3DプリンタがあるのでSTLファイル手に入れれば作れるではあろう。だが1年以上動かしてないのでどう動くかわからんのと、変な動きをした時に片手で止められるかという心配もあって動作確認できていない。このプリンタで印刷したこのプリンタ用のスプールホルダーが折れちゃってるのもマイナス要因。予備も作ってあったけど片手で取り付けにくい取り付け方法なのです。

ってことで、なんの工夫もなく壁に両面テープで貼ってみた。この壁がマンションの外壁になる壁のため鋲のたぐいは刺さらない。なんかいい感じになった。机の上においてるとモノが触れたりして音量が変わったりしていたがそれを防げる。寝室のgoogle home miniも壁付けしたくなった。でも、寝室の設置したい壁は石膏ボードになるなぁ。google home miniの底部って引っ掛けられるような穴とか凹みが無いんだよなぁ。3Mのコマンドタブでささえられるかしらん。

で、数時間後。両面テープのgoogle home mini側がはがれた。めんどくさい材質だな。やっぱホルダー的なモノを介さないとだめか?とりあえずは、網と壁で挟んでる。


ESPR irでgoogle home連携

ESPR irは画像の左側のモジュール。ひとつのモジュールで赤外線受信機と赤外線LEDの双方が載ってるのでゲットしました。USB-UART変換は別に要るけどいっぱい持っている。
で、寝室の照明のリモコンをirRecvDumpでデータ化。どうやらNECフォーマットっぽい。
全灯 NEC: 176807F
調光 NEC: 17640BF
豆球 NEC: 176C03F
消灯 NEC: 17600FF
プログラムを変えて、赤外線照射のテスト。まずローカルで、ESPR上のWebサーバでsubmitボタン3つで、全灯・豆球・消灯を実装して寝室の照明の操作に成功。ある程度赤外線LEDの向きに気をつかう必要あり。ファイアウォールを変更してIFTTTからのwebhooksを受けられるように改造して、google assistantをthisに設定。
これでやっと寝室の明かりを音声で操作できるようになりましたさ。ESP8266はいっぱいあるので、赤外線LEDと組み合わせて手作りモジュールも作りたい。はんだ付けやらコードの皮むきとかの両手での作業を治具用意して片手でも出来るようにしよう。

で、ツレが「30分後に消して」とかの機能をリクエストしてきた。リモコン自体にも30分後/60分後の消灯ボタンがあるので、これを決め打ちで動かすのは出来る。だがn分後とかm時間後の任意のdelayをどう実現できるか?考えたい。IFTTT自体にはthisとthatの間にdelayを置く機能は今現在はない。案1は時間を$パラメータとしてもらってESP8266の中でwaitする。案2はこのWebサイトでwebhooksを受けてwaitしてからESPへwebhooksを引き継ぐ。ただ、waitしてる間に新たに点灯コマンドが入った時に消灯をキャンセルするとか考える必要あり。あ、夜中トイレにいくのに「5分だけあかりをつけて」ってのも便利だなぁとか。


マウス復帰?

昨日、会社の机にしまってあったAnyware MXを使ってみたら以前試したときよりスムーズに使えた。そのまま、左手用トラックボールから変更したままで仕事してた。
まぁ、トラックボールは本体を動かさないから場所をとらなくて良いというメリットがあるが、ポインタの移動が遅いというデメリットがある。移動を早く設定すると細かい動作ができなくなる。親指(トラックボールの場合)のうごきの細やかさと手関節(マウスの場合)の細やかさの違い。自分は病前でもマウスは手関節で動かしてて、肘は固定してた。
という感じで、家でもマウスを引っ張り出してきた。RAZERのゲーミングマウスの左手用。残念ながら有線だけど親指ボタンが使える。MXは右手用なので親指ボタンは左手でもったとき薬指のとこで、この位置では押しにくい。まぁ、カラダに刺激をあたえるのも兼ねて、いろいろ試してみます。


スマートプラグ

旅行前に発注しておいたスマートプラグが届きましたので設定。スマートプラグとはなんぞやと言うと無線LANでオンオフの制御が出来るACプラグ。
こんなの。

これでライトのオンオフを制御します。

まず設定。androidの「Smart Life – Smart Living」のソフトでSmart Lifeのサービスにアカウント作成して、無線Lanのパスワードを設定し、自宅のネットに接続可能に。無線Lanは2G限定なのでandroid側で5Gだとつながらん。あとプラグの名前も適当に変えとく。プラグには机のZライトと水槽のライトを配線。androidのgoogle homeアプリで場所とニックネームを設定。これでgoogle homeからは音声で制御可能。場所を「机」「水槽」、ニックネームを両方「ライト」にしたので「ねぇGoogle。机のライト点けて」とかで点く。androidの無線lanは1回設定しちゃえば5Gに戻してもOK。
水槽のライトのほうは日の出とともに点灯するようにIFTTTでアプレット作成。thisをWeather UndergroundでsunriseにしてthatをSmart Lifeで水槽のライトのオンにした。消灯は日の入りだと早すぎるから日の入りの2時間後とかしたいんだが1アカウントでlocationをUTC+7で緯度が東京と同じとこに変えたり出来るか検討中。それまではthisにdate&time使って19:30決め打ち。

このプラグ、停電からの復電時の動作を試してみたら、停電前の状態に復帰するみたい。オンならオンに、オフならオフに。「復電時は常にオフ」の設定も出来ると良かったかな。


google assistantのフレーズ認識

google homeがIFTTTでうまく認識してくれない件。ぐぐってみるとandroidのgoogle assistantアプリで認識を確かめている例があった。

自分「LEDつけて」→認識「LEDつけて」(元々動作してた)
自分「LEDけして」→認識 「LED消して」

うわ、音から漢字まで認識しとるかね。で、IFTTTのフレーズの設定を「LED けして」から「LED 消して」に変更してみたら今までの苦労がウソみたいに認識するようになった。当然LEDも音声で消灯までできる。
google home現時点でのtipsだな。常に改良されてるだろうからいつまで使えるtipsかはわからない。


IFTTTでESP32 (実験編)

IFTTTでgoogle home miniをトリガーにしてESP32につないだLEDをつけたり消したり。つけるのは動くが、消すのが音声コマンドの時点で受け取ってもらえない。また、「ライト」とか「照明」などの言葉はホームデバイスの予約語になってるみたいで自作フレーズには使えないのかな。もう少し調べよう。


google home notifier

試してみましたよ。Linux mint 17.3 mateだとnodejsでエラーが。Ubuntu 17.10をVirtualBoxで仕立てたけどなんかエラーでるねぇ。ってかUbuntu、 FcitxじゃなくiBusデフォになってたりする?
結局、どこのご家庭でも常備されてるRaspbery Piで成功しました。ただ文言を話すだけなら ATmegaのAquesTalk pico LSIでも出来るからなぁ。


スマートスピーカテスト

寝室の照明をコントロールする手始め。
Google home miniをつかって音声コマンドをテストした。IFTTTを使用。Google home miniに「メールして」とお願いすると、自分のメールアドレスに「メールしたよ」という本文のメールが届くだけ。thatの部分をwebhookに変えて、自宅内のマイコンのWebサーバを引っ張らせて照明の赤外線リモコンと同じ発光をすれば良い。マイコンを外にさらすのもアレだけど、OSが無い分raspberry piとかをさらすよりは良いだろう。IFTTTでなくて直接宅内でスマートスピーカからRESTできるといいんだが、「Actions on Google」の「Actions SDK」 の方も試してみたい。宅内ローカル環境としてサーバ兼赤外線発光機を立てるならpiもありだな。pi zero wも1枚だけあるし。


AIスピーカーと家電の連携ネタ

 Google Home MiniやAmazon Echo Dotでのホームオートメーション。既製品は結構高価な上、値下がりしてたものも高騰してる感じ。じゃあ自分で作るかと。
 うちの寝室はエアコンとシーリングライトが赤外線リモコン対応。シーリングライトのリモコンは点灯ボタンと消灯ボタンが独立してるタイプ。以前ラズベリーパイのi2sDAC音楽プレイヤーを作った時に、ミニコンポを操作出来るように赤外線リモコンを作っていたからこれの応用で行けるだろうと。部品点数も少ないから、ブレッドボード、できればハンダゴテ握りたいかな。あ、照明リモコンはオンオフが共通ボタンタイプだったとしても、照度センサー付けとけば、今点いてるか消えてるかは判断できるなぁ。このあたりが自作だと出来合いの赤外線リモコンより柔軟性はある。ソフト的にはRESTでオンオフできるインターフェイスを宅内LANに公開しときゃ良いのかな?
 ちっとぐぐったらRaspbery Piなんざ使うまでもなくESP-WROOM-32でやってる例があった。ESP32は2つくらい持ってるからこっちのほうが良さそう。単独でADC使えるし。