Main

Код прошивки (без модуля ethernet)

Описание использование кода здесь.

// Библиотеки ниже нет в стандартной поставке среды разработки Arduino.
// придётся её скопировать.
#include <DallasTemperature.h>

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];

DallasTemperature tempSensor1;
DallasTemperature tempSensor2;

// Функция отправки HTTP-запроса на сервер
void sendHTTPRequest() {
  Serial.println(buf); 
}


void setup()
{

 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); 
}

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();
  }

    //just for testing
    sprintf(buf, "GET /objects/?object=sensorMovement2&op=m&m=statusChanged&status=%i HTTP/1.0", (int)current_movement_2);
    sendHTTPRequest();
    delay(5000);

 //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();
  }  


}

MajorDomo

Project

Partners

edit SideBar

 

Blix theme adapted by David Gilbert, powered by PmWiki