【Amazon Alexa認定取得製品】 TP-Link WiFi スマートプラグ 遠隔操作 直差しコンセント Echo シリーズ/Google ホーム/LINE Clova 対応 音声コントロール サーキュレーター ハブ不要 3年保証 HS105 - TP-Link

TP-Link

5.0 / 5.0

HS105 を買ってみた。中にリレーが入っていて Wi-Fi 経由でオン・オフできるというもの。

値段的には3000円ぐらいで買ったので、まぁこのぐらいだろうという気がする。まともな24時間タイマースイッチと同じぐらいの値段と考えると、買える値段。定価だとちょっと高いなと感じる。

アプリからのオン/オフは結構はやい。リレーの動作音 (カチ) がするので、リレーの動作音が好きな人(自分)には嬉しい。

最大電流が14Aまでだけど、14A限界まで連続して使うような負荷には使わないほうが良さそう。今のところエアコンと連動させたいサーキュレータに使っている。

うちでは他に使えそうな機器があんまりないかな。冬になったらホットカーペットに使うのが便利かも。あとはいざってときに強制的に再起動したい機器につけとくと遠隔で再起動できて良いかもしれない。

Google Home から制御

デバイスは TP-Link の Kasa というアプリで設定する。このとき Kasa のアカウントを作るので覚えておく。

Google Home アプリからデバイスを追加で TP-Link Kasa を選び、Kasa アカウントでログインするとデバイスが現れる。ニックネームを適切に設定すると「OK Google、サーキュレーターつけて」とかで制御できる。

コマンドラインから制御

自力で制御する場合は GitHub - plasticrake/tplink-smarthome-api: TP-Link Smarthome WiFi API が使える。コマンドラインアプリもついてるので、以下のようにシェルから実行できる。

tplink-smarthome-api sendCommand 192.168.0.26:9999 '{"system":{"set_relay_state":{"state":0}}}'
  1. トップ
  2. tech
  3. TP-Link のスマートプラグ HS105 を買って制御してみた


最近ちょっとOAタップの意識が高まってしまって、常用するOAタップはできるだけパナソニック製品 (できが良い) にしようという気概が生まれてきてしまった。

それはともかく、パナソニックはOAタップに「コードなし」モデルをラインナップしている。つまりユーザ側で任意のコードを取り付けられるようになっている。

必要なのは以下の通り。

  • コードなしOAタップ
  • 3心ビニルキャブタイヤ丸形コード(VCTF)2.0mm^2
  • プラグ (2P接地極) 2P
  • (オプション。あったほうが綺麗にできる) R2-3.5 裸圧着端子

ちなみに、価格的には普通にコード付きのを買ったほうが多少安い。作業コストも含めるとカスタム長コードはかなり高くつくことに注意されたい。

自分でコードをつける利点は

  • 任意コード長にできる
  • あとから部分的に構成を変えられる
  • OAタップ側は接地極付きにするがプラグは2極にする、みたいな変な構成のタップが作れる

あたり。特に最後のやつは地味に便利だと思っている。一般家庭だとまず接地極が存在していないので、3極タップに対しては余計に変換プラグが必要になったりするんだけど、それをなくしてコンセント付近をスリムにできる。

ref.

  1. トップ
  2. tech
  3. カスタムコード長OAタップを作る

なんとなく発見があったらいいなぁぐらいで土曜日に行ってきた。

発見と面白かったのは以下らへん

  • SONY が思いのほか SPRESENSE を押してた
  • MESH はちょっと小さめ。SONY と MESH は別々にスポンサーになっていた
  • ソラコムがスポンサーで出展してた
  • 手動で射出成形するというアイデア (樹脂を手動でいれて、温めて手動で圧力かける) がおもしろかった
  • Prusa が出展してた。やっぱ MK3 はベースの剛性よさそう。
  • 自動で組紐するマシンを2つぐらい見掛けた。君の名は的な流行りなのだろうか
  • アマチュア無線関係はほとんどない。明確なのは1つだけかな? ちっちゃいSDR。BGA リフローしたりしてて極めて高度だけど、MFT ではなかなかウケにくそう


MFT はとにかく「音」「光」「動」がないと歩いてる人に興味を持ってもらいにくいのがなかなか厳しいと思った。

