Projekt: Raum(-luft)sensor (Temp, Hum, Co2, VOC, LUX)

Begonnen von herrmannj, 21 Januar 2019, 00:24:44

Vorheriges Thema - Nächstes Thema

juergs

#240
Zum BME680 noch eine interessant klingende "Alternative" :
https://github.com/kriswiner/BME680

oder der NCS811, der Nachfolger des iAQ:
https://github.com/kriswiner/CCS811

Starsurfer

Moin,
ich habe jetzt die Abfrage des BME280 auf 2,5min hoch gesetzt, das hat schon deutlich was gebracht.
Ich habe jetzt nur noch 1 Grad zu viel, allerdings ist die Luftfeuchtigkeit immer noch viel zu niedrig.
Eventuell werde ich noch mal einen Si7021/HTU-21 testen und den BME nur für den Luftdruck nehmen.

Kennt ihr vielleicht noch andere Sensoren, die "Genauer" sind? Wie ist das den mit dem BME680?

TFT habe ich gestern auch mal getestet, aber mein 2,8 Zoll hat wieder andere Pin Beschriftungen, als normal und bin deshalb nicht weiter gekommen. Allerdings werde ich es wohl doch mit einem Nexus versuchen, da ich gerne 4.3 Zoll hätte. Ich habe hier noch so schone 4.3 Zoll TFT's liegen, aber die scheiden aufgrund der Anzahl der Pins leider aus  :o
Oder ich versuche nen ESP an den Mega zu bekommen, damit ich die noch verwenden kann  ;D
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

juergs

#242
ZitatKennt ihr vielleicht noch andere Sensoren, die "Genauer" sind? Wie ist das den mit dem BME680?

Das mit der Luftfeuchte ist in der Tat ein Sache für sich.
Ich stufe bei mir empirisch die Luftfeuchte auf ca. 48% ein, die ein BME680 anzeigt.
LaCrosse-Sensor (Temp/Hum) #1  51%    19.3 °C
LaCrosse-Sensor (Temp/Hum) #2  45%    20.6 °C
Pearl NCS7245    (Temp/Hum)       40%    21.0 °C
CUL_TX_123      (DHT22)               40.9% 20.6 °C
LaCrosse_25      (BME680)             47%    20.6 °C
LaCrosse_0CT:   (BME680)             30%    26    °C
LaCrosse_10T:   (BME680)             33%    25.3 °C
LaCrosse_76T:   (BME680)             31%    26.9 °C 

Also ohne Kalibrierung und Offsetkompensation scheint das nichts zu werden, oder?

Die hohen Temperaturen der BMEs kommen durch die Nähe zur Heizung, was auch die niedrigen HUM-Werte erklären könnte.
Aber alle in einem Bereich von ca. 5qm ...

Jürgen


juergs

#243
Noch mal zu meinen Raspi-Abstürzen, weil jetzt täglich um ca. 04:00 Uhr:

Habe mein Brightness-Eingang nicht beschalten, d.h. er floatet.
So wie es aussieht wird jede Änderung ohne definierte Zykluszeit übertragen ....
Muss ich noch mal genauer anschauen ... und alles entkoppeln.

herrmannj

das mit der Zykluszeit verstehe ich nicht. Leg den A0 doch auf Masse. Die Abstürze haben mit Sicherheit eine andere Ursache ...

juergs

#245
Zitatdas mit der Zykluszeit verstehe ich nicht.
Sorry, habe mich falsch ausgedrückt: "gefühlt".  ;)

Mein bestellter MH-z19 ist angekommen ...  :)

Starsurfer

Wie mißt du die Helligkeit?

Hat schon mal jemand den SHT31-D verwendet und kann was darüber sagen?
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

herrmannj

Mein BlueDot BME680 ist eingetroffen. In Bezug auf VOC ist er im burn-in, sprich (VOC) abwarten ...

Temp ist ok, mehr oder weniger identisch mit 2 HM Thermometer
Hum ist ungenau, ca 5.5%. Ich verwende hier (wie auch beim BME280) einen Offset, das scheint auch zu funktionieren.
Pressure passt in etwa (vs 1000.9 hPa Netz)

THP ist der BME280, THPV der BME680, dort ist R die Resistance (VOC)

23:48:15.690 -> F:IAQ;C:615;V:171;R:179710;
23:48:15.830 -> F:CO2;C:499;
23:48:25.344 -> F:THP;T:22.0;H:35.9;P:995.8;
23:48:25.719 -> F:THPV;T:22.1;H:35.1;P:996.0;R:64212;
23:48:25.719 -> F:IAQ;C:615;V:171;R:179710;
23:48:25.813 -> F:CO2;C:502;
23:48:35.326 -> F:THP;T:22.0;H:35.9;P:995.7;
23:48:35.701 -> F:THPV;T:22.1;H:35.1;P:996.0;R:64360;
23:48:35.701 -> F:IAQ;C:607;V:169;R:180597;
23:48:35.842 -> F:CO2;C:505;
23:48:45.355 -> F:THP;T:22.0;H:35.9;P:995.8;
23:48:45.730 -> F:THPV;T:22.2;H:35.0;P:996.0;R:64558;
23:48:45.730 -> F:IAQ;C:604;V:168;R:180953;
23:48:45.823 -> F:CO2;C:505;


