SwitchBot Meter 温度湿度計をWindowsで使いたい

2019年10月にSwitchBot温湿度計を買った。
f:id:gae:20200803195431j:plain
真ん中の四角いやつがそれ。
スマホから温度や湿度が見られたりするやつなんだけど、PCから利用する方法がわからず、ずっと「普通の温度計」として使っていた。

ところが、一昨日ググってみたらRasberrypiで使っている人がいて、どうやら 2019年12月26日 に仕様が公開されたようだった。


今まで温度の記録のために、Starawberry Linux の USBRH という製品を使っていたが、1台4800円程度するし、USBケーブルが必要だし、見た目やばいし、1台のPCに複数接続すると、個体が判別不能になるといった問題があった。

SwitchBot Meter なら1台約2,000円で、ワイヤレスで、複数接続してもアドレスで判別(まだ1台しか持ってないので未確認)できて、めっちゃ良さそうな感じがする。


さっそく、Windowsで使おうとしたが、上のBlogにあるようなPythonを使うやり方はWindowsでは無理そうだった。
調べてみると .NET Core と C# を使うのが簡単そうだったのでこれで作った。

実装がまずいのか、データを取得できる頻度にだいぶばらつきあって気になるが、私の使い方では支障はないので気にしないことに。

実際に、どんなデータが取れるか、SwitchBot Meter 1台と、USBRH 2台を1か所に集めてログを取ってみた。
水色の線が SwitchBot Meter で、それ以外が USBRH。
f:id:gae:20200803201312p:plain:w690
f:id:gae:20200803201320p:plain:w690
USBRH はデータの解像度が高く、線が細かく動いているけど、SwtichBot の解像度でもぜんぜん問題はないですな。

この結果を見て、2個ほど追加注文した。

久しぶりに Android タブレット(Lenovo Yoga Smart Tab) を買った

5月に Android タブレットを買った。

AndroidのYogaシリーズを買ったのはこれで3台目。

  1. YOGA Tablet 2 Pro (2014年11月)
  2. Yoga Tab 3 Pro (LTE) (2016年12月)
  3. Yoga Smart Tab (2020年5月)

1台目は一番長く使っていたブレット。13インチの大画面にプロジェクター内蔵。動画を見るのにちょうどよかった。
2台目もプロジェクター内蔵。だけど、画面は10インチと小さい。全体的にイマイチだったので兄弟に譲った。今もゲーム機として使っているみたい。
3台目が今回のやつ。プロジェクターなしで10インチのスクリーン。CPUもATOMからSnapdragonになり、かなり「普通の」Androidタブレットになってしまったが、大画面もプロジェクターの需要が少ないので仕方ないですな。


2か月くらい使って、まあまあ気に入っている。
特にスピーカーが良い。動画を快適に見るのに十分な音質と音量で快適ですな。

一方、いまいちなのはスタンド。スタンドはYogaシリーズを選ぶ大きな理由の1つなんだけど、角度の調整幅が狭いのがちょっと残念。
f:id:gae:20200726123647j:plain
この角度が「スタンドモード」ということになっていて「カチっ」と止まるようになっている。この角度以外のところでも止まるには止まるんだけど、安定感が悪くなりタッチ操作がしづらくなってしまう。
机に置くときはこの角度で良いんだけど、地べたに座っているときは、もうちょっと角度を倒したくなる。
この不満は Yoga Tab 3 Pro の時にも感じたけど、もう少しスタンドを大きくして欲しいですな。


今回の新機能として「スマートディスプレイ」の機能もついているけど、この機能は一切使っていない。ワイヤレス充電でもできれば使ったかもしれないけど、横からケーブル生やした状態で使うのはちょっと…。

この製品、予想よりバッテリが持たないですな。
放置しているとどんどんバッテリーが減っていく。1週間程度は余裕で持つとはいえ、これまで使っていた HUAWEI MediaPad M5 Lite に比べると減るのが速い印象。
ダブルタップでスリープ解除する機能も、スリープ時のバッテリ消費が大きくなるので解除してしまった。
何か特定のアプリが原因かもしれないけど、特定はできてない。

今日のPENTAXの発表を見て

ミラーレスで他社と競える技術もお金も無いから、
「感性」とか「快感」とか「味わい」とか言ってるだけじゃないの?

と、たくさんの人が思ってることでしょうなw

私もPENTAXのカメラを使っていなかったら、

痛々しい言い訳だな~www

くらいに思っていたはず。

でも、実際は

さすが、PENTAX!!
いいぞ、PENTAX!!

という感想です(笑)


PENTAX K-1 で、はじめて PENTAX のカメラを買い、動作の遅さ、AFの遅さ不正確さ騒音、重さ、大きさに買ったことを後悔。
でも、あれから4年経って、使えば使うほど好きになってしまっている。
6年前にα5100を買って以降、レンズ交換式だけで16台も買ってしまったけど、PENTAX K-1 は一番のお気に入りに。
(2番はPENTAX Q-S1)


今も「撮る快感」とか「味わい」とか「写真体験」とかわからないけど、PENTAXのカメラを使うのは他社のカメラにはない楽しさがあるのは感じてる。
オートマとマニュアル車みたいなもの? この分類だとK-1もオートマのはずだけど。

Zabbix 4.4 から 5.0 にアップグレードした

5月に Zabbix 5.0 が出た。そろそろアップグレードしようかなと。

