esp8266+d1820+blynk

elman434
Offline
Зарегистрирован: 29.11.2019

добрый день. Прошу помочь уже 3 день пытаюсь разобраться с кодом, в коде не особо понимаю, сделал уведомления на блинк, но уведомления приходят не корректно, первый датчик может раз 10 придти подряд между ними 1 раз может появится второй, как мне сделать чтобы уведомления от всех датчиков приходили одинакого или какую переменную использовать, чтобы выбрать количество уведомлений.ОЧЕНЬ ПРОШУ ОБЪЯСНИТЬ КАК НОВИЧКУ И НЕ СУДИТЬ ПО НАБРОСКУ КОДА.

/* ESP & Blynk */
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#define BLYNK_PRINT Serial    

/* Blynk credentials */
char auth[] = "V91W53TJHCbmdciVJHM7a_lkcvsJj0AT";

/* WiFi credentials */
char ssid[] = "Unknown";
char pass[] = "05050505";

/* TIMER */
#include <SimpleTimer.h>
SimpleTimer timer;

/* DS18B20 Temperature Sensor */
#include <OneWire.h>
#include<DallasTemperature.h> 
#define ONE_WIRE_BUS 2 // DS18B20 подключаем на D4 на плате  
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
float temp_0;
float temp_1;
float temp_2;
float temp_3;
float temp_4;
float tempnot1;
float tempnot2;
float tempnot3;
float tempnot4;
float tempnot5;
void setup() 
{
  Serial.begin(115200);
  Blynk.begin(auth, ssid, pass);
  DS18B20.begin();
  timer.setInterval(5000L, getSendData);
  Serial.println(" ");
  Serial.println("Testing Dual Sensor data");
}

void loop() 
{
  timer.run(); // Initiates SimpleTimer
  Blynk.run();
////////////////////1
   if ( (temp_0 > 30 ) && (millis() > tempnot1+5000 ) )
 {
  tempnot1 = millis();
  Blynk.notify(String("Датчик N1 выше ")+temp_0 + String("C"));
 }

   if ( (temp_0 < 13 ) && (millis() > tempnot1+5000 ) )
 {
  tempnot1 = millis();
  Blynk.notify(String("Датчик N1 ниже ")+temp_0 + String("C"));
 }


    if ( (temp_1 > 30 ) && (millis() > tempnot2+6000 ) )
 {
  tempnot2 = millis();
  Blynk.notify(String("Датчик N2 выше ")+temp_1 + String("C"));
 }
   if ( (temp_1 < 13 ) && (millis() > tempnot2+6000 ) )
 {
  tempnot2 = millis();
  Blynk.notify(String("Датчик N2 ниже ")+temp_1 + String("C"));
 }   
///////////////////3
    if ( (temp_2 > 30 ) && (millis() > tempnot3+7000 ) )
 {
  tempnot3 = millis();
  Blynk.notify(String("Датчик N3 выше ")+temp_2 + String("C"));
 }
    if ( (temp_2 < 13 ) && (millis() > tempnot3+7000 ) )
 {
  tempnot3 = millis();
  Blynk.notify(String("Датчик N3 ниже ")+temp_2 + String("C"));
 }
 ///////////////////4
    if ( (temp_3 > 30 ) && (millis() > tempnot4+50000 ) )
 {
  tempnot4 = millis();
  Blynk.notify(String("Датчик N4 выше ")+temp_3 + String("C"));
 }  
    if ( (temp_3 < 13 ) && (millis() > tempnot4+50000 ) )
 {
  tempnot4 = millis();
  Blynk.notify(String("Датчик N4 ниже ")+temp_3 + String("C"));
 }  
 /////////////////5
   if ( (temp_4 > 30 ) && (millis() > tempnot5+50000 ) )
 {
  tempnot5 = millis();
  Blynk.notify(String("Датчик N5 выше ")+temp_4 + String("C"));
 }
    if ( (temp_4 < 13 ) && (millis() > tempnot5+50000 ) )
 {
  tempnot5 = millis();
  Blynk.notify(String("Датчик N5 ниже ")+temp_4 + String("C"));
 } 
 
}

/***************************************************
 * Send Sensor data to Blynk
 **************************************************/