Man findet im Netz eine ganze Menge Aufsätze zum Thema MOX und HUM oder drift, mal mehr mal weniger hilfreich. Ich denke der BME680 wird sich auch ohne die BSEC libs einsetzen lassen, wenn man die ABC speichert eventuell sogar besser.

@Papa: ich habe den Track zum Stand der Platine verloren. Da war noch ein update mit dem Pfosten gewünscht oder ist die bestellbar ? Ich konnte die Bahnen nicht komplett überprüfen weil man von oben nicht immer das unten sieht. Außerdem scheinen ich Bahnen an vielen Stellen zu berühren aber Du weißt offensichtlich was Du machst, von mir aus also ready.

vg
Joerg

Papa Romeo

Das in den Bildern ist der letzte Stand, da ich keine weiteren Infos zum Gehäuse habe, ob das so steht oder wesentliche Änderung erfolgt sind, bzw. im Schaltplan Pin-Belegungen korrigiert oder geändert wurden.

Ich hab mal versucht das Ganze etwas "aufzudrösseln", damit Lage, Bezeichnungen usw. der Bauteile besser zu erkennen ist.

Bitte nochmal kontrollieren.

1,27 mm Pfostenleiste links: Bitte checken ob die Lage bzw. Belegung stimmt, da Gnd und Vcc von der "normalen" Belegung abweicht.
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

juergs

#249
Ich habe mir noch mal wegen den Raspi-Abstürzen fogendes angeschaut und fand es informativ:

https://blog.chanoa.de/fhem-performance
https://forum.fhem.de/index.php/topic,16103.msg111482.html#msg111482

Zitatactive-timers: 3; max-active timers: 3; max-timer-load: 1  min-tmrHandlingTm: 0.9ms; max-tmrHandlingTm: 11.4ms; totAvgDly: 1.5ms

