BME280 の出力結果をカンマ区切りにしてみた

先日のRaspberry Pi に BME280 モジュールを接続して温度、湿度、気圧を計測するで出力された結果をカンマ区切りになるように変更してみました。

スイッチサイエンスで公開しているスクリプトを実行すると出力が次のようになります。

$ sudo python bme280_sample.py
temp : 26.36  ℃
pressure : 1007.30 hPa
hum :  62.44 %

結果を目視で確認するには十分ですが、結果を再利用しようとするとちょっと困るかもしれません。
なのでカンマ区切りで出力するようにスクリプトを変更しました。
次のように出力されます。

$ sudo bme280.py
26.36,62.44,1007.30

とりあえずパッチはこんな感じです。
python いじったの初めてかもしれない

patch コマンドで適用できます。
必要なら元のファイルをコピーするなどして使うといいと思います。

$ patch -u bme_sample.py < bme280.patch

出力結果は awk などを使って適当に取り出しができると思います。

Raspberry Pi に BME280 モジュールを接続して温度、湿度、気圧を計測する

BME280 モジュールを Raspberry Pi に接続して温度、湿度、気圧を計測したときのメモです。
BME280 はスイッチサイエンスからピンがはんだ付けされていないものを購入しました。

BME280搭載 温湿度・気圧センサモジュール

BME280搭載 温湿度・気圧センサモジュール

こちらの Qiita 記事を参考にしています、接続もこの通りです。

まず i2c 関係のツールが入っていないのでこれと、smbus をインストールします。

$ sudo apt-get install i2c-tools python-smbus -y

起動時にモジュールを読み込めるように設定を追加します。

$ sudo vi /boot/config.txt
device_tree=bcm2708-rpi-b.dtb
device_tree_param=i2c1=on
device_tree_param=spi=on

最後に追加すれば大丈夫っぽいです。
再起動してくればモジュールが読まれます。

これでモジュールにアクセスできるはずです。
i2cdetect でアドレスを確認すると、0x76 を使っています。

$ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- 76 --

スイッチサイエンスで公開しているスクリプトで各種データを取り出せるので取ってきます。

$ mkdir ~/src/ss
$ cd ss
$ wget https://raw.githubusercontent.com/SWITCHSCIENCE/BME280/master/Python27/bme280_sample.py

BME280 にアクセスできるアドレスが 0x76 でなかった場合はダウンロードしたスクリプトの7行目に書かれたアドレスを変更すれば大丈夫な気がします。

i2c_address = 0x76

sudo でスクリプトを実行するとセンサーで取得した値が返ってきます。

$ sudo python bme280_sample.py
temp : 26.36  ℃
pressure : 1007.30 hPa
hum :  62.44 %

ファイルサーバーの隣にセンサーを設定しています。

User Local の人工知能ボット API で Hubot と会話した話

User Local という会社で人工知能ボット API が提供されているという情報があったのでその時点で申し込み、API が用意できたよというメールが来たので Hubot 用のスクリプトを書いてみました。
メッセージを JSON で渡すこともできるような記述を見た気がしたのですが、公式を見たところメッセージを URL エンコードして送る方が記述が多いのでそっちを使ってます。
プラットフォームの指定もできるようですが、Hubot で書いてコンソールで試した後に Twitter 用設定しようとしたのでプラットフォームは指定していません。

…なんかインデントがうまく表示されないっぽい?

カッコイイコードじゃない気がしますが、コンソールから起動して会話できたので OK ってことで。

キャラクターの設定できるようですが今は猫と犬と老人だったかな…他のがいいや、もっとできるようになったらその辺も使ってみたいです。

予定では今月下旬にプログラミング不要なフレームワークが公開されるっぽいので、そっち使った方が楽かもしれないですね。

やる気のない Twitter クライアントを作った

ツイートするだけの極めてやる気の無い Twitter クライアントを作りました。
昔あった大陸系クライアントのようにツイートするウィンドウだけが表示され、文字列を入力して Enter するとポストされます。
残り何文字使えるかもざっくり表示されています。

