Langlebige Temperatur und Feuchtesensoren?

Alle Räume ohne Heizung habe ich seit rund 20 Jahren mit HMS100TF ausgestattet um Raumtemperatur und Feuchte zu messen. Die HMSxxx waren bisher meine zuverlässigsten Geräte und die Batterien halten ewig. So nach gut 8 Jahren musste ich die Batterien wechseln.
Nun bringen mehrere keine Feuchte-werte mehr. Ich muss mich wohl nach etwas Neuem umsehen.

Was gibt es da heute so an Vergleichbarem?

Da du offenbar auf Zigbee setzt ist die Auswahl sicher groß. Ich hab sei kurzem den kleinen von XIAOMI im Einsatz. Dieser misst bei mir die Temperatur neben dem Kamin. Überschreitet dieser eine bestimmte Temperatur, wird die Heizung in angrenzenden Räumen runtergeregelt. Wie lange die Knopfbatterie hält, kann ich noch nicht sagen. Aber er ist sehr klein (etwas größer als eine €2,-- Münze) und liefert nur Temperatur, Luftfeuchtigkeit und Batteriestatus.

ZigBee / ConBee ist bei mir neu und ich habe bisher nur ein Ikea Rollo.
Und ob das Langlebig ist, bezweifle ich. Die Batterie im Tradfritaster hat kein Jahr gehalten.

Ich nutze einige HYT 221 an eigener Hardware, die laufen seit Jahren stabil wenn nur die Sensorfläche draußen ist. Habe ich über der Dusche und im Trockner Abluftkanal verbaut, bin damit zufrieden. Die könnte man heute auch an ein Tasmota Modul hängen, den Treiber habe ich mir aber da selber geschrieben.

Hallo Tom,
gibt es den I2C Sensor HYT 221 jetzt in Tasmota?
Wenn „Nein“ würdest Du Deine Arbeit/Config teilen?
Der Sensor ist, glaube ich, für Aussenanwendungen besser geeignet.
Gruß Helmut

Moin Helmut,

