<em id="ri2my"></em>
  • <em id="ri2my"></em>
    <em id="ri2my"><label id="ri2my"><nav id="ri2my"></nav></label></em>
  • <em id="ri2my"><label id="ri2my"></label></em>
    <div id="ri2my"></div>
    1. <em id="ri2my"><label id="ri2my"></label></em>
    2. <em id="ri2my"><ol id="ri2my"></ol></em>
      <em id="ri2my"></em>

      1. ArduinoESP8266DHT11物聯網平臺的 程序

        作者:我 姓林 | 更新時間:2017-05-31 | 瀏覽量:1912

        這是一個不錯的想法...


        評論:共2條

        我 姓林 評論于:2017-05-31 15:17:39
        #define SSID "HUAWEI-70AC" //type your own SSID name
        #define PASSWORD "90417807" //type your own WIFI password


        #include "uartWIFI.h"
        #include <SoftwareSerial.h>
        WIFI wifi;

        extern int chlID; //client id(0-4)

        // for yeelink api
        #define APIKEY "bb802c56bdebfcf43d1d3843c432361d" // replace your yeelink api key here

        //replace the device ID and sensor ID for temperature sensor.
        #define DEVICEID0 358269 // replace your device ID
        #define SENSORID0 407758 // replace your sensor ID

        //replace the device ID and sensor ID for humidity sensor.
        #define DEVICEID1 358269 // replace your device ID
        #define SENSORID1 407760 // replace your sensor ID

        char server[] = "api.yeelink.net"; // name address for yeelink API

        unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds
        boolean lastConnected = false; // state of the connection last time through the main loop
        const unsigned long postingInterval = 5*1000; // delay between 2 datapoints, 5s
        String returnValue = "";
        boolean ResponseBegin = false;


        int DHT11PIN=4; //Connect D4 to data pin of DHT11


        int humidity;
        int temperature;

        int post_number;

        void setup()
        {

        wifi.begin();
        bool b = wifi.Initialize(STA, SSID, PASSWORD);
        if(!b)
        {
        DebugSerial.println("Init error");
        }
        delay(8000); //make sure the module can have enough time to get an IP address
        String ipstring = wifi.showIP();
        DebugSerial.println(ipstring); //show the ip address of module




        }
        void loop()
        {
        char message[400];
        // if you're not connected, and ten seconds have passed since
        // your last connection, then connect again and send data:
        if((millis() - lastConnectionTime > postingInterval)) {

        //read dht11
        int chk = dht11_read(DHT11PIN);
        if(chk==0)
        {
        if(post_number==0)
        {
        sendData(DEVICEID0,SENSORID0,temperature);
        post_number++;
        }
        else
        {
        post_number = 0;
        sendData(DEVICEID1,SENSORID1,humidity);
        }

        }

        }

        // if there's incoming data from the net connection.
        // send it out the serial port. This is for debugging
        // purposes only:
        if(wifi.ReceiveMessage(message))
        {
        DebugSerial.println(message);
        }


        delay(10);

        }

        // this method makes a HTTP connection to the server:
        void sendData(long device_id,long sensor_id,int thisData) {
        // if there's a successful connection:
        if (wifi.ipConfig(TCP,server, 80)) {
        DebugSerial.println("connecting...");
        // send the HTTP PUT request:
        String cmd;
        cmd = "POST /v1.0/device/";
        cmd += String(device_id);
        cmd += "/sensor/";
        cmd += String(sensor_id);
        cmd += "/datapoints";
        cmd += " HTTP/1.1\r\n";
        cmd += "Host: api.yeelink.net\r\n";
        cmd += "Accept: *";
        cmd += "/";
        cmd += "*\r\n";
        cmd += "U-ApiKey: ";
        cmd += APIKEY;
        cmd += "\r\n";
        cmd += "Content-Length: ";
        int thisLength = 10 + getLength(thisData);
        cmd += String(thisLength);
        cmd += "\r\n";
        cmd += "Content-Type: application/x-www-form-urlencoded\r\n";
        cmd += "Connection: close\r\n";
        cmd += "\r\n";
        cmd += "{"value":";
        cmd += String(thisData);
        cmd += "}\r\n";


        DebugSerial.println(cmd);

        wifi.Send(cmd);
        // note the time that the connection was made:
        lastConnectionTime = millis();
        }
        else {
        // if you couldn't make a connection:
        DebugSerial.println("connection failed");
        DebugSerial.println("disconnecting.");
        wifi.closeMux();
        }
        }

        int getLength(int someValue) {
        // there's at least one byte:
        int digits = 1;
        // continually divide the value by ten,
        // adding one to the digit count for each
        // time you divide, until you're at 0:
        int dividend = someValue /10;
        while (dividend > 0) {
        dividend = dividend /10;
        digits++;
        }
        // return the number of digits:
        return digits;
        }




        int dht11_read(int pin)
        {
        // BUFFER TO RECEIVE
        int bits[5];
        int cnt = 7;
        int idx = 0;

        // EMPTY BUFFER
        for (int i=0; i< 5; i++)
        {bits[i]= 0;}

        // REQUEST SAMPLE
        pinMode(pin, OUTPUT);
        digitalWrite(pin, LOW);
        delay(18);
        digitalWrite(pin, HIGH);
        delayMicroseconds(40);
        pinMode(pin, INPUT);

        // ACKNOWLEDGE or TIMEOUT
        unsigned int loopCnt = 10000;
        while(digitalRead(pin) == LOW)
        if (loopCnt-- == 0) return -2;

        loopCnt = 10000;
        while(digitalRead(pin) == HIGH)
        if (loopCnt-- == 0) return -2;

        // READ OUTPUT - 40 BITS => 5 BYTES or TIMEOUT
        for (int i=0; i<40; i++)
        {
        loopCnt = 10000;
        while(digitalRead(pin) == LOW)
        if (loopCnt-- == 0) return -2;

        unsigned long t = micros();

        loopCnt = 10000;
        while(digitalRead(pin) == HIGH)
        if (loopCnt-- == 0) return -2;

        if ((micros() - t) > 40) bits[idx] |= (1 << cnt);
        if (cnt == 0) // next byte?
        {
        cnt = 7; // restart at MSB
        idx++; // next byte!
        }
        else cnt--;
        }

        // WRITE TO RIGHT VARS
        // as bits[1] and bits[3] are allways zero they are omitted in formulas.
        humidity = bits[0];
        temperature = bits[2];

        int sum = bits[0] + bits[2];

        if (bits[4] != sum) return -1;
        return 0;
        }
        為什么提示expected ';' before 'value'出錯。@貝殼物聯
        貝殼物聯 回復于:2017-06-03 17:37:59
        回復 @我 姓林:別的平臺沒有研究過
        返回頂部

        <em id="ri2my"></em>
      2. <em id="ri2my"></em>
        <em id="ri2my"><label id="ri2my"><nav id="ri2my"></nav></label></em>
      3. <em id="ri2my"><label id="ri2my"></label></em>
        <div id="ri2my"></div>
        1. <em id="ri2my"><label id="ri2my"></label></em>
        2. <em id="ri2my"><ol id="ri2my"></ol></em>
          <em id="ri2my"></em>

          1. 免费高清视频