CO2 Sensor als DIY mit ESP32

Die laufen mit Matter over Thread.

Das wird hier scheinbar noch zu einer never ending story. :laughing:

Wenn Du es - warum auch immer - nicht schaffst Deine bereits vorhandenen ESP-Boards mit dem MH-Z19 zu verbinden und in Betrieb zu nehmen, warum besorgst Du Dir dann nicht für ein paar Euros einen Wemos D1 Mini


und nutzt dann den. Zu dem ist das PIN-Layout bekannt und dann mal eben 4 PINs miteinander richtig zu verbinden ist eigentlich auch kein Hexenwerk. :slightly_smiling_face: Dann flasht Du einfach ESPHome darauf, oder weil Du das ja auch schon nutzt einfach Tasmota und schon ist das Thema erledigt. Anleitungen dafür gibt es im I-Net ja jede Menge.

Vorausgesetzt Dein MH-Z19 hat keine Macke und der Ali-Händler hat Dir da keinen “Fake” verkauft. :rofl: Das Foto zu dem von Dir bei Ali bestellten MH-Z19 sieht m.M.n. zumindest nicht wie ein original MH-Z19C, sondern eher nach irgendeinem Nachbau aus. Was jetzt nicht unbedingt bedeutet das der ggf. gar nicht funktioniert.

Edit: Um noch einmal kurz auf das Foto des MH-Z19 bei dem Ali Händler zurück zu kommen. Wenn Dein Sensor - so wie auf dem Foto zu sehen - eher silber ist, dann ist das die Aluminium-Variante von dem MH-Z19 und somit das MZ-Z19E und nicht das C-Modell.

Wobei das für das PIN-Layout keine Rolle spielt, denn das sollte bei dem E und dem C-Modell gleich sein.

VG Jim

1 „Gefällt mir“

ja tatsächlich ist es die silberne Variante.

ich bin der Meinung, daß ich genau das für meinen ersten Versuch verwendet habe …
aber auf meinem Di mini steht ESP8266MOD


Auf dem Board sind die PINs ja beschriftet und somit sollte es eigentlich kein Problem sein/werden die dann passend mit dem MH-Z19E zu verbinden. Ich habe jetzt aber nicht mehr im Hinterkopf was Du hier dazu alles schon gepostet hast und jetzt auch irgendwie keine Lust die ganzen Postings noch einmal zu lesen. :slightly_smiling_face:

Wenn Du ggf. Schwierigkeiten mit ESPHome hattest, z.B. weil der ESPHome Code ggf. nicht passte, dann kannst Du Dein Glück ja - wie ich bereits geschrieben hatte - auch mal mit Tasmota versuchen. Die Verbindungen und die dann einzustellenden GPIO Ports, sind hier ja beschrieben.

Weil Du Tasmota ja auch schon nutzt und es - wenn es Dir um die CO₂-Werte geht - ja keinen Unterschied macht ob die Werte dann per ESPHome oder Tasmota an HA geliefert werden.

VG Jim

1 „Gefällt mir“

@Jim_OS
also an der Kabelverbindung kann es nicht liegen und der code ist mE für das D1 mini ESP8266 auch korrekt. da gibt es ja auch nur zwei interessante Stellen:

esp8266:
  board: d1_mini

...

uart:
  rx_pin: GPIO3
  tx_pin: GPIO1
  baud_rate: 9600

egal, der Sensor liefert in HA immer nur “unbekannt”

gut dann versuche ich mal Tasmota.
habe es hiernach gemacht …

auch in diesem Szenario kommen keine Werte an.
Mein Fazit: Sensor defekt …

OK auch das kann ein Fazit sein - wenn wohl auch nicht das gewünschte. :slightly_smiling_face:

Da Du hier ja ursprünglich noch die Fragen gestellt hattest wie Du überhaupt Tasmota flashen solltest und das in dem verlinkten Video ja per Tasmota Web-Flasher (Install Tasmota) und Direktanschluss des ESP8266 per USB-Kabel gemacht wird, dazu vielleicht noch eine Info für andere User die das unter Linux machen und dann beim öffnen des USB-Ports, an den der ESP8266 angeschlossen ist, an der Meldung “failed to execute ‘open’ on ‘SerialPort’: Failed to open serial port.” verzweifeln und es nicht funktioniert. :laughing: Unter Linux musst der User, mit dem man bei Linux eingeloggt ist, erst Zugriffsrechte auf den USB-Port bekommen. Wenn der ESP8266 z.B. an ttyUSB0 angeschlossen ist, dann gibt man im Linux-Terminal folgenden Befehl ein:

