SwitchBotのスマートプラグのタイマー、スケジュール機能について

コンセントのON/OFFを遠隔で操作可能なSwitchBotシリーズのスマートプラグですが、色んな用途に使えるのではないかと思い、3つほど購入してます。
1つ目は、前回の記事に書いたWebServerの強制再起動用(手動)です。
2つ目は、一緒に買ったSwitchBotシリーズのデジタル温湿度計と連動させて、夏の暑い時期にサーキュレーターを連動させようと思っています(PC関連機器の冷却のため)
3つ目は、1カ月に1~2回ネットに接続できなくなるNTTレンタルのホームゲートウェイの強制再起動用で今回考えてみました。

SwitchBot スマートプラグ

このスマートプラグは別途ハブを購入する必要もなく、単独でWIFIに接続可能で、SwitchBotアプリから操作が可能です。
そのSwitchBotアプリからは、○○時間○○分後にON/OFFが可能なタイマー機能と、○曜日○○時○○分にON/OFFが可能なスケジュール機能を設定できます。
そこで、このスケジュール機能を使用し、ホームゲートウェイを強制的に再起動しようと考えました。

しかし、電源OFF時は何の問題もないと思うのですが、電源OFFから電源ONに復帰する際に正常に動くのかが疑問でした。
なぜならネットワーク接続が前提の機器で、ホームゲートウェイというインターネット接続機器の電源が落ちているからです。

考えるよりも試した方が早いので、実際に電源OFFと電源ONのスケジュールを組んでみました。
スケジュールは曜日指定可能、且つ1分刻みなので電源OFFの1分後に電源ONという2つのスケジュールで組んでみました。

まずは時間通りに電源OFFするか・・・
これは問題なく時間ピッタリに電源OFFになりました。

それから1分後・・・

カチっという音とともに電源ON!
ホームゲートウェイが落ちてても何の問題もなくタイマーが作動しました。

ということで、スマートプラグのスケジュール機能を利用してホームゲートウェイを1週間に1回だけ深夜に強制再起動することにしました。
※ホームゲートウェイは、設定でファームウェアの自動更新が有効になっていると思いますので、設定されている更新時間を避けて再起動する必要があります。
更新中に再起動が掛かると、ホームゲートウェイが起動しなくなる可能性があるので注意が必要です。

SwitchBotで電源スイッチを操作する

以前から時々困っていたことがありました。
それはWebサーバーの再起動時にWebサーバーがフリーズする場合があることです。
自宅でやっている時は手動で強制的に電源を切れるので問題ないのですが、遠隔で作業をしている際に再起動を行いフリーズするとどうしようもありません…

最近AmazonEchoを使った音声操作で色んな機器を調べてました。
その中のSwitchBotシリーズにスマートプラグという機器があります。
この製品はハブを必要とせず単体でWIFIに繋がりますし、SwitchBotのアプリをスマホに入れれば遠隔から電源をON/OFFできます。

SwitchBot スマートプラグ

設定も取り付けも簡単なので、基本的に迷うことはありません。
今回はWebサーバーとUPSとの間に設置したのですが、UPSのコンセントプラグが横配置ではなく縦配置のため、横配置のために横長にしたというスマートプラグの形状が仇になりました…

電源の向きを変換するアダプターを使って向きを強制的に変えます。

なんとか収まりましたが、延長コードで延長した方が安定感がありそうです。
そのうち延長コードに変更しようと思ってます。

最後にPCの電源復帰で自動的にPCの電源が入るようにBIOS設定を変更しておきます。
これをやっておかないと電源が復帰してもPCは起動しません。

ちなみにスマートプラグには極性がありますので、反対に繋ぐとスマートプラグ自身の電源が入らなかったりしますのでご注意ください。

Amazon Echoで壁スイッチを操作する

Amazon Echo Dot 第3世代がAmazonMusicUnlimitedと抱き合わせで999円で売られていたので2個買ってみました。
単にしゃべるだけでは芸がないので、リモコン類を登録して音声で操作できるようにしようと考える人が多いかと思います。
リモコンの操作を行う場合、Echoとは別にリモコン操作用の機器が必要となります。

