找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 14341|回復(fù): 25
收起左側(cè)

ESP8266用Arduino IDE通過(guò)貝殼物聯(lián)接入天貓,可以小程序,和語(yǔ)音控制

  [復(fù)制鏈接]
ID:196617 發(fā)表于 2019-9-4 14:49 | 顯示全部樓層 |閱讀模式
       物聯(lián)網(wǎng)沒(méi)有服務(wù)器是不行的,那只能叫局域網(wǎng)。今天寫(xiě)一下通過(guò)貝殼物聯(lián)怎么打造屬于自己的智能開(kāi)關(guān)。首先說(shuō)一下要備一片8266的模塊,推薦ESP826  NodeMCU   因?yàn)檫@個(gè)比很方便一條安卓USB數(shù)據(jù)線就可以了。 其次是在貝殼物聯(lián)注冊(cè)一個(gè)賬號(hào),網(wǎng)址是   www點(diǎn)bigiot點(diǎn)net 然后添加智能設(shè)備,添加完成后你會(huì)得到設(shè)備的ID 和密碼  。這些準(zhǔn)備好了以后你還得有Arduino IDE,添加8266的開(kāi)發(fā)環(huán)境這個(gè)網(wǎng)上有很多教程。不會(huì)的自己百度一下。接下來(lái)就是代碼:
#include <ESP8266WiFi.h>#include <aJSON.h>
//=============  此處必須修該============
String DEVICEID="*****";//你的設(shè)備編號(hào)==改成你貝殼物聯(lián)里智能設(shè)備的ID
String APIKEY="*****";//設(shè)備密碼==改成你貝殼物聯(lián)里智能設(shè)備的密碼
const char* ssid="CMCC-hkws";//WiFi名稱  你的WIFI名稱
const char* password="147258369";//WiFi密碼 你的WIFI密碼
//=======================================
#define OUT 2//輸出控制繼電器端口
//=======================================
unsigned long lastCheckInTime=0;//記錄上次報(bào)到時(shí)間
const unsigned long postingInterval=40000;//每隔40秒向服務(wù)器報(bào)到一次
const char* host="www點(diǎn)bigiot點(diǎn)net";
const int httpPort=8181;
WiFiClient client;
void setup()
{
  pinMode(OUT,OUTPUT);//設(shè)置輸出
  digitalWrite(OUT,LOW);//上電打開(kāi)輸出
  pinMode(LED_BUILTIN,OUTPUT);//設(shè)備板載LED輸出模式
  digitalWrite(LED_BUILTIN,HIGH);//關(guān)閉LED
  Serial.begin(115200);
  Serial.println();
  Serial.println();
  WiFi.begin(ssid,password);//連接WiFi  
  while(WiFi.status()!= WL_CONNECTED)//等待WiFi連接成功
  {
    delay(500);
    Serial.print(".");
  }
  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=="stop")                                     //接收到的是停止指令
    {
      digitalWrite(OUT,HIGH);//關(guān)閉
      sayToClient(F_C_ID,"LED All off!");        
    }

  if(C=="play")                                   //接收到的是停止指令//接收到的不是停止指令
    {
      digitalWrite(OUT,LOW);//打開(kāi)
      sayToClient(F_C_ID,"LED All on!");   
    }
  }
}
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();
}

需要修改為你的設(shè)備的信息和你的WIFI信息 編譯下載到8266串口打贏信息如下

串口輸出的正確信息

串口輸出的正確信息




8266 NodeMCU

8266 NodeMCU

智能設(shè)備添加后

智能設(shè)備添加后

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
luliang02003 + 20 贊一個(gè)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:196617 發(fā)表于 2019-9-4 15:11 | 顯示全部樓層
本帖最后由 xuzuxiong 于 2019-9-4 18:08 編輯

接下來(lái)手機(jī)微信搜索下程序貝殼物聯(lián)你就可以通過(guò)微信小程序空你的8266的IO口狀態(tài)了。如果有天貓精靈的朋友,在精靈APP里面搜索貝殼物聯(lián),然后授權(quán)給天貓精靈,在設(shè)置好你的設(shè)備的名字就完成了語(yǔ)音配置,很簡(jiǎn)單的因?yàn)槎疾恍枰闳プ鲞壿嫼蛯?duì)接,所有的業(yè)務(wù)邏輯貝殼物聯(lián)都做好了。
回復(fù)

使用道具 舉報(bào)

ID:196617 發(fā)表于 2019-9-4 15:13 | 顯示全部樓層
還有這個(gè)有個(gè)庫(kù)可能很多朋友找不到,我把它發(fā)上來(lái)   #include <aJSON.h>
這個(gè)庫(kù)必須的有才行

aJson.zip

21.64 KB, 下載次數(shù): 222, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報(bào)

ID:438796 發(fā)表于 2019-9-27 16:24 | 顯示全部樓層
樓主,問(wèn)一下,接入天貓精靈后 ,如果貝殼物聯(lián)里只有一個(gè)設(shè)備,但是我要控制3個(gè)地方的燈,天貓精靈也可以做到嗎?還是一個(gè)設(shè)備只能控制一個(gè)燈?
回復(fù)

使用道具 舉報(bào)

ID:640720 發(fā)表于 2019-11-12 20:40 | 顯示全部樓層
樓主的附件下載不到啊!
回復(fù)

使用道具 舉報(bào)

ID:640720 發(fā)表于 2019-11-12 20:53 | 顯示全部樓層
樓主好像用的不是Arduino IDE上兼容的代碼
回復(fù)

使用道具 舉報(bào)

ID:652255 發(fā)表于 2019-11-30 10:35 | 顯示全部樓層
還沒(méi)理順好,下載后不能用,
回復(fù)

