Jump to content

Air Quality Bricklet (Accuracy: low) springen die Werte.


Loetkolben

Recommended Posts

Hallo zusammen,

 

habe gestern mein Air Quality Bricklet in Betrieb genommen. FW war schon aktuell.

Die Anzeige "Accuracy: low" ist dementsprechend zu erwarten.

Meine Frage ist aber: Wie stark darf der Wert denn springen.

 

Es liegt also auf meinem Schreibtisch. Nichtraucher und Abends sind die Fenster zu.

 

Start IAQ Index:

Werte beginnen um die 20,

nach 10 Minuten gehen sie auf 0 und bleiben dort fuer lange Zeit. Ich denke mir, dass meine Luft ja perfekt ist.  ;D

Irgendwann huepfen sie in die Region um die 40. Na gut.

 

Dann kommt die Nacht, der PC und der Stack laufen weiter.

Heute morgen pendeln die Werte um die 100.

Ich denke mir ein Lueften kann helfen. Und siehe da die Werte steigen auf um die 150:o::)

Genau die andere Richtung als erwartet.

 

Ist das alles normal bei "Accuracy: low"?

Ich habe je erwartet, dass die Werte springen, aber dass in einem geschlossenen Raum ueberhaupt "0" angezeigt wird und beim Lueften die Werte hochschnellen verstehe ich ueberhaupt nicht. Wie funktioniert das Ding? ::)

 

 

Der Loetkolben

Link zu diesem Kommentar
Share on other sites

  • Replies 50
  • Created
  • Letzte Antwort

Top Posters In This Topic

Hallo,

 

die Funktionsweise ist mir auch völlig schleierhaft.

Ich habe das Bricklet bei mir im Wintergarten installiert und dachte auch, dass dort die Luft wegen der vielen Pflanzen ja perfekt sein müsste.

Aktuell zeigt es einen Wert von 210 an, bei einer Luftfeuchtigkeit von 54% und einer Temperatur von 18°C, wobei die "Accuracy" "high" ist. Schwankungen auf unter 20 und über 250 kann ich aber durchaus feststellen.

Bei solchen Bedingungen erwarte ich allerdings auch Werte von deutlich unter 100.

Link zu diesem Kommentar
Share on other sites

Die Doku-Seite zu dem Bricklet wird noch aktualisiert, ich hab da schon ein paar Stichpunkte aufgeschrieben.

 

Generell haben wir festgestellt dass der Sensor eine ganze Weile laufen muss bis er vernünftige Werte liefert.

 

Was man im Bosch Sensortec Forum aktuell findet:

 

* Um einen vernünftigen IAQ Wert zu bestimmen muss sich die Luftqualität regelmäßig ändern: https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BME680-IAQ-accuracy-definition/m-p/5937

* Die aktuelle BSEC Library (die wir auch verwenden) hat noch Bugs: https://community.bosch-sensortec.com/t5/MEMS-sensors-forum/BME680-state-save-state-load-problem/m-p/5911

 

Bei uns in der Firma funktioniert das Bricklet erstaunlich gut, da die Luft zwischendurch mal sehr schlecht wird wenn Prototypen mal wieder verbrennen oder der Laser-Cutter lange läuft etc. Dann ist auch mal wieder die Tür länger auf. Das kann man dann in den Daten wiederfinden.

 

Ich hatte es aber auch schon dass der IAQ-Wert auf 500 hochgeschossen ist und da eine längere Zeit geblieben ist und nach dem Lüften auf einmal für ein paar Stunden bei 0 feststeckt... Ich hoffe das Bosch sich langfristig vielleicht doch dazu durchringen kann den Auswerte-Source-Code zu veröffentlichen oder vielleicht jemand selbst was entwickelt und offen stellt.

Link zu diesem Kommentar
Share on other sites

Zum Thema zurueck:

 

Als ich den Stack vor 2 Tagen ausgeschaltet hatte, war die die Anzeige "Accuracy low". Er lieft bis dahin nur ca. einen Tag. Siehe oben.

 

