foresta profonda

眠くない日はない。

pip3でurllibをインストール

pip3でurllibをインストールするとエラーになった。

mbp:~ kenji$ pip3 install urllib
Collecting urllib
  Could not find a version that satisfies the requirement urllib (from versions: )
No matching distribution found for urllib

バージョンの指定が謝り。
urllib3を指定すればOK

mbp:~ kenji$ pip3 install urllib3
Collecting urllib3
  Downloading urllib3-1.22-py2.py3-none-any.whl (132kB)
    100% |████████████████████████████████| 133kB 1.6MB/s 
Installing collected packages: urllib3
Successfully installed urllib3-1.22

homebridge on Raspberry Pi 3 with Docker

ラズパイでhomebridgeを動かす手順は以前ブログで書いた。

rongonxp.hatenablog.jp

今回はラズパイ3にDockerをインストールして、コンテナ上でhomebridgeを動かしてみた。
これでラズパイの環境が壊れても簡単に復旧できる。

手順としてはDocker on ラズパイのDockerfileが公開されているのでこれを利用すれば良い。

github.com

config.jsonが/home/pi/homebridge以下に格納している場合は以下のようにする。

# docker run --net=host --name=homebridge -v /home/pi/homebridge:/homebridge oznu/homebridge:raspberry-pi

net=hostにすることでコンテナ上からホストのNICがすべて見えるようにしている。

あと、homebridge用のプラグインを追加する場合はコンテナが起動してから以下のようにする。自分はhomebridge-cmdを使っているので追加でインストールする。

# docker exec [コンテナID] yarn add homebridge-cmd

このあと、docker commitして保存しておけばOK。

Pythonで天気情報を取得する

最近、シェルスクリプトで作業効率化するのがマイブーム。
そんな折、Pythonシェルスクリプトよりもリッチ(?)なツールを作りたい願望が高まってきたので、本格的に勉強しようと思い立った。事始めとしてPythonで天気情報を取得するプログラムを書いてみた。

今回はlivedoorのWeather Hacks(気象データ配信サービス)から天気情報を取得する。
weather.livedoor.com

リクエストには地域を指定するだけで良い。
以下は神戸市の天気情報を取得する場合のリクエスト。
http://weather.livedoor.com/forecast/webservice/json/v1?city=280010

レスポンスはJSONデータで得られるので、目的のプロパティについて処理すれば良い。
forecastsプロパティには直近3日間の天気情報が含まれる。
というわけで、直近3日間の天気内容(晴れ、曇り、雨など)を表示するプログラムを書くと以下のようになった。

#!/usr/bin/env python
# coding: utf-8

import requests
import json

def get_weather():
	url = 'http://weather.livedoor.com/forecast/webservice/json/v1'
	payload = {'city': '280010'} # Kobe
	data = requests.get(url, params = payload).json()

	print(data['title'])
	for weather in data['forecasts']:
		print(weather['dateLabel'] + ':' + weather['telop'])

	return

if __name__ == '__main__':

	get_weather()

実行すると以下のようになる。

兵庫県 神戸 の天気
今日:曇り
明日:雨
明後日:雨のち晴

至極簡単。
これなら、ラズパイで毎朝SlackとかTwitterに天気を投稿するのも簡単にできる。

Gentoo LinuxでNFSマウントする

まず、cifs-utilsをインストールする必要がある。

# emerge net-fs/cifs-utils

これでマウントしようとすると以下のエラーになった。

# mount //xxx.xxx.xxx.xxx/public /mnt/nfs/
Password for hogehoge@//xxx.xxx.xxx.xxx/public: 
mount error: cifs filesystem not supported by the system
mount error(19): No such device
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

これはcifsをLinuxカーネルがサポートしていないから怒られているようだ。
以下を有効にしたカーネルでマウントするとうまくいった。

File systems  --->
   Network File Systems  --->
      CIFS support (advanced network filesystem, SMBFS successor)

Node-REDでPhilips Hueを操作する

Node-REDで組んだフロー上からPhilipsのHueを操作したくなったので試してみた。ノードは "node-red-contrib-node-hue" というのが公開されているのでコレを使う。

flows.nodered.org

インストールは以下のようにする。ローカルインストールの場合はグローバルインストールのオプション(-g)を消しておく。

$ npm install -g node-red-contrib-node-hue

インストール後、Node-REDを再起動すると、入力用のnode-hue-inと出力用のnode-hue-outが使えるようになる。パレット上に配置して設定画面を開くと、以下のようにHueのブリッジと操作したいランプを指定する。

f:id:rongon_xp:20170623222133p:plain

ブリッジのテキストボックス右にある編集アイコンを押すとIPアドレスAPIキー、あとポーリング時間を指定する画面になる。IPアドレスは自動で探してくれるようなので、ブリッジのボタンを押してAPIキーのテキストボックス横のボタンを押せばAPIキーが代入される。

次に元の画面に戻ってランプの設定を行う。ブリッジの設定直後だとランプが見つからないようだが、しばらく待つとブリッジに接続済みのランプを選べるようになるので、操作したいランプを選べば良い。

基本設定は以上。
ランプを消灯したい場合はfunctionノードで以下のようにすれば良い。

msg.payload =  {
    "on": false
};

return msg;

逆に点灯したいときは以下のようにする。

msg.payload =  {
    "on": true,
    "xy": [0.3393, 0.3316],
    "hsv": [201, 42, 100],
    "hex": "92D8FE",
    "color": "lightskyblue",
};

return msg;

これで他の機器と連携してHueを点けたり消したりできるようになった。

教団X

結構前になるけど「教団X」を読んだ。

https://www.amazon.co.jp/%E6%95%99%E5%9B%A3X-%E4%B8%AD%E6%9D%91-%E6%96%87%E5%89%87/dp/4087715906www.amazon.co.jp

全体的に小難しく理解するのに時間がかかるので、中盤くらいからストーリー展開に着いていけなくなった。。。

けど、仏教脳科学にもとづいて描かれている世界観はとても印象的で、これから自分の価値観として強烈に意識づけられた表現もあった。正確な表現ではないけど、以下の点はこれからも記憶に残りそう。

・原子の集合体である「私」は日々新しい原子で入れ替わっているのに、「私」というかたちで存在し続けている
・意識より先に体は動いている。意識は「私」というドラマを見ているだけ。

分厚すぎるのでなかなか読み返す気にはならないけど、どこかでまた読み直してみたい。