使用道具 舉報(bào)

ID:137736 發(fā)表于 2019-12-9 09:38 | 顯示全部樓層
拷貝代碼編譯通不過(guò),請(qǐng)上編譯過(guò)得Arduino文件
回復(fù)

使用道具 舉報(bào)

ID:700784 發(fā)表于 2020-3-1 18:42 | 顯示全部樓層
謝謝樓主,下載試試
回復(fù)

使用道具 舉報(bào)

ID:701486 發(fā)表于 2020-3-3 12:24 | 顯示全部樓層
好像這個(gè)網(wǎng)站更新有點(diǎn)慢,還停留在2018.2019上
回復(fù)

使用道具 舉報(bào)

ID:254815 發(fā)表于 2020-3-25 19:32 | 顯示全部樓層
你好,方便加個(gè)好友嗎?想向你請(qǐng)教一下969439474@qq.com
回復(fù)

使用道具 舉報(bào)

ID:407082 發(fā)表于 2020-4-9 20:47 | 顯示全部樓層
為什么我語(yǔ)音回答是對(duì)的,但是就是控制沒(méi)反應(yīng),繼電器也是可以的,想請(qǐng)教下
回復(fù)

使用道具 舉報(bào)

ID:407082 發(fā)表于 2020-4-9 21:31 | 顯示全部樓層
你好,樓主請(qǐng)教下,為什么你這個(gè)程序下進(jìn)去了。語(yǔ)音控制對(duì)答也對(duì)的,為什么燈就是沒(méi)有反應(yīng)呀。加個(gè)好友可以嗎?124839965
回復(fù)

使用道具 舉報(bào)

ID:755327 發(fā)表于 2020-5-19 01:07 | 顯示全部樓層
謝謝大佬的代碼,但是有好多問(wèn)題
回復(fù)

使用道具 舉報(bào)

ID:812032 發(fā)表于 2020-8-6 23:52 | 顯示全部樓層
#define OUT 2 是gpio2 ?
回復(fù)

使用道具 舉報(bào)

ID:812032 發(fā)表于 2020-8-8 09:43 | 顯示全部樓層
請(qǐng)問(wèn)樓主,下載的ajson,能不能給個(gè)說(shuō)明書(shū)之類(lèi)的,能不能當(dāng)作一個(gè)類(lèi)?
回復(fù)

使用道具 舉報(bào)

ID:262559 發(fā)表于 2020-8-13 16:43 來(lái)自手機(jī) | 顯示全部樓層
121131151 發(fā)表于 2020-8-8 09:43
請(qǐng)問(wèn)樓主,下載的ajson,能不能給個(gè)說(shuō)明書(shū)之類(lèi)的,能不能當(dāng)作一個(gè)類(lèi)?

直接下載解壓到庫(kù)文件夾里就可以了要不然編譯不了
回復(fù)

使用道具 舉報(bào)

ID:276790 發(fā)表于 2020-10-2 19:05 | 顯示全部樓層
這資料好啊~!簡(jiǎn)單明了,不像有的還要各種環(huán)境,編譯之類(lèi)的
回復(fù)

使用道具 舉報(bào)

ID:196617 發(fā)表于 2021-1-17 20:23 | 顯示全部樓層
回復(fù)

使用道具 舉報(bào)

ID:373684 發(fā)表于 2021-1-28 09:14 | 顯示全部樓層
可以控制掃地機(jī)嗎?
回復(fù)

使用道具 舉報(bào)

ID:868042 發(fā)表于 2021-1-28 23:36 | 顯示全部樓層
網(wǎng)上找不到,可否我把它發(fā)上來(lái)   <esp8626.h>
回復(fù)

使用道具 舉報(bào)

ID:830831 發(fā)表于 2021-1-29 09:41 | 顯示全部樓層
請(qǐng)問(wèn) 可有反饋? 怎么知道 服務(wù)器已經(jīng)收到信息?
回復(fù)

使用道具 舉報(bào)

ID:88256 發(fā)表于 2021-1-30 00:00 | 顯示全部樓層
本帖最后由 hhdsdy 于 2021-1-30 09:27 編輯

這個(gè)不需要下載的,但是需要下載8266的支持文件,下載鏈接這是回復(fù)21樓的,忘了在他的帖子下點(diǎn)回復(fù),編輯一下
回復(fù)

使用道具 舉報(bào)

ID:868042 發(fā)表于 2021-1-31 14:56 | 顯示全部樓層
hhdsdy 發(fā)表于 2021-1-30 00:00
這個(gè)不需要下載的,但是需要下載8266的支持文件,下載鏈接這是回復(fù)21樓的,忘了在他的帖子下點(diǎn)回復(fù),編輯一 ...

謝謝幫忙
回復(fù)

使用道具 舉報(bào)

ID:959793 發(fā)表于 2021-8-10 13:13 | 顯示全部樓層
樓主好像用的不是Arduino IDE上兼容的代碼
回復(fù)

使用道具 舉報(bào)

ID:196617 發(fā)表于 2022-2-11 23:34 | 顯示全部樓層
這個(gè)確實(shí)是Arduino IDE上兼容的代碼,不過(guò)我好久都沒(méi)有用了,現(xiàn)在轉(zhuǎn)到HA (homeassitant)上面了,自動(dòng)化更強(qiáng)大的系統(tǒng)。在HA論壇有一些帖子。
回復(fù)

使用道具 舉報(bào)

ID:95059 發(fā)表于 2022-5-23 15:02 | 顯示全部樓層
反饋信息里最后是K:15:00:20.506 -> {"M":"token","ID":"26899","K":"02520404687f13e10960086a4dbcff98"}怎么回事呢? 聯(lián)不上網(wǎng)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表