FC2ブログ
03-<< 123456789101112131415161718192021222324252627282930>>05-

流量センサーFD-Q20CとAPEXを繋ぐ

2020-03-22
前回、APEX流量センサーの廃止、代わりのセンサー設置でまとめたとおり、流量センサーFD-Q20Cを取り付けました
精度は良いのですが、せっかく流量センサーが付いているのにポンプが故障して流量ゼロになった場合にAPEXでそれを検出することまではできていませんでした

Twitterでフォロワーの方々から教えていただき、方法がわかったのでまとめてみます

こちらが前回設置した流量センサーFD-Q20C
20200322_010.jpg

今回は配線のテストしながら取り付ける必要があるので、アンペアも測定できるテスターを買いました
20200322_020.jpg

あと抵抗も買いました。抵抗とか触るの久々過ぎる
20200322_030.jpg

■仕組み

ではAPEXに繋ぐ前に、流量センサーができることをまとめます

このセンサーは流量値のアナログ出力が可能で、4-20mA、0-20mAで出力できます。イメージはこんな感じで、流量が増えるほど電流も増える感じ。あとゼロカット機能もあるので、流量があまりにも少なくなったときは流量ゼロと判定できますし、逆流状態になっても判定できます
20200322_040.jpg

アナログ出力とAPEXの接続はI/O Breakout BOXでおこないます
配線としてはこんな感じで、左側にセンサー、右側にI/O Breakout BOXを繋ぎます
ポイントはこの抵抗を繋ぐことで、これでセンサーのアナログ出力の電流を電圧に変換します
電流計測についてはこちらがわかりやすいです
20200322_050.jpg

■アナログ出力設定

アナログ出力は、センサーのch.2から出力されます。M12コネクタでいうと、白ケーブルのところですね
20200322_060.jpg

センサーの出力設定は4モードあり、ここでは一番下のOut1 + Analog のモードに設定が必要です
20200322_065.jpg

センサーの出力設定は初期設定の時しかできません(初期設定後に変更できちゃうと、誤操作したときに繋いだ機材が危険だからだと思います)。なので、初期化して再設定します
20200322_070.jpg

今回I/O Breakout boxで流量ゼロを判定するため、アナログ出力電流を4-20mAでは無く、0-20mA側に設定しておきます。4-20mAだと流量ゼロでも電圧はゼロになりませんので、異常検出できない可能性があります
20200322_080.jpg
(ちなみにアナログ出力の範囲が4-20mAなのは、断線と流量ゼロを区別するためですね。まぁ今回は気にせず0-20mAに設定します)

というわけで0-20mA設定しました
20200322_090.jpg

■アナログ出力の測定

APEXに繋ぐ前にテスターで測定します

とりあえずポンプ動いているときは、
20200322_100.jpg

白ケーブルと青ケーブルにテスター繋いでアンペアを測定すると2.30mAでした
20200322_110.jpg

FEEDモードにすると、
20200322_120.jpg

0.03mAとほぼゼロに。設定どおりですね
20200322_130.jpg

ついでに流量変えたら電流変わるかも確認し、ちゃんと増減することを確認しました

■配線

では配線していきます

APEXのI/O Breakout BOXから、各ポート2本、GNDから1本配線繋ぎます
20200322_140.jpg

それをセンサーのところまで引っ張ってきて接続
I/O Breakout BOXから引っ張った方は、プラスとマイナス間違えないように注意…
20200322_150.jpg

雑ですが抵抗も繋ぎました。この抵抗はすぐに買えた2.2kΩを使っていて、電圧高くなりすぎるので(電圧 = 電流×抵抗)交換予定です
20200322_160.jpg

この状態でテスター使って測定すると
流量あり:5.11V、2.34mA
流量なし:67.1mV、0.03mA
という結果でしたので、抵抗のおかげで流量あり、なしを判定できそうです

■APEX動作確認

というわけでAPEXからI/O Breakout BOXの状態を確認すると、水が流れているときはOPENですが、
20200322_170.jpg

ポンプを止めるとちゃんとCLOSEDになりました
ちなみにS_FLSBがサブ水槽のポンプ、S_FLCHがメインのクーラールートのチェックに使います
20200322_180.jpg

