i3からurxvtを立ち上げると日本語がちゃんと表示されない問題

i3でmod+Enterでターミナル(urxvt)を立ち上げると日本語がちゃんと出ない。でもすでに立ち上がってるurxvtからurxvtを起動するとちゃんと表示される。で結構悩んだ末urxvtの起動時点でロケールが正しくセットされてないことが判明。

適当なファイルに

#!/usr/bin/zsh
LANG=ja_JP.UTF8 urxvt

と書き込んで、i3のコンフィグファイルにbindsym $mod+Return exec /home/user/bin/start_terminalとするとうまくいった。

urxvtのデーモンを使ってる場合はデーモンの方に環境変数を渡してやる必要があるので注意。

でも普通こんなん必要ないよね?俺がロケールの設定間違えてんのかな?

Magichome(magichue)のPythonライブラリを書きました

http://pu2x.hatenablog.com/entry/2018/05/17/172532

の時に買った中華スマートライト、Magichue(またはMagichome)をPythonから触るライブラリを作りました。

GitHub - namacha/python-magichue: Control Magic Hue in Python.

だいたいREADMEの通りです!

スマートロックを自作しました

Raspberry Piサーボモーターを使ってスマートロックを作ってみました。

買ったもの

構成

f:id:pu2x:20180828205109j:plain ぱっと見はこんな感じ。いろいろむき出しで雑だけど逆にカッコいいよね?そのうちちゃんとするから…そのうち。

リードスイッチはドアの開閉検知用とドアノブが捻られたのを検知する用にそれぞれ一つずつ設置してあります。

鍵の認証についてですが、最初は先駆者の方々同様NFCリーダを設置してSuicaとかIC学生証を鍵にするようにしました。ただ実際やってみるとドアの前に立って、財布からカードを取り出して、リーダにカードをかざすって流れが想像以上に面倒くさいんですね。これだったら普通の鍵でも変わらねえじゃんと。

そこでドアにくっついてるRaspberry Piに携帯が近づいたら解錠されるようにしてみました。ドアノブを捻ったタイミングであるMACアドレスをもつBluetoothバイスが近くにいれば解錠という仕組みです。(ただこれには問題があります。詳しくは後述)こうすると本当にハンズフリーで勝手に鍵が開くので結構未来っぽいです。

ついでにhomebridgeのプラグインを書いてスマホからも鍵の開け閉め+αをできるようにしました。 f:id:pu2x:20180828214610j:plain

機構部

一番肝心な部分ですが、Qiita@undo0530さんの機構を丸パクリ参考にさせていただきました。ありがとうございます。 qiita.com 今の所サーボモータダンボールと養生テープのガバ固定なのでたまにちゃんと鍵が動かないことがありますね。3Dプリンタでちゃんとした土台をつくれるといいんだけどね…。

ソフト側

サーボモータの制御はservoblasterを。デーモンを起動するときにservod --p1pins=15のようにサーボ制御に使うピンを指定してやらないとRaspberry PiのGPIOピンの入出力が全部効かなくなるので注意です。 鍵システムはPythonで雑に書きました。

ラズパイ上に室内のスマート家電全体を管理するWebAPIを立てておき、スマート電球とかスマートロックは全てAPI越しに操作するようにしました。こうすることで全てのスマート家電の操作のログを取ることができます。

ちなみに、WebAPIの名前は"maid"にした。メイドです。どうでもいいですね。

動作

家を出るとき

室内のボタンを押すと解錠されて、ドアを開けて外に出て、更にドアを閉めるとロックされるようになってます。ついでにそのタイミングで廊下の電気も消えます。

IMG_5156 from au s on Vimeo.

帰宅時

スマホを持って(スマートフォン中毒の私がスマホを持たずに外出することはありえない)ドアノブを捻ると鍵が開き、廊下の電気がつきます。

IMG_5158.TRIM from au s on Vimeo.

ちなみに自分が外出中に誰かがドアノブを捻るとSlackに警告が飛んできます。まあ警告されたところでどうしようもないんすけどね。 f:id:pu2x:20180828213056j:plain

いろいろ

このスマートロックはBluetoothMACアドレスで認証しているため、任意のデバイスでBluetoothMACを書き換えれば容易に鍵を開けられるでしょう(というか実際やってみたら開いちゃった)。そのためもういくつか認証ファクターを増やす必要がありそうです。ただまあ泥棒にとってはスマートロックをハックするより鍵穴をハック(ピッキング)するほうが楽でしょうね。