sudo setfacl -m u:xxxxx:rw /dev/ttyUSB0

Wobei die xxxxx eben durch den Usernamen ersetzt werden müssen mit dem man unter Linux angemeldet ist. An diesem kleinen “Fallstrick” unter Linux bin ich vor längerer Zeit auch mal fast verzweifelt :laughing: und habe dann irgendwo diese Lösung gefunden.

VG Jim

1 „Gefällt mir“

ich habe gerade einen neunen MH-Z19B bei Ali bestellt …

für einen zweiten Sensor finde ich diesen Ansatz recht vielversprechend …

Den Ansatz mit dem VINDRIKTNING kenne ich auch nur das man, wenn man den VINDRIKTNING nicht bereits haben sollte, ihn inzwischen halt nicht mehr bekommt. Es sei denn in irgendeiner Ikea Filiale würden davon noch welche “herumliegen”.

VG Jim

gerade auf kleinanzeigen für € 5,00 (+ €3,70 Porto) gekauft …

Da es bei meiner Frage auch um CO2 Sensor mit ESP32 und SCD41 geht, mache ich kein neues Thread auf, sondern schließe mich hier dazu, wenn das OK ist.

Und zwar habe ich 4 Sensoren gebaut. Soweit funktionieren alle 4.
Momentan liegen sie zum automatischen Kalibrieren im Gartenhaus in der frischen Luft aus.

Was mir komisch vorkommt, dass die Sensoren sehr ungleiche Messwerte liefern.
Ist derartige Streuung normal?

10-15% Messungenauigkeit ist normal für den Preis bekommst du keine high tech Sensoren die fangen bei > 200 Euro an

Eigentlich sollten die aber bei 400ppm liegen, weiß nicht ob dein Gartenhaus ideal für die Kalibrierung ist.

Und neues Thema wäre besser, bei dir funktionieren die Dinger ja. Anders als in diesem Thread

1 „Gefällt mir“

Danke für die schnelle Antwort.

Mit Hilfe von Geminy habe ich bei einem Sensor zum Testen eine Ampel aus LED Streifen SK6812 geschaltet (einzeln adressierbar). Habe Restabschnitt hier rumliegen gehabt und habe 2 Pixel genutzt.

Bei Interesse kann ich den Code gerne teilen.

VG
Alex.

Die Werte sind doch exzellent für diese Sensorklasse. Jedoch sollten die zum Kalibrieren der Baseline an der frischen Luft nahe 400ppm liegen.
Außerdem würde ich diese auch bei hohen CO2 Konzentrationen >1500ppm mal noch vergleichen.
Erfahrungsgemäß streuen die dann stärker.

ja bitte gerne mal alles teilen, also auch Link zu den von Dir verwendeten Sensoren und ESP boards etc.
mein Sensor geht zurück an Ali, ich kann dann wieder komplett von vorne anfangen …
macht aber nichts, habe oben ja einiges dazugelernt …

Ja, klar, gerne.

Das ist das ESP:

Ich habe das mit dem Chip CP2102:

Das ist der Sensor SCD41:

Code für ESP ohne LED Ampel:

esphome:
  name: luft-benjamin
  friendly_name: Luft Benjamin

esp32:
  board: esp32dev
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

ota:
  - platform: esphome
    password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Luft-Benjamin Fallback Hotspot"
    password: "xxxxxxxxxxxxxxxxxxxxxx"

captive_portal:

i2c:
  sda: GPIO21 ##sda Anschluss vom CO2 Sensor liegt am D22 Pin des ESP an
  scl: GPIO22 ##scl Anschluss vom CO2 Sensor liegt am D21 Pin des ESP an
  scan: true
  id: bus_a

sensor:
  - platform: scd4x
    co2:
      name: "CO2 Wert"
    temperature:
      name: "Temperatur"
    humidity:
     name: "Luftfeuchtigkeit"
    update_interval: 60s

Code für ESP mit 2 LEDs am Band SK6812 als Anzaeigeampel:

esphome:
  name: "luft-schlafzimmer"
  friendly_name: Luft Schlafzimmer

esp32:
  board: esp32dev
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