あとはポンプ停止を検出するためにAPEXのプログラムを修正します。これは異常検出時にE-mailを送る時のプログラムです

Set OFF
省略
If S_FlSB CLOSED Then ON
If S_FlCh CLOSED Then ON

省略
If FeedA 015 Then OFF
If FeedB 015 Then OFF
If FeedC 015 Then OFF
Defer 001:00 Then ON


実際にクーラールートのポンプを止めてみるとちゃんとメールが届きます。配管からクーラールートに水が逆流して流量はゼロでは無いのですが、方向が逆なのでちゃんと異常検出できます。これ結構凄いかも。
20200322_190.jpg
あとは応用で、クーラーを連動して止めるということもできますね

というわけで、なんとかAPEXと繋ぐことができるようになりました。これで、APEXの流量センサーでできていたことは大体できて、かつセンサーが汚れによる誤動作しなくなりましたね
みなさんアドバイスありがとうございました。電気苦手なので配線あってるのか、危険は無いのかが不安ですが… もし誤りあったら教えてください。

ちなみに今回、ポンプ停止だけを検出するだけにとどめていますが、Advanced Sensor Module(ASM)を使えば流量もAPEXで見られると思います。コスト的にそこまでするつもり無いですが。

スポンサーサイト





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

APEX流量センサーの廃止、代わりのセンサー設置

2020-03-21
2017/7にAPEXの流量センサーを導入しました
流量センサーはポンプの性能、変化を捉えられる他、ポンプが停止したときに異常として検出できたりと色々と便利でした。ポンプ停止したまま水槽用クーラーが動いたら凍結するリスクがあります
が… 最近、ポンプ動いているのに流量ゼロ表示になることが多くなってきました

■はじめに

これがAPEXの流量センサー。配管に割り込ませる形で使います
20200321_010.jpg

中身はこんな感じで水車になっていて、回転数を流量に換算してAPEXに表示しています
これが汚れ他の理由で詰まってしまったりするみたいですね
掃除しても直ってくれなかったりと割と不安定
20200321_020.jpg

あと、どうしても仕組み的に配管抵抗になって流量が下がります
配管内径が狭くなるうえに、水車まわすのが少し抵抗になります
20200321_030.jpg

悩んで最終的にはAPEXの流量センサーを廃止することにしました。今、メイン水槽にポンプが二つ、サブ水槽にポンプ一つつかっていますが、特にメイン水槽はポンプの片方が止まったとしても、一つ生きていれば配管から逆流してサンプにまで水が流れます。そうであれば水槽用クーラーが凍結することも無いはずです

■クランプオン式流量センサについて

とはいえ、流量の変化はたまに知りたいなと思ったりするので、他の流量センサーを導入することにしました
今回選んだのは、キーエンス社のクランプオン式流量センサです。アクア用というよりは、工場とかで液体の流量を測定して制御や異常検出に使うものになります
HSBAOポンプのSAFF Designさんblogで出てきていたので気になっていました

どんなものかはこれ見てください。配管に割り込ませるのでは無く、配管の外に設置して超音波で測定する仕組みです


原理はこれをみてください


■センサを16A塩ビ管に取り付け

今回、中古品を比較的安く購入し、割と無理矢理取り付けたりしています。
キーエンス社の想定する使い方とは異なりますので、うまく動かないとかキーエンス社に問い合わせたりはしないでください…(問い合わせするなら、公式サイトから登録して直接購入してください。代理店販売はしていません)

これが落札したセンサー、FD-Q20Cです。FD-Q20Cは樹脂や金属15A、20Aに対応しています
中古品はセンサー単品しかないもので、配管固定金具はついてきません。また金具の単品販売はされていません
20200321_040.jpg

センサー単独では動かないので、まずはM12ケーブルが必要です
これは長野計器 M12コネクタ付ケーブル(耐油) PUR L形 2m L形2mを買いました
20200321_050.jpg

ケーブルの端っこはこんな感じで4本出てます。2本はDC電源、残り2本はIO-Linkやアナログ出力等々に使います
20200321_060.jpg

電源として24V 1A わに口クリップ付きのアダプタを買いました
このセンサーは20V~30Vに対応しています
たくさんセンサー使うなら、スイッチング電源あると良いのかも
20200321_070.jpg

