Feinstaubsensor - alternative Firmware (luftdaten.info)

Begonnen von JoWiemann, 03 Juli 2017, 16:09:14

Vorheriges Thema - Nächstes Thema

jonny62

#225
Hallo Jörg!
Habe heute das neue Zip-File von der FW NRZ-2017-100-AF-022 im ersten Posting runtergeladen und mit allen enthalten Files 1:1 übernommen. Weder in BME280.ino noch in BME280.h habe eine Definition für ,,BME280_set_addr" gefunden.

Jonny

JoWiemann

Zitat von: jonny62 am 30 Dezember 2017, 18:29:54
Hallo Jörg!
Habe heute das neue Zip-File von der FW NRZ-2017-100-AF-022 im ersten Posting runtergeladen und mit allen enthalten Files 1:1 übernommen. Weder in BME280.ino noch in BME280.h habe eine Definition für ,,BME280_set_addr" gefunden.

Jonny

Hallo Jonny,

waren falsche Versionen im Zip. Ich habe ein neues hoch geladen.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

jonny62

Zitat von: JoWiemann am 30 Dezember 2017, 18:52:52
Hallo Jonny,

waren falsche Versionen im Zip. Ich habe ein neues hoch geladen.

Grüße Jörg

Danke, jetzt ging das Kompilieren bei mir ohne Fehler

Jonny

JoWiemann

Hallo,

im ersten Post gibt es eine neue Version:

Version: NRZ-2017-100-AF-025
- BME680 auf Basis der Adafruit-Lib integriert
    BME680_temperature
    BME680_humidity
    BME680_pressure
    BME680_pressure_nn
    BME680_gas_resistance -> aktueller Gas-Wert | mittel der 10 letzten Werte | H_WERT | G_WERT | AIR_QUALITY
                                            Humidity element was : H_WERT of 0.25
                                            Gas element was :         G_WERT of 0.75
                                            Air Quality = AIR_QUALITY % derived from 25% of Humidity reading and 75% of Gas reading
                                           100% is good quality air
- Auslieferung der Web-Seiten überarbeitet

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

igami

Zitat von: JoWiemann am 30 Dezember 2017, 20:31:02
    BME680_gas_resistance -> aktueller Gas-Wert | mittel der 10 letzten Werte | H_WERT | G_WERT | AIR_QUALITY
                                            Humidity element was : H_WERT of 0.25
                                            Gas element was :         G_WERT of 0.75
                                            Air Quality = AIR_QUALITY % derived from 25% of Humidity reading and 75% of Gas reading
                                           100% is good quality air
Wenn ich das richtig verstehe stehen im BME680_gas_resistance 5 Werte durch | getrennt?
Ich habe nur noch nicht ganz verstanden was die Werte sind, also welche Einheiten.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

JoWiemann

#230
Hallo Igami,

ich bin mir noch nicht sicher, ob ich das so lasse.

Die ersten beiden Werte haben die Einheit Ohm, die anderen drei %.

Der Sensor gibt die Gaskonzentration in Ohm wieder. (Siehe hier auch die Beschreibung bei Bosch). Der erste Wert ist der letzte gemessene, der zweite das Mittel der letzten 10 Messungen. Dieses Mittel geht in die Berechnung der Luftqualität ein. Der dritte Wert gibt den Anteil der Luftfeuchtigkeit an der Qualität in %, der vierte Wert den Anteil der Gasmessung in % an. Der letzte Wert dann die ermittelte Luftqualität in %. Je höher der Wert, desto besser die Luftqualität. Im Source ist hierzu mehr beschrieben: See more at: https://github.com/G6EJD/BME680-Example

hum_score/100 = Dritter Wert
gas_score/100 = Vierter Wert

Air Quality = hum_scrore + gas_score = Fünfter Wert

// Serial.println("Air Quality = "+String(air_quality_score,1)+"% derived from 25% of Humidity reading and 75% of Gas reading - 100% is good quality air");
// Serial.println("Humidity element was : "+String(hum_score/100)+" of 0.25");
// Serial.println("     Gas element was : "+String(gas_score/100)+" of 0.75");
// if (r < 120000) Serial.println("***** Poor air quality *****");
// Serial.println();
      
// if ((getgasreference_count++)%10==0) GetGasReference();
// Serial.println(CalculateIAQ(air_quality_score));
// Serial.println("------------------------------------------------");


Die Luftqualität kann nun so als Text ausgegeben werden:

Meine_Luftqualität = CalculateIAQ(hum_scrore + gas_score);

String CalculateIAQ(float score){
   String IAQ_text = "Air quality is ";
   score = (100-score)*5;
   if      (score >= 301)                  IAQ_text += "Hazardous";
   else if (score >= 201 && score <= 300 ) IAQ_text += "Very Unhealthy";
   else if (score >= 176 && score <= 200 ) IAQ_text += "Unhealthy";
   else if (score >= 151 && score <= 175 ) IAQ_text += "Unhealthy for Sensitive Groups";
   else if (score >=  51 && score <= 150 ) IAQ_text += "Moderate";
   else if (score >=  00 && score <=  50 ) IAQ_text += "Good";
   return IAQ_text;
}

Wenn gwünscht, könnte ich das Ergebnis mit ausgeben. Würde das aber gerne als Möglichkeit eines UserReading in Fhem belassen wollen.