というのがあるらしいことを知った。ペルオキソ一硫酸水素カリウム+塩化ナトリウムで構成される薬剤らしい。一般向けには杏林製薬がルビスタという製品で売っていて、アマゾンでも買える。動物・畜産分野ではおそらく同様のものがバイエル薬品からアンテックビルコンS (Virkon) という製品名で出ている (そもそもルビスタもアンテックの製品であり、海外だと Rely+On Virkon という名称だったりする)。

メカニズムをみると、ペルオキソ一硫酸水素カリウム自体の酸化作用と、生成される次亜塩素酸が働くらしい。どっちが支配的なのかはよくわからなかった。

Y's Square:病院感染、院内感染対策学術情報 | 塩素系に分類される消毒薬および除菌・洗浄剤の特性と選択 とかを見ると各塩素系消毒薬の特徴が書いてあっておもしろい。

ルビスタの場合は洗浄成分(界面活性剤)も入っているので、掃除と消毒を同時にできるのがひとつも特徴となっているみたい。5gを500mlに溶かして1%として使用するということになっている。5g×12包で3300円ぐらいなので、1包 500ml あたり 275円。

次亜塩素酸ナトリウム6%ハイターは5Lで800円程度で、使用時には10倍希薄0.5%扱いとすると500mlあたりは8円、1%希薄(0.5%で十分だが)でも16円なので、ただの次亜塩素酸ナトリウムに比べると、かなり割高ではある。

まぁでも、一般家庭では感染症が発生しない限り日常的に使うものでもないので、いざってときに塩素臭がしないのはかなり嬉しいポイントだと思う。実際に次亜塩素酸ナトリウムを広範囲に消毒に使ってみると塩素の刺激臭でなかなかつらいものがある(経験談)。一方で漬け置き漂白みたいな用途には使えないみたいなので、汎用性でいくとやはり次亜塩素酸ナトリウムが勝るっぽい。

次亜塩素酸ナトリウムは酸性だと塩素が出るので、アルカリに調整してあるが、ビルコンは酸性らしい。なので混同して使わないように注意が必要そう。(どちらか片方しか使わないのが安全)

例えば以下のようなメトリクスがあったとします。みての通り、名前は一緒でラベルだけが異なるメトリクスです。

  • mqtt_topic{instance="127.0.0.1:9981",job="mqtt",topic="/home/sensor/temp"}
  • mqtt_topic{instance="127.0.0.1:9981",job="mqtt",topic="/home/sensor/humidity"}

これらを演算しようとして以下のようにしても no data になります。

 mqtt_topic{topic="/home/sensor/temp"} *  mqtt_topic{topic="/home/sensor/humidity"}

Vector Matching に書いてある通りですが、デフォルトではこのようなベクター同士の演算の場合、左右でラベルが全て一致するメトリクス同士のみが結果に出力されます。

SQL の INNER JOIN でラベル全ての一致が ON 条件に入ってるのをイメージするとわかりやすそうです。

この条件を変更するには、ignoring() または on() を使います。今回のケースでは以下の2つの結果は同じです。

 mqtt_topic{topic="/home/sensor/temp"} *  ignoring(topic) mqtt_topic{topic="/home/sensor/humidity"}
 mqtt_topic{topic="/home/sensor/temp"} *  on(instance,job) mqtt_topic{topic="/home/sensor/humidity"}

ignoring() は JOIN の条件から指定したラベルを除くように働き、on() は JOIN の条件を明示的にすべて指定するように働きます。

リテラル演算との組合せ

数値リテラル(スカラ)とベクターを演算すると、結果はベクターになります。スカラ値との演算時には上記のように ignoring() や on() は指定できません (syntax error になります)。複雑な計算をする場合、適切な場所に on() または ignoring() を書く必要があります。つまりベクター同士の演算になる場所に書きます。

例えば、topic="/home/sensor/temp" を温度、topic="/home/sensor/humidity" を湿度として不快指数を計算したいと思う場合、以下のようになります。

(0.81 * mqtt_topic{topic="/home/sensor/temp"})
  + ignoring(topic) (0.01 *  mqtt_topic{topic="/home/sensor/humidity"})
  * ignoring(topic) (0.99 *  mqtt_topic{topic="/home/sensor/temp"} - 14.3)
  + 46.3
  1. トップ
  2. tech
  3. PromQL でラベル違いのメトリクス同士を演算して no data