f:id:k-side:20160621125928p:plain

コードのリポジトリは Bitbucket で公開しています。

実行ファイルは公開していないので Visual Studio 2015 をインストールするなどしてビルドしてください。
あと Coretweet が必要になります。

クライアントのコンシューマーキー、コンシューマーシークレットも入っていないのでご自身で取得してください。
セットの方法は README か、キーの無い状態でビルドして実行するとセットの方法が表示されます。

さしあたって名前は餃子列島にしてありますが、CS/CK をセットにしていないので適当な名前をセットしてください。

コードのライセンスは NYSL Version 0.9982 です。

わざわざこのクライアントのために Visual Studio 2015 をインストールするとかないと思いますが。

追記

PowerShell からビルドできるかもしれないスクリプトを追加しました。
もしかしたら Visual Studio 入ってなくてもビルドできるかもしれません。

そして dynabook は旅だった

父親から預かった dynabook

調べたら HDD に不良セクタが発見され、意を決して SSD を注文したのです。

しかし、注文をしたその日に父親から連絡があり、使うつもりだった ThinkPad T61 が起動しなくなったとのこと。
実家にこれ以上現代機がない*1ので、SSD が届いた次の日に Windows 10クリーンインストールし、宅急便で実家に旅立ちました。

そしてこれで予備機もなくなったので、dynabook が壊れても次に渡せるパソコンを用意しておかなければなりません…。
どれ買おうかしら。

*1:ネットワークが切断された Windows XP 機はあるけど…

dynabook 用に SSD を発注しました

父親から預かった dynabook ですが、入っていた Windows 7Windows 10 にアップグレードしてクリーンインストールしました。

それでも動きにひっかかりがあったので、メモリテストや HDD の診断を行ったところ、HDD から不良セクタが発見されました。
父曰く動きがおかしいのでメーカーに送って HDD の交換はしてもらったとのことだったのでまさか不良セクタがあるとは…。

そのまま使うと HDD 死亡確定なので SSD に交換することにして、Amazon に発注をかけました。

120GB クラスにしようか、240GB クラスにしようか迷っていましたが、ストレージの余裕は心の余裕に繋がる(?)ということで 240GB クラスの中から安いモデルを選んだところです。

一緒にメモリも注文した方がいいか迷いましたが、そんな余裕は無かったですね。

セットアップした Zabbix フロントエンドで日本語が使えなかったので表示できるようにする

テスト運用していた Zabbix 2 系はまともに触らずに放置されていたのですが、Zabbix 3 系が出てきたので新しくサーバーをセットアップしました。やっぱりテスト運用ですが。

前に書いたシェルスクリプトでガツンとインストールして無事フロントエンドにログインできました。

フロントエンドにログインできたのはいいんですが、ユーザーの言語設定で日本語を選ぶことができなかったので選べるようにする設定変更をしました。

f:id:k-side:20160610160435p:plain

debian jessie で動く Zabbix 3.0.3 での設定です。

まずシステムの言語設定に日本語を追加します。

$ sudo vi /etc/locale.gen
ja_JP.UTF-8 UTF-8

ja_JP.UTF-8 UTF-8 のコメントを外すだけです。

そしてシステムに設定変更を反映させます。

$ sudo locale-gen

ついでにグラフで表示される日本語が豆腐になるのも直しておきます。

まずは日本語フォントをインストール

$ sudo apt-get install fonts-ipafont -y

Zabbix で認識されるフォントのディレクトリにシンボリックリンクを張ります。

$ sudo ln -s /usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf /usr/share/zabbix/fonts/ipagp.ttf

Zabbix フロントエンドの設定にあるフォントの名前を、シンボリックリンクの名前に書き換えます。

$ sudo vi /usr/share/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME',    'ipagp');

Zabbix サーバーと Apache2 を読み直して完了。

$ sudo service zabbix-server restart
$ sudo service apache2 reload

f:id:k-side:20160610160436p:plain

日本語も選べるようになりました。
おしまい。

ってシェルスクリプトでこのあたりもできるようにすると楽かもなー…。