Feinstaubsensor - alternative Firmware (luftdaten.info)

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

Vorheriges Thema - Nächstes Thema

antidote

Hallo Jo,

Zunächst vielen Dank und meine Hochachtung für die Arbeit!
Bei mir geht das Anlegen eines SDS011 auch nicht mehr. I hatte den Sensor vergangenes Wochenende eingebaut und die neue FW aufgespielt. Danach lief der SDS ständig und war nicht mehr ansprechbar. Ich hatte vermutet, dass meine manchmal etwas unvorsichtige 'Hotplug' - Arbeitsweise die Interfaces des SDS zerstört hatte. Doch ein jungfräulicher zweiter Sensor zeigte das gleiche Verhalten.
Danach hatte ich mir den Sketch angeschaut und etwas experimentiert. Beim Anlegeversuch des SDS geht etwas schief, sodass der Sensor nicht in der config.json konfiguriert wird. Ich habe nun vorübergehend in Zeile 1063

sensors[0].s_choosen=1;

eingesetzt. Danach ist der SDS wieder auf der Config-Seite verfügbar.
Das ist natürlich nur mein vorübergehender Fix. Aber vielleicht hilft die Info beim Eingrenzen des Fehlers.

Gruß
Andreas

JoWiemann

Hallo Andreas,

danke für die Rückmeldung. Ich habe wohl beim Anlegen des Sensors und der Umstellung auf sofortige Initialisierung, so dass man nicht neu starten muss, etwas nicht beachtet. Komme aber erst im Laufe der Woche dazu.

Grüße Jörg


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

JoWiemann

Hallo,

neue Version im ersten Post.

Beim NEO-6M-V2, hier kann sowohl die Spannungsversorgung als auch die Datenleitung (integrierter Level Shifter) 5V betragen, habe ich festgestellt, dass er mit direkter 5V Spannungsversorgung stabiler läuft.

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

antidote

Danke funktioniert wieder! Damit hat sich das Problem wohl erledigt.

In der Zwischenzeit hatte ich einen zweiten BME280 auf 0x77 angeschlossen und dabei bemerkt, dass sich die Werte des ersten auf Adresse 0x76 "sprunghaft" änderten. Ich denke es liegt and den ausgelesenen Kalibrierwerten, welche für jeden Sensor einzigartig sind. Also sollten diese 2x vorhanden sein. Ich denke aber, dass die momentane Zuweisung von bme280_calib_data in BME280.h nur einen Vektor von Kalibrierdaten beherbergen kann (das ist auch in der originalen Adafruit_BME280.h Datei so). Also wird wohl die jeweils letzte bekannte Kalibrierung verwendet, was den Sprung beim ersten Sensor erklärt.
Ich habe deshalb mal den struct um eine Dimension erhöht und eine neue Index-Variable _bme280_0L1H eingeführt, welche je nach Sensoradresse den Index auf 0 oder 1 setzt:


...
_bme280_i2caddr = addr;
    if (addr == BME280_ADDRESS_LOW) {
      _bme280_0L1H = 0;
    } else {
      _bme280_0L1H = 1;
    }
...


Nach dem Test zeigen nun beide benachbarten Sensoren sehr ähnliche Werte im Gegenteil zum Original an (siehe Anhang).

Mein Feinstaubsensor befindet sich nahezu an der gleicher Stelle wie mein TCM97 Aussentemperatursensor (Temp + Hum). Mir fiel auf, dass, obwohl die BME280 weit genug vom ESP bzw. SDS entfernt sind, deren gemessenen Temperaturwerte überschätzt scheinen. Im Sketch fiel mir auf, dass der BME im Normal-Mode betrieben wird (mit nur 0.5ms zwischen den Messungen). Das trägt zu einem höheren Energieverbrauch und damit erhöhter Eigenerwärmung bei. Laut Datenblatt wird für Wetterstationen der Forced-Mode ohne OS, IIR favorisiert (S. 19) um diese Problem zu minimieren (Sensor wird nur auf Nachfrage aktiv). Ich habe dass mal probiert mit:


void BME280_setSampling(sensor_mode mode = MODE_FORCED,
sensor_sampling tempSampling  = SAMPLING_X1,
sensor_sampling pressSampling = SAMPLING_X1,
sensor_sampling humSampling   = SAMPLING_X1,
sensor_filter filter          = FILTER_OFF,
standby_duration duration     = STANDBY_MS_1000
);


Damit die Auslösung der Messung funktioniert muss vor dem Abfragen der Sensorwerte ein

BME280_takeForcedMeasurement();

gemacht werden, ansonsten werden nur die alten Werte wieder gelesen. Meine gemessenen Werte sind jetzt ca. 0.5K an den TCM97 herangerückt. Auch sind die Ergebnisse beider BME280, welche aus unterschiedlichen Chargen sind, relativ deckungsgleich. Die drei geänderten Daten sind angehängt, vielleicht könnte man das so übernehmen.

Könnten diese Probleme auch bei den BMP Sensoren bestehen?

Gruß
Andreas

Christoph Morrison

Sehen bei euch die µg/m³ auch so kaputt aus wie bei mir?


JoWiemann

Hm,

das Problem habe ich selten immer mal wieder. Nach einem neu compilieren ist es dann wieder oK.

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

JoWiemann

Zitat von: antidote am 20 Januar 2019, 16:19:36
Danke funktioniert wieder! Damit hat sich das Problem wohl erledigt.

In der Zwischenzeit ...
Gruß
Andreas

Danke Andreas,

werde ich mir die Tage ansehen und Deine Änderungen übernehmen.

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

