【发布时间】:2020-09-27 10:45:30
【问题描述】:
我有一个简单的程序gettemp,它每 3 秒打印一次温度...
$ gettemp -repeat 3
23.5 C
23.2 C
...
我可以将它有效地通过管道传输到 MQTT 命令行工具 mosquitto_pub:
$ gettemp -repeat 3 | mosquitto_pub --stdin-line --topic /sensors/temp/outside
高效我的意思是,没有新的mosquitto_pub 进程每 3 秒启动一次。
现在我有另一个程序,它会在收到新值时打印来自多个传感器(无线电温度计)的值:
$ temps_radio --format "temp_%n=%v C"
temp_0d=23.5 C
temp_02=11.3 C
temp_04=5.0 C
...
我想以某种方式将这些数据也传送到mosquitto_pub,但当然是在单独的主题下(如/sensors/temp/0d)。
-
我不想为每个新行创建一个新的
mosquitto_pub! -
我不知道
temps_radio会吐出多少个不同的传感器,所以我不能设置一些命名管道,让多个mosquitto_pub从中读取,然后分发@ 987654334@ 使用一些awk输出到这些管道中。
真的有必要为此编写自己的程序或脚本吗?
我希望用例“将键值行流输入 MQTT”很常见。
例如,在另一端,mosquitto_sub supports user-formatted output,它可以很好地将其输出到另一个程序中,比如
$ mosquitto_sub -t /sensors/temps/# -F "UPDATE Temperatures(%t, %p)" | mysqlcli
【问题讨论】: