再次求大神帮助!!!233333333-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4130|回复: 3

[已解决] 再次求大神帮助!!!233333333

[复制链接]
发表于 2013-12-23 14:44 | 显示全部楼层 |阅读模式
我在yeelink上申请了账户,以及各种设备建立都弄好了。已经可以实现手机客户端上远程控制了,但是现在遇到的问题就是,用温度传感器往上传数据,没有反应。但是可以在串口看到已经采集到的数据。我的程序如下:
#include <Ethernet.h>
#include <WiFi.h>
#include <SPI.h>
#include <yl_data_point.h>
#include <yl_device.h>
#include <yl_w5100_client.h>
#include <yl_wifi_client.h>
#include <yl_messenger.h>
#include <yl_sensor.h>
#include <yl_value_data_point.h>
#include <yl_sensor.h>
#include <OneWire.h>
int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2
OneWire ds(DS18S20_Pin);  // on digital pin 2
//this example reads data from a lm35dz sensor, convert value to degree Celsius
//and then post it to yeelink.net
//replace 2633 3539 with ur device id and sensor id
yl_device ardu(6754);  //此处替换为你的设备编号
yl_sensor therm(10474, &ardu);//此处替换为你的传感器编号
//replace first param value with ur u-apikey
yl_w5100_client client;
yl_messenger messenger(&client, "xxxxxxxxxxxxxxxxxxx", "api.yeelink.net");   //此处替换为你自己的API KEY

float getTemp(){
  //returns the temperature from one DS18S20 in DEG Celsius
  byte data[12];
  byte addr[8];
  if ( !ds.search(addr)) {
      //no more sensors on chain, reset search
      ds.reset_search();
      return -1000;
  }
  if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
      return -1000;
  }
  if ( addr[0] != 0x10 && addr[0] != 0x28) {
      Serial.print("Device is not recognized");
      return -1000;
  }
  ds.reset();
  ds.select(addr);
  ds.write(0x44,1); // start conversion, with parasite power on at the end
  byte present = ds.reset();
  ds.select(addr);   
  ds.write(0xBE); // Read Scratchpad
  
  for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
  }
  
  ds.reset_search();
  
  byte MSB = data[1];
  byte LSB = data[0];
  float tempRead = ((MSB << 8) | LSB); //using two's compliment
  float TemperatureSum = tempRead / 16;
  
  return TemperatureSum;
  
}

void setup()
{
    Serial.begin(9600);        //for output information
        byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xAA};
        Ethernet.begin(mac);
}
void loop()
{ float temperature = getTemp();
     
        Serial.println(temperature);
                yl_value_data_point dp(temperature);
                therm.single_post(messenger, dp);
                delay(1000);
}
发表于 2013-12-23 15:14 | 显示全部楼层
yl_messenger messenger(&client, "xxxxxxxxxxxxxxxxxxx", "api.yeelink.net");   //此处替换为你自己的API KEY

你确定key没错?
 楼主| 发表于 2013-12-23 18:07 | 显示全部楼层
coloz 发表于 2013-12-23 15:14
yl_messenger messenger(&client, "xxxxxxxxxxxxxxxxxxx", "api.yeelink.net");   //此处替换为你自己的API ...

没错,我故意把KEY写成那样了。后来陶腾了好久,最后解决的办法是(自己琢磨出来的),下好程序后要按一下复位键,网络重新连接才能发送数据!!!!觉得好坑爹。折腾了我好多时间
发表于 2013-12-24 01:57 | 显示全部楼层
yuxiaolong 发表于 2013-12-23 18:07
没错,我故意把KEY写成那样了。后来陶腾了好久,最后解决的办法是(自己琢磨出来的),下好程序后要按一 ...

呵呵,那可以改改程序,如果没连上就自动重连
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-4 03:43 , Processed in 0.072585 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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