Nun habe ich ihn wie an den Strom in Betrieb genommen. Die Accuracy startete nun mit "unreliable". Ich hatte eigentlich wieder "low" erwartet, aber auch "unreliable" macht fuer mich Sinn, da der Stack 2 Tage aus war.

 

Was ich nun nicht verstanden habe ist, dass nach ca. 3 Minuten der Stack auf Accuracy high springt. Wieso? Ich dachte es braucht 28 Tage fuer "high" oder ist das nach 28 Tagen dann "precise"?  ::)

 

Die Werte starteten dann bei 250 und gingen auf 60 zurueck.

 

Welche "Accuracys" gibt es und wann werden sie angezeigt?

 

 

Edit, etwas spaeter:

 

Habe die neue Brick FW gerade eingespielt. Und somit musste der Stack neu gestartet werden. Auch nun startete er mit "Accuracy unreliable". Soweit wie beim starten vorher. Verstehe ich.

 

Die Werte haegen bei 0. Jetzt wird es aber nochmals anders spannend: Nun springt der Accuracy Wert auf low (nicht auf "high" wie beim Start vorher) und die Index springt von permanent 0 auf permanent 500 (jeweils konstant ohne "Treppchen").

 

Wieweit beeinflusst ein Stackneustart die Ermittlung der Accurancy?

 

 

Edit2:

 

Was rauf geht, geht auch runter: 500 auf 0. Siehe Anhang.

 

 

 

Der Loetkolben

20190228_tinkerforge_70.png.fc1396b221be52526b62c9ba511126a4.png

Link zu diesem Kommentar
Share on other sites

Hallo,

 

die Genauigkeiten sind so definiert:

    BrickletAirQuality.ACCURACY_UNRELIABLE = 0
    BrickletAirQuality.ACCURACY_LOW = 1
    BrickletAirQuality.ACCURACY_MEDIUM = 2
    BrickletAirQuality.ACCURACY_HIGH = 3

 

Wenn du erst jetzt auf Version 2.0.3 umgestellt hast, dann ist das Verhalten nach dem Update aus meiner Sicht erklärbar bzw. normal. Erst ab dieser Version ist '28 Tage' möglich und der Default:

Seit Firmware-Version 2.0.3 nutzt die automatische Hintergrundkalibrierung Daten der letzten 28 Tage. Wir empfehlen daher das Bricklet für 28 volle Tage laufen zu lassen bevor die Werte als vollständig zuverlässig angesehen werden können.

Damit völlig neu kalibriert wird, muss das Bricklet danach vom Strom getrennt werden.

Ich warte mal die 28 Tage ab und schau dann, was es für Werte liefert.

Link zu diesem Kommentar
Share on other sites

Damit völlig neu kalibriert wird, muss das Bricklet danach vom Strom getrennt werden.

Ich warte mal die 28 Tage ab und schau dann, was es für Werte liefert.

Das Bricklet speichert alle 12 Stunden die aktuelle Kalibrierung im Flash und bei Neustart nutzt es die letzte Kalibrierung aus dem Flash (falls eine da ist).

 

Wenn ich das richtig verstehe ist das Laden einer gespeicherten Kalibrierung allerdings aktuell nicht voll funktionsfähig (siehe erster Link zum Bosch-Forum oben).

 

Ich hab hier einen Aufbau seit vielen Tagen bei mir im Büro am laufen:

2PPTQp7.png

 

Von oben nach unten ist das: IAQ, IAQ-Genauigkeit, Temperatur, Luftfeuchte und Luftdruck.

 

Grundsätzlich sieht das alles ganz gut aus. Jeder Anstieg bei der Temperatur ist ein Tag und die kleineren Anstiege sind das Wochenende. Jeder der kleinen Ausreißer bei der Luftfeuchte ist wenn sich jemand einen Kaffe aus dem Vollautomaten holt (Kaffeeautomat steht direkt neben meinem Büro).

 

