Помогите разобраться с отправкой данных на народный мониторинг

Soichi
Soichi аватар
Offline
Зарегистрирован: 02.11.2015

Всем привет. Помогите пожалуйста разобраться с отправкой данных на narodmon.ru

Из датчиков пока подключены только bmp180 и dht22 с выводом данных на страницу в локальной сети.

https://yadi.sk/i/xg2ddM3XwsbxD

Вот такой вот скетч..

https://yadi.sk/d/dPUGnXOwwscMP

// Ethernet подключен к контактам 10, 11, 12, 13
// SD карта использует контакт 4

#include <DHT.h>
#include <Wire.h> 
#include <Adafruit_BMP085.h>
#include <IRremote.h>
#include <SPI.h>
#include <Ethernet.h>

#define DHTPIN 2  // Контакт к которому подключен DHT22

DHT dht(DHTPIN, DHT22);

Adafruit_BMP085 bmp;

int hallLight1 = 22; //  Контакт к которому подключено реле управления одной лампой люстры
int hallLight2  = 24; //  Контакт к которму подключено реле управления двумя лампами люстры

boolean hallLight1Stat = false;  //  Состояние реле одной лампы (0-OFF, 1-ON)
boolean hallLight2Stat  = false;  //  Состояние реле двух ламп (0-OFF, 1-ON)
boolean hallLight3Stat  = false;  //  Состояние реле трех ламп (0-OFF, 1-ON)



// ========================Задаем данные сети======================
byte mac[] = {0x90, 0xA2, 0xDA, 0x0D, 0x48, 0xD3 }; //mac - адрес ethernet shielda
IPAddress ip(192,168,0,222);  // ip адрес ethernet shielda
IPAddress gateway(192,168,0,1); // шлюз
IPAddress subnet(255, 255, 255, 0); // маска подсети
EthernetServer server(80);  //порт сервера
String readString;  //string for fetching data from address

String HTTP_req;            // stores the HTTP request

// Функция управления светом
void light(int n) {
  if(n==1) {
    digitalWrite(hallLight1, HIGH);
    hallLight1Stat = true;
    Serial.println("Hall light 1 ON");
    delay(1000);
    lampTest();
  }
  else if(n==11) {
    digitalWrite(hallLight1, LOW);
    hallLight1Stat = false;
    Serial.println("Hall light 1 OFF");
    delay(1000);
    lampTest();
  }
  else if(n==2) {
    digitalWrite(hallLight2, HIGH);
    hallLight2Stat = true;
    Serial.println("Hall light 2 ON");
    delay(1000);
    lampTest();
  }
  else if(n==22) {
    digitalWrite(hallLight2, LOW);
    hallLight2Stat = false;
    Serial.println("Hall light 2 OFF");
    delay(1000);
    lampTest();
  }
  else if(n==12) {
    digitalWrite(hallLight1, HIGH); 
    hallLight1Stat = true;
    delay(1000);
    digitalWrite(hallLight2, HIGH);
    hallLight2Stat = true;
    Serial.println("Hall light 1 & 2 ON");
    delay(1000);
    lampTest();
  }
  else if(n==1122) {
    digitalWrite(hallLight1, LOW); 
    hallLight1Stat = false;
    delay(1000);
    digitalWrite(hallLight2, LOW);
    hallLight2Stat = false;
    Serial.println("Hall light 1 & 2 OFF");
    delay(1000);
    lampTest();
  }
}
// Функция проверки включены ли обе лампы люстры
void lampTest() {
  if (hallLight1Stat == true && hallLight2Stat == true) {
    hallLight3Stat = true;
    Serial.println("Hall light stat 3 = true");
  }
  else {
    hallLight3Stat = false;
    Serial.println("Hall light stat 3 = false");
  }
}

// send the state of the switch to the web browser
void GetSwitchState(EthernetClient cl)
{
    if (digitalRead(22)) {
        cl.println("Switch state: ON");
    }
    else {
        cl.println("Switch state: OFF");
    }
}

void setup()
{  
  pinMode(hallLight1, OUTPUT); //  Устанавливаем контакт первого реле люстры как выход
  pinMode(hallLight2, OUTPUT);  //  Устанавливаем контакт второго реле люстры как выход  
  Ethernet.begin(mac, ip); //запускаем Ethernet
  server.begin();
  Serial.begin(9600); // Запускаем Serial монитор со скоростью 9600 бод 
  Wire.begin();  
  dht.begin(); // Запускаем DHT22
  bmp.begin(); // Запускаем BMP180 
}
 
