arduino core for ESP8266接入OneNET+SPIFFS+HTTPserver-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: robert_jw

arduino core for ESP8266接入OneNET+SPIFFS+HTTPserver

[复制链接]
发表于 2018-12-15 16:52 | 显示全部楼层
HTTP怎么简单的连接到onenet的数据流并且上传数据,除了发送
POST /devices/79146/datapoints HTTP/1.1
api-key: pmWLtnkDBSreKfvg7GsClUXdXa4A
Host:api.heclouds.com
Connection:close
Content-Length:59

{"datastreams":[{"id":"TEMP","datapoints":[{"value":50}]}]}

之后还需要什么条件才能在网页上显示收到的数据
发表于 2019-1-11 11:50 | 显示全部楼层
YEmax 发表于 2017-7-26 17:50
我把楼主的程序改了一下,把文件启动那一块直接去了,然后直接定义ssid pass APIkeky ID,然后再直接引用这 ...

你好,能把你的代码发给我看看吗,我也去了一部分,但是无法连接onennet
发表于 2019-1-11 12:00 | 显示全部楼层
我直接使用STA模式创建WiFi连接,然后改了部分代码,发现一直连接不到onenet


#include "edp.c"
#include <ESP8266WiFi.h>


char * ssid="ShenzhenWatertek";
char * pass="20080808";

WiFiClient client; //connect to EDP server
  
#define SERVER  "jjfaedp.hedevice.com"           //EDP server
#define PORT    876
String   key = "IDP5ya9DA6Alu2OgMgqhgmmYTc4= ";
String   id = "514723118";

static boolean tcpConnected = false, edpConnected = false, wifiConnected = false;
/***************************************************************************************/
#define u8 unsigned char
//IO方向设置
#define DHT11_IO_IN()  pinMode(4, INPUT)
#define DHT11_IO_OUT() pinMode(4, OUTPUT)
////IO操作函数
#define DHT11_DQ_OUT 4 //数据端口 4
#define DHT11_DQ_IN  4  //数据端口 4

unsigned long MS_TIMER = 0;
unsigned long lastMSTimer = 0;
String comdata = "";
char flag = false;
int flag1=0;
/*******************************DHT11协议****************************************/
u8 temperature;
u8 humidity;
u8 t = 0;
//复位DHT11
void DHT11_Rst(void)
{
  DHT11_IO_OUT();   //SET OUTPUT
  digitalWrite(DHT11_DQ_OUT, LOW);   //拉低DQ
  delay(20);     //拉低至少18ms
  digitalWrite(DHT11_DQ_OUT, HIGH);   //DQ=1
  delayMicroseconds(30);       //主机拉高20~40us
}
//等待DHT11的回应
//返回1:未检测到DHT11的存在
//返回0:存在
u8 DHT11_Check(void)
{
  u8 retry = 0;
  DHT11_IO_IN();//SET INPUT
  while (digitalRead(DHT11_DQ_IN) && retry < 100) //DHT11会拉低40~80us
  {
    retry++;
    delayMicroseconds(1);
  };
  if (retry >= 100)return 1;
  else retry = 0;
  while (!digitalRead(DHT11_DQ_IN) && retry < 100) //DHT11拉低后会再次拉高40~80us
  {
    retry++;
    delayMicroseconds(1);
  };
  if (retry >= 100)return 1;
  return 0;
}
//从DHT11读取一个位
//返回值:1/0
u8 DHT11_Read_Bit(void)
{
  u8 retry = 0;
  while (digitalRead(DHT11_DQ_IN) && retry < 100) //等待变为低电平
  {
    retry++;
    delayMicroseconds(1);
  }
  retry = 0;
  while (!digitalRead(DHT11_DQ_IN) && retry < 100) //等待变高电平
  {
    retry++;
    delayMicroseconds(1);
  }
  delayMicroseconds(40);//等待40us
  if (digitalRead(DHT11_DQ_IN))return 1;
  else return 0;
}
//从DHT11读取一个字节
//返回值:读到的数据
u8 DHT11_Read_Byte(void)
{
  u8 i, dat;
  dat = 0;
  for (i = 0; i < 8; i++)
  {
    dat <<= 1;
    dat |= DHT11_Read_Bit();
  }
  return dat;
}
//从DHT11读取一次数据
//temp:温度值(范围:0~50°)
//humi:湿度值(范围:20%~90%)
//返回值:0,正常;1,读取失败
u8 DHT11_Read_Data(u8 *temp, u8 *humi)
{
  u8 buf[5];
  u8 i;
  DHT11_Rst();
  if (DHT11_Check() == 0)
  {
    for (i = 0; i < 5; i++) //读取40位数据
    {
      buf[i] = DHT11_Read_Byte();
    }
    if ((buf[0] + buf[1] + buf[2] + buf[3]) == buf[4])
    {
      *humi = buf[0];
      *temp = buf[2];
    }
  } else return 1;
  return 0;
}
//初始化DHT11的IO口 DQ 同时检测DHT11的存在
//返回1:不存在
//返回0:存在
u8 DHT11_Init(void)
{
  pinMode(4, OUTPUT);
  DHT11_Rst();
  return DHT11_Check();
}
/******************************************************************************/