ケーブルを本体に繋いで、
20200321_080.jpg

マニュアル見ながら電源繋ぎます
20200321_090.jpg

無事起動しました
ついでにマニュアル見ながら初期設定しておきます。今回配管は塩ビ16Aに繋ぐので、15Aに設定しました
20200321_100.jpg

サブ水槽の16A塩ビ管に取り付けていきます
20200321_110.jpg

手で配管に押し当てたぐらいでは、まったく流量測定できません
20200321_120.jpg

センサー背面はゴムがついていてそこから超音波を出しているので、もっとしっかり密着させる必要があります。今回は、大きめのホースバンドを使って固定してみます
20200321_130.jpg

ホースバンドのねじを締めていくと無事ポンプの流量が表示されました。表示単位はL/minなので、12.3L/min … 738L/Hということがわかります
20200321_140.jpg

配線は、わにクリップだと怖いので、カットしてねじ込みコネクター使っときます
20200321_150.jpg

ポンプの出力を変えながら流量を測定してみました(クリックで拡大します)
以前プラケースを使って簡易測定した結果とほぼ一致しますね。プラケース測定って結構正確なのね
20200321_160.jpg

詳細はこんな感じ。流量(簡易測定)と、FD-Q20Cの結果が大体一致することがわかると思います
20200321_170.jpg

塩ビ管に外から取り付けるだけで測定できるのは凄く楽ですね。しかも水の抵抗になら無いし
配管に割り込ませる方法だと、そこから水漏れするリスクはあるし、抵抗にもなるし…

■センサを25A塩ビ管に取り付け

実験がうまく行ったので、もう一台購入し次は水槽用クーラーに繋がってる25A塩ビ管にも取り付けていきます
20200321_180.jpg

ケーブルはオムロン(omron) 丸型防水コネクタ(M12)ケーブル付コネクタ ソケット 片側コネクタ XS2 XS2F-D422-DA0-Fを買いました。こっちの方が安い…
20200321_190.jpg

本体の方に接続していきます。ちなみに、ケーブル挿すところは出っ張りがあるので挿し間違わないようになっています。あとセンサー本体はIP65/IP67対応なので防塵、防水性能高いですね
20200321_200.jpg

クーラーへの配管はこんな感じ
20200321_210.jpg

ここにセンサーをホースバンドで取り付けました
20200321_220.jpg

繰り返しになりますが、FD-Q20Cなので15A、20Aに対応しており、25Aで使うならFD-Q32Cが必要です
でもQ32Cの中古はあまり無いので、今回はQ20Cでなんとかしていきます
20200321_225.jpg

今回、配管サイズ設定は20Aにしています。そのときの表示は10.3L/minとなりました
20Aと25Aは内径が1.25倍違いますので、10.3L/minを1.25倍してあげれば25Aの流量に近付くはずです
20200321_230.jpg

というわけで、流量スパン調整します。これは調整前で倍率1.00になっています
20200321_240.jpg

これを倍率1.25に設定してあげると
20200321_250.jpg

表示が補正されました。12.8L/min…768L/Hとなりました。以前、APEXの流量センサーで測定したときは764L/Hでしたので概ねあってそうです。(正規にFD-Q32Cを使った場合と厳密には差があると思いますが、ざっくりと流量、流量の経年変化がつかめればよいので、まぁこれぐらいの値が出てくれれば十分です)
20200321_260.jpg

水槽の配管とセンサーの位置をまとめるとこんな感じ。クリックで拡大します。
あと二つセンサーあれば全ルートの把握ができる感じ…
20200321_350.jpg

■プラケース測定との比較

念のためプラケース測定して比較してみます
いつものようにプラケースで受け止めやすいように排水管を延長して、プラケースがいっぱいになるまでの時間をストップウォッチで測定します
20200321_270.jpg

今回、クーラールートの流量を測定するので、それ以外のルートはバルブで閉じます
20200321_280.jpg

クーラールートのプラケース測定結果と、FD-Q20C(1.25倍表示)との比較です
流量が多くなるとちょっと差が出ますが、これぐらいなら許容範囲です
20200321_300.jpg