Die Ausreißer bei Luftfeuchte und Temperatur nach unten sind auch alle echt, das ist jedes mal wenn die Putzfrau hier lüftet. Bei den ersten beiden Ausreißern korreliert der IAQ-Wert auch entsprechend (er sinkt wenn gelüftet wird).

 

Beim Dritten Tag in der zweiten Woche hatte ich das Bricklet aus versehen getrennt und erst am Freitag Abend wieder angeschlossen (daher hat diese Woche in den Daten nur 3 Tage). Seit exakt dem Zeitpunkt springt bei mir der IAQ-Wert auch zwischen den Extremwerten hin und her. Was für mich daruf hindeutet das es ein Problem beim übernehmen der eingelesenen Kalibrierung gab.

 

Ich lasse das jetzt erst mal noch ein paar Tage laufen um zu sehen ob es sich wieder fängt. Wenn nicht lösche ich die Kalibrierung um zu sehen ob es sich dann wieder wie zuvor verhält.

 

Eventuell veröffentliche ich dann erst eine Firmware in der die Kalibrierung nicht gespeichert/geladen wird, wenn das aktuell noch nicht funktioniert.

Link zu diesem Kommentar
Share on other sites

Hallo zusammen,

 

ich war auf der Embedded World bei Bosch. Entweder die haben die Grafiken mit einem PC gefakt oder der Sensor funktioniert! ;D

 

Man sah das geschmeidig aus! Die hatten einen Raum mit Playmobil Figuren gebastelt. Das dreifache Volumen eines Schuhkartons. Darin hat er dann einen offenen Vodka (die kleinen Flaeschchen von der Supermarktkasse) gestellt und die IAQ Wert stieg wunderschoen!, geschmeidig!, elegant! und kurvig an! Ein Traeumchen. Flaeschchen raus und der Wert ist gesunken.

Einmal den Sensor angehaucht und der Feuchtigkeitswert ist elegant leich angestiegen. Bilder des Raumes folgen.

 

Entweder 100% Fake oder die koennen das. Ich habe keine Ahnung, aber SO! will ich das auch haben.

 

Liebes Tinkerforgeteam, bitte mal bei dem Boschteam nachfragen. Irgendwo muss der Bug sein.

 

 

Der Loetkolben

Link zu diesem Kommentar
Share on other sites

Hallo zusammen,

hier die Bilder von der Messe. Der Sensor ist (angeblich) in der Mitte unter dem Boden unter den Loechern, zusammen mit einem Raspberry, eingebaut. Der Sensor vorne "im Raum" ist nur ein Ausstellungsstueck.

 

Die graphische Anzeige ueber dem Raum war im 3 Sekundenrythmus. Das eigentlich Abfrageinterval des Sensors habe ich nicht erfragt.

 

Auf den Bildern ist das Vodkaflaeschchen nicht zu sehen, aber dafuer ein fast genauso grosses "Uhu" Flaeschchen.

 

Bei der Demontration wurden die Flaeschchen geoeffnet, in den Raum gestellt und dann der Plexiglasdeckel zugemacht. innerhalb von ca. 6 Sekunden war ein Anstieg IAQ Kurve zu sehen. Beim Vodka ist der Wert innerhalb von 30 Sekunden von rund 50 auf ca. 300 angestiegen. Schoen rund und bauchig wie man es sich vorstellen kann. Die Bilder sind erst nach der Demonstration gemacht worden als der Wert entsprechend wieder unten war. Der Klebstoff hat einen nicht so hohen Anstieg veruracht, wobei ich nicht weiss, ob es an der winzigen Oeffnung der Flebstoffflasche oder an der Art Loesungsmittels (im Gegensatz zum Vodka) lag.

 

Der IAQ Index ist der unterste Graph. Warum die Humidity mit nur 20% angezeigt wurde, hat man mir mit der Info erklaert, dass unter dem Raum mit dem Sensor auch noch der Raspberry sitzt. Denn in der eigentlich MESSEhalle hat sich die Luft nicht sooo trocken angefuehlt.

 

