首页 > 编程知识 正文

物联网开源平台,物联网用emq

时间:2023-05-03 12:04:42 阅读:165875 作者:3050

esp32的MQTT物的因特网开发记录环境依赖于注册产品写入器的调试验证

环境依赖

本项目在Windows环境下开发,所使用的软件和三方库如下

Arduino IDE 1.8.16 (下载) DHT-sensor-library (地址移动到Arduino/libraries ) DHT传感器驱动Adafruit_Sensor (地址为Arduino/libraries ) 移动到库DHT传感器是PubSubClient (工具=管理库下载) MQTT库ArduinoJson (工具=管理库下载) JSON转换工具注册产品http://www.Sina

创建产品

选择产品类型。 这里以温湿度传感器为例

选择设备访问

产品信息的充实

填写功能定义

设备开发接口免费领取两份许可证证书

保存设备id和设备安全,并在编写程序时填写

创建程序管脚定义

# include ' DHT.h ' # include ' wifi.h '/# include ' wificlientsecure.h ' # include ' pubsub client.h ' # include '

wifi//# define wifi _ ssid ' TJ * * '//wifi名称# define wifi _ passwd ' TJ ark * * '//wifi密码wifi//配置MQTT

此处的用户名和密码参考tuyaMQTT开放协议

mqtt//# definemqttserver ' m1.tuya cn.com ' # definemqttport 1883 # define clientid ' tuya link _ 6c 7e8F5 A8 FD2eee 79 ea * sid securemode=1,access type=1' # define pass '1ccfff 232 bafe 35 be 78 d0eed 7e 952 f7c 39b 148 c 2f 672 fedd 85875 c * * ' # define topic '

wifi客户端esp客户端; //创建网络连接客户端pubsubclientclient(espclient ); 创建mqtt客户机DHTDHT(DHTpin,DHTTYPE ); //DHT实例化连接WiFi

WIFI相关函数void setupWifi () {Delay ) 10 ); serial.println(connectingwifi ); wifi.Begin(wifi_ssid,WIFI_PASSWD ); while (! WiFi.isConnected () ) ({ Serial.print ) '.'; 延迟(500; }serial.println('ok ); serial.println (wificonnectedsuccessfully!' ); serial.println(IPaddress: ); serial.println(wifi.localip ) ); 连接MQTT

连接mqttvoid setupMQTT () client.setserver(mqttserver,mqttPort ); client.setcallback(callback; while (! client.connected () (serial.println ) (connectingmqtt ); client.connect (clientid,User,Pass ) ) serial.println (' mqttconnectedsuccessfully!' ); client.subscribe(topic; } else { serial.print (failedwithstate ); serial.println(client.state () ); 延迟(2000; 创建MQTT回调函数

//MQTT回调函数voidcallback(char*topic,byte * payload,unsigned int length ) { dynamicjsondocumentdoc } 512; char charbuffer[512]; serial.print (消息阵列) ); serial.print(topic; serial.println (' ); int i=0; for (; ilength; I ) charbuffer[I]=(char ) payload[i]; } charbuffer[i]='”; deserializationerrorerror=deserialize JSON (doc,charbuffer ); if(error ) ) serial.print (deserialize JSON ) (故障: ) ); serial.println(error.f_str ) ); 返回; } boollighton=doc [ ' data ' ] [ ' light _ switch ' ]; booldehumion=doc [ ' data ' ] [ ' de humi _ switch ' ]; if(lighton ) digital write (light pin,HIGH ); }else{digitalwrite(lightpin,LOW ); (if ) dehumion (数字写入) fanpin,HIGH ); }else{digitalwrite(fanpin,LOW ); }初始化

void setup () { //put your setup code here,torunonce:pinmode(lightpin,OUTPUT ); Serial.Begin(115200; 设置wifi (; setupMQTT (; dht.begin (; }主函数

void loop () { //put your main code here,torun repeatedly ://waitafewsecondsbetweenmeasurements.delay ) 5000; //readhumiditydatainth=DHT.read humidity (; //readtemperatureascelsius (the default ) int t=dht.readTemperature ); //checkifanyreadsfailedandexitearly (to try again ).if ) isnan(h||Isnan(t ) ) serial.println ) ) failedtoReads 返回; //readilluminationdatafloatl=analog read (ADC pin ); int percent=100 - l/4096.0 * 100.0; //串行端口打印serial.print (f (高清: ) ); serial.print(h ); serial.print(f ) ' %temperature: ' ); serial.print(t; serial.print(f ) ' c ' ); serial.print(f(illumination: ); serial.print(percent; serial.println(f('%”); //jsondynamicjsondocumentdoc (512 ); dynamicjsondocumentjsdata(256; dynamicjsondocumenttempdata(32 ); dynamicjsondocumenthumidata(32 ); dynamicjsondocumentilludata(32 ); tempdata['value']=t; tempdata['time']=1639454915; humidata['value']=h; humidata['time']=1639454915; illudata['value']=percent; illudata['time']=1639454915; jsdata [ ' temp _ current ' ]=tempdata; jsdata [ ' humidity _ current ' ]=humidata; j data [ ' illumi _ current ' ]=illu data; doc['msgId']='45lkj3551234001 '; doc['time']=1639454915; doc['data']=jsdata; 字符串str; 序列JSON (doc,str ); //serial.println(str; //sendingtomqttchar*p=(char* ) str.c_str ); if (client.publish (ty link/6c 7e8F5 A8 FD2eee 79 ea * */thing/property/report ',p )==true ) serial.println } ee } client.loop (; }调试验证程序写入esp32后,可以通过在线调试功能界面进行调试,确认传感器数据并验证功能

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。