IO-DATA製CO2センサー UD-CO2S から測定データを読み取り、標準出力やMQTT等様々なデータレシーバへ出力するプログラムです。(Amazon.co.jp)
データの出力先は比較的簡単に追加実装することができます。1
$ go install github.com/northeye/chissoku@v2
リリースページからダウンロー
ド。
デバイスを接続してシリアルポートの確認をしておきます。
コマンドライン引数にシリアルポートのデバイス名を指定して実行します。
シリアルデバイスが /dev/ttyACM0
の場合 (Linux等)
$ ./chissoku -q /dev/ttyACM0 --tags Living
{"co2":1242,"humidity":31.3,"temperature":29.4,"tags":["Living"],"timestamp":"2023-02-01T20:50:51.240+09:00"}
シリアルデバイスが COM3
の場合(Windows)
C:\> chissoku.exe -q COM3 --tags Living
{"co2":1242,"humidity":31.3,"temperature":29.4,"tags":["Living"],"timestamp":"2023-02-01T20:50:51.240+09:00"}
※ センサーデータ(JSON)以外のプロセス情報は標準エラー(stderr)に出力されます。
$ docker run --rm -it --device /dev/ttyACM0:/dev/ttyACM0 ghcr.io/northeye/chissoku:latest [<options>] /dev/ttyACM0
docker-compose.yml sample
version: '3.3'
services:
chissoku:
container_name: chissoku
image: ghcr.io/northeye/chissoku:2.0
restart: always
devices:
- "/dev/ttyACM0:/dev/ttyACM0"
command: --output=mqtt --mqtt.address=tcp://mosquitto:1883 --mqtt.topic=co2/room1 --mqtt.client-id=chissoku-room1 --tags=Room1 /dev/ttyACM0
network_mode: bridge
environment:
TZ: 'Asia/Tokyo'
--output
オプションにより出力メソッドを指定することが可能です。
現在用意されているメソッドは stdout
, mqtt
で、複数指定することも可能です。
$ chissoku --output=stdout,mqtt --mqtt.address tcp://mosquitto:1883/ --mqtt.topic=sensors/co2 --mqtt.qos=2 /dev/ttyACM0
何も指定しなければデフォルトとして stdout
が選択されます。
outputter にはそれぞれオプションが指定可能な場合があります。
outputter のオプションは基本的に outputter の名前がプレフィックスになっています。
今後ファイルやクラウド出力等のメソッドが実装されるかもしれません。
コマンドラインオプションの --output=stdout
により標準出力にデータを流せます。
オプション | 意味 |
---|---|
--stdout.interval=INT |
データを出力する間隔(秒)(default: 60 ) |
--stdout.iterations=INT |
データを出力する回数(default: 0(制限なし) ) |
コマンドラインオプションの --output=mqtt
により MQTTブローカーへデータを流せます。
必要な場合はSSLの証明書やUsername,Passwordを指定することができます。
オプション | 意味 |
---|---|
--mqtt.interval=INT |
データを出力する間隔(秒)(default: 60 ) |
--mqtt.address=STRING |
MQTTブローカーURL (例: tcp://mosquitto:1883 , ssl://mosquitto:8883 ) |
--mqtt.topic=STRING |
Publish topic (例: sensors/co2 ) |
--mqtt.client-id=STRING |
MQTT Client ID default: chissoku |
--mqtt.qos=INT |
publish QoS default: 0 |
--mqtt.ssl-ca-file=STRING |
SSL Root CA |
--mqtt.ssl-cert=STRING |
SSL Client Certificate |
--mqtt.ssl-key=STRING |
SSL Client Private Key |
--mqtt.username=STRING |
MQTT v3.1/3.1.1 Authenticate Username |
--mqtt.password=STRING |
MQTT v3.1/3.1.1 Authenticate Password |
Tips
MQTT メソッドがうまく動かなければ標準出力を mosquitto_pub などに渡せばうまくいくかもしれません。
オプション | 意味 |
---|---|
-o, --output=stdout,... |
出力メソッドの指定(default: stdout ) |
-q, --quiet | 標準エラーの出力をしない |
-t, --tags=TAG,... |
出力するJSONに tags フィールドを追加する(コンマ区切り文字列) |
-h, --help | オプションヘルプを表示する |
-v, --version | バージョン情報を表示する |
-d, --debug | デバッグログの出力を行う |
適当にPR送ってください。
Footnotes
-
v2.0.0
から出力先の追加実装をしやすくするためプログラム設計を見直しました。
output.Outputter インターフェースを実装した構造体をChissoku
構造体メンバに埋め込むだけで追加できるようになりました。
既存の機能に影響のない範囲でPRを投げてくだされば対応します。 ↩