失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 物联网离线语音控制智能家居系统设计(三):ESP8266(Arduino IDE)连接阿里云物联网平台

物联网离线语音控制智能家居系统设计(三):ESP8266(Arduino IDE)连接阿里云物联网平台

时间:2022-08-16 04:12:07

相关推荐

物联网离线语音控制智能家居系统设计(三):ESP8266(Arduino IDE)连接阿里云物联网平台

物联网离线语音控制智能家居系统设计(三):ESP8266(Arduino IDE)连接阿里云物联网平台

#include <ESP8266WiFi.h>#include <PubSubClient.h>#include <ArduinoJson.h>#include "aliyun_mqtt.h"//以上四个为可以直接在arduino库安装//start*********此处需要修改************************//WiFi名称密码#define WIFI_SSID "********"//替换自己的WIFI#define WIFI_PASSWD"********"//替换自己的WIFI//阿里云物联网三元模组#define PRODUCT_KEY"********" //替换自己的PRODUCT_KEY#define DEVICE_NAME"********" //替换自己的DEVICE_NAME#define DEVICE_SECRET "********"//替换自己的DEVICE_SECRET//接收与发送消息的两个topic,修改为自己需要的topic,一下无效的实例#define updata_topic "/devicename/test/user/update"#define get_topic"/devicename/test/user/get"//end*********需要修改的已完毕************************unsigned long lastMs = 0;WiFiClient espClient;PubSubClient mqttClient(espClient);void init_wifi(const char *ssid, const char *password)//连接WiFi{WiFi.mode(WIFI_STA);WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED){Serial.println("WiFi does not connect, try again ...");delay(500);}Serial.println("Wifi is connected.");Serial.println("IP address: ");Serial.println(WiFi.localIP());}void mqtt_callback(char *topic, byte *payload, unsigned int length)//回调函数,会打印出接收到的topic以及对应的消息,需要的话,此处也可以对消息中包含的信息进行解析{Serial.print("Message arrived [");Serial.print(topic);Serial.print("] ");payload[length] = '\0';Serial.println((char *)payload);}void mqtt_version_post()//发送消息{char param[512];char jsonBuf[1024];sprintf(param, "{\"TargetDevice\":\"phone\",\"DeviceName\":\"test\",\"data\":\"123\"}");//此处为将需要发送的文本赋值给paramSerial.println(param);//打印param至串口mqttClient.publish(updata_topic, param);//发送param至update_topic这个topic}void mqtt_check_connect()//连接检测{while (!mqttClient.connected())//mqttδ����{while (connect_aliyun_mqtt(mqttClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET)){Serial.println("MQTT connect succeed!");//client.subscribe(ALINK_TOPIC_PROP_POSTRSP);mqttClient.subscribe(get_topic);Serial.println("subscribe done");mqtt_version_post();}}}void setup()//初始化设置{pinMode(SENSOR_PIN, INPUT);/* initialize serial for debugging */Serial.begin(115200);Serial.println("Demo Start");init_wifi(WIFI_SSID, WIFI_PASSWD);mqttClient.setCallback(mqtt_callback);}// the loop function runs over and over again forevervoid loop()//循环,相当于while(1){if (millis() - lastMs >= 20000){lastMs = millis();mqtt_check_connect();/* Post */ }mqttClient.loop();unsigned int WAIT_MS = 2000;if (digitalRead(SENSOR_PIN) == HIGH){Serial.println("Motion detected!");}else{Serial.println("Motion absent!");}delay(WAIT_MS); // msmqtt_version_post();Serial.println(millis() / WAIT_MS);}

程序参考了很多网上代码,自己做了一定修改整理,有问题可以交流

如果觉得《物联网离线语音控制智能家居系统设计(三):ESP8266(Arduino IDE)连接阿里云物联网平台》对你有帮助,请点赞、收藏,并留下你的观点哦!

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