Данный термометр будет показывать температуру, влажность в помещении и температуру датчика, находящегося на улице.

Понадобится Arduino NodeMcu на ESP8266, датчик DHT11, датчик DS18B20, библиотеки Remote XY, ESP8266WiFi, OneWire, DallasTemperature, DHT ну и само приложение Remote XY.

DS18b20 подключать красный провод на +3в, черный на GND, желтый на D4

DHT11 подключаем (+) на +3в, (-) на GND, OUT на D3.

В скетче меняем настройки подключения к вашей точке доступа. 

 

 

 

// определение режима соединения и подключение библиотеки RemoteXY 
#define REMOTEXY_MODE__ESP8266WIFI_LIB
#include <ESP8266WiFi.h>
#include <RemoteXY.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <DHT.h> // Для опроса датчика DTH-11
DHT dht;// Для опроса датчика DTH-11
#define ONE_WIRE_BUS_2 2 // подключать на пин D4!!! Я ХУЙ ЕГО ЗНАЕТ КАК ПИСАЛИ ЭТУ БИБЛИОТЕКУ!!!
OneWire oneWire_out(ONE_WIRE_BUS_2);
DallasTemperature sensor_outhouse(&oneWire_out);

double tempoutDOUBLE = 0;//переменная с температурой для 18B20
double vlagaDOUBLE = 0;//переменная с температурой для 18B20
double tempinDOUBLE = 0;//переменная с температурой для 18B20

char tempintxt[11];  // =строка UTF8 оканчивающаяся нулем 
char tempouttxt[11];//Текстовое поле под температуру
char vlagatxt[11];//Текстовое поле под температуру
double i = 0;

// настройки соединения 
#define REMOTEXY_WIFI_SSID "wi-fi" //ИМЯ ВАШЕЙ ТОЧКИ ДОСТУПА
#define REMOTEXY_WIFI_PASSWORD "password"//ПАРОЛЬ ТОЧКИ ДОСТУПА
#define REMOTEXY_SERVER_PORT 6378 //порт для подключения

// конфигурация интерфейса  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
  { 255,0,0,33,0,59,1,10,185,1,
  67,6,12,14,24,14,24,185,11,129,
  0,10,10,44,4,165,208,162,208,181,
  208,188,208,191,208,181,209,128,208,176,
  209,130,209,131,209,128,208,176,32,208,
  189,208,176,32,209,131,208,187,208,184,
  209,134,208,181,0,129,0,35,16,2,
  3,24,32,48,0,129,0,36,18,6,
  8,24,208,161,0,129,0,5,31,53,
  4,165,208,162,208,181,208,188,208,191,
  208,181,209,128,208,176,209,130,209,131,
  209,128,208,176,32,208,178,32,208,191,
  208,190,208,188,208,181,209,137,208,181,
  208,189,208,184,208,184,0,129,0,36,
  38,4,6,24,208,161,0,129,0,35,
  36,2,3,24,32,48,0,129,0,7,
  53,49,4,165,208,146,208,187,208,176,
  208,182,208,189,208,190,209,129,209,130,
  209,140,32,208,178,32,208,191,208,190,
  208,188,208,181,209,137,208,181,208,189,
  208,184,208,184,0,129,0,37,60,4,
  4,24,37,0,67,6,17,36,18,9,
  24,185,11,67,6,18,57,18,9,24,
  185,11,129,0,4,20,67,8,37,95,
  95,95,95,95,95,95,95,95,95,95,
  95,95,95,95,0,129,0,4,42,67,
  8,37,95,95,95,95,95,95,95,95,
  95,95,95,95,95,95,95,0,129,0,
  4,61,67,8,37,95,95,95,95,95,
  95,95,95,95,95,95,95,95,95,95,
  0,129,0,17,88,29,4,95,119,119,
  119,46,52,56,52,56,54,57,46,114,
  117,0 };
// структура определяет все переменные и события вашего интерфейса управления 
struct {
  // output variables
  char tempout[11];  // =строка UTF8 оканчивающаяся нулем 
  char tempin[11];  // =строка UTF8 оканчивающаяся нулем 
  char vlaga[11];  // =строка UTF8 оканчивающаяся нулем 

    // output variables
//  char tempouttext[11];  // =строка UTF8 оканчивающаяся нулем 
 
// other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0 

} RemoteXY;
#pragma pack(pop)

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////
void setup(void)  
{ 
  RemoteXY_Init ();  
     Serial.begin(9600);
dht.setup(D3);
  
// TODO you setup code 
    sensor_outhouse.begin();
} 

void loop(void)  
{  
  RemoteXY_Handler (); 
   //Serial.print("Requesting temperatures...");
double vlagaDOUBLE = dht.getHumidity();/* ВЛАЖНОСТЬ */
double tempinDOUBLE = dht.getTemperature();/* ТЕМПЕРАТУРА */
   
i=i+1;   
    if (i>40) {
      sensor_outhouse.requestTemperatures();
tempoutDOUBLE =sensor_outhouse.getTempCByIndex(0);
i=0;
    }
dtostrf(tempoutDOUBLE, 0, 0, tempouttxt); 
dtostrf(vlagaDOUBLE, 0, 0, vlagatxt);     
dtostrf(tempinDOUBLE, 0, 0, tempintxt);

 strcpy(RemoteXY.tempout, tempouttxt); 
 if (vlagaDOUBLE>0) {
  Serial.print("температура в помещении:");
Serial.println(tempintxt);
  Serial.print("температура на улице:");
Serial.println(tempouttxt);
  Serial.print("влажность в помещении:");
Serial.println(vlagatxt);
   
strcpy(RemoteXY.tempout, tempouttxt);
strcpy(RemoteXY.vlaga, vlagatxt);   
strcpy(RemoteXY.tempin, tempintxt);
 }
  delay (50);
}