ホーム » コンピュータ » Raspberry-Pi (ページ 3)

Raspberry-Pi」カテゴリーアーカイブ

システム

最近の投稿

アーカイブ

カテゴリー

フレームバッファ出力で電力不足?

ラズパイの状態表示を出力させてみたけど、このあとからか、Raspberry-Pi が Under-Voltage 警告が増えたみたい。そして、よく落ちるようになってきた。

HDMI 出力をすることで、電力不足だと思われる。homebridgeさえ動いていればいいので、状況表示はもともとそんなに使うはずでもないので、早々に出力の処理は止めた。

素直に大電流ACアダプタ

ACアダプタをこれ以上増やしたくないと、ルータの USB-3.0 端子から、homebridge用 Raspberry-Pi に給電していたけど、不安定なのは困る。RPi 3 用と書いてある AC アダプタを購入して取り換え。Under-voltage の警告は出なくなったな。当然か。

1日間で700回ほど出力されていた、電圧低下の警告がキレイさっぱりなくなった。当然か…(^_^;

ラズパイのフレームバッファ出力

家電制御とhomebridge専用のRaspberry-Piだけど、HDMI制御用にテレビに繋がっているし、ラズパイの動作状況なりを出力させられないかと思っていた。

X11 の GUI の autologin を使うのが定番だろうけど、X11 が動いているだけで、OS リソースをかなり食っちゃうので、あまりやりたくなかった。

でも、フレームバッファ出力で映像を出すための fbi コマンドをみつける。

そこで、wkhtmltopdf パッケージの wkhtmltoimage コマンドを使って、状況表示のページをキャプチャさせ、その画像を fbi コマンドで、フレームバッファ表示させてみた。

/usr/bin/wkhtmltoimage --width 1200 --height 800 \
    -q 'http://www.example.co.jp' /tmp/web.png
/usr/bin/sudo /usr/bin/fbi -T 1 -d /dev/fb0 --noverbose \
    /tmp/web.png > /dev/null 2>&1

google home が動かなかったな…

そういえば、先日の朝とか、いつもの Google home mini に「照明つけて」とか言っても、ネットワークにつながっていないとかいって動かなかったけど、google のトラブルが原因か。

我が家では、家電制御は、Google Home mini → homebridge-gsh → homebridge だから、我が家のネットワークの問題(mydns.jpの接続トラブルで逆引き失敗することがある)で、homebridge-gsh が動かないと思っていたけど、google さんがトラブっていりゃうごかないよね。

まあ、homebridge は Home アプリで操作が普通で、”Hey Siri!” で操作できるし、記事みたいに何もできなることはないし。

朝イチの暖房と換気

ファンヒータが原因なのか?

空気品質センサーCCS811を導入して、測定値もまあ安定している状態。一般的な換気推奨レベル1500ppm では、ファンヒーターをつけるだけで軽く越えてしまう。しかたがないので下図で示される「人体影響レベル2500ppm」に警告レベルを設定してみた。しかし、暖房ナシでの就寝明けにファンヒーターが動き出すと越えてしまうよなぁ。

仕事に出かける前に換気をしておけば、帰宅しても1500ppmを下回りそうだけど、これからもっと寒くなれば、難しいよなぁ…

ファンヒータ以外の原因か?

(2020/12/08追記) 安定して、空気品質がサンプリングできてわかってきたことだけど、CO2増加のタイミングがファンヒータとずれている。
今朝も、06:00 にファンヒーターをつけているのに、CO2の立ち上がりは、07:30頃から。空気が循環するまでのタイムラグと考えることもできるけど、もう少し微妙に影響出始めていいはず。

そうなると、原因は目覚めた人間の呼吸なのかなぁ。呼吸が原因なら、帰宅した時にも大きな変動があっていいはずなんだけど、朝イチの変動大きいよなぁ。

homebridgeの一部が不具合

便利に使っている音声制御機能、しかし昨日から照明が消えない。google-home ではなく、元の Apple の Homeアプリで動かすと、アイコンに ! マークが付いている。ブラウザのリモコン機能は動くので、赤外線の光が届かないのかと思って気づくのが遅れた。(ブラウザ版は raspberry-pi でなく、自宅サーバで動いている)

原因は、raspberry-pi を stretch から buster に更新して、python の設定がおかしくなったみたい。

$ /usr/local/bin/broadlink bed-light power
Traceback (most recent call last):
  File "/usr/local/etc/python-broadlink/cli/broadlink_cli", line 8, in <module>
    import broadlink
ModuleNotFoundError: No module named 'broadlink'

しかたがないので、python-broadlink を入れ直し。default の python が 2.x 系か 3.x 系かの違いが原因のようなので、明示的に python3 系でインストール。

$ sudo install python3-dev python3-pip
$ sudo pip3 install broadlink

Raspberry Pi buster 更新でトラブル

自宅の Raspberry-Pi を buster に更新してみた。

定番の /etc/apt/sources.list の stretch を buster に書き換えて、

$ sudo aptitude update ; sudo aptitude safe-upgrade
大量にインストール...
$ sudo reboot

しかし、起動時に eth0 も認識せずに、emergency mode になってしまった。

root パスワードでログインし、手作業で eth0 を認識させて…。
原因としては、raspi-copies-and-fills が原因のようなので、削除。

$ sudo aptitude purge raspi-copies-and-fills

CCS811二酸化炭素センサー(その2)

うーむ、eCO2センサー、運用開始3日目で本来の値が表示されるようになってきたのかな。(センサーにも安定まで時間がかかるようなことが書いてあったけど)
ということで、2酸化炭素の増加は、ストーブだけでないな。10畳部屋だけど、3人(+1匹)いるだけでそれなりの値というのが見えてきた。「寒いな…」と、20秒ほどで閉める程度の換気では、あまり効き目がない。

100円均一で買ったケースに収めてみた

透明ケースに入れて、ホットボンドで固定。空気穴をあけておいた。

二酸化炭素レベル測定で換気判定

コロナ対策で、空気中の二酸化炭素レベルを測定して換気を行う事例をテレビでやっていたので、I2C接続のセンサーをAmazonでポチって、ちょいプログラム作成。(取り付け時のメモ)  センサー値が安定するまで時間がかかるというものなので、daemon化させる必要もあって、ちょっと面倒だったけどうまく動くようになった。

考察

センサーのeCO2が400ppm以下は判定できないので、こんなグラフが取れるようになった。ファンヒーターをつけるとグラフが上がっていく。1000ppm以上だと換気推奨レベル。とはいえ、朝の冷え切った部屋が温まるまでは、換気もできんけど。

グラフ中の8:00-12:00は、daemon化させていたプログラムのバグ直しまでの影響だけど、このセンサーはeCO2の値は、2000ppm が上限みたいだな。ソースコード確認したら、eCO2>2000 ,  TVOC>1200 は異常値扱いしていた。販売元のページには、測定レンジもう少し広い値だったので、プログラムの方を修正。

グラフの立ち上がりは、ファンヒーターが原因だけど、夜中の3:30にグラフが立ち上がってるのが原因不明だなぁ…。

一番ありそうな仮説。猫が「コレ何?」と、センサー周りでクンカ・クンカでもしたのかなぁ….Raspberry-Pi+センサー、テレビの台に置いてあるからなぁ…

温度湿度センサーをBME280に切り替え

自室の温度測定には、USBRH というセンサーとそれに伴うソフトを使っていたけど、使っていたライブラリの都合で、Raspberry-pi のバージョンを最新にできずにいたけど、今回 同じようにI2Cの温度・湿度・気圧のセンサー BME280 を購入し温度測定のプログラムを切り替えた。

ということで、そろそろ Raspberry-Pi のOS更新もやろうかな。

CO2センサーをRaspberry-Piにつなぐ

SEN-CCS811 - Raspberry-Pi
       GND - GND(6)
       VCC - 5V(4)
       SDA - I2C1_SDA(3)
       SCL - I2C1_SCL(5)
       RST - VCC(2) # Resetする時はGNDにつなぐ
      WAKE - GND(9)
       INT - NC
$ sudo raspi-config
$ sudo /boot/config.txt
dtparam=i2c_arm_baudrate=50000  (default 100kHz→50kHz)
$ ls /dev/i2c-*
/dev/i2c-1
$ sudo i2cdetect -y 1
$ sudo pip3 install smbus2 # python3 用smbus モジュール


homebridge-gsh と cec-client

homebridge-gshで、google-homeからHomeKit(homebridge)を制御

自宅で homebridge-config-ui-x で、家電制御の設定が楽になり、homebridge-gsh にて、Google Home から Apple の HomeKit の制御を呼び出せるようにしてみた。今までは赤外線リモコンベースなので、テレビのON/OFFがトグル動作で怪しかったが、HomeKit 経由だと、TVにつなげた HDMI 接続のRaspberry-Pi から HDMI 接続の他の機器に、ON/OFF を明示的に制御ができるようになる。

cec-client で 電源ON/OFF ができなくなった

無事、homebridge-gsh が動き出したのに、CATVSTB の電源が ON/OFF できない。入力切替は正しく動いているのに…
cec-client の動作状況を表示させながらうごかすと、定番の 「echo “on 1” | cec-client -s」で動かない。メッセージを見ると、対象機器がうまく選べないのが原因みたい。
CEC では、物理機器番号と論理機器番号で管理されていて、物理機器番号が決まらないのに on はできない…といったのが原因みたい。cec-client のバージョンがあがり、その辺がいいかげんなコマンドが送れないようになったようだ。

しかたがないので、CEC-O-MATIC のページにて、他の方法を試すと、以下のコマンドなら、正しく電源のON/OFFができた。

$ echo "tx 26:36"    | cec-client -s   # チューナーをけす Recording2 → Tuner2 standby
$ echo "tx 26:44:6C" | cec-client -s   # Recording2 → Tuner2 User Control Pressed Power Off
$ echo "tx 26:44:6D" | cec-client -s   # Recording2 → Tuner2 User Control Pressed Power On

ということで、cec-client を呼び出す処理を、上記のコマンドを使うようにして、無事 google-home から HomeKit 呼び出しに成功。

google-home に、”NHK をつける” と話しかけると、homebridge-gsh 経由で homebridgeが呼び出され、「地デジ切替と1チャンネルの赤外線信号」をだすし、”チューナーを消す”と言えば、cec-client 経由でtx 26:44:6c を送ってチューナーの電源が切れる。超便利。

(追記)

“tx 2X:44:6D” による電源ONは、HDMIの電源連動機能が動かないみたい。”on Y” だと、(TVで連動ON設定が必要だけど)チューナーの電源を入れれば、TVも連動してONになっていた。しかし、”tx 2X:44:6D”ではテレビがつかない。TV側の連動機能を知らないうちにOFFにしたのかと思ったけど、リモコンでチューナーをつければテレビ付くし。

ということで、cec-client を使って電源操作するシェルスクリプトに、TVの電源ON動作を行う機能を追加しておいた。

Google 検索

My Google   Yahoo

Microsoft

ファンサイト