FC2ブログ
02-<< 12345678910111213141516171819202122232425262728293031>>04-

Google Homeで水槽のステータスを喋らせる

2018-03-18
APEX FUSIONにログインしないと外出先で水槽のステータスが判らないので、喋って教えてくれるようにしました。あと文字で見たいときはSlackのログを見れば判ります。

まずは喋らせるためのスクリプト bin/say.jsを用意します
Google Homeの喋らせ方」にありますので作成してください。
ただしそのままだとエラーが発生したりするので、「google-home-notifierの「Error: getaddrinfo -3008」に対処する」のとおり、browser.jsを修正してください。{families:[4]}にするのがポイントのようですね

とりあえずテストはこんな感じでやってみてください
bin/say.js "こんにちは"

そうすると喋ることができる装置が表示され、全て反応します。複数のGoogle HomeとChromecastまで喋ります
Device "Google-Home-b413…" at 192.168.1.37:8009
Device "Google-Home-d0b68…" at 192.168.1.26:8009
Device "Chromecast-1b129…" at 192.168.1.22:8009

うちでは、Google-Home-d0bがリビングに置いてあるのでそこで喋らせるようにします

あとはbin配下にシェルスクリプトを作ります。ここでは、cgi-bin/status.xmlから情報を取得します。
※2018/3/19 タグがうまく表示されていなかったので修正しました
#!/bin/sh
curl --fail --silent --show-error --user admin:PASSWORD http://APEX_LOCAL_IP:APEX_PORT/cgi-bin/status.xml | grep -i "<name>$1</name> " | grep '<value>' | cut -f4 -d'>' | sed 's/ //g' | cut -f1 -d '<'
exit 0


※PASSWORD、APEX_LOCAL_IP:APEX_PORTは書き換えてください。

そしてステータスを喋るためのスクリプトを作ります。ここではパラメータで喋ることを切り替えられる作りにしていますので、好きに変えてください。あと/home/myhubot/binは環境に合わせて書き換えてください
#!/bin/sh
#リビングのGoogle Homeで水槽のステータスを喋る

#水温だけしゃべる
if   [ "$1" = "1" ]; then
	/home/myhubot/bin/say.js \
	"水槽の水温は"`/home/myhubot/bin/apexstat.sh Temp`"度です" \
	ja Google-Home-d0b
else
#ひととおり喋る
	/home/myhubot/bin/say.js \
"水槽の水温は"`/home/myhubot/bin/apexstat.sh Temp`"度、"\
"塩分濃度は"`/home/myhubot/bin/apexstat.sh Cond`"パーミル、"\
"ORPは"`/home/myhubot/bin/apexstat.sh ORP`"ミリボルト、"\
"ペーハーは"`/home/myhubot/bin/apexstat.sh pH`"、"\
"リアクターペーハーは"`/home/myhubot/bin/apexstat.sh pHCR`"、"\
"メインポンプ流量は"`/home/myhubot/bin/apexstat.sh FlowMP`"リットル毎時、"\
"サブポンプ流量は"`/home/myhubot/bin/apexstat.sh FlowSB`"リットル毎時、"\
"アンペアは"`/home/myhubot/bin/apexstat.sh Amp_3`"、"\
""`/home/myhubot/bin/apexstat.sh Amp_4`"、"\
""`/home/myhubot/bin/apexstat.sh Amp_7`""\
"です "\
	 ja Google-Home-d0b
fi


Temp、pH等はAPEXのセンサーの名前です。どんな名前か判らなくなったら、cgi-bin/status.xmlをブラウザで開いてみて、それに合わせてください。
Google-Home-d0bの部分は、喋らせたいGoogle Homeを区別するために使います。