あとAPEXセンサーが有ったときと無くしたときで比較
10%ぐらいの差がありますね。クーラーという大きな抵抗のあるルートでこれなので、25Aで揚水だけの場合はもっと影響が出るかも
20200321_310.jpg

バルブを開いて、クーラールートと直ルート合計の流量も測定
20200321_290.jpg

APEXセンサー無しの方が基本的に性能が良いです。逆転している箇所は、10%飛ばしで測定したせいです…(間は平均)
20200321_330.jpg

というわけで、取り付けは比較的楽で、精度も良いことがわかりました。水車が汚れていくような仕組みではないので長期間安定して使えそうですね

ここまでできるなら、あとはAPEXと連動させてポンプ停止の異常検出とかに使いたいところですが… いまのところAPEXとの接続はうまく行っていません。アナログ出力は4-20mA、0-20mAで流量が電流として検出できるような仕組みになっています
ポンプが停止したらそれをI/O Breakout BOXでOPEN/CLOSEで検出できたら良いのですが…
20200321_340.jpg

とりあえず今のところ250Ω抵抗を使って、4-20mA→1-5Vに変換し、それをAPEXのAdvanced Sensor Module(ASM)で読み取るのが現実的かな…? でもASMをセンサーの数だけ用意する必要があるのでコスト的にかなりキツい…

I/O Breakout BOXでなんとかできないかもうちょっと調べてみます



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

APEXのパーツ他購入

2020-01-11
2013年から使用しているAPEXのディスプレイモジュールが応答しなくなりました。どうも故障した模様。常に表示されているから故障しやすいのかな?
20200111_140.jpg

というわけで予定外に海外から色々買うことに…
20200111_010.jpg

こちらが新しいディスプレイモジュール
20200111_020.jpg

ディスプレイは色がオレンジに、本体はシルバーになりましたね
20200111_030.jpg

あと買ったのは、APEXの水温測定用プローブ。ロングライフって書いてあったのですがいつかは故障するとおもいますので、予備として持っておきます
20200111_035.jpg

あとpH、塩分濃度等の校正液セット
20200111_036.jpg

Finnexの300Wチタンヒーターを買いました。安いです。
20200111_037.jpg

中身はこんな感じ。110V版なので、日本で使うと少し出力落ちるはず
20200111_038.jpg

2011年からずっと使っていた方(上側)と交換します。これもFinnexのチタンヒーターで同モデルですが、下の新しい方はヒーターガードが付くようになったみたいですね。チタンそのものは錆びにくいし長期間使えると思いますが、ゴム部分の劣化が心配なので予防交換
20200111_039.jpg

あとPMUPのVer2を買いました
20200111_040.jpg

従来のものは黒一色でしたが、カラフルになりましたね
あとこのポンプ単体で空回り防止機能が付きました。水が無い状態でポンプ動くと自動停止し、そのあと少し再開してまた停止するという動きをします
ポンプが空回りすると溶けたりして危険なので付いたみたいですね
20200111_050.jpg

あと、ポンプガードを簡単に手で回して外すことができるようになりました。以前はネジ止めでした
20200111_090.jpg

PMUPは3/8インチハードチューブを挿せるので継手を買いました
20200111_060.jpg

あと10mのハードチューブも。内側にあるのは1/4インチ 10mです
20200111_070.jpg

継手を接続
20200111_080.jpg

以前から持っていたACアダプタを接続します
20200111_100.jpg

今回のPMUPは自動水換え用バケツの中に入れます
20200111_110.jpg

サンプに配管して、今までの1/4配管と一緒に使います
20200111_120.jpg

3/8インチはさすがに流量が多いですね
20200111_130.jpg

自動水換えは、今まで70Lを1時間30分かけてゆっくり水を入れていましたが、今回PMUPを追加したことで、22分で入れ終わるようになりました。
自動水換えのときは、水槽の底砂掃除とかサンプの掃除を同時におこない、バケツから水を入れていてもポンプが空回りするぐらいサンプの水が抜ける状態になります。水槽が気泡だらけになるの微妙なので、今回PMUP追加してスピードアップするようにしました。



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

APEX2016でAI Hydra、AI Primeコントロール

2018-08-04
APEX2016のバージョン5.04_7A18から、モジュール無しでAI Hydraとかの照明をコントロールできるようになったので紹介しておきます。

