1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【树莓派】树莓派使用python E16 GPRS模块向MQTT服务器传输数据

【树莓派】树莓派使用python E16 GPRS模块向MQTT服务器传输数据

时间:2020-08-20 00:48:34

相关推荐

【树莓派】树莓派使用python E16 GPRS模块向MQTT服务器传输数据

树莓派连接E16 GPRS模块

模块:塔石E16 GPRS模块 MQTT版本

1、硬件连接

示意图E16模块错位了,应该接PIN3,PIN4

2、串口调试

需要安装minicom,可参考/cw_huang/article/details/117060235

python测试代码:

发送命令:

import serialimport timeser = serial.Serial("/dev/ttyAMA0",115200)# 发送数据,必须是\r\n,需要使用encode()进行编码,否则会报错ser.write("ATI\r\n".encode())time.sleep(0.1)# 读取ser.read(ser.inWaiting())

3、读取CPU温度

def getCPUtemperature():res = os.popen('vcgencmd measure_temp').readline()return(float(res.replace("temp=","").replace("'C\n","")))

4、向mqtt服务器发送信息

读取核心温度,发送至EMQX服务器

要先安装串口库

import serialimport timeimport jsonimport randomfrom datetime import datetimeimport os# 打开串口MQTT_SERVER = "XX.XX.XX.XX" #EMQX 服务器地址CLIENT_ID = "CLIENT_ID"TOPIC = "HVAC/SZJK-WSD/propety/post"username='username'password='password'# 打开串口ser = serial.Serial("/dev/ttyAMA0", 115200)def getCPUtemperature():res = os.popen('vcgencmd measure_temp').readline()return(float(res.replace("temp=","").replace("'C\n","")))def SetPara(MQTT_SERVER,CLIENT_ID,username,password,uart):uart.write(('AT+IPPORT="{}",1883\r\n'.format(MQTT_SERVER)).encode())time.sleep(0.1)uart.read(uart.inWaiting()) # 简易程序,仅虚读未进行判断uart.write(('AT+DEVICEID="{}"\r\n'.format(CLIENT_ID)).encode())time.sleep(0.1)uart.read(uart.inWaiting()) # 简易程序,仅虚读未进行判断uart.write(('AT+USERPWD="{}","{}"\r\n'.format(username,password)).encode())time.sleep(0.1)uart.read(uart.inWaiting()) # 简易程序,仅虚读未进行判断uart.write(("AT+CFUN=1,1\r\n".encode())) # resettime.sleep(5)uart.read(uart.inWaiting()) # 简易程序,仅虚读未进行判断def SendMessage(topic,message,qos,uart):uart.read(uart.inWaiting())a=('AT+PUBLISH="{}",{},{}\r\n'.format(topic,len(message),qos)).encode()uart.write(a)time.sleep(0.1)rec=uart.read(uart.inWaiting())if(rec == b'\r\n> '):uart.write(message.encode())time.sleep(0.1)return uart.read(uart.inWaiting())msg = {"event_time":"","event_date":"","iot_id":"ID","product_key":"SZJK-WSD","type":"DEVICE","humidity":-1,"temperature":0}def main():while True:# msg["humidity"]=random.randint(10,90)msg["temperature"]=getCPUtemperature()msg["event_time"]=datetime.now().strftime('%Y-%m-%d %H:%M:%S')msg["event_date"]=datetime.now().strftime('%Y-%m-%d')SendMessage(TOPIC,json.dumps(msg),0,ser)time.sleep(60)if __name__ == '__main__':try:main()except KeyboardInterrupt:if ser != None:ser.close()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。