den HYT221 habe ich an meinen Selbstbau LCN Modulen. (Wäschetrockner und Luftfeuchte Bad)
Für Tasmota habe ich mir den Treiber selber geschrieben und mit eingebaut, und der hängt an einer Nodemcu (Überwachung und Steuerung der Powerbox vom Robomow im Wintergarten
Müsste es wieder mit den neuen Tasmota Versionen probieren, ob das noch geht.
Dann stelle ich Euch gerne die Version zur Verfügung.

lg Thomas

Kein Stress deswegen, mein „Aussensensor“ meldet, wenn er mal über 100% hatte, längere Zeit danach Quatsch.
Gruß Helmut

Schaut mal nach dem BME280 von Bosch Sensortec
Hat eine prima definierte Spec mit allen Daten.
Kommt um wenige € mit Breakout. Suche nach BME280 BlueDot bei Amazon.-

Hab mich mit den "weißen und „blauen“ Chinamüll nur geärgert. Der BME280 läuft hingegen ganz prima.
Einen Sketch für NodeMCU um die Daten per MQTT an IPS zu senden könnte ich anbieten.

schönen Gruß
Bernhard

Der BME280 gefällt mir auch gut, ist auch im Einsatz. Aber nur in sauberer Luft.
Der HYT hat einen Filter vor dem Sensorelement, und sitzt im Abluftrohr vom Trockner. Das hält der BME nicht aus. :joy:

Moin Helmut,
hier der Code vom HYT für Tasmota zum einbauen.
In der user_config_override.h muss dann noch "#define USE_HYT " mit rein.
Habe da gerade noch einen Fehler gehabt, der ist jetzt raus sein.

/*
  xsns_90_HYT.ino - HYT I2C temperature and humidity sensor support for Tasmota

  Copyright (C) 2020  Thomas Schnittcher

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/


#ifdef USE_I2C
#ifdef USE_HYT
/*********************************************************************************************\
 * HYT  - Temperature and Humidity
 *
 * I2C Address: 0x28
\*********************************************************************************************/

#define XSNS_90              90
#define XI2C_90              90 // See I2CDEVICES.md

#define HYT_ADDR           0x28  // I2C address von HYT 221, 271, 371 usw.

struct HYT {
  float   humidity = NAN;
  float   temperature = NAN;
  uint8_t valid = 0;
  uint8_t count = 0;
  char    name[6] = "HYT";
} HYT;


bool HYT_Read(void)
{
  if (HYT.valid) { HYT.valid--; }

  Wire.beginTransmission(HYT_ADDR);
  Wire.write(0x00);                 // Select data register
  Wire.endTransmission();
 
  Wire.requestFrom(HYT_ADDR, 4);
  if(Wire.available() == 4) { 
  uint8_t data1      = Wire.read();
  uint8_t data2      = Wire.read();
  uint8_t data3      = Wire.read();
  uint8_t data4      = Wire.read();
 
   
  // Convert the data to 14-bits
  float humidity = ((((data1 & 0x3F) * 256) + data2) * 100.0) / 16383.0;
  int temp = ((data3 * 256) + (data4 & 0xFC)) / 4;
  float temperature = (temp / 16384.0) * 165.0 - 40.0;

  HYT.humidity = ConvertHumidity(humidity);
  HYT.temperature  = ConvertTemp(temperature);
  }
  if (isnan(HYT.temperature) || isnan(HYT.humidity)) { return false; }

  HYT.valid = SENSOR_MAX_MISS;

//  HYT.valid = 1;
  return true;
  
}

/********************************************************************************************/
void HYT_Detect(void)
{
 if (I2cActive(HYT_ADDR)) { return; }
 
  if (I2cSetDevice(0x28)) {
      I2cSetActiveFound(HYT_ADDR, "HYT");
      HYT.count = 1;
    }
  }
 
/********************************************************************************************/
 
void HYT_EverySecond(void)
{
  if (!(TasmotaGlobal.uptime %4)) {  // Every 4 seconds
    if (!HYT_Read()) {
      AddLogMissed(HYT.name, HYT.valid);
    }
  }
}

void HYT_Show(bool json)
{
  if (HYT.valid) {
    TempHumDewShow(json, (0 == TasmotaGlobal.tele_period), HYT.name, HYT.temperature, HYT.humidity);
  }
}


/*********************************************************************************************\
 * Interface
\*********************************************************************************************/

bool Xsns90(uint8_t function)
{
  if (!I2cEnabled(XI2C_90)) { return false; }

  bool result = false;

  if (FUNC_INIT == function) {
    HYT_Detect();
  }
  else if (HYT.count) {
    switch (function) {
    case FUNC_EVERY_SECOND:
      HYT_EverySecond();
      break;
    case FUNC_JSON_APPEND:
      HYT_Show(1);
      break;
#ifdef USE_WEBSERVER
    case FUNC_WEB_SENSOR:
      HYT_Show(0);
      break;
#endif  // USE_WEBSERVER
    }
  }
  return result;
}

#endif  // USE_HYT
#endif  // USE_I2C

Vielen Dank für’s teilen, dann werde ich mal bei ehemals Angelika bestellen.

Soll dieses Ino File in den LIB Ordner?

Gruß Helmut

Moin Helmut,

in den Tasmota Ordner als xsns_90_HYT.ino

lg Thomas

Meine Ordnerstruktur sieht so aus:TasmotaOrdner
Wo genau? Dann in die User Config einschreiben, richtig?
Gruß und Danke für Deine Zeit, Helmut

In den Tasmota Ordner auf deinem Bild.
Ich mache meine Änderungen immer in der „user_config_override.h“
Da dann #define USE_HYT rein.

lg Thomas

Ah, in Den, Danke.
Gruß Helmut