Morgennebel

Zitat von: JoWiemann am 18 Januar 2019, 08:19:16
neue Version im ersten Post.

Ich hab beide Versionen (mit/ohne debug) heruntergeladen und auf zwei NodeMCUs geflasht (incl. config löschen und wipe).
Diese machen jetzt jedoch kein luftsensor_xxx-Netzwerk auf, sondern ein ESP_9B92D5 (ein Beispiel). Diesem kann ich nicht
beitreten, um die NodeMCU zu konfigurieren.

Fehlermeldung ist "Could not be joined"...

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

JoWiemann

Zitat von: Morgennebel am 24 Januar 2019, 18:12:27
Ich hab beide Versionen (mit/ohne debug) heruntergeladen und auf zwei NodeMCUs geflasht (incl. config löschen und wipe).
Diese machen jetzt jedoch kein luftsensor_xxx-Netzwerk auf, sondern ein ESP_9B92D5 (ein Beispiel). Diesem kann ich nicht
beitreten, um die NodeMCU zu konfigurieren.

Fehlermeldung ist "Could not be joined"...

Danke, -MN

Wetter am Wochenende soll schlecht werden und meine Frau gibt mir hoffentlich etwas Zeit :-)

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

magentouser

#294
Hallo, hat jemand einen BME680 bzw vem6070 ? GPS hatte ich ja schon gelesen das es vorhanden ist.
habe eine Version aus der Original Firmware , die den MQ135,BME680,vem6070 und tsl2561 beinhaltet und Update vom eigenen Server.

da ich den BME, Vem &6 GPS selbst  noch nicht habe, wäre es schön wenn mal jemand testen könnte.

igami

#295
Wie muss ich denn den TSL2561 anschließen?

Edit: habe die Antwort in der airrohr-firmware-680.ino gefunden

/* Extensions connected via I2C:                                 *
/* HTU21D (https://www.sparkfun.com/products/13763),             *
/* BMP085/180, BMP280, BME280, BME680, TSL2561, VEML6070,        *   
/* OLED Display with SSD1306 (128x64 px)                         *
/*                                                               *
/* Wiring Instruction                                            *
/* (see labels on display or sensor board)                       *
/*      VCC       ->     Pin 3V3                                 *
/*      GND       ->     Pin GND                                 *
/*      SCL       ->     Pin D4 (GPIO2)                          *
/*      SDA       ->     Pin D3 (GPIO0)                          *
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

Christoph Morrison

Ich könnte ein bisschen Hilfe gebrauchen.

Ich habe zwei Sensoren, die ich gerne noch an den NodeMCU koppeln möchte. Der eine ist ein J305 Geiger-Müller-Zählrohr auf einer Platine (Beispiel), das relativ einfach CPM misst (zieht eine Leitung auf High für jeden Impuls, also nix kompliziertes mit I2C oder SPI). Der andere Sensor ist der GW1 von ELV. Der hat drei Ausgänge, die jeweils Low gehen, wenn eine Warnung ausgelöst, ein Blitz detektiert oder Entwarnung ausgelöst wird (Low imho, könnte auch high sein, glaube aber Low).

Ich dürfte noch vier freie GPIO haben (aktuell hängen an dem NodeMCU bei mir ein DHT22, ein BME680, der SDS011. Meine konkreten Fragen sind:
a) Wie verdrahte ich die Sensoren? Einfach einen Pin hängen, ggf. mit einem Pullup/Pulldown? Was mache ich mit GND vom GW1 und dem J305? Muss ich die mit einem OC trennen?
b) Wie lese ich die aus? Einfach einen Interrupt auf den Pin machen und dann zählen (beim J305/Blitz vom GW1) / Status merken (beim GW1)?

Bin gerade ein wenig hilflos und kenne mich mit Arduinos etc. noch relativ wenig aus, will das aber lernen.



antidote

Hallo *,

Ich habe zwei BME280 am Sensor angeschlossen (siehe weiter oben). Da die Daten des SDS und des ersten BME (auf 0x76) an Luftdaten.info bzw. Opensensemap gesendet werden, wird eine Modifikation des Default-Bezeichners 'BME280' des zweiten BME (0x77) verhindert, welcher ja nicht an Luftdaten.info etc. sendet. Dadurch erscheinen die Werte beider Sensoren jeweils mit dem gleichen Präfix 'BME280_', nacheinander im /data.json. Das FHEM Modul kann aber das mehrfache Auftreten gleicher Bezeichner nicht unterscheiden, sodass nur die Werte des letzten 'Auftretens' übernommen werden (https://forum.fhem.de/index.php/topic,66674.msg911466.html#msg911466). 
Aus diesem Grund habe ich die AF etwas angepasst, sodass die Bezeichner für die Sensoren, welche nicht an Luftdaten.info etc. senden, editiert werden können. Anbei der Sketch mit den kommentierten Änderungen (inkl. der gelösten Kalibrierproblematik wenn zwei gleiche BME280 verwendet werden, s.o.) und ein Diff zu AF062 sowie eine kompilierte Version. Bei mir funktioniert damit alles wunderbar, vielleicht könnte noch jemand überprüfen.

Gruß
Andreas

Astrofreak85

Hi,

ich hab jetzt erstmals bei einem Sensor die Firmware von hier ausprobieren wollen...
Mit der original luftdaten firmware ging alles soweit super.

Mit der Firmware hier eigentlich auch, ich kann aber meinem BMP180 nicht hinzufügen, ich bekommen dann immer folgende Anzeige:

SensorenSensoren  (Sensor: BMP kann nicht initialisiert werden!)