void setup()
{
  pinMode(16, OUTPUT); // Initialize the BUILTIN_LED1 pin as an output
  Serial.begin(9600);
  delay(10);
  if (DHT11_Init()) //DHT11初始化
  {
    Serial.println("DHT11 Error");
    delay(200);
  }
  Serial.println("DHT11 OK");
  /* We start by connecting to a WiFi network */
  WiFiStart();
}
/*************************************************************/
void loop()
{
      
  uint32 temp, humi, tmp;
  static unsigned long time = 0, timeOld = 0;
  edp_pkt rcv_pkt;
  uint8 pkt_type;
    /* check wifi connection */
  if (WiFi.status() != WL_CONNECTED)
  {
    if (wifiConnected == true)
      Serial.println("wifi disconnected!");
    wifiConnected = false;
    tcpConnected = false;
    edpConnected = false;
  }
  else
      wifiConnected = true;
  

  /* TCP connect */
  if (wifiConnected)
  {
    if (!tcpConnected) client.connect(SERVER, PORT);  //connect to edp server
    if (!tcpConnected && client.connected())
    {
      Serial.print("connected to ");
      Serial.println((String)SERVER);
      tcpConnected = true;
    }
    else if (tcpConnected && !client.connected())  //check TCP connnection
    {
      Serial.print("disconnected to ");
      Serial.println((String)SERVER);
      tcpConnected = false;
      edpConnected = false;
    }

    //edp connect
    if (tcpConnected && !edpConnected)
    {
      while (client.available()) client.read(); //清空接收缓存
      packetSend(packetConnect(id.c_str(), key.c_str()));             //发送EPD连接包
       Serial.println("packetConnect(id.c_str(), key.c_str()) ok");
      uint32 time = millis() + 5000;
      while (!client.available() && millis() < time);                 //等待EDP连接应答
      if ((tmp = client.readBytes(rcv_pkt.data, sizeof(rcv_pkt.data))) > 0 )
      {
        rcvDebug(rcv_pkt.data, tmp);
        if (rcv_pkt.data[0] == 0x20 && rcv_pkt.data[2] == 0x00 && rcv_pkt.data[3] == 0x00)
        {
          edpConnected = true;
          Serial.println("EDP connected.");
        }
        else
          Serial.println("EDP connect error.");
      }
      else
        Serial.println("EDP connect no response.");
      packetClear(&rcv_pkt);
    }

  
}

}



/*
*   packetSend: 发送包
*/
void packetSend(edp_pkt* pkt)
{
  int16 len = pkt->len;
  int16 i = 0;
  if (pkt != NULL)
  {
    //client.write(pkt->data, pkt->len);    //串口发送
    while (len--)
      client.write(pkt->data[i++]);    //串口发送
    free(pkt);              //回收内存
  }
}

  
/*
*  rcvDebug: 将接受数据按照十六进制打印
*/
void rcvDebug(uint8* rcv, int len)
{
  int i;

  Serial.print("rcv len: ");
  Serial.println(len, DEC);
  for (i = 0; i < len; i++)
  {
    Serial.println(*rcv);
    Serial.print(" ");
  }
  Serial.println("");
}


/*
    readEdpPkt
    从串口缓存中读数据到接收缓存
*/
bool readEdpPkt(edp_pkt *p)
{
  int tmp;
  if ((tmp = client.readBytes(p->data + p->len, sizeof(p->data))) > 0 )
  {
    rcvDebug(p->data + p->len, tmp);
    p->len += tmp;
  }
  return true;
}


  
void WiFiStart()
{
  WiFi.mode(WIFI_STA);

  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid,pass);  //配置连接的wifi热点

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

    wifiConnected = true;
    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());

}


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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-9-20 13:27 , Processed in 0.091153 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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