Auf die Frage warum denn bei mir die 0/500 Spruenge passieren habe ich die wage Antwort bekommen: "Davon haetten sie auch schon gehoert und wuerden das pruefen". Warum das bei seiner Demo nicht passiert wollte/konnte er mir nichts sagen. Ich hatte so den Eindruck, dass er kompetent war, aber dass er nicht der Spezi fuer DIESEN Sensor war.

 

Ich hoffe ich konnte ein paar Fragen beantworten, wobei wir aber das Raetzel nicht loesen konnten.

 

 

Der Loetkolben

IMG_20190228_155737310.thumb.jpg.cf37d54194bf548e2405cb982195915f.jpg

IMG_20190228_155730964.thumb.jpg.7439d09c88f5215471fd1f4518a7b7d0.jpg

Link zu diesem Kommentar
Share on other sites

Bei Bosch hat sich leider bisher noch nichts getan bezüglich des "load/save state"-Bugs. Ich hab jetzt erst eine Firmware (2.0.4) gebaut welche die automatische Kalibrierung nicht alle 12 Stunden speichert oder diese beim Neustart lädt.

 

Ich hab zusätzlich auch die Doku zur IAQ-Genauigkeit nochmal überarbeitet mit allen Informationen die ich von Bosch dazu bekommen hab: https://www.tinkerforge.com/de/doc/Hardware/Bricklets/Air_Quality.html#iaq-index-genauigkeit

 

Wenn ihr die neue Firmware flasht ist die Erwartung, dass der IAQ-Wert erst eine Zeitlang bei 25 steht (bei accuracy=0) und dann für mehrere Minuten auf 0 springt und dort bleibt (bei accuracy=1). Dann fängt der Wert irgendwann an sich zu bewegen und nach ein paar Stunden sollte dann die Genauigkeit auf 2 springen.

 

In der aktuellen Firmware, wenn ihr das Bricklet dann neustartet fängt das Prozedere wieder von vorne an.

Link zu diesem Kommentar
Share on other sites

Das Problem bei 2.0.3 ist, dass wenn du das Bricklet neustartest (und es vorher mindestens 12 Stunden gelaufen hat) die gespeicherte Kalibrierung wieder geladen wird. Dieser Ladevorgang korrumpiert manchmal die Kalibrierungsdaten. Wenn das passiert fängt der IAQ-Wert an zwischen absolut unrealistischen Werten hin- und herzuspringen.

 

Wenn du einmal in dem Zustand bist, bin ich mir nicht sicher ob man da überhaupt wieder raus kommt ohne die Kalibrierung einmal zu löschen. Ich hatte es jetzt ~10 Tage laufen lassen in dem Zustand ohne Besserung...

Link zu diesem Kommentar
Share on other sites

Hallo borg,

 

wenn ich die 2.0.4 einspiele, muss ich dann irgendeinen "reset" ausfuehren, damit die alten (bisherigen) Daten der 2.0.3 geloescht werden?

 

Weiterhin mal die Frage was eigentlich fuer die Kalibrirung notwendig ist?  ::)

Reicht es Bricklet+Brick mit Strom zu verbinden oder muss da was vom Brickviewer (oder per eigener Software) gesteuert werden?

 

Zitat: "die gespeicherte Kalibierung wieder geladen wird"

Wo wurde sie denn gespeichert und wohin wird sie geladen? Ich dachte die Werte werden durch diese (externe) Bosch-Firm-/Software errechnet.

 

Entweder ich habe die Doku nicht gut genug gelesen oder ich verstehe die Arbeitsweise des Bricklets immer noch nicht.

 

Koenntest du mal bitte erklaeren, wo was wann gespeichert wird und was nach einem "Stack Power on" passiert?

 

Danke.  :)

 

Der Loetkolben

Link zu diesem Kommentar
Share on other sites

Hallo borg,

 