ひとまずリリースノートとマニュアルはこちら
対象の照明はPrime、Prime HD、Hydra 26HD、Hydra 52HDです。元からWifi対応して、インターネット経由で照明のコントロールが可能となっていますが、これを使ってAPEX2016からコントロールできるようになったというわけです。
Neptune Systemsとしては、Internet of Things Aquarium (IoTa)という名称でネット対応アクア機材をAPEXからコントロールできるように今後もしていくようですね。今回が最初のリリースで、AIの照明に対応というわけです。

というわけでAPEX2016のファームウェアをアップデートします。アップデートできるはずなのにできないときは、APEXを再起動すると良いみたいです
20180804_010.jpg

うちでは、サブ水槽の照明としてHydra 26 HDをつかっています。APEXでそれを認識させる方法はこちらにあるPDFを見ればわかります
IoTaで機材認識はAPEX FUSIONからしかできません。TasksからIOTAを選びます
20180804_020.jpg

手順は合っているはずなのに、Hydra 26 HDが見つからない。PDFにも解決策(IGMP Snooping設定の変更とか、IGMP versionを変更するとか)が書いてありますが、それでもうまく認識されず
20180804_030.jpg

結局こちらに書いてあるとおり、有線LANでAPEXを接続して、Wifiを無効化したらできました。ルーターとの相性もあるみたいなので、いつか解決するかな?
20180804_040.jpg

Hydra 26 HDは一つのモジュールとして認識されます
20180804_050.jpg

設定はこんな感じで、時間帯毎に出力を設定していきます。AIのサイトでできることとほぼ同じかな
20180804_060.jpg

ひとまずAIのサイトで設定していたのと同じようにしてみました
20180804_070.jpg

なお画面からドラッグしたり値を入れたりして設定したものは、定義ファイルとして出力できます。時間とかをぴったり00分にしたりとかはこっちの方がやりやすいかな
20180804_075.jpg

なおこちらがAIのサイトでの設定です
20180804_080.jpg

比べてみるとわかりますが、素子の設定順が違うので気をつけてください。AIのサイトは波長の短い順なのに対して、APEXの方はバーの色順?になっていますね… あえてあわせなかったのかな?
20180804_090.jpg

というわけでルーターとの相性がありそうですが、APEXからコントロールできるようになりましたね。他のネット対応機材にも対応してくれると、APEXだけでコントロールができるようになるからありがたいですね




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

FMM流量センサーの掃除

2018-06-25
FMMの流量センサーが動作しなくなったので掃除しました。原因はたぶんメインポンプを動かしながらフィルターバッグを交換したせい…?

あるタイミングから突然流量が0になっていますね。このせいでエラーがメールで飛んできたので気付きました。
20180625_010.jpg

メインポンプの流量センサーなので、かなり低い位置にあり、サンプの水を全て抜く必要がありそうです
20180625_020.jpg

このポンプだとあっという間ですね
20180625_030.jpg

バケツに吸い出します
20180625_040.jpg

サンプを空にしても流量センサーのところの水は抜けないので、コーナーボックのサイフォンブレイクからエアポンプで空気を送り込みます。これで水を減らすことができます。できれは排水のところにキャップをして密閉するとより水が抜けるのですが、そこまで準備できず
20180625_050.jpg

プラケース等で残った水を受けます
20180625_060.jpg

ようやく外すことができました。もっとメンテナンスしやすい場所に配置した方が良かったですね。あとユニオンで外せるようにしておくとなお良いかも
20180625_070.jpg

ネジを外します
20180625_080.jpg

こんな感じに結構汚れていますね。なにか羽に挟まったというより、回転軸が回りにくくなっていたようです
20180625_090.jpg

綺麗に掃除
20180625_100.jpg

ネジを戻します。ケーブル出す部分があるので注意しましょう
20180625_110.jpg

水を戻して完了です。流量はなぜか減っていますがひとまずセンサーとしては復活しました
20180625_120.jpg

しばらくして水漏れがないかチェックしました。念のため漏水センサーも置いてあります

というわけで年1回ぐらいは掃除した方が良さそうです
あとユニオンやバルブ等、掃除がしやすい配管をしておくとなお良いです



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

旧APEXからAPEX2016への移行

