双源电子

在线客服
 工作时间
周一至周五 :8:30-17:30
周六至周日 :9:00-17:00

ABT主板(WIFI版)连接贝壳物联(1)

作者:双源电子科技

使用ESP8266做远程控制,总要用到服务器,个人自己搭建服务器成本太高,我们就先用已有的免费服务器做一些应用。

这段时间用ABT主板(WIFI版)连接上了贝壳物联,也试了一下他们的微信控制,还是挺好用的!

首先在贝壳物联注册账号,然后创建新设备,记录下你的设备ID和APIKEY,程序中会用到。

示例程序在贝壳物联的github上可以下载:

https://github.com/bigiot/bigiotArduino

如果已经安装了针对8266开发的Arduino IDE,我们只需要把bigiotArduino-master\libraries中的aJson文件夹拷贝到IDE的libraries下就可以了,示例工程在bigiotArduino-master\examples\ESP8266\ESP8266WIFI中的control4文件夹中。

代码编译可以能会有错误,我们来简单更改一下:

#include <ESP8266WiFi.h>
#include <aJSON.h>

//=============  此处必须修该============
String DEVICEID="1"; // 你的设备编号   ==
String  APIKEY = "APIKEY"; // 设备密码==
//=======================================
unsigned long lastCheckInTime = 0; //记录上次报到时间
const unsigned long postingInterval = 40000; // 每隔40秒向服务器报到一次

const char* ssid     = "ssid";//无线名称
const char* password = "password";//无线密码

const char* host = "www.bigiot.net";
const int httpPort = 8181;


void setup() {
 Serial.begin(115200);
 delay(1000);
 
 WiFi.begin(ssid, password);
 
 
}

WiFiClient client;

void loop() {

while (WiFi.status() != WL_CONNECTED) {
   delay(1000);
   Serial.print(".");
 }

// 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;
     if(C == "play"){        
       sayToClient(F_C_ID,"Rev play!");    
     }else if(C == "stop"){
       sayToClient(F_C_ID,"Rev stop!");    
     }else{
       int pin = C.toInt();
       sayToClient(F_C_ID,"Rev pin:"+pin);
     }
   }
}

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();
}

把上面的代码上传到ESP8266中,打开串口监视器,然后在贝壳物联页面中点击“设备遥控”,分别点击“play”按钮,点击“stop”按钮,串口监视器会显示相应的接收数据:

联系方式
_faiMaterial_000045

联系人:ANTBOT001

QQ:584860790

邮 箱:584860790@qq.com

交流群: 615486305