Raumluftgüte CO2 Programm

Programm für die Raumluftgüte MQ135 MySensors FHEM

Ein Programm das Messen und Abbilden der Raumluftgüte mit dem MQ135 auf dem ARDUINO mit MYSENSORS nach FHEM

Auf dem Weg zum Bau von multiplen Raumsensoren mit FHEM und MYSENSORS war die erste Aufgabe den Programm-Code der CO²-Raumwerte zu entwickeln. Ziel ist die Daten von MYSENSORS nach FHEM zu übertragen, damit diese darstellungskonform im WEBUI abgebildet und weiter verwendet werden können. Es gibt jede Menge Programm-Schnipsel aber leider kein fertiges Beispiel, welches mich zufrieden stellte. Die plausibelsten Werte erzeugt die MQ135.h Bibliothek auf https://github.com/GeorgK/MQ135 . Hierfür habe ich dann noch den Code aus FHEM/MYSENSORS angepasst.

Wichtig ist dass der Sensor 24 Stunden „eingebrannt“ wird und anschließend bei ca. 20 Grad 35 % Feuchte außen kalibriert wird. Ich habe dazu in der Bibliothek den RZERO Wert solange verändert bis der Wert plausibel war.

On the way to the construction of multiple room sensors with FHEM and MYSENSORS the first task was to develop the programm code CO² space values. The aim is to transfer the data from MYSENSORS after FHEM, so they can be displayed in the WebUI representation compliant and reused. There is plenty of programm snippets but no complete example, which introduced me satisfied. The most plausible values produces the MQ135.h library https://github.com/GeorgK/MQ135. For this, I still have adapted the code from FHEM / MYSENSORS.
 It is important that the sensor is „burned“ 24 Hours will be followed at 20 degree 35% humidity is outside calibrated. I have this in the library the RZERO value unless changed until the value was plausible.

/*
Arduino MQ135

Anpassung für Bibliothek MQ135.h und MYSENSORS / FHEM von jotthaeff 25.12.2015
Contribution: epierre
Based on David Gironi http://davidegironi.blogspot.fr/2014/01/cheap-co2-meter-using-mq135-sensor-with.html
http://skylink.dl.sourceforge.net/project/davidegironi/avr-lib/avr_lib_mq135_01.zip

*/
#include "MQ135.h"
#include "SPI.h"
#include "MySensor.h"
#include "Wire.h"

#define CHILD_ID_AIQ 0
#define ANALOGPIN 0

float valAIQ =0.0;
float lastAIQ =0.0;

// Initialize the gas Sensor
MQ135 gasSensor = MQ135(ANALOGPIN);

MySensor gw;
MyMessage msg(CHILD_ID_AIQ, V_LEVEL);

void setup()
{
//Serial.begin(9600);
gw.begin();

// Send the sketch version information to the gateway and Controller
gw.sendSketchInfo("AIQ Sensor MQ135", "1.0");

// Register all sensors to gateway (they will be created as child devices)
gw.present(CHILD_ID_AIQ, S_AIR_QUALITY);

}

void loop()     {

float ppm = gasSensor.getPPM();
Serial.print(" CO2: ");
Serial.print(ppm);
Serial.println(" ppm ");

valAIQ=ppm;

if (valAIQ != lastAIQ) {
gw.send(msg.set((int)ceil(valAIQ)));
lastAIQ = ceil(valAIQ);
}

delay(10000);
}

2 Gedanken zu „Programm für die Raumluftgüte MQ135 MySensors FHEM“

  1. Mit diesem Sketch wollte ich meinen neuen Sensor an FHEM anbinden , funktioniert grundsätzlich , aber nur eine bestimmte Zeit nach dem Einschalten , danach werden die übertragenen Werte unbrauchbar , d.h.

    mit dem „MQ135.h Testsketch“ komme ich auf vermutlich real Werte
    von 500 ..1300 ppm je nach Aktivität in der Umgebung in der seriellen Ausgabe.
    Lade ich diesen Sketch ist für die erste Zeit auch alles ok, die gleichen Werte werden dann auch an das Mysensors Gateway übertragen, hier um einige Ausgaben erweitert das serielle Log:
    CO2: 546.77 ppm

    send: 3-3-0-0 s=0,c=1,t=37,pt=2,l=2,sg=0,st=ok:547
    im Mysensors Myscontroller ist der gleiche Wert , also 547 sichtbar und damit auch im FHEM.
    Nach einige Zeit erscheint im Mysensor aber Werte in der Größe 10905240458, die Werte auf der seriellen Ausgabe bleiben aber im Bereich 500.. 1000
    Soweit ich das Script verstanden habe wir an mysensors ja der V_Level Wert übertragen, nur ist mir nicht klar wie der gebildet wird und warum es nach einige Zeit zu diesem fehlerhaften Wert kommt. Vielleicht kann ich da noch eine kleine Hilfestellung zu erhalten. Vielen Dank

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload CAPTCHA.