wenn ich die 2.0.4 einspiele, muss ich dann irgendeinen "reset" ausfuehren, damit die alten (bisherigen) Daten der 2.0.3 geloescht werden?

Das macht das Update automatisch.

 

Weiterhin mal die Frage was eigentlich fuer die Kalibrirung notwendig ist?  ::)

Reicht es Bricklet+Brick mit Strom zu verbinden oder muss da was vom Brickviewer (oder per eigener Software) gesteuert werden?

Da musst du nichts machen, einfach mit Strom verbinden. Das passiert alles intern.

Link zu diesem Kommentar
Share on other sites

Zitat: "die gespeicherte Kalibierung wieder geladen wird"

Wo wurde sie denn gespeichert und wohin wird sie geladen? Ich dachte die Werte werden durch diese (externe) Bosch-Firm-/Software errechnet.

 

Entweder ich habe die Doku nicht gut genug gelesen oder ich verstehe die Arbeitsweise des Bricklets immer noch nicht.

 

Koenntest du mal bitte erklaeren, wo was wann gespeichert wird und was nach einem "Stack Power on" passiert?

 

Es gibt ein Stück proprietäre Software namens BSEC. Dieses Stück Software kommt von Bosch und es ist für uns eine Blackbox. Diese Blackbox hat (unter anderem) die API bsec_get_state() und bsec_set_state().

 

Bei einem Aufruf von bsec_get_state() wird der aktuelle "State" des Algorithmus inklusive der ganzen Kalibrierungsdaten usw zurück gegeben.

 

Durch einen Aufruf von bsec_set_state() kann dieser State wieder gesetzt werden.

 

Das Bricklet ruft alle 12 Stunden bsec_get_state() auf und speichert die zurückgegebenen Daten inklusive einer CRC in den Flash.

 

Wenn das Bricklet gestartet wird, schaut es ob gespeicherte Daten im Flash liegen und ob die CRC passt. Falls dies der Fall ist lädt es diese Daten und setzt sie per bsec_set_state().

 

Das ist bereits die komplette Logik aus Sicht des Bricklets.

 

Entweder die Funktion bsec_set_state() oder bsec_get_state() hat in der aktuellen Version von BSEC einen Bug welcher dazu führt dass die Kalibrierungsdaten (die Teil des States sind) korrupt werden.

Link zu diesem Kommentar
Share on other sites

Ich fasse das mal fuer mich zusammen mit der Frage ob ich das richtig verstanden habe:

 

Die proprietaere Bosch Software laeuft auf dem Coprozessor des Bricklets und kommuniziert permanent (Intervalle?) mit dem Sensor, holt dort Daten ab und verarbeitet sie zu dem IAQ Index. Diese IAQ Daten koennen per API von der Brickletfirmware abgeholt werden.

 

Die Kalibrierungsdaten werden im Flash des Bricklets, durch die Brickletfirmware alle 12 Stunden, abgelegt. Und koennen von dort ggf. wieder der Boschsoftware uebergeben werden. (Damit kann man das Bricklet problemlos an einen anderen Brick stecken und es geht an der "gleichen" Stelle weiter)

 

Holt die Tinkerforge Brickletfirmware die anderen, nicht IAQ Daten wie Temperatur/Luftfeuchte, direkt vom Sensor oder auch per API von der Bosch Software?

 

 

Der Loetkolben

Link zu diesem Kommentar
Share on other sites

Das hast du komplett richtig erklärt.

 

Alle Werte des Bricklets kommen über die API der Bosch Software. Die Bosch Software steuert unter anderem einen Heater, der die Luft in dem Sensor in regelmäßigen Intervallen auf >100°C erhitzt. Das wird gemacht um den IAQ-Index zu bestimmen.

 

Damit man gleichzeitig aber noch die korrekte Temperatur und Luftfeuchte usw auslesen kann muss die Bosch Software diese aber natürlich wenn der Heater an ist entsprechend justieren.

 

