前回Raspberry Pi Zero WにセットアップしたRPi-Cam-Web-Interfaceではデフォルトで画面上側に日付と時刻が表示されていますが、これに加えて文字を表示させることができます。残念ながら現在のところ2バイト文字は表示されませんが、用途によっては役に立ちそうです。
今回は外気を測定して得られた温度・湿度・気圧を表示させます。秋月電子通商から購入したbme280をRaspberry Pi zero W につないで計測する予定だったのですが、Zero W本体の発熱の影響を受けてしまい正確に気温を測ることができませんでした。ESP8266以上に熱を持つようです。センサーは雨などで水に濡れることもNGなので設置場所に相当の工夫が必要です。少々甘く考えていました。残念ですが今回はあきらめます。
代わりに以前作製したESP-WROOM-02使用、温度・湿度・気圧計のMQTTデータを使います。本当はこれをZero Wにリプレースしたかったのでした。
自宅Debian jessie サーバで稼働しているMQTTブローカ Mosquitteに気温,湿度,気圧が約5分間隔でパブリッシュされています。サブクライブするそれぞれのトピックは 気温:/home/garage/Temperature/state 湿度:/home/garage/Humidity/state 気圧:/home/garage/Pressure/stateです。
RPi-Cam-Web-Interfaceでは /dev/shm/mjpeg/user_annotate.txt の内容が画面に表示される仕組みになっています。mosquitte_clients を使ったshell scriptをcronで15分ごとに起動させてMQTTデータを取得しファイル書き込みを行います。
■ Zero Wに最新版のmosquitte_clientsをインストールします
$ wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key $ sudo apt-key add mosquitto-repo.gpg.key $ cd /etc/apt/sources.list.d/ $ sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list $ sudo apt-get update $ sudo apt-get install mosquitto-clients
■ shell script 作製
$ cd ~ $ mkdir scripts $ cd !$ $ vim.tiny mqtt_get.sh ------------------------------ 以下の内容を作成 ------------------------------ #! /bin/bash RESULT=`mosquitto_sub -h SERVER_ADDRESS -C 3 -t /home/garage/Temperature/state -t /home/garage/Humidity/state -t /home/garage/Pressure/state` printf "T:%.1fC H:%.f%% %.fhPa" ${RESULT} > /dev/shm/mjpeg/user_annotate.txt
SERVER_ADDRESSはmosquittoが動いているサーバのアドレスです
■ 実行権を与えてcronに登録します
$ chmod u+x mqtt_get.sh $ crontab -e ------------------------------ ファイルの最後に追記 ------------------------------ # Edit this file to introduce tasks to be run by cron. ・ ・ ・ # m h dom mon dow command */15 * * * * ~/script/mqtt_get.sh
■ RPi-Cam-Web-Interface側の設定
Camera Settings > Annotation (max 127 characters) > %aを記入して OK
文字のsize等も調整できます。