esp8266-01s接入物联网
1.创建产品
2.创建设备
3.打开arduino 编写代码
#include <ESP8266WiFi.h>
/* 依赖 PubSubClient 2.4.0 */
#include <PubSubClient.h>
#include <ArduinoJson.h>
/* 连接您的WIFI SSID和密码 */
#define WIFI_SSID "wifi名称"
#define WIFI_PASSWD "wifi密码"
/* 线上环境域名和端口号 */
#define MQTT_SERVER "地址"
#define MQTT_PORT 1883 //端口号
#define MQTT_USRNAME "用户名"
#define CLIENT_ID "client ID"
#define MQTT_PASSWD "密码"
//发布消息用的topic
#define PubTopic "topic"
int ledPin = 2;
int GPIO = 0;
unsigned long lastMs = 0;
WiFiClient espClient;
PubSubClient client(espClient);
//收到消息后的回调函数
void callback(char *topic, byte *payload, unsigned int length)
{
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
payload[length] = '\0';
Serial.println((char *)payload);
//解析json字符串
DynamicJsonDocument doc(1024);
deserializeJson(doc, payload);
JsonObject obj = doc.as<JsonObject>();
if (obj["a"] == "on") {
setLed();
Serial.println();
Serial.print("on 关灯");
digitalWrite(ledPin, HIGH); // 关
digitalWrite(GPIO, LOW);//低电平默认继电器关闭
Serial.println();
pubMsg("关灯");
}
if (obj["a"] == "off") {
setLed();
Serial.println();
Serial.print("off 开灯");
digitalWrite(ledPin, LOW);//led 亮
digitalWrite(GPIO, HIGH);//低电平默认继电器关闭
Serial.println();
pubMsg("开灯");
}
}
//wifi初始化
void wifiInit()
{
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASSWD);
while (WiFi.status() != WL_CONNECTED) {
Serial.println("WiFi not Connect");
}
Serial.println("Connected to AP");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
Serial.print("espClient [");
client.setServer(MQTT_SERVER, MQTT_PORT); /* 连接WiFi之后,连接MQTT服务器 */
client.setCallback(callback);
}
//发布消息
/*********************************************************************/
//发布一个字符串的消息
void pubMsg(char *msg)
{
boolean d = client.publish(PubTopic, msg);
if (d) {
Serial.println("publish success");
} else {
Serial.println("publish fail");
}
}
//发布指定长度的字符消息
void pubMsgLen(uint8_t *msg, int len)
{
boolean d = client.publish(PubTopic, msg, len);
if (d) {
Serial.println("publish success");
} else {
Serial.println("publish fail");
}
}
/*********************************************************************/
//连接到服务器
void mqttCheckConnect()
{
while (!client.connected()) {
Serial.println("Connecting to MQTT Server ...");
if (client.connect(CLIENT_ID, MQTT_USRNAME, MQTT_PASSWD)) {
Serial.println("MQTT Connected!");
} else {
Serial.print("MQTT Connect err:");
Serial.println(client.state());
delay(5000);
}
}
}
void setup()
{
/* initialize serial for debugging */
Serial.begin(115200); //开启串口
pinMode(ledPin, OUTPUT);
pinMode(GPIO, OUTPUT);
digitalWrite(ledPin, HIGH);//关灯
digitalWrite(GPIO, LOW);//低电平默认继电器关闭
Serial.println("Demo Start");
wifiInit();//连接wifi
unsigned char i = 0;
mqttCheckConnect();//连接阿里云
pubMsg("已连接阿里云物联网平台 ,hello aliyun!");
}
void setLed() {
digitalWrite(ledPin, LOW);
delay(500);
digitalWrite(ledPin, HIGH);
delay(500);
}
// the loop function runs over and over again forever
void loop()
{
client.loop();//保持客户端的连接
}
4.烧录程序