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);
}