ota:
  - platform: esphome
    password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Co2-Schlafzimmer"
    password: "xxxxxxxxxxxxxxxx"

captive_portal:

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true
  id: bus_a

light: ##von da fängt der Abschnitt für die Ampel an
  - platform: esp32_rmt_led_strip
    rgb_order: GRB
    pin: GPIO13 ##Datenkabel vom LED Band liegt am D13 des ESP an
    num_leds: 2
    chipset: SK6812
    is_rgbw: true
    name: "CO2 Ampel Band"
    id: led_strip  
##bis da
sensor:
  - platform: scd4x
    co2:
      name: "CO2 Wert"
      id: co2_sensor ##von da fängt der Abschnitt für die Ampel an
      on_value:
        then:
          - lambda: |-
              auto call = id(led_strip).turn_on();
              // Helligkeit global (0.0 bis 1.0)
              call.set_brightness(0.5); 
              
              if (x < 800) {
                // Grün (Rot, Grün, Blau, Weiß)
                call.set_rgbw(0.0, 1.0, 0.0, 0.0); 
              } else if (x < 1200) {
                // Gelb (Mischung aus Rot und Grün)
                call.set_rgbw(1.0, 0.6, 0.0, 0.0);
              } else {
                // Rot
                call.set_rgbw(1.0, 0.0, 0.0, 0.0);
              }
              call.perform(); 
    ##bis da          
    temperature:
      name: "Temperatur"
    humidity:
     name: "Luftfeuchtigkeit"
    update_interval: 60s     

Bei der Ampel wurd dabei ein Haupt-Ein/Aus für LED erstellt, den man z.B. bei den Automationen für Nachts Aus oder so nutzen kann:


Den Code-Teil vor dem “captive portal” wird von ESP Home angelegt, wenn Du ein neues Projekt startest. Dazu muss ESP noch gar nicht am PC angeschlossen sein.
Den Rest schreibst Du im Edit dazu.

Ich nutze immer manuelles Install, weil mir das so als stabil irgendwann früher empfohlen wurde.

Hoffe, das hilft

besser als im Gartenhaus wäre dann einfach ganz draußen. Wobei ich nicht weiß, was im Gartenhaus die Werte um 200ppm beeinflussen kann.

Manuelles Kalibrieren? Wobei wie das genau geht habe ich nicht verstanden

Ich hab mir diesen CO2-Sensortyp jetzt nicht angeschaut, jedoch kalibrieren die sich doch üblicherweise regelmäßig selbst. Dabei wird dann angenommen, das jeweils im Intervall einmal der CO2 nahe/auf ~400ppm sinkt und damit die Baseline bekannt/verwendet ist/wird.

Ich habe selbst zwei von den Ikea Vindriktning damals gekauft, als sie für 5 EUR verramscht wurden und nach dieser Anleitung hier –> Use an IKEA VINDRIKTNING air sensor in Home Assistant – Style over Substance umgebaut. Ich habe diese genommen, weil ich sie am leichtesten verständlich fand und sie neben dem ESP8266 keine zusätzlichen Platinen oder Bauteile (bis auf die Kabel und Lötzinn) braucht. Bei einem von beiden habe ich auch den dort beschriebenen 3,3V Mod durchgeführt: klappt genau so gut und ist deutlich leiser. Mit der originalen 5V Ansteuerung des Lüfters ist der in leisen Räumen schon deutlich hörbar. Die 3,3V Variante ist im Schlafzimmer und praktisch unhörbar.

Hätte ich gewusst, dass das so gut funktioniert, hätte ich gleich ein paar mehr gekauft. Aber sie waren in kürzester Zeit ausverkauft.

Nur: einen CO2 Sensor haben die ab Werk nicht… War mir aber auch nicht wichtig.

ja in der Tat, ich werde das jetzt mal genau so machen, wie Du, denn da funktioniert es ja offensichtlich.
nur noch eine Bemerkung zum Sensor:
ein goldener MH-Z19B ist jetzt auch nicht viel teurer …

EDIT:

und ich gestern gebraucht bei kleinanzeigen.
Danke für diese DIY-MOD Anleitung, ich hatte diese gefunden, das ist etwas aufwändiger, schliesst aber noch eine cam mit ein.

Ja, habe ich gesehen. Aber ich habe mich nach dem praktischen Nutzen der Kamera gefragt und für mich festgestellt, dass ich ihn nicht sehe.