|
发表于 2019-11-19 18:25:09
|
显示全部楼层
楼主的四路代码,保存这里备用
- #include <ESP8266WiFi.h>
- #include <aJSON.h>
- //=============此处必须修该============
- String DEVICEID="*****";//你的设备编号==
- String APIKEY="*********";//设备密码==
- const char* ssid="********";//WiFi名称
- const char* password="********";//WiFi密码
- //=============此处修改输出端口========
- #define OUT1 0//输出控制继电器端口1
- #define OUT2 1//输出控制继电器端口2
- #define OUT3 2//输出控制继电器端口3
- #define OUT4 3//输出控制继电器端口4
- //=======================================
- unsigned long lastCheckInTime=0;//记录上次报到时间
- const unsigned long postingInterval=40000;//每隔40秒向服务器报到一次
- const char* host="www.bigiot.net";
- const int httpPort=8181;
- WiFiClient client;
- void setup()
- {
- pinMode(OUT1,OUTPUT);//设置输出
- pinMode(OUT2,OUTPUT);//设置输出
- pinMode(OUT3,OUTPUT);//设置输出
- pinMode(OUT4,OUTPUT);//设置输出
- //上电端口默认输出低电平,想输出高电平自己把相应端口改成 HIGH
- digitalWrite(OUT1,LOW);//上电打开输出
- digitalWrite(OUT2,LOW);//上电打开输出
- digitalWrite(OUT3,LOW);//上电打开输出
- digitalWrite(OUT4,LOW);//上电打开输出
- pinMode(LED_BUILTIN,OUTPUT);//设备板载LED输出模式
- digitalWrite(LED_BUILTIN,HIGH);//关闭LED
- Serial.begin(115200);
- Serial.println();
- Serial.println();
- WiFi.begin(ssid,password);//连接WiFi
- while(WiFi.status()!= WL_CONNECTED)//等待WiFi连接成功
- {
- delay(500);
- Serial.print(".");//连不上WiFi就一直串口输出打印"......"
- }
- Serial.println();
- }
- void loop()
- {
- // Use WiFiClient class to create TCP connections
- if(!client.connected())
- {
- if(!client.connect(host, httpPort))
- {
- Serial.println("connection failed");
- delay(5000);
- return;
- }
- }
- if(millis()-lastCheckInTime>postingInterval||lastCheckInTime==0)
- checkIn();
-
- // Read all the lines of the reply from server and print them to Serial
- if (client.available())
- {
- String inputString=client.readStringUntil('\n');
- inputString.trim();
- Serial.println(inputString);
- int len=inputString.length()+1;
- if(inputString.startsWith("{") && inputString.endsWith("}"))
- {
- char jsonString[len];
- inputString.toCharArray(jsonString,len);
- aJsonObject *msg = aJson.parse(jsonString);
- processMessage(msg);
- aJson.deleteItem(msg);
- }
- }
- }
- void processMessage(aJsonObject *msg)
- {
- aJsonObject* method=aJson.getObjectItem(msg,"M");
- aJsonObject* content=aJson.getObjectItem(msg,"C");
- aJsonObject* client_id=aJson.getObjectItem(msg,"ID");
- if(!method)
- return;
- String M=method->valuestring;
- if(M=="say")
- {
- String C=content->valuestring;
- String F_C_ID=client_id->valuestring;
- digitalWrite(LED_BUILTIN,LOW);//接收到指令就闪一下LED
- delay(50);
- digitalWrite(LED_BUILTIN,HIGH);
- //全部控制
- if(C=="offon")//接收到的是全开指令
- {
- digitalWrite(OUT1,LOW);//打开
- digitalWrite(OUT2,LOW);//打开
- digitalWrite(OUT3,LOW);//打开
- digitalWrite(OUT4,LOW);//打开
- sayToClient(F_C_ID,"LED All on!");
- }
- if(C=="stop")//接收到的是全关指令
- {
- digitalWrite(OUT1,HIGH);//关闭
- digitalWrite(OUT2,HIGH);//关闭
- digitalWrite(OUT3,HIGH);//关闭
- digitalWrite(OUT4,HIGH);//关闭
- sayToClient(F_C_ID,"LED All off!");//向后台发送回复
- }
- //第一路
- if(C=="minus")//接收到的是1路开指令
- {
- digitalWrite(OUT1,LOW);//打开
- sayToClient(F_C_ID,"LED1 on!");
- }
- if(C=="plus")//接收到的是1路关指令
- {
- digitalWrite(OUT1,HIGH);//关闭
- sayToClient(F_C_ID,"LED1 off!");
- }
- //第二路
- if(C=="left")//接收到的是2路开指令
- {
- digitalWrite(OUT2,LOW);//打开
- sayToClient(F_C_ID,"LED2 on!");
- }
- if(C=="right")//接收到的是2路关指令
- {
- digitalWrite(OUT2,HIGH);//关闭
- sayToClient(F_C_ID,"LED2 off!");
- }
- //第三路
- if(C=="backward")//接收到的是3路开指令
- {
- digitalWrite(OUT3,LOW);//打开
- sayToClient(F_C_ID,"LED3 on!");
- }
- if(C=="forward")//接收到的是3路关指令
- {
- digitalWrite(OUT3,HIGH);//关闭
- sayToClient(F_C_ID,"LED3 off!");
- }
- //第四路
- if(C=="up")//接收到的是1路开指令
- {
- digitalWrite(OUT4,LOW);//打开
- sayToClient(F_C_ID,"LED4 on!");
- }
- if(C=="down")//接收到的是1路开指令
- {
- digitalWrite(OUT4,HIGH);//关闭
- sayToClient(F_C_ID,"LED4 off!");
- }
- }
- }
- void checkIn()
- {
- String msg="{"M":"checkin","ID":"" + DEVICEID + "","K":"" + APIKEY + ""}\n";
- client.print(msg);
- lastCheckInTime=millis();
- }
- void sayToClient(String client_id, String content)
- {
- String msg="{"M":"say","ID":"" + client_id + "","C":"" + content + ""}\n";
- client.print(msg);
- lastCheckInTime=millis();
- }
复制代码 |
|