void loop() { 

  delay(2000); // Задержка 2 секунды между измерениями

  float humidity = dht.readHumidity(); //Считываем влажность
  float temperature = dht.readTemperature(); // Считываем температуру 
  float pressure = bmp.readPressure()/133.3;

  if (isnan(humidity) || isnan(temperature)) { // Проверка удачно прошло ли считывание
    Serial.println("DHT ERROR");
    return;
  }
  
  // =============Создаем клиентское соединение====================
  EthernetClient client = server.available();
  if (client)

  {
    while (client.connected())
    {
      if (client.available())

      {
        char c = client.read();

        //read char by char HTTP request
        if (readString.length() < 100)

        {

          //store characters to string
          readString += c;
          
          if (c == '\n') {
          
//--------------------------------------------------------------------------------------------------------
// Необходимо для отображения сайта:
client.println("HTTP/1.1 200 OK"); //send new page
            client.println("Content-Type: text/html");
            client.println();
            client.println("<HTML>");
            client.println("<HEAD>");

//--------------------------------------------------------------------------------------------------------
//-------------------------------------------------

// то, что будет отображено:     
                    
            client.println("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />");
            client.println("<meta http-equiv='refresh' content='2;URL=http://192.168.0.222/' />");
            client.println("<TITLE>Умный дом v5</TITLE>");
            client.println("<STYLE>table {font-size:25px}</STYLE>");
            client.println("<center>");
            client.println("</HEAD>");
            client.println("<BODY bgcolor=#D3D3D3>");
            client.println("<a href='http://192.168.0.222/'><H1>Умный дом v5</H1></a>");
            client.println("<h2>Железо: Arduino Mega 2560 + W5100 + Relay x2 + DHT22</h1>");
            client.println("<hr />");
            client.println("<center>");

      if (hallLight1Stat == 0) {
        client.println("<font size=\"6\"><a href=\"/?onelampon\"\">Включить одну лампу люстры</a>");
        client.println("<br />");
        client.println("<br />");
        }
      else {
        client.println("<font size=\"6\"><a href=\"/?onelampoff\"\">Выключить одну лампу люстры</a>");
        client.println("<br />");
        client.println("<br />");
        }   
    if (hallLight2Stat == 0) {
        client.println("<a href=\"/?twolampon\"\">Включить две лампы люстры</a>");
        client.println("<br />");
        client.println("<br />");
        }
      else {
        client.println("<a href=\"/?twolampoff\"\">Выключить две лампы люстры</a>");
        client.println("<br />");
        client.println("<br />");
        }            
    if (hallLight3Stat == 0) {
        client.println("<a href=\"/?threelampon\"\">Включить люстру полностью</a>");     
        client.println("<br />");
        client.println("<br />");
        }
      else {
        client.println("<a href=\"/?threelampoff\"\">Выключить люстру полностью</a>");     
        client.println("<br />");
        client.println("<br />");
        }
      
      client.println("<hr />");
      
      client.print("<table border><tr><th colspan=3>Улица</th></tr> <tr><th>Температура<br />");
      client.print(temperature, 1);
      client.print(" &degC </th><th>Влажность<br />");
      client.print(humidity, 1);
      client.print(" %</th><th>Атмосферное давление<br />");      
      client.print(pressure, 0);
      client.print(" mm</th></tr></table></font>");
      
      client.println("<hr />");
      client.println("<h4>Дом, который запрограммировал Soichi :) &copy 2016");
      
            client.println("</BODY>");
            client.println("</HTML>");

            delay(1);
            //stopping client
            client.stop();

            //-------------------------------------------------
            // Код, который должен быть реализован:
            if(readString.indexOf("?onelampon") >0) //  Если нажата кнопка "onelampon"
            {
        light(1);              
            }
      if(readString.indexOf("?onelampoff") >0)  //  Если нажата кнопка "onelampoff"
            {
        light(11);              
            }      
      if(readString.indexOf("?twolampon") >0) //  Если нажата кнопка "onelampon"
            {
        light(2);              
            }
      if(readString.indexOf("?twolampoff") >0)  //  Если нажата кнопка "onelampoff"
            {
        light(22);              
            }     
      if(readString.indexOf("?threelampon") >0) //  Если нажата кнопка "threelampon"
            {
        light(12);              
            }
      if(readString.indexOf("?threelampoff") >0)  //  Если нажата кнопка "threelampoff"
            {
        light(1122);              
            }
            //clearing string for next read
            readString="";

            // give the web browser time to receive the data
            delay(1);
            // close the connection:
            client.stop();
          }
        }
      }
    }
  }
//-----------------------------------------------------------------------------------------
}

 

Soichi
Soichi аватар
Offline
Зарегистрирован: 02.11.2015

Или хотя бы подскажите, где взять пример отдельной отправки с bmp180 и отдельной с dht22