2018-06-24
2013年1月からAPEXを使い始めて5.5年ほどになります

■はじめに

こんなメールのとおりAPEXの脳死がたまに発生するようになりました。
20180624_010.jpg

APEX FUSIONから異常通知のメールが送られてくるものの、APEXそのものの再起動はリモートでは出来ず、水槽の前まで行ってAPEXの電源を抜き差しする必要があります。
脳死中はfallbackの設定に従ってONまたはOFFになるので酸欠にはなりませんが、水槽のクーラー、ヒーターは制御できないので気温次第では水温維持ができません。
というわけで、最近ベースユニット単品で販売されるようになったAPEX 2016を購入しました。(まだ買うつもり無かったのですが仕方なく…)

右上のモジュールが旧APEXのベースユニットです。
20180624_020.jpg

これが届いた新しいベースユニットです
20180624_030.jpg

プローブキャリブレーション用に校正液も1セットついてきます。後写真にはありませんが、ネジもあります
20180624_035.jpg

2016は厚みのあるデザインになっています。ネジ止めしても本体を90度まで角度を変えられ、ケーブルが挿しやすくできます
20180624_060.jpg

下側はこんな感じ。左上からAC、AQUA BUSx2、Temp、pH、有線LAN、BreakoutBox、塩分濃度、ORP、Variable Speed(Tunzeポンプとか)の端子です。塩分濃度が専用モジュール無しで測定可能になっていますね
20180624_040.jpg

■初期設定
ではAPEX2016に移行していきます

設定については、ここを見ながらやれば確実です。前はPDFのマニュアルでしたが、今は設定方法に選択肢がいくつかあるので、サイトで選んでいく感じになっています

とりあえず動くか試してみましょう。エナジーバーなどの機材は挿さないで、ACアダプタだけ挿して設定することをお勧めします。なおここで使っているのは公式のACアダプタではなく、汎用のACアダプタを自己責任で使っています
20180624_050.jpg

APEX2016はwifi対応しているので、スマートフォンから設定しました。旧APEXは無線LAN経由でファームウェア更新できなかったりしましたが、2016は正式対応しています。

ブラウザからAPEXのlocalサイトを表示させてみました。旧APEXとは大きく変わって、FUSION風になっています。モジュール類はまだ挿していないのでなにも認識されていません。CPUも高性能化したせいかレスポンスが良くなっています
20180624_200.jpg

この状態でファームウェアの更新、タイムゾーンの設定、Season Tableの設定はやっておくと良いですね

■旧APEXの設定バックアップ

APEX2016にエナジーバーなどの機材を差し替える前に、旧APEXの設定をひととおりバックアップしておきます。
localの方に入って、設定のバックアップをとります。

あとダッシュボードの画面については画像に保存しておくと良いです。配置とか名前とかを復元する必要がありますので
画面1枚目
20180624_080.jpg

画面2枚目
20180624_090.jpg

プログラムもxml形式で表示できますので、パソコンに保存しておきます。
20180624_100.jpg

xml形式はExcelで開くとこんな感じに表形式になりますので扱いやすいです。フリーの表計算ソフトでもできるはずです
20180624_110.jpg

なぜ差し替える前にこれらをバックアップするのかというと…
機材を新APEXに挿して、そのあと旧APEXに挿し直すとモジュールのIDが変わるからです。つまり新品モジュールとして認識され、今まで使っていた名前が使えませんし設定していたプログラムも引き継がれません。なので今のうちにやっておきます

■繋ぎ替え
ここからは時間がかかるので、休みの日など時間が取れるタイミングで行ってください

APEX2016にモジュールを繋ぎ替える前に、ヒーター、クーラー、水換えポンプなど、制御無しで動き出したら困る機材のプラグをエナジーバーから抜いてください。
APEXで認識されたエナジーバーは、自動的にサンプルのプログラムが割り当てられます。それで内容によっては勝手に機材が動き出しますので、危険なものは抜いておく必要があります

APEX2016にひととおり繋ぎ替えました。有線LANだけは不要です
20180624_070.jpg

モジュールの番号はプログラム再設定時に参考になるので、画面を撮っておくと良いです。またFMMのファームウェアが更新できるはずなのでやっておきます
20180624_130.jpg

