Doch nicht so warm wie gedacht

Wenn das Dach gut gedämmt ist, dann müsste es dort oben eigentlich am wärmsten sein, weil ja Hitze bekanntlich nach oben steigt. Also so rein von der Physik her. Ist aber nicht so. Ich sitze ja täglich im Homeoffice dort oben und da ist es bei weitem nicht so warm wie im Erdgeschoss, wo geheizt wird.

Das wollte ich genau wissen und habe auf jedem Stockwerk ein Thermometer aufgestellt. Im Erdgeschoss und ersten Stock habe ich einfach die Aqara Sensoren her genommen, bis zum Dach reicht aber die Zigbee Verbindung nicht, deshalb wurde da kurzerhand ein ESP8266 mit DHT11-Sensor zusammengebaut.

Am einfachsten liest man so einen Aufbau mit ESPeasy aus, da gibt es zig Tutorials im Netz. Aber das Auslesen eines Sensors ist auch mit der Arduino-IDE kein Hexenwerk. Bindet man dann noch die WLAN- und MQTT-Lib ein und stöbert etwas bei Google sendet man die erfassten Werte übers WLAN Richtung MQTT-Server und hat die Werte damit im iobroker und kann sie bequem weiterverarbeiten.

Das ganze zusammen kopierte Stück Code schaut dann so aus:

#include <DHT.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#define DHTPIN 0     // Digital pin connected to the DHT sensor
#define DHTTYPE    DHT11
DHT dht(DHTPIN, DHTTYPE);
float t = 0.0;
float h = 0.0;
// Update these with values suitable for your network.
const char* ssid = "WIFI-name";
const char* password = "WIFI-password";
const char* mqtt_server = "MQTT-server-name-or-address";
// Define NTP Client to get time
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org");
WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;
void setup_wifi() {
   delay(100);
  // We start by connecting to a WiFi network
    Serial.print("Connecting to ");
    Serial.println(ssid);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED)
    {
      delay(500);
      Serial.print(".");
    }
  randomSeed(micros());
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}
void reconnect()
{
  // Loop until we're reconnected
  while (!client.connected())
  {
    Serial.print("Attempting MQTT connection...");
    // Create a random client ID
    String clientId = "ESP8266Client-";
    clientId += String(random(0xffff), HEX);
    // Attempt to connect
    //if you MQTT broker has clientID,username and password
    if (client.connect(clientId.c_str()))
    {
      Serial.println("connected");
     //once connected to MQTT broker, subscribe command if any
      client.subscribe("OsoyooCommand");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 6 seconds before retrying
      delay(6000);
    }
  }
}
void setup() {
  // Serial port for debugging purposes
  Serial.begin(115200);
  timeClient.begin();
  timeClient.setTimeOffset(3600);
  dht.begin();
  Serial.println("Startup");
  setup_wifi();
  client.setServer(mqtt_server, 1883);
}
void loop() {
  timeClient.update();
  if (!client.connected()) {
    reconnect();
  }
  client.loop();
  float newT = dht.readTemperature();
  float newH = dht.readHumidity();
  String formattedTime = timeClient.getFormattedTime();
  Serial.println(formattedTime);
  String msgTmpStr=String(newT);
  String msgHumStr=String(newH);
  char msgTmp[25];
  char msgHum[25];
  char msgTime[25];
  msgTmpStr.toCharArray(msgTmp,25);
  msgHumStr.toCharArray(msgHum,25);
  formattedTime.toCharArray(msgTime,25);
  client.publish("esp8266/Dach/temperature", msgTmp);
  client.publish("esp8266/Dach/humidity",    msgHum);
  client.publish("esp8266/Dach/time",    msgTime);
  Serial.print("Temperature: ");
  Serial.print(newT);
  Serial.print(" Humidity: ");
  Serial.println(newH);
  delay(60000);
}

3 Gedanken zu „Doch nicht so warm wie gedacht“

  1. Rein physikalisch hat das Haus Türen und Fenster, damit die Wärme auf dem Weg nach oben ein bisschen Wahlfreiheit hat. Ab Mitte des zweiten Absatz fühle ich mich erschlagen und der Screenshot erinnert mich an Gespräche mit Entwicklern, nachdem das Kind in den Brunnen gefallen ist.

    Antworten
  2. Neulich, wie ich die 1-Wire Thermometer vom #GartenhausZwei im Wohnzimmer angeschlossen hab, hatte ich tatsächlich 5 unterschiedliche Werte von 5 Thermometern mit ca. 2 Grad Range. Da musste ich lachen – und tatsächlich an dich denken! Und beim Gespann ESP8266/DHT11 habe ich das Grillthermometer als Referenz genommen und gleich einen Korrekturwert mit eingebaut, damit das ansatzweise zum Rest passt.
    Insgesamt habe ich ein gutes Gefühl und freue mich mehr darüber dass es funktioniert als über die Ergebnisse.

    Antworten

Schreibe einen Kommentar