void getSendData()
{
  DS18B20.requestTemperatures(); 
  temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 показания для датчика 1 в цельсиях
  temp_1 = DS18B20.getTempCByIndex(1); // Sensor 0 показания для датчика 2 в цельсиях 
  temp_2 = DS18B20.getTempCByIndex(2); // Sensor 0 показания для датчика 2 в цельсиях 
  temp_3 = DS18B20.getTempCByIndex(3); // Sensor 0 показания для датчика 2 в цельсиях 
  temp_4 = DS18B20.getTempCByIndex(4); // Sensor 0 показания для датчика 2 в цельсиях 

  Serial.print("Temp_0: ");
  Serial.print(temp_0);
  Serial.print(" oC ");
  
  Serial.print("Temp_1: ");
  Serial.print(temp_1);
  Serial.println(" oC");
  
  Serial.print("Temp_2: ");
  Serial.print(temp_2);
  Serial.println(" oC");  
  
  Serial.print("Temp_3: ");
  Serial.print(temp_3);
  Serial.println(" oC");

  Serial.print("Temp_4: ");
  Serial.print(temp_4);
  Serial.println(" oC");

  Blynk.virtualWrite(11, temp_0);
  Blynk.virtualWrite(12, temp_1); //вывод данных навиртуальный пин 
  Blynk.virtualWrite(13, temp_2);
  Blynk.virtualWrite(14, temp_3); //вывод данных навиртуальный пин
  Blynk.virtualWrite(15, temp_4); //вывод данных навиртуальный пин 
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Где Вы взяли этот код?

elman434
Offline
Зарегистрирован: 29.11.2019

на ютубе у турка одного, что-то добавил от себя

вот оригинал

/*
 * gungor 01/01/2019
*/
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <OneWire.h>
#include <DallasTemperature.h>

OneWire oneWire(D2); // digital D2 pin
DallasTemperature sensors(&oneWire);
BlynkTimer timer;
// You should get Auth Token in the Blynk App.
char auth[] = "YourToken";
// Your WiFi credentials.
char ssid[] = "YourNetworkName";
char pass[] = "YourPassword";

float  temp = 0;
float SonMesaj = 0;
float SonEMail = 0;

void setup()
{
  Serial.begin(115200);
  Blynk.begin(auth, ssid, pass);
  sensors.begin();
// Setup a function to be called every second  
  timer.setInterval(1000L, sendTemps);
}

void sendTemps()
{
 sensors.requestTemperatures();
 temp = sensors.getTempCByIndex(0);
 Serial.println(String("Sıcaklik=")+temp+ String(" C"));
 Blynk.virtualWrite(V1, temp);
}

void loop()
{
  Blynk.run();
  timer.run();
  
 if ( (temp > 30 ) && (millis() > SonMesaj+3000 ) )
 {
  SonMesaj = millis();
  Blynk.notify(String("Uyari ")+temp + String("C"));
 }
 
 
 if ( (temp > 30 ) && (millis() > SonEMail+3000 ) )
 {
  SonEMail = millis();
  Blynk.email("gungoryalcin68@Gmail.com","Blynk Deneme",String("Uyari ")+temp + String("C"));
 }

}

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Не, ну я не понял, а как Вы узнаете где находится датчик?

elman434
Offline
Зарегистрирован: 29.11.2019

повешу, потрогаю ручками и прономерую)

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

elman434 пишет:

повешу, потрогаю ручками и прономерую)

Про Вас все понятно - сенсист. А программа как узнает?

elman434
Offline
Зарегистрирован: 29.11.2019

не понял о чем вы

elman434
Offline
Зарегистрирован: 29.11.2019

можете помочь с кодом?

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

elman434 пишет:

можете помочь с кодом?

Гы, а может с программой?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

elman434 пишет:

можете помочь с кодом?

Лично я - нет. Лучше, к турку обратитесь.

А вот конструкции типа

if ( (temp > 30 ) && (millis() > SonMesaj+3000 ) )

могут подвести Вас. При долгой работе (50 суток) устройства, когда millis перейдёт через 0 на второй круг,  эта конструкция обязательно даст сбой.

elman434
Offline
Зарегистрирован: 29.11.2019

mykaida пишет:

elman434 пишет:

можете помочь с кодом?

Гы, а может с программой?

хоть чем нибудь, что поможет работе)

elman434
Offline
Зарегистрирован: 29.11.2019

ЕвгенийП пишет:

elman434 пишет:

можете помочь с кодом?

Лично я - нет. Лучше, к турку обратитесь.

А вот конструкции типа

if ( (temp > 30 ) && (millis() > SonMesaj+3000 ) )

могут подвести Вас. При долгой работе (50 суток) устройства, когда millis перейдёт через 0 на второй круг,  эта конструкция обязательно даст сбой.

если бы я мог обратиться к нему, тут скорее всего не писал бы)

elman434
Offline
Зарегистрирован: 29.11.2019

ЕвгенийП пишет:

elman434 пишет:

можете помочь с кодом?

Лично я - нет. Лучше, к турку обратитесь.

А вот конструкции типа

if ( (temp > 30 ) && (millis() > SonMesaj+3000 ) )

могут подвести Вас. При долгой работе (50 суток) устройства, когда millis перейдёт через 0 на второй круг,  эта конструкция обязательно даст сбой.

да мне 

if ( (temp > 30 ) && (millis() > SonMesaj+3000 ) ) 

не принципиально, я просто отредактировал что было] мне главное чтоб уведомление пришло хотя бы 2 раза

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А...а, ну я тупой. Вам надо рассказать про библиотеку BlynkSimpleEsp8266(). Так я про нее ничего не знаю, как и 99.9% пользователей этого форума. Экслюзив, гля...

elman434
Offline
Зарегистрирован: 29.11.2019

mykaida пишет:

А...а, ну я тупой. Вам надо рассказать про библиотеку BlynkSimpleEsp8266(). Так я про нее ничего не знаю, как и 99.9% пользователей этого форума. Экслюзив, гля...

на этих форумах кто нибудь когда нибудь кому нибудь нормально отвечает? вроде понятным языком написал, ЧТО Я БЛ НОВИИИИИЧООООООООККК, попросил помочь с кодом, а не умничать делая тупое выражение лица.

inspiritus
Offline
Зарегистрирован: 17.12.2012

Во- первых строках письма шлю тебе... (цытата) превед

зачем Вы выкинули подключение библиотек  для датчиков ?

зачем Вам timer? Сделайте через millis

Что делает blynk и вообще зачем оно Вам?

Зачем куча индикации в подпроцессе из timer там надо только получать температуру раз в заданный период.

как дружат timer и blink вообще тёмное дело.

а как вообще Вам надо, чтобы оно работало?

если Вы НОВЬИЧОК это не смягчающий фактор, а отягчающий. С этим заявлением вероятность посылания науй выше, чем без него.

покажите как именно Вы пытались разобраться и что именно у Вас не получилось, или в самом лёком случае будете посланы в « ищу исполнителя».

 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

elman434 пишет:

на этих форумах кто нибудь когда нибудь кому нибудь нормально отвечает? 

На этих форумах кто-нибудь, кого-нибудь нормально спрашивает?