あと物理鍵を持っていないときに不具合で鍵が開かなくなると部屋に入れなくなるという普通ありえない事態が起こります!気をつけましょう!

もう4ヶ月くらい自作スマートロックを使ってますが慣れれば普通に快適です。もう鍵を出して〜閉めて〜開けて〜なんてできないっすねぇ。

後は友人に"3日間だけ有効な鍵を渡す"なんかも簡単に実現できるのもいいところですね。

ローカルに自作のモジュールをインストールする

忘れないうちにメモ。

import site
site.getusersitepackages()

で出てきたディレクトリ(なければ作る)にブチ込むとimportできるようになる。

走行中に車のバッテリーが上がるとこうなる

先日(半年くらい前)買ったアルトですが、納車までに一悶着あったので記録しておく。
当初は地元で仮ナンバーを取得し(車検切れの車輌のため)、自宅から60km程の所でクルマを引き取り、さらにそのまま軽検協(軽自動車のユーザー車検うけるとこ)に行ってナンバー取得、という算段であった。

当日

仮ナンバーは車検の切れた車輌を移動するため必要な最低限の日数分しか使えないため、クルマを引き取った当日になんとしても車検を通す必要があった。さらに時間の制約もあるので首都高で移動することに。
クルマを引き取り、15分位走らせてるところでまず異変に気づいたのが、「エアコンから出てくる風が猛烈に臭い」こと。なんというか生ゴミが焦げたようなヤな臭い。ただ古い車だしそんなもんかなと気にも止めず。というか教習車以来のMT車でそれどころではなかった。
マニュアル操作にもなんとか慣れてきて首都高も道を間違えることなく目的地の軽検協まで30分。あと5分ほどで料金所から下道に降りる地点、長いトンネルで突如それはやってきた。
・急にカーステの音声が消える
・灯火類が見えないほど暗くなる(ウインカー含めて)
・最初にSRS警告灯が灯り、次いでバッテリー警告灯が灯る
アクセルを踏んでも全く加速しない
パワーステアリングが効かなくなる
ブレーキがめっちゃ重くなる
これらがほぼ同時に起きた。(実際にはもっと前から前兆はあったのに気づかなかっただけかもしれませんが。)
その時点でようやく「このままだと完全に車が止まる」事に気づくが、運悪く追い越し車線を走行していたためすぐには左端に寄れず(ウインカーつかないからなおさら)、車に慣性が働かなくなるギリギリ手前でなんとか路肩の白線の内側に停められた。
不幸中の幸いか、異変が起きる1分くらい前に道路公団のパトロールカー(黄色くてゴツいアレ)を追い越してたので緊急停車してから程なくパトロールカーが来てくれたため後ろから追突されるという最悪の事態は避けられた。
その後は車内でそのまま1時間ほど待ち、道路公団のレッカー車で一般道まで運んでもらった。

原因

結局原因は発電電圧不足によるバッテリー上がりだった。
後から見たところ指定のサイズより大きいファンベルトが付いてたのがいけなかったらしく、微量に発電はしてるおかげでバッテリー警告灯は付かないものの確実にバッテリーが減っていって、完全に放電したタイミングで警告灯がついたと思われる。

教訓

古い車には電圧計を付けよう!

中華スマート電球(MagicHome/Magichue)を買った

スマート電球が欲しい。スマート電球っていうのはスマホとかでオン・オフしたり調光したりできる電球です。どうでもいいですがスマート家電のスマートって何がスマートなんでしょうね?

早速色々ググってみるとスマート電球といえばPhilips Hueが圧倒的に有名らしい。ふむふむ。。。

Philips Hue(ヒュー)スターターセットv3 スマートLEDライト 【Amazon Alexa、Google Home、Apple HomeKit、LINE対応】

Philips Hue(ヒュー)スターターセットv3 スマートLEDライト 【Amazon Alexa、Google Home、Apple HomeKit、LINE対応】

。。。。高っっか、普通に高くない? (追記) ↑のはハブ+電球3つセットの価格だそうです。ただハブと電球1つでも14000円はするんですね。