Wenn die Bosch Software läuft und wir nebenher einfach selbst die Temperatur auslesen würden (was wir könnten) würden wir regelmäßig sowas wie 100°C messen.

 

Was wir machen könnten ist die Bosch Software komplett runter schmeißen und den Heater ignorieren. Dann könnten wir Temperatur, Luftfeuchte und Luftdruck messen, aber keinen IAQ. Der kommt erst durch diese Steuerung des Heaters und des Auslesens der "Gas Resistance" zustande. Den Algorithmus dafür oder auch nur eine Erklärung wie das im Detail funktioniert gibt es aber von Bosch leider nicht...

Link zu diesem Kommentar
Share on other sites

Hallo borg,

 

danke fuer die Erklaerungen! Das ist hilfreich um die Ablauefe und Probleme besser zu verstehen. Ihr steckt so tief in der Materie drin, dass diese Zusammenhaenge total klar sind.

 

 

Zwei nicht ernstgemeinte Anmerkungen:

Die Bosch Software steuert unter anderem einen Heater

Das ist bei der Groesse des Sensors wohl selbstverstaendlich. Da ist aber noch ein Refrigerator und eine Microwave drin. Wird aber erst von Bosch freigeschaltet, wenn das Raetzel um den IAQ geloest ist.  :o

 

würden wir regelmäßig sowas wie 100°C messen.

 

Das Ding ist wirklich ein heisses Eisen.  ;D ;D

 

 

Soweit erstmal. Dann schauen wir mal wie es weitergeht und ich werde die neue FW ausprobieren.

 

Der Loetkolben

 

Link zu diesem Kommentar
Share on other sites

Ich hab da noch einen Vorschlag aus der Huefte:

 

Koennte die LED die 4 Accurancy Modes darstellen?

 

Mode 0 bis 3:

0: blink - 2 Sek. Pause

1: blink - blink - 2 Sek. Pause

2: blink - blink - blink - 2 Sek. Pause

3: blink - blink - blink - blink - 2 Sek. Pause

Oder Mode 0 ist ganz ohne blinken, dann kommt man beim Zaehlen auch nicht durcheinander. (shift -1)  ;)

 

BTW: Stimmen so die Mappings zwischen Wert und String im Brickviewer?

Brickv:     Mode:
Unreliable:  0
Low:         1
Medium:      2
High:        3

 

 

Hilft evtl. beim Verstehen bei jetzigen FW Stand.

 

 

Der Loetkolben

 

Link zu diesem Kommentar
Share on other sites

Hallo,

 

erstes kurzes Zwischenergebnis mit der 2.0.4:

Beim IAQ Index habe ich jetzt keine Sprünge oder Ausreißer mehr. Die Kurve sieht gut aus.

Allerdings verstehe ich die Werte immer noch nicht  :( Im Moment habe ich einen IAQ Index von 249 bei "Accuracy High". Schade dass Bosch nicht veröffentlicht, wie sie den berechnen.

Link zu diesem Kommentar
Share on other sites

Hallo,

 

nach etwas Forschen interpretiere ich den IAQ Index so:

Wichtig ist das 'I' in IAQ. Wobei ich das nicht nur als 'Indoor' sehe, sondern genauer als 'Büroarbeitsplatz'. Sprich: Der Index gibt an, wie gut die Bedingungen für die Arbeit in einem Büro sind. Dabei wird von bestimmten Idealwerten ausgegangen, z. B. 40% oder 50% rel. Luftfeuchtigkeit. Je stärker ein Wert vom Idealwert abweicht, umso schlechter wird der IAQ Index.

Wenn jetzt z. B. die VOCs OK sind, aber es werden 80% rel. Luftfeuchtigkeit bei 10°C gemessen, dann sind das keine guten Bedingungen für eine Arbeit im Büro und der IAQ Index ist entsprechend schlecht.

Zumindest scheinen für die bei mir mit der 2.0.4 berechneten Werte für den IAQ Index mit dieser Interpretation einigermaßen sinnvoll zu sein.

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.


×
×
  • Neu erstellen...