などととてつもなく面倒そうな事が頭から離れません。
そのまま動くから絶対的なオーバーヘッドが無くなるからraspberry piに優しいはず?
基本的にはmotionを動かしっぱなしなのですが、そこまでcpuリソースが切迫しているわけでもないわけで…
そもそもpythonで揃え始めた理由の一つはスクリプトなのに結構そのまま動かせるというのが一番の理由だった記憶が。
pythonならそれこそスクリプト自体に実行権限つければ現状のRaspbianならそのまま動きますし。しかもその辺の手間をなくすためにwgetさせたらあとはpythonスクリプトでせっせと配置させるスクリプトも出来上がりつつあるのですべてが一つの言語体系で収まるのは非常に気持ちがいいとう。
じゃぁやっぱりpythonでドライバー叩かないとダメか…ということで頑張りました。
pi@rasp4b4g:~/gpioread $ python3 dht.py --debug
pin : 5
Output for debugging.
array('B', [10, 83, 87, 54, 24, 54, 71, 54, 24, 54, 24, 54, 71, 54, 24, 54, 24, 54, 25, 54, 24, 54, 24, 54, 25, 54, 24, 54, 24, 54, 24, 54, 24, 54, 25, 54, 25, 54, 24, 54, 24, 54, 70, 55, 70, 54, 71, 53, 25, 54, 25, 54, 24, 54, 24, 54, 24, 54, 24, 54, 71, 54, 24, 54, 24, 54, 25, 54, 25, 54, 70, 54, 71, 54, 24, 54, 70, 54, 71, 54, 24, 54, 25, 54])
bitcount : 40
data high '0' : 24 ~ 25
data high '1' : 70 ~ 71
data low : 53 ~ 55
data format : 48 00 1C 08 6C
array('B', [7, 83, 87, 54, 24, 54, 71, 54, 24, 54, 24, 54, 71, 54, 24, 54, 24, 54, 25, 54, 24, 54, 25, 53, 25, 54, 24, 54, 24, 54, 24, 54, 24, 54, 26, 53, 25, 54, 24, 54, 24, 54, 70, 54, 71, 54, 70, 54, 24, 54, 26, 54, 24, 54, 24, 54, 24, 54, 24, 54, 71, 54, 24, 54, 24, 54, 25, 54, 25, 54, 70, 54, 70, 54, 25, 54, 70, 54, 71, 54, 24, 54, 25, 54])
bitcount : 40
data high '0' : 24 ~ 26
data high '1' : 70 ~ 71
data low : 53 ~ 54
data format : 48 00 1C 08 6C
DHT results.
Retry count : 0 time(s)
Error code : 0
Temperature : 28.8 C
Humidity : 72.0 %
pin : 5
Output for debugging.
array('B', [10, 83, 87, 54, 24, 54, 71, 54, 24, 54, 24, 54, 71, 54, 24, 54, 24, 54, 25, 54, 24, 54, 24, 54, 25, 54, 24, 54, 24, 54, 24, 54, 24, 54, 25, 54, 25, 54, 24, 54, 24, 54, 70, 55, 70, 54, 71, 53, 25, 54, 25, 54, 24, 54, 24, 54, 24, 54, 24, 54, 71, 54, 24, 54, 24, 54, 25, 54, 25, 54, 70, 54, 71, 54, 24, 54, 70, 54, 71, 54, 24, 54, 25, 54])
bitcount : 40
data high '0' : 24 ~ 25
data high '1' : 70 ~ 71
data low : 53 ~ 55
data format : 48 00 1C 08 6C
array('B', [7, 83, 87, 54, 24, 54, 71, 54, 24, 54, 24, 54, 71, 54, 24, 54, 24, 54, 25, 54, 24, 54, 25, 53, 25, 54, 24, 54, 24, 54, 24, 54, 24, 54, 26, 53, 25, 54, 24, 54, 24, 54, 70, 54, 71, 54, 70, 54, 24, 54, 26, 54, 24, 54, 24, 54, 24, 54, 24, 54, 71, 54, 24, 54, 24, 54, 25, 54, 25, 54, 70, 54, 70, 54, 25, 54, 70, 54, 71, 54, 24, 54, 25, 54])
bitcount : 40
data high '0' : 24 ~ 26
data high '1' : 70 ~ 71
data low : 53 ~ 54
data format : 48 00 1C 08 6C
DHT results.
Retry count : 0 time(s)
Error code : 0
Temperature : 28.8 C
Humidity : 72.0 %
cで作り変えた時にかなりいい感じにまとまってたのですが、pythonのソースを見て色々と書き直したくなる感じの混沌としたスクリプト。かなり目をつぶっていたのは確かなんですが、、とはいえ、現実問題としてはioctl呼出しの準備が結構大変(面倒)でした。
思っていた以上にlinuxのカーネルが頑丈というのは昨日までドライバを動かしていた感想なのですが、pythonから叩いていてもやはり同様のことを感じました。ただ。。。システムリソースがリークしたままになっているような気はしないでもないw
ctypesをインポートすればパラメータ関連は何も考えずにできるのですが、果たしてそれでいいのかどうかという判断材料が乏しく、右往左往してトライアンドエラーで乗り越えました。実行さえできるようになればもうあとは何も考えずに出来上がってる流れに任せるだけなのですが、スクリプトソースがもうなんか何とも言えない状態で…ドライバのソースももう少し綺麗にしておきたいのですが。
結果はセンサーからの読出しが安定しているので本当に今までの気苦労が何だったのかと。
cのバージョンではそれなりにオプションを用意して、使いまわせるようになっていたので、不足部分を盛り込むついでに、色々書きなおそう。
0 件のコメント:
コメントを投稿