最近はこう

ssh-keygen -t ecdsa -b 521

最近の raspi イメージはデフォルトで弱い暗号方式を無効化してあるのでさっさと ecdsa 鍵に乗り換えましょう……

  1. トップ
  2. tech
  3. ssh-keygen

クランプ式電流計は回路を切断せずに電流計測ができるので便利なのだけど、ホット側かコールド側いずれか一方だけをクランプする必要があるため、ほとんどの場合では実際には切断せずに計測というのは難しい。

ということで、写真のように短い延長ケーブルをつくった。線が分離しており、片方だけを挟める。前もって接続しておくことでいつでも計測できるようになる。100均で割けるタイプの延長コードがあればそれでいいけど、最近は二重絶縁のものが主流なのがかえって作りにくくなってしまった。

詳しい施行方法はパナソニックのサイトの「仕様」を見るとわかる。(備考:この延長ケーブルを作るのにあたっては特段なんの資格もいりません)


しかしまだ使えてない。特に冷蔵庫に使いたいんだけど、冷蔵庫の電源を落とすには若干の手順が必要なので面倒 (内容物の確認 → 電源オフ→ 7分間は再度電源入れないこと)

  1. トップ
  2. tech
  3. クランプ式電流計用にホットコールド分離ケーブルをつくる

MQTT のトピックを subscribe して一時的に保持し、prometheus 向けに exporter として働くデーモンを書いた。要は pushgateway の MQTT 版のようなもの。

うちではセンサーデータの一部を MQTT サーバに送りつけるようにしてあるので、それを面倒なことなしに prometheus に登録していきたい。

使いかたと挙動

mqtt_topic_exporter --mqtt.server=mqtts://user:pass@mqttserver:8883 --mqtt.topic="/home/sensor/+"

みたいに引数を指定する。mqtt.topic はそのまま subscribe に渡される。ワイルドカードも使える。

mqtt_topic_exporter は MQTT サーバに接続して値を待つ。値がきたらメッセージ内容を数値として扱い gauge のメトリクスとして登録する。

/metrics にアクセスすると以下のようにメトリクスが登録される。

mqtt_topic{topic="/home/sensor/temp"} 30.0

また、topic がしばらく受信できないと、該当メトリクスは一定時間で削除される。

./mqtt_topic_exporter --help
usage: mqtt_topic_exporter --mqtt.server=MQTT.SERVER --mqtt.topic=MQTT.TOPIC [<flags>]

Flags:
  -h, --help                     Show context-sensitive help (also try --help-long and --help-man).
      --web.listen-address=":9981"  
                                 Address on which to expose metrics and web interface.
      --web.telemetry-path="/metrics"  
                                 Path under which to expose metrics.
      --mqtt.retain-time="1m"    Retain duration for a topic
      --mqtt.server=MQTT.SERVER  MQTT Server address URI mqtts://user:pass@host:port
      --mqtt.topic=MQTT.TOPIC ...  
                                 Watch MQTT topic
      --log.level="info"         Only log messages with the given severity or above. Valid levels: [debug, info, warn, error, fatal]
      --log.format="logger:stderr"  
                                 Set the log target and format. Example: "logger:syslog?appname=bob&local=7" or "logger:stdout?json=true"
      --version                  Show application version.
  1. トップ
  2. tech
  3. MQTT のトピックを prometheus に登録する

電工ペンチ (圧着とかストリップとか一通りできる便利道具) を捨てて、ちゃんとした圧着ペンチとストリッパーをそれぞれ買った。

ホーザン(HOZAN) 圧着工具(裸圧着端子/裸圧着スリーブ用) 圧着ペンチ コンパクトタイプ サイズ1.25/2 P-732 - ホーザン(HOZAN)

ホーザン(HOZAN)

5.0 / 5.0

ベッセル(VESSEL) ワイヤーストリッパー 電気工事士技能試験対応 3500E-1 - ベッセル(VESSEL)

ベッセル(VESSEL)

5.0 / 5.0

もうほんと、全然使い勝手が違う。最初からこの2つを買うべき。

電工ペンチのストリッパーは全然切れなかったけど、専用ストリッパーは無理矢理ひっぱらなくても綺麗にストリップできる。