うちでは、Windows 上で VirtualBox を動かして、Ubuntu にインストールして使っている。アップグレード失敗したときに戻せるようにスナップショットを取ってから作業できて便利。
Zabbix は 2.4 の頃から使いはじめて、メジャーアップデートは3回目。今回も問題なくアップグレードできた。


5.0 でナビゲーションが変わったのは知っていたので、使いづらくなってたら嫌だなと思っていたけど、あまり影響ないですな。画面の見た目が全体的にすっきりしたのは良い。
ここ最近 Elasticsearch と Kibana で遊んでいて、Zabbix との使い分けに迷っていたけど、Zabbix はUIがサクサクでレスポンスが速いのが快適ですな。Kibanaは画面リロードすると秒単位で待たされるけど、Zabbix だとスパスパ画面が切り替わるのでストレスがない(笑)

ログは Elasticsearch に保存して、気になる情報は API で取得して Zabbix にアイテムとして登録。Zabbix側のダッシュボードで可視化したりアラート出したりという使い方になりそう。

Linux から Windows の OpenSSH Server に scp でファイルをコピーする

いままで Linux から Windows にファイルをコピーするとき smbclient を使っていたけど、Windows の「オプション機能」に「OpenSSH Server 」があったので使ってみた。
f:id:gae:20200712101709p:plain:w1158
Windowsの設定画面からインストールできるのでインストールが楽でいいですな。

ただ、使い方が独特だったので日記に。
↓ここに詳細なやり方が書いてある。

要するに、「管理者グループ」のアカウントについては

%USERPROFILE%\.ssh\authorized_keys

に書いてもダメで、

%PROGRAMDATA%\ssh\administrators_authorized_keys

に書く必要があった。
そして、このファイルの権限を以下のコマンドで設定する。

$acl = Get-Acl C:\ProgramData\ssh\administrators_authorized_keys
$acl.SetAccessRuleProtection($true, $false)
$administratorsRule = New-Object system.security.accesscontrol.filesystemaccessrule("Administrators","FullControl","Allow")
$systemRule = New-Object system.security.accesscontrol.filesystemaccessrule("SYSTEM","FullControl","Allow")
$acl.SetAccessRule($administratorsRule)
$acl.SetAccessRule($systemRule)
$acl | Set-Acl

これで Linux からパスワード無しで ssh でログインできるようになった。


つぎに、scpでドライブを指定してコピーする方法。この書き方でうまくいった。

scp hoge.txt my-windows-pc:/h:/hoges/

...と思ったんだけど、日本語のファイル名が文字化け。
ちょっと調べて解決断念したので、やっぱり smbclient を使い続けることに。

Zabbixでradikoの地域判定を定期的にチェックする

インターネットの接続が IPoE (DS-Lite) になってから、radikoの地域判定が暴れがち。
いざ、radikoを聞こうと思ったときに、地域判定が「栃木」だったり「北海道」だったりすると残念なので、定期的にチェックするように。
f:id:gae:20200707203130p:plain:w600
まずアイテムを作成。タイプは「Zabbixエージェント(アクティブ)」で、キーの設定は

web.page.regexp[radiko.jp,/area,80,">(.*?)<",,\1]

とする。

次にトリガーを作成。
f:id:gae:20200707201926p:plain:w600
条件式はこんな感じに設定。

{ie-ubuntu:web.page.regexp[radiko.jp,/area,80,">(.*?)<",,\1].str(TOKYO)}=0

まあまあの頻度でアラートが発生してしまってる。
f:id:gae:20200707202424p:plain:w487

dockerのnginxのコンテナのログをFilebeat 7.8でElasticsearchに送りたい

2日前に書いたこれ。

参考にしたサイトの情報が古かったようで、

filebeat.autodiscover:
 providers:
   - type: docker
     templates:
       - condition:
         contains:
           docker.container.image: nginx
         config:
           - module: nginx
             access:
               input:
                 type: docker
                 containers.ids:
                   - "${data.docker.container.id}"
             error:
               input:
                 type: docker
                 containers.ids:
                   - "${data.docker.container.id}"

この type: docker というのは古いようで...

WARN [cfgwarn] docker/input.go:49 DEPRECATED: 'docker' input deprecated. Use 'container' input instead. Will be removed in version: 8.0.0

などと警告が表示されていた。さらに悪いことに container.image が "nginx" を含んでいないログまで filebeat-7.8.0-nginx-access-pipeline に送られていた。


それで調べて書き直した結果。

filebeat.autodiscover:
  providers:
    - type: docker
      templates:
        - condition:
            contains:
              docker.container.image: app
          config:
            - type: container
              paths: ["/var/lib/docker/containers/${data.docker.container.id}/*-json.log"]
        - condition:
          contains:
            docker.container.image: nginx
          config:
            - module: nginx
              access.input:
                type: container
                stream: stdout
                paths: ["/var/lib/docker/containers/${data.docker.container.id}/*-json.log"]
              error.input:
                type: container
                stream: stderr
                paths: ["/var/lib/docker/containers/${data.docker.container.id}/*-json.log"]

これでコンテナ名に "nginx" を含むコンテナのアクセスログ(stdoutで出力される)は filebeat-7.8.0-nginx-access-pipeline へ、エラーログ(stderrで出力される)は filebeat-7.8.0-nginx-error-pipeline へ、コンテナ名に "app" を含むものは、どのパイプラインも通さないという動作になった。