私はリビング用にラトックシステム RS-WFIREX4、自分の部屋用にSwitchBot(スイッチボット)Hub Miniを購入・使用しています。
これらのリモコンコントローラでは基本的に赤外線しか利用できず、PS3やPS4などのBluetooth機器や、一部のエアコンなどで採用されている無線通信を利用した機器には使用できません。
以前使用していたエアコンは富士通製で無線通信でしたが、壊れたのを切っ掛けに三菱の霧ヶ峰に買い替えたら赤外線になり、PSを除く家の中の殆どの機器がAlexaで操作可能となりました。
(霧ヶ峰にはWIFIアダプターを取り付けたので、それ経由でもスキル対応が可能ですが、リモコンスキルの方が多機能です)

照明も当然ながらリモコン対応の製品であればリモコンコントローラーで操作できるのですが、どうしても壁スイッチを使いたくなる時があります。
また、リモコンがない照明を使っているケースもあるかと思います。
(私の場合、リビングの照明が壁スイッチのみの照明です)
そういう場合は物理的に壁スイッチを押すか、若しくは無線の壁スイッチに取り換えることになります。

最初に考えたのが無線式のスイッチでした。
国内ではLink-S2という製品が技適を取得した製品として合法的に使用することが可能です。
価格は16,000円前後とちょっとお高めです。
海外製品が激安で売られてたりしますが、基本的に技適を通してないと思いますので、これらの製品は違法になる可能性が高いです。

そして問題は価格と技適だけではありません。
殆どの製品は照明の配線とは別に、無線の電源用の配線が必要になるのです。
壁スイッチの近くにコンセントがあれば、そこから電源用の線を引くことも可能ですが、そうでない場合は新たに電源線を引くのも一苦労です。
(最初から電源を引いてもらっていれば問題ないですが、最初からスマートスイッチありきの設計をしない限り、そういう住宅はなかなか少ないと思います)

そこで登場するのが物理的にスイッチを押すことが可能なSwitchBotです。
電池内蔵で約600日間操作可能ということで、さっそく購入してスイッチに取り付けてみました。

自宅はパナソニック製の壁スイッチが使われていて、SwitchBotを側面に張り付けることになります。
付属している両面テープは非常に強力で簡単に剥がれることはありません。
むしろ両面テープが剥がれる前にスイッチカバーがパキっと外れて浮いてしまうほどの粘着力です。

問題は接着力ではなく、スイッチカバーの形状的にSwitchBotが斜めに付いてしまうことです。
可能な限り斜めにならないよう工夫をしましたが、これ以上持ち上げようとするとスイッチカバーが外れてしまうため、スイッチ側にかさましをすることにしました。
(黒いのを貼り付けているのがスイッチ側のかさましです)

折角のIOT化なのに見た目が最悪になってしまいました(笑)
また、手で壁スイッチを操作する際も何気にSwitchBotが邪魔だったりします…

電源線を引かずに何とかならないものかと探し回った結果、灯台下暗し!
パナソニック製品にそれを叶えてくれるものがありました。
※壁スイッチの交換には電気工事士2種の資格が必要となりますのでご注意ください。