できたら実行権限をつけておきます
chmod 755 bin/*.sh

そのあとはhubotにコマンドを認識させます
sudo systemctl stop homebot
npm install hubot-broadlink-rm@latest
bin/hubot

homebot command apex:stat bin/sayapexstat.sh "#"

exit
redis-cli save

sudo systemctl restart homebot

あとはIFTTTに登録します。
20180318_010.jpg

「水槽のステータス」と喋れば、水温他を教えてくれます。違うことを喋らせる時は send apex:stat(1) とかにしてください

スポンサーサイト


B!
関連記事
★Neptune Apex★ | コメント:(2) | トラックバック:(0)

クロノスレインのメンブレンを久々に交換

2018-03-14
前回浄水器のメンブレンを交換したのは2012年03月04日… もう6年になるので交換しました。RO水の生産スピードはあまり変わらないので放置していましたが、ついにやりましたw

こちらが交換用のメンブレン。ツアーで安く買ったあと放置していましたが、ついに使うときが来ました
20180314_020.jpg

交換は結構簡単なんですけどね。メンブレンのハウジングを外して、付属しているレンチでまわせばOKです
20180314_010.jpg

ハウジングからメンブレンを引き抜きました。引き抜くときはウォーターポンププライヤーがあると楽ですね
20180314_030.jpg

配管し直したら、RO→DIのハードチューブを外してバケツなどに排水できるようにして、2時間ほど通水させます。メンブレン交換直後はTDS高めになるので、DIが飽和しやすくなるようです
20180314_040.jpg

ちなみに硝酸塩の状態はこんな感じ。左から
飼育水の硝酸塩が高すぎ… 最近水換え多めにやっていますがそれでも足りないみたい。ZEOstart3も少し増やさないといけないかな
RO/DI水はさすがに硝酸塩低いです。DIって凄い
水道水は硝酸塩が4ppm超えていますね
RO水は少し薄いぐらいで硝酸塩はやはり残っています
20180314_050.jpg

メンブレン交換前後で比較。古いメンブレンは硝酸塩素通りっぽいですね。交換後は少し減っています
20180314_060.jpg

といった感じでした。硝酸塩濃度をみると、DIの存在は重要ですね。飽和するとこの硝酸塩で水換えすることになるので、まめにチェックするか二重化した方が良いかも。



B!
関連記事
浄水器 | コメント:(0) | トラックバック:(0)

APEXプログラム全量(2018年3月)

2018-03-05
今のところの最新のAPEXプログラムを参考までに置いておきます。ExcelをHTMLに変換したら見にくくなったな…

ひとまずローカル側のAPEXはこんな感じです(クリックで拡大)
20180305_010.jpg

その下側はこんな感じ(クリックで拡大)
20180305_020.jpg

プログラムはこんな感じ
連番EBグループ和名Outlet名プログラム標準モードコメント
1-通知アラーム用SoundAlarmSet OFF
If Output V_WTCHtgr = ON Then OFF
If Temp > 27.7 Then ON
If Temp < 21.5 Then ON
If TempT > 27.7 Then ON
If TempT < 21.5 Then ON
If Cond > 36.0 Then ON
If Cond < 25.5 Then ON
If Output V_UpperChk = ON Then ON
If Output V_HeaterChk = ON Then ON
If Output V_ChillerChk = ON Then ON
If Error WT_PumpAT Then ON
If Error WT_DrPump Then ON
If ALD_WT CLOSED Then ON
If ALD_Ca CLOSED Then ON
If FMM_Lk CLOSED Then ON
If FMM_L2 CLOSED Then ON
If Output V_FeedDL10M = ON Then OFF
If FeedA 015 Then OFF
If FeedB 015 Then OFF
If FeedC 015 Then OFF
If FeedD 015 Then OFF
緊急度が高いものは音を鳴らす
2-通知警告用SoundWrnSet OFF
3-通知メール送信用EmailAlarmSet OFF
If Temp > RT+1.5 Then ON
If Temp < RT+-0.2 Then ON
If TempT > RT+1.5 Then ON
If TempT < RT+-0.2 Then ON
If Output V_WTCHtgr = ON Then OFF
If Temp > 27.7 Then ON
If Temp < 21.9 Then ON
If TempT > 27.7 Then ON
If TempT < 21.9 Then ON
If Cond > 36.0 Then ON
If Cond < 25.5 Then ON
If pH < 7.00 Then ON
If pH > 8.50 Then ON
If pHCR < 6.20 Then ON
If pHCR > 8.50 Then ON
If ORP < 160 Then ON
If FlowMP < 800 Then ON
If FlowSB < 200 Then ON
If Output V_UpperChk = ON Then ON
If Output V_CO2chk = ON Then ON
If Output V_HeaterChk = ON Then ON
If Output V_ChillerChk = ON Then ON
If Error WT_PumpAT Then ON
If Error WT_DrPump Then ON
If Error V_WTCHnow Then ON
If Output V_FeedTime = ON Then OFF
If ALD_WT CLOSED Then ON
If ALD_Ca CLOSED Then ON
If FMM_Lk CLOSED Then ON
If FMM_L2 CLOSED Then ON
If Power EB8_3 Off 000 Then ON
If Power EB8_4 Off 000 Then ON
If Power EB8_7 Off 000 Then ON
If Power Apex Off 000 Then ON
If Output V_FeedDL10M = ON Then OFF
If FeedA 015 Then OFF
If FeedB 015 Then OFF
If FeedC 015 Then OFF
4EB3 水槽上部フィードモード水流ポンプ全般VortechFallback ON
Set ON
If Output V_FeedTime = ON Then OFF
If FeedA 000 Then OFF
If FeedB 000 Then OFF
If FeedC 000 Then OFF
If FeedD 000 Then OFF
Vortech x3
5EB3 水槽上部サンプ用のファンSump_FANFallback ON
Set ON
6EB3 水槽上部スポットLEDLEDFallback OFF
Set OFF
If Time 21:30 to 08:30 Then ON
If Temp > 28.0 Then OFF
スポットLED、T5のうちブルー灯部分
7EB3 水槽上部T5T5_FANFallback OFF
Set OFF
If Time 22:00 to 08:00 Then ON
If Temp > 28.0 Then OFF
T5及び冷却用PCファン
8EB3 水槽上部フィードモードメインポンプMainPumpFallback ON
Set ON
If Output V_FeedDL2M = ON Then OFF
If FMM_Lk CLOSED Then OFF
Defer 000:10 Then ON
Defer 000:10 Then OFF
If FeedA 001 Then OFF
If FeedC 001 Then OFF
If FeedD 001 Then OFF
Vectra L1
9EB3 水槽上部Vortech バッテリーBChargeFallback ON
Set ON
Vortech バッテリー
10EB3 水槽上部フィードモード底面ポンプTeimen_L1Fallback OFF
Set ON
If FlowMP < 1000 Then OFF
If FMM_Lk CLOSED Then OFF
If Output V_FeedTime = ON Then OFF
If FeedA 000 Then OFF
If FeedB 000 Then OFF
If FeedC 000 Then OFF
If FeedD 000 Then OFF
底面用Vectra L1
11EB3 水槽上部サブ水槽照明SubTankFallback ON
Set ON
Hydra 26 HD
12EB1 サンプフィードモードキャビネット内照明SumpLightFallback OFF
Set OFF
If S_Smp1 CLOSED Then ON
If S_Smp2 CLOSED Then ON
If Output V_FeedTime = ON Then ON
If FeedA 000 Then ON
If FeedB 000 Then ON
If FeedC 000 Then ON
If FeedD 000 Then ON
13EB1 サンプ自動給水サンプの自動給水用電磁弁ROSValveFallback OFF
Set ON
If Output V_FltUpper = OFF Then OFF
If Output V_FltLower2 = OFF Then OFF
If Output V_ROtime = OFF Then OFF
If Output V_FeedTime = ON Then OFF
When On > 004:00 Then OFF
Defer 000:05 Then ON
Defer 000:05 Then OFF
If FeedA 000 Then OFF
If FeedC 000 Then OFF
If FeedD 000 Then OFF
14EB1 サンプ自動給水
自動水溜め
クロノスレインROChargeFallback OFF
Set OFF
If Output WT_Charge = ON Then ON
If Output ROSValve = ON Then ON
If ALD_WT CLOSED Then OFF
クロノスレインの加圧ポンプ及び水道からの電磁弁
15EB1 サンプフィードモードヒーターHeaterFallback OFF
If Temp < RT+0.0 Then ON
If Temp > RT+0.3 Then OFF
If Output V_FeedDL2M = ON Then OFF
If Output Chiller = ON Then OFF
If FeedA 002 Then OFF
If FeedC 002 Then OFF
If FeedD 002 Then OFF
Defer 000:50 Then ON
Defer 000:10 Then OFF
サンプに入れてあるヒーター
16EB1 サンプフィードモードZEOリアクターZEOReactorFallback ON
Set ON
If Output V_FeedDL2M = ON Then OFF
If FeedA 003 Then OFF
If FeedC 003 Then OFF
If FeedD 003 Then OFF
17EB1 サンプスキマークリーナーS_CleanerFallback OFF
Set OFF
If Time 23:00 to 23:02 Then ON
If Time 05:00 to 05:02 Then ON
If Time 11:00 to 11:02 Then ON
If Time 17:00 to 17:02 Then ON
If Output Skimmer = OFF Then OFF
18EB1 サンプ自動水換えサンプからの排水ポンプWT_DrPumpFallback OFF
If Output V_WTCHtgr = ON Then ON
If Output V_WTCHtgr = OFF Then OFF
If Output V_FltLower = OFF Then OFF
When On > 080:00 Then OFF
Defer 003:05 Then ON
PMUP
19EB1 サンプフィードモードスキマーSkimmerFallback ON
Set ON
If Output V_FeedDL60M = ON Then OFF
If Output V_SkimStop = ON Then OFF
If FeedA 060 Then OFF
If FeedC 003 Then OFF
If FeedD 003 Then OFF
バブルキング
20EB2 物入れ空きEB4_1Fallback OFF
Set OFF
21EB2 物入れ自動水溜めみずためバケツ用電磁弁WT_ChargeFallback OFF
Set OFF
If Output V_WTCGtgr = ON Then ON
If Output V_WTFlt = OFF Then OFF
If ALD_WT CLOSED Then OFF
22EB2 物入れ自動水溜めみずためバケツの水流ポンプWT_WaveFallback OFF
Set OFF
If Output V_WT_WvHt = ON Then ON
If Output V_WTCHtgr = ON Then OFF
23EB2 物入れフィードモード水槽用クーラーChillerFallback OFF
If Temp > RT+0.8 Then ON
If Temp < RT+0.6 Then OFF
If Output V_FeedDL2M = ON Then OFF
If FlowMP < 500 Then OFF
If FeedA 002 Then OFF
If FeedC 002 Then OFF
If FeedD 002 Then OFF
Defer 000:50 Then ON
Defer 000:10 Then OFF
ZRW400
24EB2 物入れ物入れのライトDoorLightFallback OFF
Set OFF
If S_Door CLOSED Then ON
If S_Door OPEN Then OFF
25EB2 物入れ空きEB4_6Fallback OFF
Set OFF
26EB2 物入れカルシウムリアクターCRPumpFallback ON
Set ON
If FeedC 005 Then OFF
If FeedD 005 Then OFF
CR-800Rのマグネットポンプ
27EB2 物入れ空きEB4_8Fallback OFF
Set OFF
28VO異常検知カルシウムリアクターのpHチェックV_CO2chkFallback OFF
Set OFF
If Time 02:00 to 02:05 Then ON
If pHCR < 7.20 Then OFF
29VO異常検知ヒーターの稼働時間チェックV_HeaterChkFallback OFF
Set OFF
If Output Heater = ON Then ON
If Output Heater = OFF Then OFF
If Output V_FeedDL60M = ON Then OFF
If FeedA 060 Then OFF
Defer 070:00 Then ON
連続して70分かかるなら、ヒーターの故障と判断
30VO異常検知クーラーの稼働時間チェックV_ChillerChkFallback OFF
Set OFF
If Output Chiller = ON Then ON
If Output Chiller = OFF Then OFF
If Output V_FeedDL60M = ON Then OFF
If FeedA 060 Then OFF
Defer 060:00 Then ON
連続して60分かかるなら、ヒーターの故障と判断
31VO異常検知サンプ水位上限チェックV_UpperChkFallback OFF
Set OFF
If FMM_Op CLOSED Then ON
If FMM_Op OPEN Then OFF
Defer 001:00 Then ON
Defer 000:05 Then OFF
FMM光学センサー
32VO自動給水自動給水制御V_ROtimeFallback OFF
Set OFF
If Time 23:00 to 23:03 Then ON
If Time 05:00 to 05:03 Then ON
If Time 11:00 to 11:03 Then ON
If Time 17:00 to 17:03 Then ON
If Output V_WTCHtgr = ON Then OFF
33VO自動給水サンプの下フロートスイッチ検知2V_FltLower2Fallback OFF
Set OFF
If S_DwF1 CLOSED Then ON
If S_DwF2 OPEN Then OFF
Defer 000:05 Then OFF
34VO自動水溜め自動水溜めのトリガーV_WTCGtgrFallback OFF
Set OFF
If Time 00:01 to 06:00 Then ON
If Output V_WTCGweek = OFF Then OFF
If Output V_WTFlt = OFF Then OFF
35VO自動水溜め水溜めする曜日V_WTCGweekFallback OFF
Set ON
If DoW SMTWTF- Then OFF
If Output V_WTCGnow = ON Then ON
36VO自動水溜め自動水溜めの手動開始V_WTCGnowFallback OFF
Set ON
When On > 999:00 Then OFF
37VO自動水溜めバケツの水流ポンプ&ヒーター用V_WT_WvHtFallback OFF
Set OFF
If Output V_WTFlt = OFF Then ON
If Time 09:00 to 23:59 Then OFF
If Output V_WTCGweek = OFF Then OFF
38VO自動水溜めバケツのフロートスイッチ検知V_WTFltFallback OFF
Set OFF
If S_WF1 OPEN Then ON
If S_WF2 CLOSED Then OFF
Defer 000:10 Then ON
Defer 020:00 Then OFF
39VO自動水換え水換えトリガーV_WTCHtgrFallback OFF
Set OFF
If Output V_ATWTCh = ON Then ON
If Output V_WTCHnow = ON Then ON
If Output V_FeedTime = ON Then OFF
If FeedA 000 Then OFF
If FeedC 000 Then OFF
If FeedD 000 Then OFF
40VO自動水換え水換えスケジュール開始V_ATWTChFallback OFF
Set OFF
If Time 12:00 to 16:00 Then ON
If DoW SMTWTF- Then OFF
OFF
41VO自動水換え水換え手動開始V_WTCHnowFallback OFF
Set ON
When On > 240:00 Then OFF
OFF
42VO自動水換えサンプの下フロートスイッチ検知V_FltLowerFallback OFF
Set OFF
If S_DwF1 OPEN Then ON
If S_DwF2 CLOSED Then OFF
Defer 000:05 Then OFF
43VO自動水換えスキマーOFFV_SkimStopFallback OFF
Set OFF
If Output WT_PumpAT = ON Then ON
If Output V_WTCHtgr = ON Then ON
If Output V_SkimStart = OFF Then ON
If Output V_SkimStart = ON Then OFF
44VO自動水換えスキマーONV_SkimStartFallback OFF
Set ON
If Output WT_DrPump = ON Then OFF
If Output WT_PumpAT = ON Then OFF
Defer 010:00 Then ON
自動水換えしないときはONにする
45VO自動水換えサンプの上フロートスイッチ検知V_FltUpperFallback OFF
Set OFF
If S_UpF1 OPEN Then ON
If S_UpF2 CLOSED Then OFF
Defer 000:05 Then ON
46VO自動水換え給水の流量チェックV_WTFlChkFallback OFF
If Output WT_PumpAT = ON Then ON
If Output V_WTCHtgr = OFF Then OFF
If FlowWT > 10.0 Then OFF
Defer 000:20 Then ON
Min Time 060:00 Then ON
47VO自動水換えみずためから給水ポンプ2WT_PumpATFallback OFF
If Output V_WTCHtgr = ON Then ON
If Output V_WTCHtgr = OFF Then OFF
If Output V_FltUpper = OFF Then OFF
If Output V_WTFlChk = ON Then OFF
If Output V_UpperChk = ON Then OFF
When On > 075:00 Then OFF
Defer 009:00 Then ON
48VOフィードモードフィードーモードのトリガーV_FeedTimeFallback OFF
Set OFF
If Output V_FeedAuto = ON Then ON
If Output V_Feednow = ON Then ON
If FeedA 000 Then OFF
If FeedC 000 Then OFF
If FeedD 000 Then OFF
49VOフィードモード自動給餌のスケジュール開始V_FeedAutoFallback OFF
Set OFF
If Time 07:00 to 07:15 Then ON
If FeedA 000 Then OFF
If FeedC 000 Then OFF
If FeedD 000 Then OFF
OFF
50VOフィードモード自動給餌の手動開始V_FeednowFallback OFF
Set ON
When On > 020:00 Then OFF
OFF
51VOフィードモードAutomatic FeederFeederFallback OFF
Set OFF
If Output V_FeedTime = ON Then ON
If FeedA 000 Then ON
If FeedB 000 Then OFF
If FeedC 000 Then OFF
If FeedD 000 Then OFF
Defer 003:00 Then ON
OFFフィードモードに入って3分待ってから開始する。普段は餌を入れていない
52VOフィードモードフィードモード後の2分待ちV_FeedDL2MFallback OFF
Set OFF
If Output V_FeedTime = ON Then ON
Defer 000:05 Then ON
If Output V_FeedTime = OFF Then OFF
Defer 002:00 Then OFF
53VOフィードモードフィードモード後の10分待ちV_FeedDL10MFallback OFF
Set OFF
If Output V_FeedTime = ON Then ON
Defer 000:05 Then ON
If Output V_FeedTime = OFF Then OFF
Defer 010:00 Then OFF
54VOフィードモードフィードモード後の60分待ちV_FeedDL60MFallback OFF
Set OFF
If Output V_FeedTime = ON Then ON
If Output V_FeedTime = OFF Then OFF
Defer 060:00 Then OFF
55VOその他日中帯V_DaylightFallback OFF
Set OFF
If Time 21:45 to 08:15 Then ON
もとはTunzeのProfile用
56VOその他シーズンテーブルテスト用V_RT_UpperFallback OFF
If Temp > RT+0.8 Then ON
If Temp < RT+0.5 Then OFF
57VOその他シーズンテーブルテスト用V_RT_LowerFallback ON
If Temp < RT+0.0 Then ON
If Temp > RT+0.3 Then OFF
58VOその他未使用LinkA_11_1Set OFF
59VOその他未使用LinkA_14_1Set OFF
60VOその他未使用V5Fallback OFF
Set OFF
61VOその他未使用V6Fallback OFF
Set OFF
62VOその他未使用V7Fallback OFF
Set OFF
63VOその他未使用V8Fallback OFF
Set OFF


といった感じです

あとI/O Breakout Boxのスイッチ系はこんな感じです
S_Smp1、S_Smp2 : キャビネットのドアスイッチ(どちらか開けばサンプ内のライトが点く
S_UpF1、S_UpF2 : サンプのフロートスイッチ(上限側)
S_DwF1、S_DwF2 : サンプのフロートスイッチ(下限側)
S_Door : 物入れのドアスイッチ
S_WF1、S_WF2 : バケツのフロートスイッチ
それ以外は未使用です



B!
関連記事
★Neptune Apex★ | コメント:(0) | トラックバック:(0)

自動水溜めの改善とGoogle Homeで時間指定起動

2018-03-04
以前の記事、「水換え用のRO水を自動でためる&ALD」のとおり、APEXを使って土曜日や日曜日に自動的にRO水を溜めるようにしています。たまに連日水換えしたいと思うことがありますが、毎回APEXのプログラムを書き換えていました

今回はGoogle Homeに対して喋るだけで、その日の夜に水を溜めるようにしたいと思います。

■APEXプログラム

ひとまず関連するVirtual Outletはこんな感じです。
20180304_010.jpg

以前使っていた、V_WTChTimeはV_WTCGtgrに名前を変更しています。APEXはOutletの名前を変えると、関連するOutletも名前を自動で変えてくれます

変更のあった箇所は赤字にしてあります

-----自動給水タイマー(電磁弁) ROCharge-----
Fallback OFF
Set OFF
If Outlet WT_Charge = ON Then ON
If Outlet ROSValve = ON Then ON
If ALD_WT CLOSED Then OFF

クロノスレインにある電磁弁と加圧ポンプを制御します。ROSValveはサンプへの自動給水の場合で、一日4回ONになります。バケツで水漏れがあったら問答無用でOFFになります

-----みずため電磁弁 WT_Charge-----
Fallback OFF
Set OFF
If Output V_WTCGtgr = ON Then ON
If Output V_WTFlt = OFF Then OFF
If ALD_WT CLOSED Then OFF

バケツ用の電磁弁です。トリガーでON

-----みずため水流ポンプ WT_Wave-----
Fallback OFF
Set OFF
If Output V_WT_WvHt = ON Then ON
If Output V_WTCHtgr = ON Then OFF

バケツの中の水流ポンプです。今はNWAを使っています。ヒーターと連動はできますが、今はヒーター用意していません

-----みずためから給水 WT_PumpAT-----
Fallback OFF
If Output V_WTCHtgr = ON Then ON
If Output V_WTCHtgr = OFF Then OFF
If Output V_FltUpper = OFF Then OFF
If Output V_WTFlChk = ON Then OFF
If Output V_UpperChk = ON Then OFF
When On > 075:00 Then OFF
Defer 009:00 Then ON

バケツから水槽に入れるためのPMUPです。自動水換えに使うので大きく変更しました

-----みずためヒーター WT_Heater-----
自動水換えにしたので廃止


-----バケツ給水トリガー V_WTCGtgr(旧V_WTChTime)-----
Fallback OFF
Set OFF
If Time 00:01 to 06:00 Then ON
If Output V_WTCGweek = OFF Then OFF
If Output V_WTFlt = OFF Then OFF

バケツに水を溜める時間を制御します。何曜日に水を溜めるかはV_WTCGweekで制御します

-----バケツ手動トリガー V_WTCGnow-----
Fallback OFF
Set ON
When On > 999:00 Then OFF

今日の夜は水を溜めたいって時に使います。普段はOFFにします。Google HomeからONにするのはこれですね。When ONの指定は999分…約16時間までしかONを維持できません。この問題はhubot側で解決します。APEXだけでなんとかする方法は…22時ぐらいまで待って手動でAUTOにするぐらいです

-----水溜めする曜日 V_WTCGweek-----
Fallback OFF
Set ON
If DoW SMTWTF- Then OFF
If Output V_WTCGnow = ON Then ON

水溜めする曜日を定義します。標準では土曜日にしてありますが、V_WTCGnowをAUTOにしていればその日に水溜めも可能です

-----バケツのフロートスイッチ検知 V_WTFlt-----
Fallback OFF
Set OFF
If S_WF1 OPEN Then ON
If S_WF2 CLOSED Then OFF
Defer 000:10 Then ON
Defer 020:00 Then OFF

バケツのフロートスイッチを制御します。フロートスイッチのどちらかがCLOSEDになるとOFFになります。Deferで20分を指定して、水が多めに入るようになっています(ギリギリだとON/OFFを繰り返すことになるので)。また、フロートスイッチをちょっと触るとそれでONに変わることがあったので、ONにするときも10秒の待ちを作ってあります

-----水流ポンプ&ヒーター V_WT_WvHt-----
Fallback OFF
Set OFF
If Output V_WTFlt = OFF Then ON
If Time 09:00 to 23:59 Then OFF
If Output V_WTCGweek = OFF Then OFF

水流ポンプを制御します。曜日の指定と、フロートスイッチを条件にしていますので、9時を過ぎたら自動でOFFになりますし、9時前に水換えをはじめたときでも、水が減ってフロートスイッチがOpenになるので、ちゃんとヒーターは切れます
空焚きしたらヒーターは使えなくなってしまうので重要ですね

■Google Homeで制御

ではGoogle Homeから水溜めを開始できるようにしていきます。

ひとまずbin配下にシェルスクリプトを配置します。ここでは上記で定義しているV_WTCGnowをAUTOにできるようにしています。なお/home/myhubot/binのパスは環境に合わせて変えてください

#!/bin/sh
# 水溜め開始

# 対象のAPEX Outlet
TGT_OUTLET=V_WTCGnow
# 変更したいモード 0=Auto 1=OFF 2=ON
TGT_MODE=$1
# 普段使用しているモード 0=Auto 1=OFF 2=ON
DEF_MODE=1
# 変更したモードを戻すまでの待ち時間(SLEEPへの引数)
WAIT=9h

/home/myhubot/bin/apexcontrol.sh $TGT_OUTLET $TGT_MODE $DEF_MODE $WAIT


そのあと実行権限をつけておきます。
chmod 755 /home/myhubot/bin/apex_wtcgnow.sh

あとの作業のために、関連するモジュールはアップデートしておきます
sudo systemctl stop homebot
sudo npm update
sudo npm update -g
npm install hubot-broadlink-rm@latest

コマンドを登録しておきます
bin/hubot
homebot command apex:wtcgnow bin/apex_wtcgnow.sh "#"

コマンドのテストします。これでOutletがON/OFFされればOKです
homebot send apex:wtcgnow(0)
homebot send apex:wtcgnow(1)
exit

そのあと、DBを保存
redis-cli save

最後にサービスを再起動しておきます
sudo systemctl restart homebot

もしうまくOutletが動かないときは、以下のコマンドでどこでエラーになったのか判りますのでやってみてね(デバッグモードでシェルスクリプトを実行します)
sh -x /home/myhubot/bin/apex_wtcgnow.sh 1

あとはIFTTTで起動キーワードを登録します。(クリックで拡大)
20180304_020.jpg
Google Homeに話しかけてみて、うまく認識されるか試してください。

今回IFTTTでポイントとなるのは[23:55]の部分です。
send [23:55] apex:wtcgnow(0)

hubot-broadlink-rmのバージョンアップで実装されていて、指定した時間になるまで待つことができます。このおかげで、「バケツに水をためて」といったらすぐに水を溜めはじめるのではなく、その日の夜になるまで待ってから水を溜め始めるってことができます。
注意点としては、hubotのサービスを再起動したりするとそれを忘れてしまうことぐらいでしょうか

あとGoogle Homeに任意の言葉を喋らせることができます。
詳細は「Google_Homeの喋らせ方」を見てください。

ただしうちではうまくsay.jsが動かなかったので、Google Homeを検索せずにIPアドレスを直接指定する方法にしています。
#!/usr/local/bin/node
const home   = require('google-home-notifier');
const argv   = process.argv;
const text   = argv[2] || '';
const lang   = argv[3] || 'ja';
const device = argv[4] || '';

home.ip("192.168.1.26");
home.device(device, lang);
home.notify(text, (res) => console.log('said '+ text));


なおエラーになるのはGoogle Homeの検索がうまくいかないからのようなので、該当のソースを書き換えれば良いです。

これを使って、フィードモードで残り時間を教えてくれるようにしました(クリックで拡大)
20180304_040.jpg

フィードモードは20分なので、5分毎に喋らせれば良いだけです
send apex:feednw(0) [5m] say(あと15分です) [5m] say(あと10分です) [5m] say(あと5分です) [4m] say(もうすぐ再開します) [10s] apex:feednw(1)

ただし元のfeed(0)だとsleepでひたすら待ち続けることになるので、そうじゃないバージョンを作る必要があります
以下をbin配下に格納して実行権限を付けてください

こちらはsleepしないバージョンです
#!/bin/sh
# 対象のAPEX Outlet
TGT_OUTLET=$1
# 変更したいモード 0=Auto 1=OFF 2=ON
TGT_MODE=$2
# 普段使用しているモード 0=Auto 1=OFF 2=ON
DEF_MODE=$3
# 変更したモードを戻すまでの待ち時間(SLEEPへの引数)
WAIT=$4

if   [ "$TGT_MODE" = "$DEF_MODE" ]; then
	/home/myhubot/bin/apexconnect.sh $TGT_OUTLET $TGT_MODE
else
	/home/myhubot/bin/apexconnect.sh $TGT_OUTLET $TGT_MODE
fi



そしてそれを呼び出すようにします
#!/bin/sh
# FEED Mode 汎用

# 対象のAPEX Outlet
TGT_OUTLET=V_Feednow
# 変更したいモード 0=Auto 1=OFF 2=ON
TGT_MODE=$1
# 普段使用しているモード 0=Auto 1=OFF 2=ON
DEF_MODE=1
# 変更したモードを戻すまでの待ち時間(SLEEPへの引数)
WAIT=21m

/home/myhubot/bin/apexcontrol_nw.sh $TGT_OUTLET $TGT_MODE $DEF_MODE $WAIT


あとはコマンド登録すれば良いです
homebot command apex:feednw bin/apex_feed_nw.sh "#"

こっちのコマンドは元のモードには戻しませんので、戻し忘れ注意です

hubot-broadlink-rmのおかげで色々便利になりますね。

この他、「赤外線信号のタイミングを調整する」にあるとおり、起動時間そのものを口頭指示できたりします。



B!
関連記事
★Neptune Apex★ | コメント:(2) | トラックバック:(0)
 | ホーム | 

FC2 Blog Ranking Related Posts Plugin for WordPress, Blogger...