Помогите разобраться с отправкой данных на народный мониторинг
- Войдите на сайт для отправки комментариев
Сб, 15/10/2016 - 10:52
Всем привет. Помогите пожалуйста разобраться с отправкой данных на 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(" °C </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 :) © 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();
}
}
}
}
}
//-----------------------------------------------------------------------------------------
}
Или хотя бы подскажите, где взять пример отдельной отправки с bmp180 и отдельной с dht22