ゼネコンを九ヶ月で辞めた話

この日記はKMCアドベントカレンダー2016の13日目記事です。


前日は、sorah先生のsystemd-nspawn で portage の binary package (binpkg) ビルドをいい感じにする - diary.sorahでした*1

去年もポエムを書いていましたが、今年もポエムを書きます。進化がないのか・・・。

いいわけ。

なんでポエムを書くのか、それは忙しくてプライベートのアウトプットが殆どなかったからです。最後にアウトプットしたのはZabbixで電気の使用ログを取る話で、それ以降ほとんど進捗がありません*2


言い訳はこの程度にしておいて。

わたしは新卒でゼネコンに入って九ヶ月(2016年1月末)で辞め、今は都内にある小さなソシャゲ会社でサーバの面倒を見たりしています。

ということで、およそ10ヶ月遅れの退職エントリです。退職直後は正直思い出したくなくて、ようやくTwitterのログを目にできる程度には精神的な整理がついたという感じ

TL;DR

  • 配属されたトンネル現場でサビ残要求されて戦ったら本社送り
  • 本社の橋梁部門で数千枚の紙色塗りで疲れ果てて転職

*1:2016/12/15 0:17 記事を確認したのでリンクしました。

*2:やったのは、せいぜいESP8266に温度計繋ぎzabbix_senderで温度ログを取るぐらい。Qiitaの記事を幾つか参照したら瞬殺でしたので記事に書くほどでは。。。。

続きを読む

スマートメータのBルート接続とRaspberry PiとZabbix3.0で電力消費量をモニタリングする

最近暑くなってきてエアコン回すようになったので、消費電力が気になってきました。

スマートメータへ聞きに行く。

最初はカレントトランスとADコンバータ使って電流測ろうって思っていたんですが、家の電気メーターがスマートメータになってた。

先達
chappnet.hateblo.jp
www.higebu.com
d.hatena.ne.jp

どうやらいけそう。自分で計測メカ作ろうとすると校正がめんどいんですよね。

ということで、Raspberry PiにWi-SUN通信でスマートメータと会話して消費電力情報を取ってきてもらうことにしました。

Bルート接続

東電Webから申し込めます。

何故かパスワードがメールできてIDは手紙で来る。普通逆でしょ。東京都水道局のWebサービスはIDがメールできてパスワードが圧着葉書で来ました。

アレだなぁと思うけど他社はこんなものではなく、例えば関電は申し込みからお手紙。申込システムを作るお金が勿体無いんですかね。

Wi-SUN接続をどうするか

ROHMのモジュールBP35A1ぐらいしか入手できなさそう。
www.rohm.co.jp

で、USBドングルで探すと上記のBP35A1を仕込んだROHMのWSR35A1-00がヒットする。
www.rohm.co.jp

こいつはぷらっとホームの通販で買えた。Web上では「納期お問い合わせ」って書いてあるけどすぐに発送されました。
online.plathome.co.jp
ちなみに価格が税込み16200になっていますが、実際に買うと送料1000円(+消費税80円)かかって総計は17280円になります。

他にも探すと東芝のドングルとか出てるんだけど買い方がわからん。

届きました。

繋いでみる。

[walkure@altair]~% dmesg
(中略)
[    3.370616] usb 1-1.2.1: new full-speed USB device number 6 using dwc_otg
[    3.518316] usb 1-1.2.1: New USB device found, idVendor=0403, idProduct=6001
[    3.527341] usb 1-1.2.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    3.538313] usb 1-1.2.1: Product: FT232R USB UART
[    3.544866] usb 1-1.2.1: Manufacturer: FTDI
[    3.550802] usb 1-1.2.1: SerialNumber: ほげほげ

BP35A1とUSBの変換は、この手の用途で定番のFT232を使っているようです。なので、デバドラなどを探す必要が無いから楽。

楽なんですが、定番なのでFT232を複数個ぶら下げるとttyUSBが区別できなくなる。
そこで、udevでデバイパーミッションの設定をする際のATTRSにidVendorとidProductと、もう一つserialを加えて識別することに。serialは前掲のdmesgにも出てますし、udevadm infoで見ても良い*1

[walkure@altair]~% cat /etc/udev/rules.d/61-FT232.rules
ATTRS{idVendor}=="0403",ATTRS{idProduct}=="6001",ATTRS{serial}=="ほげほげ",KERNEL=="ttyUSB*",SYMLINK+="ttyWiSUN",MODE="0666"

udev周りの参考
http://kuma35-memo.readthedocs.io/en/latest/fix-devicename.html

で、デバイスが見えたところでターミナルエミュレータminicom使って適当にお話が出来るのを確認。

観測する

minicomで情報取れたので、前掲のblogとECHONET Liteの仕様書、そしてSKSTACKの説明を元にちまちまとperlで読み出す実装を書いてみた。