name                                     function                               max    count      total  average   maxDly   avgDly TS Max call     param Max call
FileLog_SLinkIAQC_FAF074                 FileLog_Get                           3184        1    3184.90  3184.90     0.00     0.00 09.02. 10:47:57 HASH(FileLog_SLinkIAQC_FAF074); FileLog_SLinkIAQC_FAF074; CURRENT; INT; 2019-02-09_00:00:00; 2019-02-09_23:59:59; 4:SLinkIAQC_FAF074.tvoc\x3a::; 4:SLinkIAQC_FAF074.temperature\x3a::
FileLog_bme680_cc                        FileLog_Get                             72        3     139.86    46.62     0.00     0.00 09.02. 10:47:57 HASH(FileLog_bme680_cc); FileLog_bme680_cc; CURRENT; INT; 2019-02-09_00:00:00; 2019-02-09_23:59:59; 4:bme680_cc.T\x3a::; 4:bme680_cc.humidity\x3a::
tmr-LaCrosseGateway_OnConnectTimer       HASH(0x2a69d68)                         11        1      11.05    11.05     1.49     1.49 09.02. 10:47:14 HASH(LGW)
LGW                                      LaCrosseGateway_Read                    10      131     293.12     2.24     0.00     0.00 09.02. 10:48:04 HASH(LGW)
FileLog_SLinkIAQC_FAF074                 FileLog_Log                              5      112      75.15     0.67     0.00     0.00 09.02. 10:46:50 HASH(FileLog_SLinkIAQC_FAF074); HASH(SLinkIAQC_FAF074)
FileLog_EC3000_7C0C                      FileLog_Log                              5       11      17.82     1.62     0.00     0.00 09.02. 10:47:31 HASH(FileLog_EC3000_7C0C); HASH(EC3000_7C0C)
FileLog_LaCrosse_25                      FileLog_Log                              5       16      16.07     1.00     0.00     0.00 09.02. 10:48:04 HASH(FileLog_LaCrosse_25); HASH(LaCrosse_25)
MapleCUL433                              CUL_Read                                 4        4      18.45     4.61     0.00     0.00 09.02. 10:46:31 HASH(MapleCUL433)
FileLog_bme680_cc                        FileLog_Set                              3        1       3.58     3.58     0.00     0.00 09.02. 10:47:54 HASH(FileLog_bme680_cc); FileLog_bme680_cc; ?
tmr-FW_closeInactiveClients              0                                        1        2       2.34     1.17     1.59     1.44 09.02. 10:47:13 0
WEB                                      FW_Read                                  1        3       3.97     1.32     0.00     0.00 09.02. 10:47:54 HASH(WEB)
FileLog_bme680_cc                        FileLog_Log                              0        1       0.80     0.80     0.00     0.00 09.02. 10:47:20 HASH(FileLog_bme680_cc); HASH(bme680_cc)
FileLog_LaCrosse_08                      FileLog_Log                              0       13       8.51     0.65     0.00     0.00 09.02. 10:47:15 HASH(FileLog_LaCrosse_08); HASH(LaCrosse_08)
eventTypes                               eventTypes_Notify                        0      169      43.99     0.26     0.00     0.00 09.02. 10:48:04 HASH(eventTypes); HASH(LaCrosse_25)
FileLog_CUL_TX_123                       FileLog_Log                              0        2       1.38     0.69     0.00     0.00 09.02. 10:46:33 HASH(FileLog_CUL_TX_123); HASH(CUL_TX_123)
FileLog_CUL_TX_105                       FileLog_Log                              0        1       0.69     0.69     0.00     0.00 09.02. 10:47:44 HASH(FileLog_CUL_TX_105); HASH(CUL_TX_105)
FileLog_CUL_TX_106                       FileLog_Log                              0        1       0.67     0.67     0.00     0.00 09.02. 10:47:45 HASH(FileLog_CUL_TX_106); HASH(CUL_TX_106)
Logfile                                  FileLog_Log                              0      169      41.57     0.25     0.00     0.00 09.02. 10:48:04 HASH(Logfile); HASH(LaCrosse_25)
allowed_WEB                              allowed_Authenticate                     0        3       0.78     0.26     0.00     0.00 09.02. 10:47:54 HASH(allowed_WEB); HASH(WEB_192.168.xxx.yyy_54892); HASH(0x2424cb0)
LGW                                      LaCrosseGateway_Notify                   0      169       9.83     0.06     0.00     0.00 09.02. 10:47:36 HASH(LGW); HASH(EC3000_7C0C)
allowed_WEB                              allowed_Authorize                        0       11       0.74     0.07     0.00     0.00 09.02. 10:46:18 HASH(allowed_WEB); HASH(WEB_192.168.xxx.yyy_54882); cmd; apptime
FileLog_SLinkIAQC_FAF074                 FileLog_regexpFn                         0        1       0.09     0.09     0.00     0.00 09.02. 10:47:57 FileLog_SLinkIAQC_FAF074; 4:SLinkIAQC_FAF074.tvoc\x3a:: 4:SLinkIAQC_FAF074.temperature\x3a::
FileLog_bme680_cc                        FileLog_regexpFn                         0        3       0.19     0.06     0.00     0.00 09.02. 10:47:57 FileLog_bme680_cc; 4:bme680_cc.T\x3a:: 4:bme680_cc.humidity\x3a::
WEB                                      FW_Notify                                0      169       3.51     0.02     0.00     0.00 09.02. 10:46:45 HASH(WEB); HASH(SLinkIAQC_FAF074)
bme680_cc                                CustomSensor_Set                         0        1       0.04     0.04     0.00     0.00 09.02. 10:47:54 HASH(bme680_cc); bme680_cc; ?
WEB_192.168.xxx.yyy_54901                 FW_Read                                  0        1       0.00     0.00     0.00     0.00                 

ZitatMulticast wird aber von docker nicht unterstützt. Wenn es als container laufen soll, muss dieser mit der Option "--network=host" gestartet werden.
Die 2. FHEM-Installation unter Docker habe ich mal abgeschalten und lagere sie auf ein RASPI-Zero aus ...

Sorry, wenn zu Off-Topic...

Jürgen

herrmannj

Moin Papa,

Gehäuse: ich zitiere "80% machen ist besser als 100% wollen;). Wenn die Platine erstmal da ist sieht man bestimmt noch Sachen die angepasst werden können/müssen. Ich schau mir die Bahnen morgen an, denke aber das wird passen also ab dafür. https://jlcpcb.com ? Irgendwas beachten ?

Moin Jürgen,

die Abstürze kommen von was anderem. Was steht denn im log ?
FileLog: würde ich begrenzen. Mit fhem Bordmitteln (readingFnAttribute->event-min-interval), dann wird die Anzeige aber auch nur entsprechend des Intervalls aktualisiert. Sonst SlinkIAQ -> dummy ,bei dem event-min-interval und den dann loggen.

Multicast und Docker habe ich "befürchtet", liegt aber eben am Docker. Ansonsten verwende ich Multicast genau weil es von verschiedenen Instanzen gelesen werden kann.

Btw: mich würde interessieren welche Widerstandswerte ein eingebrannter BME680 liefert (320°,150ms, 10 Sekunden intervall). Kommst Du da problemlos ran ?

