Саоме главное то что... ПОЛУЧИЛСОЬ то ёлки палки. Щас впихну в свой народный мониторинг. Спасибо всё кто принимал участие в этом ... в этом разговоре :)
#include <Wire.h> //Подключаем библиотеку для использования I2C
#include <OneWire.h> //Подключаем библиотеку для температурного датчика DS18B20
#include <ESP8266WiFi.h>
#include <Adafruit_BMP085.h> //Подключаем библиотеку для маленького барометра (темп., абс.высота и атм.давление)
#include <DHT.h> //Подключаем библиотеку двсеми народнолюбимого шротового DHT11
//=====Termo_Sensor ds18b20*
int tempPin=12; //Определяем порт шины OneWire (IC) для температурного датчика DS18B20, Gpio12
OneWire ds(tempPin); //Создаем объект для работы с термометром
byte data[12];
byte addr[8]={0x28,0xFF,0xFA,0x85,0x54,0x14,0x01,0x67}; //адрес датчика DS18B20_уличного 8266-03s
unsigned long flagDallRead=0; //Флаг для обработки показаний с датчиков Dallas
unsigned int raw; //Если экранированный кабель, можно подключать до 32 термо-датчиков DS18B20
float temp; //Температура на уличке с точностью 0,06 градС
//=====Pressure*
Adafruit_BMP085 bmp;
float pres;
//=====Humidity*
#define DHTTYPE DHT11
#define DHTPIN 14 //Gpio14
DHT dht(DHTPIN, DHTTYPE, 11); //Initialize DHT sensor, 11 works fine for ESP8266
float hmdt;
//=====Wi-Fi setup*
const char* ssid="имя_сети_wi-fi";
const char* password="паролик";
IPAddress device_ip (10,32,10,33); //IP eso8266-03s street DeepNet
IPAddress dns_ip (8,8,8,8);
IPAddress gateway_ip (10,32,10,1); //DNS DeepNet
IPAddress subnet_mask (255,255,255,0);
WiFiClient client;
String apiKey="ключик_АПИ"; //ThingSpeak API key, DeepNet_street
const char* serverTS="api.thingspeak.com";
const char* hostN="narodmon.ru";
String Hostname; //Имя железки - выглядит как ESP18FE349C4EBD т.е. ESP+mac адрес.
//=====Delays*
const int sleepTimeS=300; //Время перехода в "глубокий сон", Секунд....
void setup(){
Wire.begin(2,13); //Переназначаем i2c для мелкой 8266-03, 2pin -SDA && 13pin -SCL
bmp.begin(); //Initialize Pressure sensor
dht.begin(); //Initialize Humidity sensor
// Serial.begin(115200); //Serial connection from ESP-01 via 3.3v console cable
razrDall(0x60);
delay(10);
Hostname="ESP"+WiFi.macAddress();
Hostname.replace(":","");
WiFi.begin(ssid, password); //Connect to WiFi network
WiFi.config(device_ip, gateway_ip, subnet_mask); //Setup WiFi network
// Serial.print("\n\r \n\rWorking to connect");
while (WiFi.status() != WL_CONNECTED){ // Wait for connection
// delay(500);}
delay(10);}
// Serial.print(".");}
// Serial.println("");
// Serial.println("esp8266-03");
// Serial.print("Connected to: ");
// Serial.println(ssid);
// Serial.print("IP address: ");
// Serial.println(WiFi.localIP());
// Serial.print("signal strength (RSSI):");
// Serial.print(rssi);
// Serial.println(" dBm");
// Serial.print("MAC address: ");
// Serial.println(WiFi.macAddress());
}
//=========== Функция изменения разрядности Даллас
void razrDall(byte raz){
ds.reset(); //Cброс шины
ds.select(addr); //выставить адрес
ds.write(0x4E); //разрешение записать конфиг
ds.write(0x7F); //Th контроль температуры макс 128грд
ds.write(0xFF); //Tl контроль температуры мин -128грд
ds.write(0x60); //0x60 12-бит разрешение, 0x00 -9бит разрешение
}
//=========== Считывание и Обработка температур
void tempDallas(unsigned long interval){
static unsigned long prevTime=0;
if (millis()-prevTime>interval){ //Проверка заданного интервала
static boolean flagDall=0; //Признак операции
prevTime=millis();
flagDall=!flagDall; //Инверсия признака
if (flagDall){
ds.reset();
ds.write(0xCC); //Обращение ко всем датчикам
ds.write(0x44); //Команда на конвертацию
flagDallRead=1; //Время возврата в секундах
}else{
ds.reset();
ds.select(addr);
ds.write(0xBE); //Считывание значения с датчика
float celsius = (short)(ds.read()|(ds.read()<<8))/16.0;
temp=(float) celsius;
flagDallRead=2; //Время возврата в секундах
// Serial.print("Temp: ");
// Serial.println(temp);
}
}
}
//========== Считывание Давления
void bar(){
pres=(bmp.readPressure()/133.3);
// tempB=bmp.readTemperature(); //-0.5 для bmp180 3.3v
// alt=bmp.readAltitude();
// bmp.readSealevelPressure();
// bmp.readAltitude(101500);
// Serial.print("tempBmp: ");
// Serial.println(tempB);
// Serial.print("presBmp: ");
// Serial.println(pres);
// Serial.print("Alt: ");
// Serial.println(alt);
// Serial.println("+++");
}
//========== Считывание Влажности воздуха
void hmdtDht(){ //Reads the temp and humidity from the DHT sensor and sets the global variables for both
hmdt = (dht.readHumidity()+4); //Read humidity (percent)
// tempC = (dht.readTemperature(false)-6); //Read temperature as Fahrenheit, для Celsius (true)
// Serial.print("tempDht: ");
// Serial.println(tempC);
// Serial.print("hmdtDht: ");
// Serial.println(hmdt);
// Serial.println("...");
}
//========== Проверяем интервал для отправки в ThingSpeak
void thingspeak(){
if (client.connect(serverTS,80)){ //Dns "184.106.153.149" or api.thingspeak.com:"80" or port
String postStr = apiKey;
postStr +="&field1=";
postStr += String(temp);
postStr +="&field2=";
postStr += String(hmdt);
postStr +="&field3=";
postStr += String(pres);
postStr +="&field4=";
postStr += String(WiFi.RSSI());
postStr += "\r\n\r\n";
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
}
}
//========== Проверяем интервал для отправки в Narodmon
void narodmon(){
if (client.connect(hostN, 8283)){ //Dns "94.142.140.101" or narodmon.ru:"8283" or port
String buf;
buf = "#" + Hostname + "#DeepNet_home" + "\r\n"; //Заголовок И ИМЯ, которое будет отображаться в народном мониторинге, чтоб не палить мак адрес
buf = buf + "#T1#" + String(temp) + "\r\n"; //Температура ds18b20
buf = buf + "#H1#" + String(hmdt) + "\r\n"; //Влажность dht11 + поправка
buf = buf + "#P1#" + String(pres) + "\r\n"; //Атмосферное давление bmp180
buf = buf + "#R1#" + String(WiFi.RSSI()) + "\r\n";//Уровень сигнала wi-fi точки
buf = buf + "##\r\n"; // закрываем пакет
client.print(buf); //Отправляем данные
}
}
void loop(){
tempDallas(flagDallRead*1000);
bar();
hmdtDht();
thingspeak();
narodmon();
client.stop();
// Serial.println ("Closing WiFi connection...");
WiFi.disconnect();
delay(150);
// Serial.print ("Entering deep sleep mode for... ");
// Serial.println (sleepTimeS); //mode - WAKE_RF_DEFAULT, WAKE_RFCAL, WAKE_NO_RFCAL, WAKE_RF_DISABLED
ESP.deepSleep(sleepTimeS * 1000000, WAKE_RF_DEFAULT); //Переходим в DeepSleep, (WAKE_NO_RFCAL);
delay(400);
}
Никаких проверок подключено или нет к вафле неоставлял, что отправляем непроверяется, всё в угоду минимума времени измерения и отправки.
Мля! Да сколько можно? Тормозной жидкости выпил? Градус идиотии уже зашкаливает!
float celsius = (short)(ds.read() | (ds.read()<<8))/16.0; float temp = (short)((ds.read()<<16 | (ds.read()<<8)) / 16.0 ; Temp = (float) celsius; //temp = (float) temp;Мля! Да сколько можно? Тормозной жидкости выпил? Градус идиотии уже зашкаливает!
float celsius = (short)(ds.read() | (ds.read()<<8))/16.0; float temp = (short)((ds.read()<<16 | (ds.read()<<8)) / 16.0 ; Temp = (float) celsius; //temp = (float) temp;Да негорячитесь вы так. Бывет.
Саоме главное то что... ПОЛУЧИЛСОЬ то ёлки палки. Щас впихну в свой народный мониторинг. Спасибо всё кто принимал участие в этом ... в этом разговоре :)
#include <Wire.h> //Подключаем библиотеку для использования I2C #include <OneWire.h> //Подключаем библиотеку для температурного датчика DS18B20 #include <ESP8266WiFi.h> #include <Adafruit_BMP085.h> //Подключаем библиотеку для маленького барометра (темп., абс.высота и атм.давление) #include <DHT.h> //Подключаем библиотеку двсеми народнолюбимого шротового DHT11 //=====Termo_Sensor ds18b20* int tempPin=12; //Определяем порт шины OneWire (IC) для температурного датчика DS18B20, Gpio12 OneWire ds(tempPin); //Создаем объект для работы с термометром byte data[12]; byte addr[8]={0x28,0xFF,0xFA,0x85,0x54,0x14,0x01,0x67}; //адрес датчика DS18B20_уличного 8266-03s unsigned long flagDallRead=0; //Флаг для обработки показаний с датчиков Dallas unsigned int raw; //Если экранированный кабель, можно подключать до 32 термо-датчиков DS18B20 float temp; //Температура на уличке с точностью 0,06 градС //=====Pressure* Adafruit_BMP085 bmp; float pres; //=====Humidity* #define DHTTYPE DHT11 #define DHTPIN 14 //Gpio14 DHT dht(DHTPIN, DHTTYPE, 11); //Initialize DHT sensor, 11 works fine for ESP8266 float hmdt; //=====Wi-Fi setup* const char* ssid="имя_сети_wi-fi"; const char* password="паролик"; IPAddress device_ip (10,32,10,33); //IP eso8266-03s street DeepNet IPAddress dns_ip (8,8,8,8); IPAddress gateway_ip (10,32,10,1); //DNS DeepNet IPAddress subnet_mask (255,255,255,0); WiFiClient client; String apiKey="ключик_АПИ"; //ThingSpeak API key, DeepNet_street const char* serverTS="api.thingspeak.com"; const char* hostN="narodmon.ru"; String Hostname; //Имя железки - выглядит как ESP18FE349C4EBD т.е. ESP+mac адрес. //=====Delays* const int sleepTimeS=300; //Время перехода в "глубокий сон", Секунд.... void setup(){ Wire.begin(2,13); //Переназначаем i2c для мелкой 8266-03, 2pin -SDA && 13pin -SCL bmp.begin(); //Initialize Pressure sensor dht.begin(); //Initialize Humidity sensor // Serial.begin(115200); //Serial connection from ESP-01 via 3.3v console cable razrDall(0x60); delay(10); Hostname="ESP"+WiFi.macAddress(); Hostname.replace(":",""); WiFi.begin(ssid, password); //Connect to WiFi network WiFi.config(device_ip, gateway_ip, subnet_mask); //Setup WiFi network // Serial.print("\n\r \n\rWorking to connect"); while (WiFi.status() != WL_CONNECTED){ // Wait for connection // delay(500);} delay(10);} // Serial.print(".");} // Serial.println(""); // Serial.println("esp8266-03"); // Serial.print("Connected to: "); // Serial.println(ssid); // Serial.print("IP address: "); // Serial.println(WiFi.localIP()); // Serial.print("signal strength (RSSI):"); // Serial.print(rssi); // Serial.println(" dBm"); // Serial.print("MAC address: "); // Serial.println(WiFi.macAddress()); } //=========== Функция изменения разрядности Даллас void razrDall(byte raz){ ds.reset(); //Cброс шины ds.select(addr); //выставить адрес ds.write(0x4E); //разрешение записать конфиг ds.write(0x7F); //Th контроль температуры макс 128грд ds.write(0xFF); //Tl контроль температуры мин -128грд ds.write(0x60); //0x60 12-бит разрешение, 0x00 -9бит разрешение } //=========== Считывание и Обработка температур void tempDallas(unsigned long interval){ static unsigned long prevTime=0; if (millis()-prevTime>interval){ //Проверка заданного интервала static boolean flagDall=0; //Признак операции prevTime=millis(); flagDall=!flagDall; //Инверсия признака if (flagDall){ ds.reset(); ds.write(0xCC); //Обращение ко всем датчикам ds.write(0x44); //Команда на конвертацию flagDallRead=1; //Время возврата в секундах }else{ ds.reset(); ds.select(addr); ds.write(0xBE); //Считывание значения с датчика float celsius = (short)(ds.read()|(ds.read()<<8))/16.0; temp=(float) celsius; flagDallRead=2; //Время возврата в секундах // Serial.print("Temp: "); // Serial.println(temp); } } } //========== Считывание Давления void bar(){ pres=(bmp.readPressure()/133.3); // tempB=bmp.readTemperature(); //-0.5 для bmp180 3.3v // alt=bmp.readAltitude(); // bmp.readSealevelPressure(); // bmp.readAltitude(101500); // Serial.print("tempBmp: "); // Serial.println(tempB); // Serial.print("presBmp: "); // Serial.println(pres); // Serial.print("Alt: "); // Serial.println(alt); // Serial.println("+++"); } //========== Считывание Влажности воздуха void hmdtDht(){ //Reads the temp and humidity from the DHT sensor and sets the global variables for both hmdt = (dht.readHumidity()+4); //Read humidity (percent) // tempC = (dht.readTemperature(false)-6); //Read temperature as Fahrenheit, для Celsius (true) // Serial.print("tempDht: "); // Serial.println(tempC); // Serial.print("hmdtDht: "); // Serial.println(hmdt); // Serial.println("..."); } //========== Проверяем интервал для отправки в ThingSpeak void thingspeak(){ if (client.connect(serverTS,80)){ //Dns "184.106.153.149" or api.thingspeak.com:"80" or port String postStr = apiKey; postStr +="&field1="; postStr += String(temp); postStr +="&field2="; postStr += String(hmdt); postStr +="&field3="; postStr += String(pres); postStr +="&field4="; postStr += String(WiFi.RSSI()); postStr += "\r\n\r\n"; client.print("POST /update HTTP/1.1\n"); client.print("Host: api.thingspeak.com\n"); client.print("Connection: close\n"); client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("Content-Length: "); client.print(postStr.length()); client.print("\n\n"); client.print(postStr); } } //========== Проверяем интервал для отправки в Narodmon void narodmon(){ if (client.connect(hostN, 8283)){ //Dns "94.142.140.101" or narodmon.ru:"8283" or port String buf; buf = "#" + Hostname + "#DeepNet_home" + "\r\n"; //Заголовок И ИМЯ, которое будет отображаться в народном мониторинге, чтоб не палить мак адрес buf = buf + "#T1#" + String(temp) + "\r\n"; //Температура ds18b20 buf = buf + "#H1#" + String(hmdt) + "\r\n"; //Влажность dht11 + поправка buf = buf + "#P1#" + String(pres) + "\r\n"; //Атмосферное давление bmp180 buf = buf + "#R1#" + String(WiFi.RSSI()) + "\r\n";//Уровень сигнала wi-fi точки buf = buf + "##\r\n"; // закрываем пакет client.print(buf); //Отправляем данные } } void loop(){ tempDallas(flagDallRead*1000); bar(); hmdtDht(); thingspeak(); narodmon(); client.stop(); // Serial.println ("Closing WiFi connection..."); WiFi.disconnect(); delay(150); // Serial.print ("Entering deep sleep mode for... "); // Serial.println (sleepTimeS); //mode - WAKE_RF_DEFAULT, WAKE_RFCAL, WAKE_NO_RFCAL, WAKE_RF_DISABLED ESP.deepSleep(sleepTimeS * 1000000, WAKE_RF_DEFAULT); //Переходим в DeepSleep, (WAKE_NO_RFCAL); delay(400); }Никаких проверок подключено или нет к вафле неоставлял, что отправляем непроверяется, всё в угоду минимума времени измерения и отправки.
Тут https://thingspeak.com/channels/314888 и тут https://narodmon.ru/615 можно посмотреть кому интересно показатели.