MQTT电桥

mqspeak的Python项目详细描述


#mqspeak-mqtt桥

mqspeak是[mqtt](http://mqtt.org/)客户端,它收集数据并将其转换为[thingspeak](https://thingspeak.com/)通道更新或[phant](http://phant.io/)
数据流。它能够处理多个mqtt连接并独立地更新多个通道。


这是我的物联网项目的一部分。您可以在我的[博客](http://buben19.blogspot.com/)上阅读有关它的更多信息。


install


`或"--config`
选项(默认的`/etc/mqspeak.conf`)。这是示例配置文件:

[brokers]
enabled=温度代理湿度代理门代理


[temperature代理]
host=temperaturebrokerhostname
port=1883
user=brokeruser
password=brokerpass
topic=sensors/t温度传感器/某物

[湿度代理]
主机=湿度代理主机名
端口=1883
用户=代理
密码=代理主机名
主题=传感器/湿度

[门代理]
主机=门代理主机名
端口=1883
使用r=brokeruser
password=brokerpass
topic=

[channels]
enabled=channel1 channel2 channel3 channel4


[channel1]
id=channelid
key=channelkey
type=thingspeak
updaterate=15
updatetype=blackout
updatefields=dht update

[channel2]
id=channelid
key=channelkey
type=thingspeak
updaterate=15
updatetype=buffered
updatefields=dht update

[channel3]
id=channelid
key=channelkey
type=thingspeak
updatefields=15
update type=average
updatefields=dht update

[channel4]
id=channelid
key=channelkey
type=phant
updaterate=15
updatetype=onchange
updatefields=door update

[dht-update]
field1=湿度代理传感器/湿度
field2=温度代理传感器/温度

[door update]
state=door broker传感器/门

tion. 这些选项包含空格分隔的broker和channel
节名称。

Broker部分中可能选项的完整列表:

-`host`-Broker IP地址或主机名(默认127.0.0.1)。
-`port`-Broker端口(默认1883)。
-`user`-用户名。
-`password`-密码。
-`topic`-主题订阅的空格分隔列表。必选选项。

必需选项。
-`type`-指定通道类型。强制选项。支持以下类型:
-`thingspeak`-[thinkspeak](https://thingspeak.com/)通道。
-`phant`-[phant](http://phant.io/)通道。
-`updaterate`-通道更新间隔(秒)。目前,ThinkSpeak允许
间隔15秒或更长时间。必需选项。
-`wait interval`-等待剩余数据到达的最大间隔。当设置为
0时,请永远等待(默认)。有关详细信息,请参阅**更新等待**。
-`update type`-通道更新类型。可能的值有"blackout"、"buffered"、"average"和"onchange"。强制选项。
-`blackout`-在"updaterate"间隔到期之前,任何传入的数据都将被忽略。间隔过期后收到的第一个数据将发送到thingspeak。
-`buffered`-传入数据将在`updaterate`间隔期间缓冲。
此间隔过期后,将立即发送最新值。
-`average`-类似于'buffered`,但mqspeak计算这些
数据的平均值。任何不能转换为实数的数据都将被忽略。通道
在"updaterate"间隔过期后立即更新。
-`onchange`-数据用时间戳标记并存储在队列中。每个项目在"updaterate"间隔过期后发送。***尚未实现。指定定义此通道更新的节。强制选项。

默认情况下,在所有传感器的数据到达之前,不会更新通道。
非活动传感器导致通道更新暂停。

可分为以下情况:

-**"updaterate"条件满足,但没有数据。**等待机制在某些数据到达之前不会激活。在接收到通道更新的第一部分后,mqspeak将等待
定义的时间,并尝试收集剩余的数据。"waitinterval"过期后,将发送
数据。
-**部分数据在满足"updaterate"条件之前到达。**等待将延迟
,直到满足"updaterate"条件。当它过期并且仍然没有
所有必需的数据时,将触发等待。"waitinterval"过期后,将发送数据

-**在满足"updaterate"条件之前收集所有必需的数据。**无需激活"update waiting"。只需发送数据。

updatefields section

updatefields section包含任意数量的选项。每个选项键指定
字段名。它的值必须是以空格分隔的Broker节和主题的名称。

对于ThinkSpeak频道,只有选项键"field1"…` field8`是有效的。

\questions

-**mqspeak只在前台运行。**-是的,没有双叉组合键可在后台运行
mqspeak。我使用systemd init,我更喜欢以简单的方式运行所有服务
systemd units,它在前台运行。对不起。
-**它用蟒蛇3。是否支持Python2.x?**-不,我不打算支持Python2.x。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在设置AtomicBoolean之前检查另一个条件?   通过java将文件从windows计算机复制到另一台windows计算机   java如何在使用Cobertura时忽略与记录器相关的If条件?   java无法在Eclipse中导出Android应用程序   带GSON的java parse JSON返回null   java Extract/filter Splunk查询和条件逻辑   java ProgressBar带有一个倒计时器Android   java我应该为每个DAO编写通用方法的集成测试吗?   java从命令行访问执行JAR的文本文件   任务应用程序的java Gradle生成失败:processReleaseResources   预测函数的java DeepLearning4j NN不收敛   java如果发现特殊字符,如何删除字符串中的字符?   在Java中,从精确位置将字符串拆分为两个   将Java ByteArrayOutputStream压缩到不同的容器中   带有同心指示方块的java太空船模拟器制导计算机   java如何使用Jericho解析两条注释?   PersistenceUnit中的java多个类   连接到java中的elasticsearch?   当嵌入HTML页面时,删除java小程序中的外部白色边框   用于webstart的java CXF ClassCastException(SEIStub/ClientProxy)