vg
joerg

juergs

ZitatMoin Jürgen,

die Abstürze kommen von was anderem. Was steht denn im log ?
FileLog: würde ich begrenzen. Mit fhem Bordmitteln (readingFnAttribute->event-min-interval), dann wird die Anzeige aber auch nur entsprechend des Intervalls aktualisiert. Sonst SlinkIAQ -> dummy ,bei dem event-min-interval und den dann loggen.
Multicast und Docker habe ich "befürchtet", liegt aber eben am Docker. Ansonsten verwende ich Multicast genau weil es von verschiedenen Instanzen gelesen werden kann.
Btw: mich würde interessieren welche Widerstandswerte ein eingebrannter BME680 liefert (320°,150ms, 10 Sekunden intervall). Kommst Du da problemlos ran ?

Hallo Jörg,
danke für die Hinweise, muss leider priorisieren ..  die Abstürze kommen später dran. Der Raspi bleibt belibt einfach, mit grüner LED a,n stehen ...
Mit dem PiZero ist es dann eh entkoppelt....

Die BME680-Widerstandswerte kann ich Dir gerne liefern.  (evtl. erst morgen ..)


@Papa
hast Du für die "Lochraster-Fraktion" ein aktuelles Schaltbild mit den Erweiterungen?

Grüße,
Jürgen

herrmannj

Schaltbild bin eigentlich ich der Bringschuld, aber auch eher morgen

juergs

#253
Hallo Jörg,

ZitatMan findet im Netz eine ganze Menge Aufsätze zum Thema MOX und HUM oder drift, mal mehr mal weniger hilfreich. Ich denke der BME680 wird sich auch ohne die BSEC libs einsetzen lassen, wenn man die ABC speichert eventuell sogar besser.

Ich weiß zwar nicht, was Du mit MOX + ABC meinst, aber wenn Du zuversichtlicht bist, nur zu ... ;D  ;)

Zitatburn-in, sprich (VOC/IAQ) abwarten ...

ca. 4 Tage ...

Verhalten mit BSEC ist so, dass nach dem Einschalten eine Phase mit IAQ=25 für ca. 5 Minuten kommt, danach geht der IAQ Wert für ca. 2 Minuten auf 0 und fängt dann erst an realistische Werte anzunehmen ...
Wobei BSEC die Möglichkeit bietet auch Werte abzuspeichern und wieder aufzurufen ... diese Funktionalität haben wir aber nicht genutzt.
Liegt aber vielleicht auch daran, dass  Bosch die Vorgehensweise nicht unbedingt "verständlich" genug erklärt ...  ;)

Anbei Beispiel-Readings mit GAS-R in Ohm und IAQ-Werten... (für IAQ werden Temperatur und Luftfeuchte mit dem Widerstandswert verrechnet).
Auffällig ist bei mir, die meiner Meinung nach, zu niedrige Luftfeuchte. Allerdings ohne klare Kalibierung, schwer einzuschätzen.

... und  heutiger eher etwas unüblicher VOC/IAQ Verlauf.
1. iAQCore + DHT22
2./3./4. BME680

Interessant, wie sich die Kurven ähnlich sind ...  :)
Könnte den Tiefpassfilter des IAQ-Wertes noch etwas besser gestalten...

herrmannj

#254
Hallo Jürgen,

MOX = Metalloxidsensor, der verändert seinen Widerstandswert durch Elektronenaustausch bei Anwesenheit der Zielgase
ABC = Automatic Baseline Correction, damit wird Exemplar Streuung und Drift ausgeglichen.

Ohne Kenntnis der  BSEC Lib habe ich auch die 5 Minuten nach dem Start. Solange braucht der Sensor min um halbwegs stabil zu sein. Das verrechnen mit Temp/Hum ist mir logisch. Wirft witzigerweise auch die Frage auf wie der IAQ-C das macht, evtl ignorieren die das?

Ich nehme auch beim BME680 nicht den rohen Widerstandswert sondern verechne schon: R(clean) / R(gas) und Tiefpass. Entsprechende Korrekturen für Temp und Hum muss ich noch entwickeln. Nach 24h sieht das aber jetzt schon sehr brauchbar aus, jetzt kommen halt Werte zwischen 1.0 (clean) und 1.25 (~ca 300ppm vom IAQ) raus. Ziel wäre auch beim BME680 auf ppm zu kommen.

Die Hum korrigiere ich mit einem festem Offset, das scheint sich zu bewähren und ist über die Woche beim BME280 konsistent zu 2 Vergleichs Thermometern.

Hättest Du einen Wemos und einen BME680 "über" um ihn in Deinem "cluster" mitlaufen zu lassen wenn ich Dir entweder ino oder binary schicke ? Da hat man ja wirklich einen schönen Vergleich. ...

vg
joerg