找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12578|回复: 25
收起左侧

ESP8266用Arduino IDE通过贝壳物联接入天猫,可以小程序,和语音控制

  [复制链接]
ID:196617 发表于 2019-9-4 14:49 | 显示全部楼层 |阅读模式
       物联网没有服务器是不行的,那只能叫局域网。今天写一下通过贝壳物联怎么打造属于自己的智能开关。首先说一下要备一片8266的模块,推荐ESP826  NodeMCU   因为这个比很方便一条安卓USB数据线就可以了。 其次是在贝壳物联注册一个账号,网址是   www点bigiot点net 然后添加智能设备,添加完成后你会得到设备的ID 和密码  。这些准备好了以后你还得有Arduino IDE,添加8266的开发环境这个网上有很多教程。不会的自己百度一下。接下来就是代码:
#include <ESP8266WiFi.h>#include <aJSON.h>
//=============  此处必须修该============
String DEVICEID="*****";//你的设备编号==改成你贝壳物联里智能设备的ID
String APIKEY="*****";//设备密码==改成你贝壳物联里智能设备的密码
const char* ssid="CMCC-hkws";//WiFi名称  你的WIFI名称
const char* password="147258369";//WiFi密码 你的WIFI密码
//=======================================
#define OUT 2//输出控制继电器端口
//=======================================
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(OUT,OUTPUT);//设置输出
  digitalWrite(OUT,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(".");
  }
  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);//关闭
      sayToClient(F_C_ID,"LED All off!");        
    }

  if(C=="play")                                   //接收到的是停止指令//接收到的不是停止指令
    {
      digitalWrite(OUT,LOW);//打开
      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();
}

需要修改为你的设备的信息和你的WIFI信息 编译下载到8266串口打赢信息如下

串口输出的正确信息

串口输出的正确信息




8266 NodeMCU

8266 NodeMCU

智能设备添加后

智能设备添加后

评分

参与人数 1黑币 +20 收起 理由
luliang02003 + 20 赞一个!

查看全部评分

回复

使用道具 举报

ID:196617 发表于 2019-9-4 15:11 | 显示全部楼层
本帖最后由 xuzuxiong 于 2019-9-4 18:08 编辑

接下来手机微信搜索下程序贝壳物联你就可以通过微信小程序空你的8266的IO口状态了。如果有天猫精灵的朋友,在精灵APP里面搜索贝壳物联,然后授权给天猫精灵,在设置好你的设备的名字就完成了语音配置,很简单的因为都不需要你去做逻辑和对接,所有的业务逻辑贝壳物联都做好了。
回复

使用道具 举报

ID:196617 发表于 2019-9-4 15:13 | 显示全部楼层
还有这个有个库可能很多朋友找不到,我把它发上来   #include <aJSON.h>
这个库必须的有才行

aJson.zip

21.64 KB, 下载次数: 209, 下载积分: 黑币 -5

回复

使用道具 举报

ID:438796 发表于 2019-9-27 16:24 | 显示全部楼层
楼主,问一下,接入天猫精灵后 ,如果贝壳物联里只有一个设备,但是我要控制3个地方的灯,天猫精灵也可以做到吗?还是一个设备只能控制一个灯?
回复

使用道具 举报

ID:640720 发表于 2019-11-12 20:40 | 显示全部楼层
楼主的附件下载不到啊!
回复

使用道具 举报

ID:640720 发表于 2019-11-12 20:53 | 显示全部楼层
楼主好像用的不是Arduino IDE上兼容的代码
回复

使用道具 举报

ID:652255 发表于 2019-11-30 10:35 | 显示全部楼层
还没理顺好,下载后不能用,
回复

使用道具 举报

ID:137736 发表于 2019-12-9 09:38 | 显示全部楼层
拷贝代码编译通不过,请上编译过得Arduino文件
回复

使用道具 举报

ID:700784 发表于 2020-3-1 18:42 | 显示全部楼层
谢谢楼主,下载试试
回复

使用道具 举报

ID:701486 发表于 2020-3-3 12:24 | 显示全部楼层
好像这个网站更新有点慢,还停留在2018.2019上
回复

使用道具 举报

ID:254815 发表于 2020-3-25 19:32 | 显示全部楼层
你好,方便加个好友吗?想向你请教一下969439474@qq.com
回复

使用道具 举报

ID:407082 发表于 2020-4-9 20:47 | 显示全部楼层
为什么我语音回答是对的,但是就是控制没反应,继电器也是可以的,想请教下
回复

使用道具 举报

ID:407082 发表于 2020-4-9 21:31 | 显示全部楼层
你好,楼主请教下,为什么你这个程序下进去了。语音控制对答也对的,为什么灯就是没有反应呀。加个好友可以吗?124839965
回复

使用道具 举报

ID:755327 发表于 2020-5-19 01:07 | 显示全部楼层
谢谢大佬的代码,但是有好多问题
回复

使用道具 举报

ID:812032 发表于 2020-8-6 23:52 | 显示全部楼层
#define OUT 2 是gpio2 ?
回复

使用道具 举报

ID:812032 发表于 2020-8-8 09:43 | 显示全部楼层
请问楼主,下载的ajson,能不能给个说明书之类的,能不能当作一个类?
回复

使用道具 举报

ID:262559 发表于 2020-8-13 16:43 来自手机 | 显示全部楼层
121131151 发表于 2020-8-8 09:43
请问楼主,下载的ajson,能不能给个说明书之类的,能不能当作一个类?

直接下载解压到库文件夹里就可以了要不然编译不了
回复

使用道具 举报

ID:276790 发表于 2020-10-2 19:05 | 显示全部楼层
这资料好啊~!简单明了,不像有的还要各种环境,编译之类的
回复

使用道具 举报

ID:196617 发表于 2021-1-17 20:23 | 显示全部楼层
回复

使用道具 举报

ID:373684 发表于 2021-1-28 09:14 | 显示全部楼层
可以控制扫地机吗?
回复

使用道具 举报

ID:868042 发表于 2021-1-28 23:36 | 显示全部楼层
網上找不到,可否我把它发上来   <esp8626.h>
回复

使用道具 举报

ID:830831 发表于 2021-1-29 09:41 | 显示全部楼层
请问 可有反馈? 怎么知道 服务器已经收到信息?
回复

使用道具 举报

ID:88256 发表于 2021-1-30 00:00 | 显示全部楼层
本帖最后由 hhdsdy 于 2021-1-30 09:27 编辑

这个不需要下载的,但是需要下载8266的支持文件,下载链接这是回复21楼的,忘了在他的帖子下点回复,编辑一下
回复

使用道具 举报

ID:868042 发表于 2021-1-31 14:56 | 显示全部楼层
hhdsdy 发表于 2021-1-30 00:00
这个不需要下载的,但是需要下载8266的支持文件,下载链接这是回复21楼的,忘了在他的帖子下点回复,编辑一 ...

謝謝幫忙
回复

使用道具 举报

ID:959793 发表于 2021-8-10 13:13 | 显示全部楼层
楼主好像用的不是Arduino IDE上兼容的代码
回复

使用道具 举报

ID:196617 发表于 2022-2-11 23:34 | 显示全部楼层
这个确实是Arduino IDE上兼容的代码,不过我好久都没有用了,现在转到HA (homeassitant)上面了,自动化更强大的系统。在HA论坛有一些帖子。
回复

使用道具 举报

ID:95059 发表于 2022-5-23 15:02 | 显示全部楼层
反馈信息里最后是K:15:00:20.506 -> {"M":"token","ID":"26899","K":"02520404687f13e10960086a4dbcff98"}怎么回事呢? 联不上网
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表