エナジーバーにはこのようにプログラムが勝手に設定されます。Outletの名前の12のところが、モジュールのAddrと対応していますので、どれを変えればよいかわかるはずです
20180624_140.jpg

プログラムの変更順は整合性を保つため、このような順番でやると良いと思います。
1. Profileの設定を行う
2. Probeの名前を変更する
3. Outletの名前を変更する
4. Virtual Outletの登録をする
5. Outlet / Virtual Outletのプログラムをコピペする
6. logの記録など細かい設定を見直す
7. プログラムのコピペが間違っていないか、最終確認する
旧APEXのプログラムとProbeやOutletの名前が違うとプログラム登録時にエラーになってしまうので、名前変更を先に行う必要があります。なおVirtual OutletはAPEX2016から一つ一つ追加できるようになりました

Excelはどこまで変更したのかわかるように個々に記録しながら地道にやっていきました。エナジーバーを複数持っていてAddrがどれかわからないときは、個別にON/OFFさせてみれば特定できます
20180624_120.jpg

7.については、summary表示させるとプログラムを一覧表示させることができますので、名前毎に差が無いか見てみてください。1行コピペ漏れとかが発生しやすいかも
20180624_150.jpg

localのダッシュボードは使いやすいように綺麗に並べましょう
20180624_160.jpg

あとFUSION側も並べ替えておきます。3列構成なので前のように横に並べられないのがちょっと気になる
20180624_170.jpg

FUSIONに登録してしばらくするとHeartbeat登録ができるようになるのでやっておきましょう。APEXが脳死したらメールで知らせてくれます

■ついでに

水温、pH、塩分濃度のProbeはキャリブレーションし直します。ORPはキャリブレーション不要です。
20180624_180.jpg

■APEX 2016変更点
気付いた変更点をまとめておきます。もっとありそうですが
・localサイトのレスポンスが良くなった
・localサイトがFUSION風になった
・APEX FUSIONからファームウェア更新できるようになった
・無線LANに対応した
・塩分濃度測定に対応した
・新エナジーバーを使えば、電圧と消費電力の個別モニタリングが可能
・Virtual Outletが一つ一つ追加できるようになった
・FMMで挿しているセンサーが何なのか、自動認識されるようになった
・Apex TRIDENT (Alk, Cal, Mag) Monitoring Deviceに対応
・Feedモードが秒指定になった
・Feedモードで残り時間が表示されるようになった
20180624_190.jpg

といった感じでしょうか。細かく進化していますね。
あと塩分濃度校正したら、ある程度実態に近い値が出るようになりました。(以前は水槽のppt -5ぐらいの低い値でしたが… 現在は33.5pptぐらいの表示になっています)。Neptune Systems公式の校正液の方が機材とマッチしているのかもですね。



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

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)

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)

APEXで1回きりのOutlet実行、自動OFF

2018-02-27
APEXで1回きりのOutlet実行、自動OFF

APEXを使っていて、例えば「水換えを今すぐ開始したい」、「自動給餌を今すぐ行いたい」って時が結構あります。それらのトリガー用Virtual Outletを用意してあったとしても、あとで手動でOFFにする必要がありますがそれを改善したいと思います。Google Homeのトリガーもこれを使っています

まぁ1年前ぐらいにやってあったのですが、紹介し忘れていましたので書いておきます

なお元の記事はこんな感じです。プログラムを比べてみてください
APEXを使った自動水換えシステム!
Automatic Feeding System


■ポイント
手動でOFFが不要になるポイントはWhen命令です。この命令は指定した時間(ここでは240分…4時間)経過したら強制的にOutletがOFFとなります
-----V_WTCHnow-----
Fallback OFF
Set ON
When On > 240:00 Then OFF


本来は自動給水でセンサー故障により給水しすぎたとき、自動停止させるために使います。その応用ですね。去年のファームウェア更新で実装されています
なお強制停止したあとはエラーとして記録されますので、E-mail送信やアラーム鳴らすってことができます
If Error V_WTCHnow Then ON

■自動水換えの開始トリガー
とりあえず実装した結果はこんな感じです
20180227_020.jpg

