#include <Ethernet.h>
#include <SPI.h>
// Библиотеки ниже нет в стандартной поставке среды разработки Arduino.
// придётся её скопировать.
#include <DallasTemperature.h>
// MAC-адрес нашего устройства
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xE4, 0xDE, 0x35 };
// ip-адрес устройства
byte ip[] = { 192, 168, 1, 150 };
byte subnet[] = { 255, 255, 255, 0 };
byte gateway[] = {192, 168, 1, 1 };
byte dns_server[] = { 192, 168, 1, 1 };
// ip-адрес удалённого сервера
byte server[] = { 192, 168, 1, 104 }; // измените на свой
int old_temperature1=0;
int old_temperature2=0;
int old_garage=0;
int old_entry=0;
int old_movement_1=0;
int old_movement_2=0;
int old_light=0;
char buf[80];
Client rclient(server, 80); // 80-порт.
DallasTemperature tempSensor1;
DallasTemperature tempSensor2;
// Функция отправки HTTP-запроса на сервер
void sendHTTPRequest() {
Serial.println(buf);
if (rclient.connect()) {
Serial.println("OK");
rclient.println(buf);
rclient.println("Host: 192.168.1.104");
rclient.println();
delay(2000);
rclient.stop();
} else {
Serial.println("FAILED");
}
}
void setup()
{
Ethernet.begin(mac, ip); // Инициализируем Ethernet Shield
tempSensor1.begin(2); // Датчик температуры на 2-й пин (котёл)
tempSensor2.begin(3); // Датчик температуры на 3-й пин (зал)
pinMode(4, INPUT); // Датчик гаражной двери на 7-ый пин
old_garage=digitalRead(4);
pinMode(5, INPUT); // Датчик въездных ворот на 8-ый пин
old_entry=digitalRead(5);
pinMode(6, INPUT); // Датчик движения 1
old_movement_1=digitalRead(6);
pinMode(7, INPUT); // Датчик движения 2
old_movement_2=digitalRead(7);
pinMode(8, INPUT); // Датчик света
old_light=digitalRead(8);
Serial.begin(115200); // Скорость консольного порта 115200 (пригодится для отладки)
}
void loop()
{
int valid_sensor=0;
delay(1000); // задержка в 1 сек.
// TEMP SENSOR 1
float current_temp1=0;
// Соединяемся
// Обработчик ошибок датчика
valid_sensor=1;
switch(tempSensor1.isValid())
{
case 1:
Serial.println("Err T1"); // ошибка контрольной суммы
tempSensor1.reset(); // сбросить девайс
valid_sensor=0;
case 2:
Serial.println("Err T1"); // какой-то "левый" датчик

tempSensor1.reset(); // сбросить девайс
valid_sensor=0;
}
if (valid_sensor==1) {
Serial.println("T1");
current_temp1=tempSensor1.getTemperature(); // получаем температуру
Serial.println(current_temp1);
if ((old_temperature1!=(int)current_temp1) && (current_temp1<79) && (current_temp1>5)) {
int temp1 = (current_temp1 - (int)current_temp1) * 100; // выделяем дробную часть
sprintf(buf, "GET /objects/?object=sensorKotel&op=m&m=tempChanged&t=%0d.%d HTTP/1.0", (int)current_temp1, abs(temp1));
sendHTTPRequest();
}
old_temperature1=(int)current_temp1;
}
// TEMP SENSOR 2
float current_temp2=0;
// Соединяемся
// Обработчик ошибок датчика
valid_sensor=1;
switch(tempSensor2.isValid())
{
case 1:
Serial.println("Err T2"); // ошибка контрольной суммы
tempSensor2.reset(); // сбросить девайс
valid_sensor=0;
case 2:
Serial.println("Err T2"); // какой-то "левый" датчик

tempSensor2.reset(); // сбросить девайс
valid_sensor=0;
}
if (valid_sensor==1) {
Serial.println("T2");
current_temp2=tempSensor2.getTemperature(); // получаем температуру
Serial.println(current_temp2);
if ((old_temperature2!=(int)current_temp2) && (current_temp2<50) && (current_temp2>5)) {
int temp1 = (current_temp2 - (int)current_temp2) * 100; // выделяем дробную часть
sprintf(buf, "GET /objects/?object=sensorZal&op=m&m=tempChanged&t=%0d.%d HTTP/1.0", (int)current_temp2, abs(temp1));
sendHTTPRequest();
}
old_temperature2=(int)current_temp2;
}
//GARAGE GATES SENSOR
Serial.println("G");
int current_garage=digitalRead(4);
//Serial.println(current_garage);
if (current_garage!=(int)old_garage) {
old_garage=(int)current_garage;
sprintf(buf, "GET /objects/?object=sensorGarage&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_garage);
sendHTTPRequest();
}
//ENTRY GATES SENSOR
Serial.println("E");
int current_entry=digitalRead(5);
//Serial.println(current_entry);
if (current_entry!=(int)old_entry) {
old_entry=(int)current_entry;
sprintf(buf, "GET /objects/?object=sensorEntry&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_entry);
sendHTTPRequest();
}
//MOVEMENT 1 SENSOR
Serial.println("M1");
int current_movement_1=digitalRead(6);
//Serial.println(current_movement_1);
if (current_movement_1!=(int)old_movement_1) {
old_movement_1=(int)current_movement_1;
sprintf(buf, "GET /objects/?object=sensorMovement1&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_movement_1);
sendHTTPRequest();
}
//MOVEMENT 2 SENSOR
Serial.println("M2");
int current_movement_2=digitalRead(7);
//Serial.println(current_movement_2);
if (current_movement_2!=(int)old_movement_2) {
old_movement_2=(int)current_movement_2;
sprintf(buf, "GET /objects/?object=sensorMovement2&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_movement_2);
sendHTTPRequest();
}
//LIGHT SENSOR
Serial.println("L");
int current_light=digitalRead(8);
//Serial.println(current_light);
if (current_light!=(int)old_light) {
old_light=(int)current_light;
sprintf(buf, "GET /objects/?object=sensorLight&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_light);
sendHTTPRequest();
}
}