圧着ペンチはもう全然違う。電工ペンチではいくら力を入れても一定以上圧着できないうえに、端子を噛みこんでしまって外すのが大変だったけど、ホーザンのこれだと全然力は必要ないし、綺麗にはずれる。電工ペンチで圧着したものを再度新しいもので圧着してみたけど、力はそれほど入れてないのに、さらに強く圧着できた。

  1. トップ
  2. tech
  3. 電工ペンチを捨て、専用ストリッパーと圧着ペンチを買った

しばらく(2年ぐらい?)ELECOMの難燃のケーブルボックスを使ってみた使い勝手がよかったので、うちで使ってるものをこれに統一したり、使ってないところでも使うようにした。

エレコム ケーブル収納ボックス ケーブルボックス ケーブル収納 6個口電源タップ収納 ブラック EKC-BOX001BK - エレコム(ELECOM)

エレコム(ELECOM)

5.0 / 5.0

まず難燃ってのが良い。ケーブルボックスで明確に難燃とうたってる製品はあんまりないのでありがたい。

素材の質感もなかなか良い。スチロール系のテカテカしたプラスチック感はなくて梨子地のいい感じのもの。

そのうえで使い勝手がなかなか良い。蓋はのっかるだけのものだけど、意外と綺麗にしまる。少し高さ(深さ)があるためだと思う。これのおかげで溝からケーブルを出しやすい。

内径で一番狭いところは 365mm x 128mm x 125mm。6個口用と書いてあるがその通りで、6個口のOAタップでちょうどいいサイズ。

Before

  • ONU (GE-PON<M>A GE-PON-ONU<1><2>)
    • 光ルータ (RT-200NE) のハブ
      • 光ルータ (RT-200NE) のWAN
        • ひかり電話 RJ-11
      • PPPoE ルータ (MR-OPT100E)
        • LANコンセント
        • 無線LANルータ (WHR-G54S)

光ルータのハブに一回繋いでからWANに繋いでるのでかなり不安になる感じ (ONU直下のハブとして光ルータのハブ部分を使ってる)。まぁ動いてはいる。そして無線LANルータがブリッジではなくルーターとして接続されているので二重ルーター状態だった。意図がよくわからない。ブリッジの概念を知らなかったのかも。

2006年ごろに構成したので意味不明なのは仕方ない。

After

  • ONU (GE-PON<M>A GE-PON-ONU<1><2>)
    • 光ルータ (RT-200NE) のハブ
      • 光ルータ (RT-200NE) のWAN
        • ひかり電話 RJ-11
      • PPPoE ルータ + Wi-Fi (Aterm WR9500N)
        • LANコンセント

素直な構成としては光ルータに PPPoE 設定をして無線LANルーターはブリッジにすることだけど、設定画面が2つになるのが面倒だし、光ルーターが100Mbpsだし全体的にあんまり変えたくないので、単純に PPPoE ルータ+無線ルータを新しい無線ルータに変えた。ONU直下のハブだけ更新すれば IPv6 は 1Gbps 出せるような気がする。

備考

「GE-PON<M>A GE-PON-ONU<1><2>」は12年前に設置した ONU だが、名前 (Gigabit Ethernet-Passive Optical Network) の通り実はギガビットらしい。

100Mbps 契約なので 100BASE-T でしかリンクしないのだが、契約変更するとNTT側からの遠隔操作で 1000BASE-T でリンクアップするようになるらしい。おもしろデバイス……

cpuinfo に含まれる Revision を見る。

$ cat /proc/cpuinfo  | grep Revision
Revision        : a01041

RPi HardwareHistory - eLinux.org に書いてある通りに表を参照する。

上記の例では

a01041	Q1 2015	2 Model B	1.1	1 GB	(Mfg by Sony)
  1. トップ
  2. tech
  3. 起動中の Raspberry Pi のモデルを調べる

(写真は練習の別の候補問題のもの)

日曜日が試験日だった。どうやら筆記試験と違って、試験会場が県あたり1つしかないようで、試験会場の最寄りのマイナー駅がものすごい混雑だった。こんなに受験者がいるのかーとびっくり。

追記:神奈川県の場合、試験会場は2つだったみたい。