まずは自動水換えを手動でスタートさせるトリガーとなるのはこちらです。4時間経過したら止まります
-----水換え手動開始 V_WTCHnow-----
Fallback OFF
Set ON
When On > 240:00 Then OFF


これに伴って、それぞれ書き換えたので再掲しておきます

自動水換えをスケジュール起動させるトリガーです。スケジュールで水換えしない場合はOFFにしておきます。この設定では土曜日の12時から開始されます
-----水換えスケジュール開始 V_ATWTCh-----
Fallback OFF
Set OFF
If Time 12:00 to 16:00 Then ON
If DoW SMTWTF- Then OFF


そしてこれが水換えトリガーです。V_WTCHnowとV_ATWTChの両方どちらかがONなら水換えを開始するようにします
-----水換えトリガー V_WTCHtgr-----
Fallback 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


あと、以前はV_ATWTChが水換えトリガーだったので、それぞれV_WTCHtgrに書き換えます
-----みずためから給水ポンプ2 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


排水については、給水と同時に行うようにしました。「If Output WT_PumpAT = ON Then OFF」を消しただけです。以前は給水して水位が上がってから排水していましたが、時間がかかるのでスピードアップのためです。どちらでも良いかと思います
-----排水ポンプ WT_DrPump-----
Fallback 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


これは変えていませんが再掲
-----サンプの上フロートスイッチ検知 V_FltUpper-----
Fallback OFF
Set OFF
If S_UpF1 OPEN Then ON
If S_UpF2 CLOSED Then OFF
Defer 000:05 Then ON


これも再掲
-----サンプの下フロートスイッチ検知 V_FltLower-----
Fallback OFF
Set OFF
If S_DwF1 OPEN Then ON
If S_DwF2 CLOSED Then OFF
Defer 000:05 Then OFF


-----給水の流量チェック V_WTFlChk-----
Fallback 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


給水も排水もしていない時は、プロテインスキマーをONにするように修正しました
-----スキマーOFF V_SkimStop-----
Fallback 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


これは前無かったと思います。給水も排水もしていない時は、プロテインスキマーをONにします。水換えが早めに終わったらスキマーを自動再開させるためです
-----スキマーON V_SkimStart-----
Fallback OFF
Set ON
If Output WT_DrPump = ON Then OFF
If Output WT_PumpAT = ON Then OFF
Defer 010:00 Then ON


こちらはそのまま(自動給餌の設定が追加にはなっていますが)
-----スキマー Skimmer-----
Fallback 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


-----自動給水 V_ROtime-----
Fallback 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


■自動給餌の開始トリガー
実装した結果はこんな感じです
20180227_020.jpg

構造は同じですね

こちらがフィードモードを手動で開始するトリガーです。20分で停止します
-----自動給餌の手動開始 V_Feednow-----
Fallback OFF
Set ON
When On > 020:00 Then OFF


こちらがスケジュールで起動する場合です。AFSで給餌するだけなので、15分で再開です
-----自動給餌のスケジュール開始 V_FeedAuto-----
Fallback 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


上記のV_FeednowとV_FeedAutoを統合して、どちらかONなら開始します
-----自動給餌のトリガー V_FeedTime-----
Fallback 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


復帰後の待ち時間用はこちらです。これは2分待ち
-----2分待ち V_FeedDL2M-----
Fallback 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


同じく10分待ち。メール送信を止めるために使います
-----10分待ち V_FeedDL10M-----
Fallback 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


同じく60分待ち。スキマー停止に使います
-----60分待ち V_FeedDL60M-----
Fallback OFF
Set OFF
If Output V_FeedTime = ON Then ON
If Output V_FeedTime = OFF Then OFF
Defer 060:00 Then OFF


AFSそのものは変更ありません
-----AFS Feeder-----
Fallback 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


FeedAが定義されている各機材に対して、この待ち用Outletを定義します。例えばこんな感じ
-----ROの電磁弁 ROSValve-----
Fallback 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


2分待ちさせたい機材は定義するOutletを変えればOKです
-----メインポンプ MainPump-----
Fallback 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


スキマーは60分待ちです
-----スキマー Skimmer-----
Fallback 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


といった感じです。ちょっと長いですがこんな感じでできます



B!
★Neptune Apex★ | コメント:(0) | トラックバック:(0)
 | ホーム | Next »

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