树莓派物联网应用基础(3):Python 物联网控制小灯:收到消
Python 物联网控制小灯:收到消息闪烁
以下代码功能是只要接收到物联网发送端的任何信号,受控端树莓派的小灯就会闪烁。
一、受控端代码,侦听接收物联网送来的信号,收到数据小灯闪烁
#!/usr/bin/env python
# coding: utf-8
#!/usr/bin/python
import paho.mqtt.client as mqtt
import time
import RPi.GPIO as GPIO #导入树莓派BCM模块
GPIO.setmode(GPIO.BCM) #设置GPIO引脚为BCM编码模式
GPIO.setup(5,GPIO.OUT) #设置该端口为输出模式
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("您的设备编号/主题名") #主题名(您的设备编号/主题名) 与发送端一致
def on_message(client, userdata, msg):
GPIO.output(5,GPIO.HIGH)
time.sleep(0.1)
GPIO.output(5,GPIO.LOW)
print(msg.topic+" " + ":" + str(msg.payload,encoding="utf8")) #encoding="utf8"修改返回的数据编码
#return msg.payload #在这可以不启用不影响程序效果
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("www.gdwrobot.top", 1883, 60) #古德微物联网服务器
#client.connect("127.0.0.1", 1883, 60) #单机本地测试用
client.loop_forever()
受控端代码:收到物联网数据小灯闪烁二、发送端代码,发送100内的数到物联网
#!/usr/bin/env python
# coding: utf-8
import paho.mqtt.client as mqtt
import time
client=mqtt.Client()
client.connect("www.gdwrobot.top",1883,60)
time.sleep(1)
nData=1
while 1:
time.sleep(0.5)
nData+=1
nData%=100
client.publish('您的设备编号/主题名',nData) #您的设备编号/主题名,与受控端一致
#client.disconnect()
print("success sent:",nData)
发送端程序三、加了参数编码定义,返回数据格式。
print(msg.topic+" " + ":" + str(msg.payload,encoding="utf8"))
encoding="utf8"——定义返回的数据编码类型,输出的数据编码格式区别。
没有定义编码接收的数据输出格式(如下图1)
图1 没有定义编码接收的数据格式定义了编码接收的数据输出格式(如下图2)
图2 定义了编码接收的数据格式学完古德微花老师的代码,然后实践操作过,会对代码的理解更深,再以备忘录记录下来互相交流学习。