这个例子展示了如何使用端口80上的WebSockets,使用运行Python的Raspberry Pi板发布到ThingSpeak频道。如果您有多个想要发送到ThingSpeak的传感器值,您可以将多个值发布到一个频道提要。在本例中,树莓Pi板的CPU和RAM使用数据每20秒收集一次,并将这些值发布到信道馈电中。或者,如果只有一个值要更新,则可以将单个值发布到通道字段。
创建一个新的通道,如图所示在新通道中收集数据.
2)单击,创建MQTT设备设备>MQTT然后在ThingSpeak页面的顶部添加设备.在设置设备并将新通道添加到其授权列表时,单击下载证书>纯文本.有关详细信息,请参见创建ThingSpeak MQTT设备.使用下面Code部分中保存的凭据。
3)下载泛美卫生组织MQTTPython的客户端库。您可以使用命令行安装库。如果你正在使用python2,请使用以下代码:
Sudo PIP install psutil
如果你使用Python 3,请使用以下代码:
Sudo pip3 install psutil
1)包括图书馆paho.mqtt.publish作为发布
,psutil
,字符串
在你的Python代码中。
将paho.mqtt.publish导入为publish Import psutil导入字符串
2)定义与ThingSpeak交流的变量。编辑通道ID和MQTT设备凭据。
# ThingSpeak频道ID。#将< your - channel -ID>替换为你的频道ID。channel_ID = "" # ThingSpeak MQTT代理的主机名。mqtt_host = "mqtt3.thingspeak.com" #您的设备mqtt_client_ID = "< Your - client - id >" mqtt_username = "< Your - username >" mqtt_password = "< Your - mqtt-password >"
定义连接类型为尚
,并将端口设置为80
.
T_transport = "websockets
创建一个主题字符串,如图所示发布到频道提要同时更新指定通道的字段1和字段2。
#创建主题字符串。topic = "channels/" + channel_ID + "/publish"
5)循环运行,每20秒计算一次系统内存和CPU性能,并发布计算值。使用WebSockets同时发布到指定通道的字段1和字段2。
while (True): #获取超过20秒的系统性能数据。Cpu_percent = psutil.cpu_percent(interval=20) ram_percent = psutil.virtual_memory()。% #构建有效负载字符串。Payload =" field1=" + str(cpu_percent) + "&field2=" + str(ram_percent) #尝试将该数据发布到主题。try: print ("Writing Payload = ", Payload," to host: ", mqtt_host, " clientID= ", mqtt_client_ID, " User ", mqtt_username, " PWD ", mqtt_password) publish。单个(topic, payload, hostname=mqtt_host, transport=t_transport, port=t_port, client_id=mqtt_client_ID, auth={'username':mqtt_username,'password':mqtt_password}) except (keyboardInterrupt) break except Exception as e: print (e)
运行该程序并观看频道,定期从您的设备更新。