スマートメータとUDP(SKSTACKがtelnetで伝えてくる)で会話して、Zabbixエージェントで観測することを前提にしています。ログ取りの選択肢はいくつかありますが、最近仕事でZabbixと戯れてるのでZabbixにしました。

github.com

Zabbixでグラフ書くとこんな感じになります。Zabbixには室内と室外の気温も監視させてるので、エアコンの動きがわかって面白いですね。
f:id:W53SA:20160819230044p:plain

電気代は描画するとこんな感じになります。
f:id:W53SA:20160819230416p:plain
月途中からの観測開始なので、先月分の電気代請求書に書いてあったメータ読み値を別途DB放り込んで算出しています。ちなみに締め日はWeb見たら割とバラバラだったんですが実装では26日固定です。

電気代が(たとえば)4000円越えたら警告みたいなことを最初考えてたんですが警告されたところで暑いもんは暑いんだしどうしよって感じ。

*1:ID_SERIAL_SHORTにあたる。

プロキシ環境変数を設定するランチャを作った

最近はUnityと戦っていたりします。で、Webとの通信を見るためにFiddler使いたいなぁと調べたらUnityはプロキシ設定を環境変数http_proxyから取ってくる。

グローバルに設定するとこの環境変数を読む他のアプリケーションと競合します。例えばdropboxFiddlerのメモリを食い尽くすとか。

要はプロセスが上がってくる際に環境変数が設定されてればいいので、簡単なランチャを書きました。

github.com

やってることは単純でSetEnvironmentVariable環境変数設定してCreateProcessで子プロセス生成して即座に終了するだけ。この程度で.NET使うの牛刀感溢れるのでWTL使ってさくっと作りました。

京大マイコンクラブと旅するわたし

この記事はKMC Advent Calendar 2015 17日目の記事です。

何故か参加ボタンをポチってしまったwalkureです。TwitterとかのIDは取れなかったのでW53SA*1
今は東京で何故か土木っぽいことしてます。

昨日は京大マイコンクラブに東京の大学生が入った話 - 型想い三年でした。

で。

ポチった最初はnode.js/地震計とか書こうと思ってたんですけど、今月に入ってから四時間の通勤電車で精神力が消費される日々になってしまい毎日しんどくて現在休止中。。。。。。。。

ということで、他の人達とは毛色の違うことを書くことにしました。

*1:当時使ってた携帯

続きを読む

艦これ専ブラのソースをgithubに投げた

長らく専ブラいじれてないというか日々消耗してなんもできてないのでソース公開しました。

コピペした部分は記憶とソースコードの記録にあるかぎり書いたのですが、なんか足らなかったら指摘してください。

今のところ、遠征と時々演習を回すことしかしてないですね。朝遠征回して夜帰ってきて演習回すとかそんな感じで。

ShadowsocksでURI検閲HTTPプロキシを越える

中南海による言論統制システム金盾を越える為にいろんなVPNソフトウェアがありますが、その一つにSOCKSv5プロトコルを暗号化して飛ばすShadowsocksがあります。最近では開発者の家に警察がやってきてソースコードgithubから消すのを強要される事件がありましたが、既にもりもりforkされていました。サーバもpipに残ってるしOSSって強いね。作者さんは無事でしょうか、、、、

さて、日本でもネットワークによっては検閲プロキシなどの壁が存在するので当然壁を壊しにゆきます。昼休みぐらい艦これさせろ。

HTTPプロキシを越える手段としては、CONNECTメソッドがあります。この手で壁を超える際に使うのはstoneが有名です。CONNECTメソッドの詳細はRFC 2817あたりですが、簡単に言うと「指定のホストへの通信を中継する機能がある」わけです。なんに使うかって言うとRFCにあるようにSSL通信で、SSL通信はバイナリデータをサーバとクライアントの間でやりとりする必要があります。

CONNECTメソッドの動きは簡単で、CONNECTでリクエストを投げると、HTTPレスポンスが返ってきた後にリクエストで指定したホスト:ポートへのtcp接続を中継してくれます。stone使った場合のはこんな感じ。

Shadowsocksと一緒にstone起動してもいいんですが、せっかくソース公開してるので改造してCONNECTリクエスト投げて、HTTPレスポンスを無視する機能をTCPリレー部分に突っ込んでみました。これだと単にShadowsocks.exeを起動するだけで壁を越えてくれます。やったね。

ソースはforkしたgithubに突っ込んでバイナリもreleaseしてみた*1しれっとレゾルバがIPv6アドレス無視するようにしてありますが、これはデバッグ中にpolipo使ってたけど127.0.0.1でしかbindしてくれなくてlocalhostで解決した際に最初に::1が返ってくるとコネクション貼れない場合があったんですが最高に馬鹿っぽい感じがしますねこれ。

これで晴れて壁を越えて世界の知にアクセスできるヤッターとか思ってたけど、出口設置したさくらVPS2ch.netからブロック*2されてるオチもあったり。

*1:Tag打たないとDraftから先に進まないって知らなくて暫くハマった。

*2:分裂騒動の影響ですね。