Gesendet von iPhone mit Tapatalk

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

igami

Dann warte ich erstmal noch bis du dir sicher bist. Man kann ja über das Attribut rawReadings die Werte bereits jetzt anzeigen lassen.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

smit

Hallo Zusammen,

vielleicht hab ich es in dem langen Thread nur übersehen, aber: Gibt es eine Logging-Funktion für die Daten? Also Sensor-ID, Datum, Uhrzeit, PM-10, PM-2.5, Temperatur, Luftfeuchtigkeit.

Vielleicht bin ich auch nur zu neu in FEHM um das gleich zu erkennen, wie es funktioniert... :-)

Danke schon fürs "erleuchten".

Schöne Grüße,
Stephan.

igami

Zitat von: smit am 02 Januar 2018, 10:28:30
Hallo Zusammen,

vielleicht hab ich es in dem langen Thread nur übersehen, aber: Gibt es eine Logging-Funktion für die Daten? Also Sensor-ID, Datum, Uhrzeit, PM-10, PM-2.5, Temperatur, Luftfeuchtigkeit.

Vielleicht bin ich auch nur zu neu in FEHM um das gleich zu erkennen, wie es funktioniert... :-)

Danke schon fürs "erleuchten".

Schöne Grüße,
Stephan.
Zum Loggen bieten FHEM FileLog oder DbLog. Informationen dazu findest du in der Commandref und im Wiki
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

JoWiemann

Hallo,

anbei eine neu Beta-Version. Ich habe einiges überarbeitet, unter anderem die Konfigurationsseite der Sensoren. Bitte intensiv testen. Danke.

! ACHTUNG!
Bitte vor dem Aufspielen der Firmware die aktuelle Konfiguration löschen. Ansonsten Murks !!!

Beim BME680 wird nun für Luftqualität im JSON folgendes bereit gestellt:

"BME680_air_quality","value":"1|500|0.23|0.75|98.10"}

Luftqualität | gas resistance in kOhm | Anteil Luftfeuchte in % | Anteil Gas resistance in % | Gesamtprozentfaktor in %

Luftqualität:
6 = "Hazardous";
5 = "Very Unhealthy";
4 = "Unhealthy";
3 = "Unhealthy for Sensitive Groups";
2 = "Moderate";
1 = "Good";

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Yosh76

Hi,
seit der Beta werden meine Sensordaten (BME280, SD011) nicht mehr an luftdaten.info gesendet. Bei FHEM bleibt alles beim alten.
VG,
Yosh76

JoWiemann

Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Yosh76

Danke  :D
Gerade wieder zurück auf die alte Version - jetzt werden wieder alle Daten übertragen.
Ich habe das nur bemerkt, da ich heute eine Mail zu "Sensor sendet keine Daten mehr" bekommen habe...

Yosh76

Hallo,

kurz und knapp nach zig Stunden Test mit zwei neuen Sensoren (Wemos D1, BME280, SDS011) und eigenem kompillieren habe ich eine Korrektur zu oben (sendet wieder alle Daten):

1. Luftdaten.info: Beta und Dezemberversion liefern beide nicht ab. In der Beta fehlt die Routine void sendLuftdaten komplett.
2. mavdavi: Dezember Version: Liefert wenigstens noch BME Daten ab, SDS fehlt (egal, wie benannt). Beta: nix.
3. opensensemap: Führt bei beiden Versionen zu Crash nach Start (Wemos D1 sowie mit NodeMCU getestet), wenn die ID eingetragen ist. Es gibt einen Bug im Tracker dazu: dieser basiert auf einer dieser Versionen.

Ich bin leider erst gerade darauf gekommen (weil ich dachte die Firmware wäre ok und es wäre ein lokaler Fehler) mal die Originale von GitHub zu ziehen und zu kompillieren.
Damit ist alles ok - BME liefert Daten, SDS011 liefert Daten, openSenseMap bekommt Daten, Luftdaten.info sowie mavdavi erhalten Daten, FHEM liest mit Deinem Modul korrekt aus...
Um Fehler in der Config zu vermeiden wurde diese manuell immer wieder gelöscht. Z.T. (weil ich dachte es wäre kein Firmware Fehler  :o ) habe ich immer wieder flammneue Wemos geflasht...
Ich bleibe jetzt erstmal bei der Originalen.

mart1n

Hallo,
ich weiß nicht ob ich mich hier einfach an dieses Thema anhängen kann aber ich habe kein passenderes gefunden.

Ich habe mir auch so einen Sensor zusammengebaut und würde diesen aber gern noch um einen Sensor für CO/NO2 erweitern. Der BME680 gibt ja nur die Luftqualität an aber keine einzelnen Wert für bestimmte Gase. Einen Sensor der einzelne Gase messen kann habe ich mir schon besorgt (http://wiki.seeed.cc/Grove-Multichannel_Gas_Sensor/). Über I2C sollte der auch anzuschließen sein aber ich weiß nicht genau wie ich den Sensor in die Firmware integrieren kann. Kann mir jemand einen Schub in die richtige Richtung geben oder besteht vielleicht noch bei anderen Interesse diese Daten zu messen und man kann sich hier zusammentun um eine passende Firmware zu entwickeln ?

Viele Grüße,
Martin