候補問題が13問なので2週間ぐらい前から1日1問ずつ消化していった。練習してみると結構欠陥 (不合格) を出してしまう。特に電線の種類・長さを間違えると、他の欠陥に比べて取り返しがつかないことになる。ということで当日は特にこのへんを気をつけようという心掛けをした。

出題問題は候補問題7の4路スイッチを含む回路だった。

あんまり好みの問題ではなかったけど一通りやるだけやったという感じ。電線色が任意の箇所が多いので逆に不安になる。約15分ほど残して終わり。見た目的には教科書通りという感じだけど、一通りチェックはしても細かい欠陥があるかどうかは、勘違いとかもあるのでよくわからない。合格発表は8月20日。合格していなかったら下期に再受験。

  1. トップ
  2. tech
  3. 第二種電気工事士 技能試験

今更ながらいまいち理解できてないポイントがあったので、いっかい自分でまとめてみることにする。当たり前のことではあるが……

L2スイッチ

セグメントを構築する機器 スイッチングハブ

用途はリピーターハブと同じで、あるポートに届いたイーサネットフレームを他の全てのポートへ転送する。ただし帯域を有効利用するため転送されてきたポートと MAC アドレスの対応を記憶して、次回から必要のないポートに転送することをやめる。

ルーター

セグメント間を接続する機器

IPヘッダを解釈し、ルーティングテーブルから次に転送すべきルーターへパケットを転送する。

頻出事例

(IPv4) L2スイッチに接続されたコンピュータ同士の通信

同一セグメント内の通信ということになる。L2スイッチで完結する。

192.168.0.101 から 192.168.0.102 への通信の例

  • 101 は 102 の IP アドレスをのせてARPリクエストをイーサネットにブロードキャスト
  • 102 は自分の MAC アドレスをのせてARPレスポンス
  • 101 は取得した MAC アドレス宛にIPパケットをのせたイーサネットフレームを送信

L2 スイッチは多段接続しても1つのネットワーク。

(IPv6)L2スイッチに接続されたコンピュータ同士の通信

ほとんど IPv4 と同じだが ARP ではなく ICMPv6 で MAC アドレスが解決される。Neighbor Solicitation メッセージと Neighbor Advertisement メッセージが使用される。

(IPv4) ルーターを介したコンピュータ同士の通信 (外部ネットワークなど)

192.168.0.101 から 93.184.216.34 への通信の例

  • 101 は自分のルーティングテーブルを参照する
  • 接続先が同一セグメントではないため、デフォルトゲートウェイ(またはルーティングテーブルにあるホスト) へ転送しようとする
  • 転送するホストのIPアドレス (例:192.168.0.1) の MAC アドレスを取得する (ARP)
  • 取得した MAC アドレス宛にIPパケットをのせたイーサネットフレームを送信
  • ルータは送られてきたイーサネットフレームとIPパケットを解釈し、次のルータにIPパケットを転送する。このときIPパケットを載せるプロトコルはイーサネットとは限らない。PPP ということもある。

(IPv6) ルーターを介したコンピュータ同士の通信 (外部ネットワークなど)

こちらも ARP 部分が ICMPv6 でおきかわる。ルーターの場合はネットワーク接続時の要求や、定期的にブロードキャストされる Router Advertisement メッセージから MAC アドレスがキャッシュされているため、基本的にルーター MAC アドレスが既知のものとなる。

  1. トップ
  2. tech
  3. L2スイッチとルーター

  • これまで採用されていた輻輳制御アルゴリズムの多くはパケットロスベースであった
    • CUBIC / (New) Reno など
  • しかし実際はパケットロスと輻輳は厳密に対応しない
  • 輻輳はネットワークの処理能力の限界を超えたときに発生する
    • 処理すべきデータ容量が処理可能なデータ容量を超えると発生する
  • パケットロスは瞬間的なトラフィック増加や、電気的ノイズなどネットワーク処理能力以外の要素でも発生する現象
    • 無線ネットワークのように原理的にパケットロス率が高いことも多い

BBR では通信先との間の実際に使える帯域を推定し、パケットロスが起こっていても、あるいはパケットロスが起こらなくても、輻輳しない程度に最大のスループットを出す。

実際のアルゴリズムは解説してるサイトを見るほうが早い。

ref

  1. トップ
  2. tech
  3. BBR 輻輳制御アルゴリズムの考えかた