その後適当にアマゾンを探索してるとこんなのを発見。Magic Hueというらしい。

調光・調色で3000円!やすい!即購入!

即購入は嘘です。結構悩みました。

開封

どん f:id:pu2x:20180517165741j:plain 見るからに中華な箱。電球は割と普通の見た目。

専用のアプリをインストールして適当にWifiの設定を済ます。ここらへんは他のブログにも書いてあるので省略。Wifiは2.4GHzしか対応してないので注意。

IMG_0039 from au s on Vimeo.

で、とりあえずアプリから色々いじってみる。反応は十分速いですねー。60W相当って書いてあったんだけど明らかにそれよりも暗い、80W相当のやつにしとけばよかった。 色変えられると楽しいかなーって思ったけど多分使わないっすねこれは。。。

PythonでMagic Hueの非公開APIを叩く

そもそも俺がなぜスマート電球を買ったかというと、自作のスマートロックと連動させて電気を付けたり消したりしたいわけですよ。だから専用アプリからしか操作できません(笑)とかだったら困るんですね。PhilipsHueならユーザーも多いし公式のAPIも使える(多分)んだけどこの怪しい中華電球で同じことができるかというと謎。 とりあえず公式アプリの通信を見てみた。 MacユーザーでかつiPhoneユーザーならUSBでマックと繋いだ後

$ rvictl -s <UDID>

iPhoneMacに仮想インターフェイスとして割り当てられるのでWiresharkで通信をキャプチャできるぜ。UDIDはiTunes見れば分かるよ。 Androidユーザは知らね。 この状態でWiresharkを起動してアプリから操作すると、 f:id:pu2x:20180517171022p:plain お、これか?

とりあえず出てきたパケットをPythonで送信。

import socket
import struct


dst_ip = '192.168.0.23'
dst_port = 5577

s = struct.Struct('!BBBB')
on_data = s.pack(*[0x71, 0x23, 0x0f, 0xa3])


sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((dst_ip, dst_port))
sock.send(on_data)
response = sock.recv(4)
print(response)

すると、

IMG_0042 from au s on Vimeo.

やったぜ。

この調子で一つ一つ見ていけば調光・調色もイジれそうですね〜

メルカリで車を買ってみた

 車が欲しい。でも高い。○ーセンサーとか眺めてると「おっいいじゃん、しかも安い」て車は結構あるんだけど支払総額が平気で車体価格の2~4倍しやがる。まあ中古車ディーラー通すと高くなるのは当然だよな。じゃあもう個人売買しかねえよな。

んでメルカリ。もうすごいの、とんでもないボロからそこそこ乗れそうなの、はたまた滅茶苦茶カスタムされてるのまで想像以上の台数が出品されてる。眺めてるだけでもそこそこ楽しい。しかもどれも結構安い。『買取に出すと査定はつかないけど全然乗れる車を売りたい人』と『とりあえず乗れればいいから安く車を買いたい人』の釣り合いが上手に取れてるのかなって思った。

出品台数が多いもんだから条件を絞って探してみた。

  • 軽自動車であること
  • 乗り出し10万円以下であること
  • 現車確認ができる距離であること
  • MTであること(必須ではない)

良さそうな2台に絞り込んだのが「パジェロミニ(AT)」と「アルト(MT, 車検なし)」だった。 2台とも現車確認した結果アルトにした。パジェロミニもすごく面白そうな車だったし、調子も良さそうだったから本当に悩んだんだけど年式が古いこと、ATであること(しかも3速AT)からアルトにした。やっぱりMTに乗ってみたかった。同じ条件でパジェロミニがMTだったら即決してたとおもう。ただああいう車のMTは人気が高いらしく往々にしてやたら高い。

買ったアルトはha12s エポ 1999年式、走行10万キロ、4WD、車検なしで7万円を切る価格。自分で車検を通せば乗り出し10万で乗れる。

ちなみに見に行った2台の車の出品者は両者とも車屋さんだった。てっきり個人だと思ってたんだけど最近は業者がメルカリに出品するケースも増えてきてるらしい。個人売買しかねえよなとか言っといてアレだけどやっぱり多少は整備してくれる業者から買うほうが安心できる気がする。だから今回のケースでの最適解はメルカリに出品してる業者(not素人)から買うことだと思う。

これからよろしく頼むわ、アルトよ。