パナソニック(Panasonic) ワイド21とったらリモコン2線式(入切用
WTC56219W

新たに電源用の配線を引かなくても、既存の壁スイッチに来ている2本線のみでリモコン化ができる製品です。
この製品には赤外線方式のリモコンが付いてきて、使用しない時はスイッチに取り付けておくことができます。
赤外線リモコンまで付属している割にはお値段もリーズナブルです。
(スイッチボット単体で買うのとほとんど変わりません)

また、取り付けマニュアルを読んでみたら、階段の上と下で入り切りができるような、3線式・4線式のスイッチにも対応可能なようです。
(リモコンは親機のみで、子機はリモコン対応にはなりません)

背面を見ても別途電源を必要としないことが分かります。

元々付いてたスイッチを取っり外します。
(電気工事士2種所持を前提としていますので、交換の細かい内容は書きません)

マザーツール 低圧用検電器 DT-48

検電器で極性が正しいことを念のため検査し

WTC56219Wと入れ替えたら完了です。

カバーを取り付けたら取り換え終了。

上の写真が付属のリモコンを取り外している状態で、下の写真がリモコンを取り付けている状態です。

あとは、通常の赤外線リモコンと同じようにプリセットから選ぶか、もしくは手動で信号を学習させればOKです。
(初期ではスイッチのCHが2CHになっていますので、プリセットから選択する場合は2CHを選択してください)
これで壁スイッチしかない照明も無事Alexaの音声操作対応となりました。
ちなみに、この部屋のスイッチは、実際にはリモコン付きのシーリングライトなので、ON/OFF以外の操作はシーリングライトのリモコンで学習させました。
複数のリモコンを複合して学習させることもできるので、壁スイッチのON/OFFだけでなく、明るさ調整などもできたりします。

壁スイッチのリモコン化で、追加の電源用配線が必要ない製品は非常にありがたいです。
流石パナソニック!

尚、同じパナソニック製の壁スイッチでも、以前の壁スイッチは押すとカチっと音がするタイプでしたが、この壁スイッチは殆ど音がしません。
また照明を点けていない時は蛍ライト(スイッチ左側のLED)がほんのり光って暗闇でもスイッチの場所が分かります。

まあ、アレクサの音声操作でスイッチをONにすればいいので、蛍ライトは不要と言えば不要ですけど。

¥1,038 (2024/01/29 17:15時点 | Yahooショッピング調べ)

Synology DS1618+のメモリを32Gに増設

Synology DS1618+が標準で搭載しているメモリは4Gです。
4Gでも普通に動きはしますが、スロット空きが1つあるのでSynology純正の4Gメモリを増設して8Gで運用していました。

NASの場合通常は8Gも積んでいれば特殊なことをしない限り十分なメモリ量と言われています。
が、実は最近のNASのメモリはそう単純でもなく、積めば積むほどキャッシュとして利用してくれたりします。

私はDS1618+の拡張カードに10ギガビットのネットワークカードを選択したので、NVMeのSSDをキャッシュとして利用することができません。
(2020年に10ギガネットワーク+NVMe SSDx2の拡張カードが出るらしいですが、2019年現在はまだありません)
そこで少しでもキャッシュを利用できるようにメモリを最大の32Gまで増設することにしました。
メモリスロットは2つしかありませんので、既存の4Gx2メモリと16Gx2メモリを交換する形となります。

今回選択したのはSynology純正のメモリではなくTranscend TS2GSH72V4Bというメモリです。
※純正以外のメモリを使用した場合のメーカー補償はありませんのでご注意ください。
DDR4-2400 ECC SO-DIMM 16GBを2枚搭載することで32Gとなります。

ECCメモリが何なのか?必要なのか?については以下のサイトが参考になるかと思います。
個人的には普通にPCを使っている分には必要ないと思います。
ECC 対応メモリは必要なのか?

Transcend TS2GSH72V4B

なぜこのメモリを選択したかというと、そもそもSynology純正のD4ECSO-2400-16Gという16GのメモリがDDR4-2400 ECC SO-DIMMのため選択肢がそれほど多くなく、その中から安めのものというと数種類しかありません。
更にメモリの基板を見比べたところ、純正の基板とチップやパターンの配置がOEMでは?と思えるほど同じに見えたのがTranscend TS2GSH72V4Bでした。

下の画像はSynology純正D4ECSO-2400-16G

下の画像はTranscend TS2GSH72V4B

チップやパターンの配置など基板のシルク印刷以外は同じに見えます。
ただよく見るとチップは同じSAMSUNG製ですが、型番がSynology純正がK4A8G085WB-BCRCでTrancend製がK4A8G085WC-BCTDでした。
SAMSUNGのデータシートを見ると
K4A8G085WB-BCRCB-die 8Gb 2400Mbps 1.2V
K4A8G085WC-BCTDC-die 8Gb 2666Mbps 1.2V
となっており、周波数とダイの違い(B-die/C-die)がありました。
(当然ながらロットによっても変わると思いますので、たまたま私が購入したロットがそうだった可能性もあります)

まあ今時のメモリは相性問題も殆ど出なくなりましたので、そこまで神経質にならなくてもいいのですが、仮に動かなかった時に普通のノートPCなどでは未対応のECCメモリは売りにくいだろうなと…
ちなみにCFDのメモリはCFDの互換テストでDS1618+が互換性ありになっていましたので、問題なく動きそうだったのですが品切れでした。

メモリの交換は非常に簡単で、DS1618+を裏返すとネジが2本あるので外すだけです。
純正と入れ替えてネジを元に戻せば終了。

起動時のメモリチェックに時間が掛かるようになったのか、起動が若干遅くなった気がします。
(NASなので再起動の機会も殆どなく、正確に測ったわけではないので気のせいかもしれませんが…)

交換後にガジェットのリソースモニターを見てみると…

使用中のメモリはたったの2%です。
これだけ見ていると必要以上のメモリを追加してしまったように見えます。
(ECC対応メモリになったので、例え使い切れなくても全くの無駄ではないですが)

更に詳しくメモリの使用状況を見るためにアプリの方のリソースモニターを開いてみます。

メモリの項目が一気に増えます。
ここで気になるのがキャッシュ済みとフリーの項目です。
再起動直後はキャッシュ済みは殆どなく、フリー領域が殆どとなります。
ここまで見ても32Gのメモリが必要か?と疑いたくなる状況です。

下の画像は1日NASを使用した後のメモリ状況です。

キャッシュ済みが殆どを占めているのが確認できます。
もちろんアプリを起動したりしてメモリが必要な状況が発生すると、キャッシュ済み領域が解放されてアプリなどに割り当てられます。
この様に一見必要以上と思わるようなメモリを積んだ状況でも、余ったメモリ領域が無駄に遊ばされることなく、キャッシュ領域として使用されていることが分かって頂けるかと思います。

現在のNASは賢く、メモリは積めるだけ積んだ方が性能に寄与するということになります。
但し、それだけメモリにお金は掛かりますし、若干ですが消費電力も増えますので、その辺りとのトレードオフとなります。

尚、SSDをキャッシュとして利用する場合は、単にアクセス速度に寄与するだけでなく、SSDのキャッシュにヒットした場合はHDDにアクセスしないため、HDDをハイバネートで停止する運用をしていた場合にHDDがスピンアップしません。
SSDキャッシュにはSSDキャッシュの利点がアクセス速度とは別にありますので、早くネットワークとNVMe SSDのコンボカードが出ることに期待しています。

現在のSynologyの一般価格帯ラインナップには、10GネットワークとNVMe SSDを両立できる機種がありません。
(拡張カードを利用してもです)
QNAP製品には既に存在していますので、SynologyはQNAPに比べるとハード面では周回遅れ感があります。
OSやアプリなどの完成度は高いと思いますので、ハード面でも頑張って欲しいと思います。

Synology DS1618+に10Gのネットワークカードを追加

NASをSynologyのDS1618+へ変更しましたが、宅内LANも同時に10Gへと変更したため、DS1618+にも10GのNIC(ネットワークインタフェース)を取り付けることにしました。
取付方法はSynology公式のドキュメントに詳しく載っていますので、そちらを参考に作業を行えば、初心者でも簡単に取り付けできるかと思います。
ハードウェア設置ガイド

10ギガビットのネットワークと言っても選択肢がいくつかありまして、一般的に1ギガ環境で使用されている1000BASE-T規格(RJ45形状のコネクタ)の延長線上の10GBASE-T、商業用のサーバーやデータセンターなどで主に使われている光ケーブル・DACを使用した10GBASE規格のものなどです。
使うケーブルの種類やケーブルの長さによって規格がかなりの種類ありますが、一般的な家庭で容易に導入可能なのは10GBASE-TSFP+ Direct Attachというものになります。

更に言えば10GBASE-Tであれば家電量販店などでもCAT6・CAT6A・CAT7など10G対応のケーブルが売られており最も導入が楽だと思います。

私も最初は宅内に引いてある既存のLAN配線がCAT6のケーブルだったため、導入が容易なことからDS1618+にIntelのX550-T2というNICを取り付けました。
(CAT6のケーブルでも37mまでは10Gでの通信が可能)

同時にネットワークスイッチ(ハブ)も10ギガビット対応のものに変えたのですが、メインで使用するスイッチをNETGEARのXSM4316S-100AJSに変更したところ、結構な消費電力になっていることにUPSのLOADの数値を見て改めて気付きました。
(スペック上の数値は見てましたが、実際の消費電力を見るとまた違った意味で再認識します)
スイッチ類も結構熱くなりますし、UPSの容量も必要最低限にしていたのもあり、出来るだけ消費電力を下げたいと思うようになりました。

そこで目を付けたのがSFP+ Direct Attachです。
10GBASE-Tの消費電力の1/3~1/5程度という低さです。
(10GBASE-Tもチップが更に進化すれば下がってくるとは思いますが、現在では結構な消費電力です)
宅内LANの部屋間は既に引いてあるCAT6のケーブルを使用するため10GBASE-Tを使用しますが、NASとスイッチ間はSFP+に変更することにしました。
NETGEARのXSM4316S-100AJS10GBASE-Tを8ポート、SFP+を8ポート持っているのでポート数も全く問題なしです。

NICを購入すべくSynologyのDS1618+の互換リストを調べてみました。
Synologyが保証しているのはINTELであればX520-DA2, X540-T2, X550-T2, X710-DA2, X710-DA4、Mellanox(メラノックス)であればConnectX-3 Pro EN MCX312B-XCCT, ConnectX-4 Lx EN MCX4121A-XCATの2つのみとなります。
最初はIntelのX710-DA2を検討しましたが、偽物が多いことや価格が高いことでMellanoxのConnectX-3 Pro EN MCX312B-XCCTを導入することにしました。

海外からの輸入で正規品の新品でも17,000円くらいで購入可能です。


(シリアルナンバーなど削除したり、画像を一部加工しています)

DS1618+への取り付けは最初に貼ったリンクを見て頂ければと思います。

X550-T2(恐らくコピー品)との比較です。
上がX550-T2です。

基板だけ見ても消費電力の違いは分かりませんが、実際に使用すると消費電力の違いが分かります。
DS1618+XSM4316S-100AJSをUPSに接続して消費電力を確認すると、X550-T2をLANケーブル1本で接続するのと、ConnectX-3 Pro EN MCX312B-XCCTをLANケーブル2本でLAG(リンクアグリゲーション)で使用するのでは、後者の方が消費電力が低いのです…
但しDAC(DirectAttachケーブル)の最大長は5m程度あり、距離が長い場合は光ケーブルを導入することになりますので、消費電力は若干増えてしまいます。
それでも現状では光ケーブル利用の方が10GBASE-T利用よりも消費電力が低いのです。

10GBASE-Tの方がケーブルに馴染みもあり導入しやすいですが、10ギガビット対応のハブはSFP+対応のものも結構ありますので、SFP+導入の敷居は決して高くありません。
(DACのベンダーロックなど知識がないとハマったりと決して低くもありませんが…)

これから10ギガ環境の導入を検討されている方は、SFP+の導入を検討されることをお勧めします。
(将来的に10GBASE-Tチップの消費電力が減れば10GBASE-Tがお勧めになるとは思います)

NETGEAR
¥411,259 (2024/01/29 17:17時点 | Yahooショッピング調べ)

Synology NASとLinux(Debian Buster)を1台のUPSに連動させる その2

Synology NASとLinux(Debian Buster)を1台のUPSに連動させる その1の続きとなります。

SynologyのDS1618+はUPSのネットワーク共有でNUTというアプリを裏で動かしています。
NUTはNetwork UPS Toolsのことで、Linuxで利用可能なパッケージとなっています。
DS1618+にSSHで接続して設定を確認してみました。

/usr/syno/etc/ups/upsmon.confの中身を覗くと
MONITOR ups@localhost 1 monuser secret masterという記述がありました。

ユーザー名:monuser
パスワード:secret
で接続すればいけそうです。

早速、連携したいDebianにNUTパッケージをインストールします。
# apt install nut
※この記事を書いている時点でのバージョンは2.7.4-8となります。

NUTの細かい内容まで説明は難しいので、詳しく知りたい方はNUTのオフィシャルドキュメントを読んでみてください。
細かいところまで読むと結構勉強になりす。

ということで、設定内容だけ抜粋です。

/etc/nut/upsmon.conf
このファイルが基本的な設定ファイルとなります。
※NASのIPを192.168.1.100と仮定して書いていますので、ご自身の環境に置き換えてください。
このファイルでNASを見に行くという設定を行います。
DS1618+にSSHでログインして確認したIDとPASSを使用します。
SynologyのNAS同士のUPS連携は可能になっていますので、DS1618+だけでなく別の機種でも同じ設定になっていると思われます。

MONITOR ups@192.168.1.100 1 monuser secret slave
MINSUPPLIES 1
SHUTDOWNCMD “/sbin/shutdown -h +0”
NOTIFYCMD /sbin/upssched
POLLFREQ 5
POLLFREQALERT 5
HOSTSYNC 15
DEADTIME 15
POWERDOWNFLAG /etc/killpower

NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC

RBWARNTIME 43200
NOCOMMWARNTIME 300
FINALDELAY 5

MONITOR行はNASではmasterになっていましたが、Debianでは見に行く側なのでslaveとなります。
NOTIFYFLAGの行はUPSのステータス変更時に何を行うかを設定する行となります。
他にも色々なステータスがありますが、今回はこの3つのみを設定します。

ONLINE:正常運転時のステータスです
ONBATT:バッテリー運転時のステータスです
LOWBATT:バッテリーが残り僅かになった時のステータスです

後ろのSYSLOG+WALL+EXECの意味は以下となっています。
SYSLOG:syslogにログとして書き込みます
WALL:全ユーザーのターミナルにメッセージを書き込みます
EXEC:後述するNOTIFYCMDが実行されます

NOTIFYCMDに関する設定ファイルは以下となります。
/etc/nut/upssched.conf

CMDSCRIPT /bin/upssched-cmd
PIPEFN /var/run/nut/upssched.pipe
LOCKFN /var/run/nut/upssched.lock

AT ONBATT * START-TIMER upsgone 120
AT ONLINE * CANCEL-TIMER upsgone
AT LOWBATT * START-TIMER upsgone 5

実際に実行するスクリプトをCMDSCRIPTで指定しています。
AT行はステータスを受け取った際にスクリプトに対する動きを設定しています。
AT_ステータス_ホストの設定_スクリプトに対する実行タイプの指定_スクリプトに渡す引数_タイマーの場合は秒数
となります。

AT ONBATT * START-TIMER upsgone 120を例にとると
バッテリーのステータスになったら、全てのホストの設定で、タイマーを開始、スクリプトにupsgoneを渡し、タイマーの時間は120秒
となります。
START-TIMERの部分は
CANCEL-TIMERがタイマーをキャンセル
EXECUTEだとスクリプトを実行となります。
今回の設定ではLOWBATTの場合でもタイマー5秒としていますが、即時実行したければEXECUTEでもいいかと思います。

最後に実際に実行されるスクリプトを編集します。
/bin/upssched-cmd

case $1 in
        upsgone)
                logger -t upssched-cmd "The UPS has been gone for awhile"
                upsmon -c fsd
                ;;
        lowbatt)
                logger -t upssched-cmd "The UPS became lowbattery"
                upsmon -c fsd
                ;;
        *)
                logger -t upssched-cmd "Unrecognized command: $1"
                ;;
esac

ONBATT、LOWBATT共にやっていることは同じで
upsmon -c fsd
というコマンドでシャットダウンを行っています。
その上の行はログ出力なので文字が違うだけで、その下のコマンドは同じになっています。

設定が終わったら最終的に
# systemctl restart nut-client
を実行してサービスを再起動します。

あとは実際にUPSの電源を抜いてみて時間通りに動くかをテストします。
ハブの電源もUPSに接続していないと、実際の停電時にNASと通信ができないので注意が必要です。
またDebianのシャットダウン迄の時間は、NASよりも短くしておかないと、今回のNAS側の設定では先にUPSの電源が切れてしまいます。
(NAS側で最終的にUPSの電源OFFを行っています)

実際に停電と同じ状態にして上手く動けば完了です!

主にPC、車・バイク、トイガンなどについて書いてます