homebridgeで温湿度も取れる
homebridgeが面白い。plugin 揃ってるので、 部屋の温度湿度をとれるようにしてみた。 データは、サーバに接続している温湿度センサーの usbrh 。
usbrh のデータを、プラグイン homebridge-httptemperaturehumidity で 読み取れるようにしてみた。
<?php header( "Content-Type: application/json; charset=utf-8" ) ; $data = shell_exec( "/usr/local/bin/usbrh" ) ; if ( preg_match( "/^([\d\.]+)\s([\d\.]+)$/" , $data , $match ) ) { print "{\n\"temperature\": ".$match[1].",\n\"humidity\": ".$match[2]."\n}\n" ; } ?>
homebridgeで家電制御
iOS 10 で HomeKit のアイコン表示されたし、Siriから家庭内の家電制御ができないかと試してみた。 HomeKit 互換でフリーの実装の homebridge があるみたいなので、 インストールし、設定を行った。
homebridge-cmd を使うと、電源のON/OFFの制御なら、コマンドラインで呼び出せる処理を 起動できる。
{ "bridge": { "name": "perrine", # ホスト名? "username": "CC:22:3D:E3:CE:30", # 特になんでもいい。 "port": 51826, "pin": "031-45-154" }, "description": "HomeControl by Tira-2", "accessories": [ { "accessory": "CMD", "name": "テレビ", "on_cmd": "/usr/bin/sg dialout -c \"/usr/local/bin/Tira-2.py --remote=regza --transmit=power\"", "off_cmd": "/usr/bin/sg dialout -c \"/usr/local/bin/Tira-2.py --remote=regza --transmit=power\"" }, { "accessory": "CMD", "name": "チューナー", "on_cmd": "/usr/bin/sg dialout -c \"/usr/local/bin/Tira-2.py --remote=catvstb --transmit=power\"", "off_cmd": "/usr/bin/sg dialout -c \"/usr/local/bin/Tira-2.py --remote=catvstb --transmit=power\"" } ] }
参考記事だと、制御には insteon+ を使うとの記事が多かったけど、 homebridge を起動して制御させようとするが、機器を認識してくれない。
username とかを色々と試してみたけどダメだったけど、insteon+ を使わずに、 基本の HomeKit アプリを起動したら、あっさり認識。
ps4-wake
homebridge のことをしらべていたら、PS4 をネットワーク経由で スタンバイ状態から ON/OFF できる、node.js を使った ps4-waker という ソフトがあるみたい。
でも、node.js はまだ良くわからない所もあるので、ちょいと探すと、 "ps4-wake" というソフトも見つかる。 C言語ベースで、導入も簡単そう。
((インストール)) $ git clone git://github.com/dsokoloski/ps4-wake/ $ cd ps4-wake $ make $ sudo cp ps4-wake /usr/local/bin
((使い方)) $ ps4-wake -vP -B # 同一ネットワーク内のPS4を探す Device found: PS4-YYY [PS4/XXXXXXXXXXXX]: Standby $ ps4-wake -vW <USER-CREDENTIAL> -H XXX.XXX.XXX.XXX # 指定IP
見つけたPS4の"USER-CREDENTIAL"をつけて、ps4-wake を呼び出せば いいのだが、その書き方が違うのか、PS4が起動しない。
といっても、合宿所の宿直でVPN接続で自宅のPS4を触っているので、 本当に起動しているのかいないのかが不明なので、今日はココまで。
homebridgeのメモ
iOS 10 に切り替えると、"HomeKit" のアイコンが増える。 家庭内のライトやテレビといった機器のON/OFF制御などが できる機能。
で、調べてみたけど、海外ではそれなりの機器が出ている ようだけど、AmazonやAppleで調べてみても、 電球型のHomeKit対応ライトと言った程度で、便利さを 感じるようなものが出ていない。
我が家では、Tira2 という赤外線リモコンで、家電制御など を使っているので、Siri に「テレビをつけて」をやってみたいと 考えてしまう。
調べてみると、"homebridge"という互換ソフトが出ているみたい。 node.js をベースにしたソフトらしい。
ということで、ひとまず node.js とかを入れてみた。
((node.jsのインストール)) $ sudo aptitude install nodejs npm $ sudo ln -sf /usr/bin/nodejs /usr/bin/node
((homebridgeのインストール)) $ sudo npm install -g homebridge ((コマンドラインベースの命令を呼び出すモジュール)) $ sudo npm install -g homebridge-cmd or $ sudo npm install -g homebridge-cmdswitch2
でも、node.js のことをさっぱり解っていないので、 あとの作業用に、ココまでをメモ。
BoWに開発環境とLaTeXをインストール
Bash on Windows を使ってインストールをしていたら、 開発環境が入っていない。Visual Studio があるけど、 gcc とかは入れておこう。
開発環境
(( パッケージ更新 )) $ sudo aptitude upgrade ; sudo aptitude safe-upgrade
(( 開発環境 )) $ sudo aptitude install gcc g++ make automake bison flex $ sudo aptitude install perl ruby python
LaTeX環境
今までは LaTeX を使いたいときは、データをDropboxにおいて、 Linux サーバに入って platex + divpdfmx を行い、 Windows 環境で PDF の確認を行っていた。 しかし、Dropbox の同期のタイムラグがちょっと不便だった。
BoW のパッケージを見ていたら、普通に texlive があるので、 cjk-latex をインストール。
(( latex )) $ sudo aptitude install cjk-latex texlive-lang-cjk texlive-binaries
これで、Windows 環境だけで LaTeX のコンパイルができるようになった。 Windows 環境用の LaTeX は出てはいるけど、セッティングが面倒だった。 でも Ubuntu が動くんだから、一発でインストール完了。
debianでletsencrypt.shを使ってみた
無料で、SSL鍵を利用できる let's encrypt というソフトが Debian でも使えるようなので、 試してみました。まずは、必要なソフトのインストール。
# aptitude install letsencrypt.sh letsencrypt.sh-apache2
基本は /etc/letsencrypt.sh/config.sh を修正してもいいが、 /etc/letsencrypt.sh/conf.d の中に *.sh の拡張子で設定を保存すると 書いてあるので、 連絡用のメールアドレスなどの登録情報は、この中に保存。
(( /etc/letsencrypt.sh/conf.d/contact_mail.sh )) CONTACT_EMAIL=連絡用メールアドレス
letsencrypt.sh のデータは、/var/lib/letsencrypt.sh/ に保存され、 取得するドメインは、以下のファイルに記載しておく。
(( /var/lib/letsencrypt.sh/domains.txt )) ドメイン
# mkdir /var/lib/letsencrypt.sh/certs # /usr/bin/letsencrypt.sh -c
(出力) # INFO: Using main config file /etc/letsencrypt.sh/config.sh # INFO: Using additional config file /etc/letsencrypt.sh/conf.d/contact_mail.sh + Generating account key... + Registering account key with letsencrypt... Processing ドメイン + Signing domains... + Creating new directory /var/lib/letsencrypt.sh/certs/ドメイン ... + Generating private key... + Generating signing request... :
できあがった、SSL の情報を Apache に設定する。
(( /etc/apache2/sites-available/default-ssl.conf )) SSLCertificateFile /var/lib/letsencrypt.sh/certs/ドメイン/cert.pem SSLCertificateKeyFile /var/lib/letsencrypt.sh/certs/ドメイン/privkey.pem SSLCertificateChainFile /var/lib/letsencrypt.sh/certs/ドメイン/chain.pem # /etc/init.d/apache2 restart
あとは定期的に更新
SSL鍵は、流石に無償だし、有効期限が短い。 定期的に更新が必要。今回は一ヶ月毎に更新。
(( /etc/cron.d/update-letsencrypt )) #m h D M W user command 0 3 1 * * root test -x /usr/bin/letsencrypt.sh && /usr/bin/letsencrypt.sh -c
movabletype-opensourceのCGI制限
自宅のBLOGは、movabletype-opensourceを使っているけど、 一応、サポート切れとなっているため、脆弱性攻撃を受ける可能性もある。 ただ、攻撃といっても、CGI の呼び出し経由だし、コメントやトラックバックも SPAMが多くて使っていないので、記事編集は自宅内のみと割り切って、 アクセス制限を加えてみる。
Alias /mt-static /usr/share/movabletype/static <Directory /usr/lib/cgi-bin/movabletype> # 初期設定の時だけ <Files mt-wizard.cgi> <IfVersion >= 2.3> Require all denied </IfVersion> <IfVersion < 2.3> Deny from all </IfVersion> </Files> # コメントトラックバック <FilesMatch "mt-(comments|tb)\.cgi$"> Require ip 127.0.0.1 192.168.0.0/16 </FilesMatch> # データ連携 <FilesMatch "mt-(data-api|feed|xmlrpc|atom)\.cgi$"> Require ip 127.0.0.1 192.168.0.0/16 </FilesMatch> # 検索機能は制限せず #<FilesMatch "mt-(ftsearch|search)\.cgi$"> # ### Require ip 127.0.0.1 192.168.0.0/16 #</FilesMatch> # その他 <FilesMatch "mt-(check|testbg|upgrade)\.cgi$"> Require ip 127.0.0.1 192.168.0.0/16 </FilesMatch> # 基本機能 <FilesMatch "mt\.cgi$"> Require ip 127.0.0.1 192.168.0.0/16 </FilesMatch> </Directory>
gcalcliが動かなくなる
仕事の予定管理や家族の予定の把握には、Google Calendar をすごく 活用しているけど、その予定をミニ掲示板に表示する機能が動かなくなっていた。 中で使っている、gcalcli が"Missing module – cannot import name run"と いうメッセージで動かなくなっている。
調べてみると、ライブラリモジュール"oauth2client"を1.4.12以下にしろとか出てくるけど、 "pip install oauth2client==1.4.12"を実行すると、他のモジュールを更新しろとか でてきて思うように動いてくれない。
モジュールのバージョン調整だけで動かしたかったけど、 https://github.com/insanum/gcalcli/issues/229に記載されているように、 手動パッチをあてて動かした。
$ sudo pip install oauth2client --upgrade $ sudo pip install gcalcli --upgrade この後、手動パッチ
HTTP/2の有効化
ネットの記事で、Chrome の SPDY サポート打ち切りなどが 記載されていて、HTTP/2 への移行が進んでいるらしい。
ということで、自宅サーバがどうだっけ?ということで調べると、 HTTP/2 は a2enmod されていないみたい。
(( HTTP/2のモジュールの有効化 )) $ sudo a2enmod http2 $ sudo systemctl restart apache2.service
トップページの reload をかけてみたけど、速くなった気がする。 自宅トップページは、リンク集的によく使うサービスのアイコンを並べてあるけど、 こういう小さいデータは効果がでるはず。
# 気のせいかもしれんけどぉ〜