opendata-stuttgart / devices.sensor.community

https://devices.sensor.community
17 stars 19 forks source link

Sensor-Konfiguration auf https://meine.luftdaten.info #33

Open thjean opened 5 years ago

thjean commented 5 years ago

Mit Freude habe ich gelesen, dass die Registrierung und Konfiguration der Sensoren auf https://meine.luftdaten.info nun selbst vorgenommen werden kann - vielen Dank dafür!

Interessanterweise sehe ich in den Einstellungen der Sensortypen auch den SHT31/35, den ich in meiner Haussensorik gerne verwende, da er gegenüber dem BME280 z.B. einige Vorteile im Aussen-Bereich hat (die Luftfeuchte geht nicht auf 100% und der Sensor kann bei Bedarf beheizt und getrocknet werden. Hinzu kommt, dass insbesondere der SHT35 deutlich genauer misst als der BME280, was aber für diese Anwendung nicht relevant ist). Mit der Auswahl des SHT3x und der PIN 7 stehe ich aber vor dem Problem, dass die Konfiguration insgesamt nur zwei Sensortypen umfasst dass ich damit zwar Temperatur und Feuchte als SHT3x kennzeichnen kann, es aber nicht mehr möglich ist, neben dem Feinstaubwert auch noch den Luftdruckwert eines BME280 zu senden. Beim Versuch, zusätzlich zu Temp/Feuchte mit PIN=7 und Feinstaub noch den Luftdruck mit der nicht eingetragenen PIN=11 zu senden bekomme ich diese Antwort vom Server, da offensichtlich nur die zwei in der Konfiguration eingetragenen PINs akzeptiert werden:

HTTP/1.1 400 Bad Request
Date: Sun, 05 May 2019 11:54:11 GMT
Server: Apache/2
Allow: POST, OPTIONS
Connection: close
Transfer-Encoding: chunked
Content-Type: application/json

21
["sensor could not be selected."]
0

Testweise habe ich unter Verzicht auf Feinstaubwerte als ersten Sensortyp den SHT31 eingetragen und als zweiten Typ den BME280. Damit können Temp/Feuchte mit PIN=7 und Luftdruck mit PIN=11 gepostet werden, die Werte werden auch vom Server akzeptiert. Auf maps.luftdaten.info werden mit dieser Konfiguration die mit PIN=7 gepostete Temp/Feuchte Werte nicht dargestellt, sondern nur der mit PIN=11 gepostete Luftdruck.

Mir ist klar, dass es den Use-Case mit der (aktuellen) airrohr-firmware nicht gibt, für Anwender mit eigener Firmware wäre es jedoch geschickt, wenn insgesamt mehr als zwei Sensortypen konfigurierbar wären, so dass für Temperatur, Feuchte und Luftdruck unterschiedliche Sensortypen akzeptiert würden.

ricki-z commented 5 years ago

Hallo, meine.luftdaten.info ist jetzt seit etwas über 2 Wochen online. In dieser Zeit haben wir noch einige Fehler gefunden, die nun zuerst beseitigt werden sollen (das meiste davon kann man in den Issues nachlesen). Wenn das dann alles soweit läuft, kommen die zusätzlichen Features, die gewünscht werden. Unter anderem dann auch die Möglichkeit, mehr als 2 Komponenten zu registrieren. Im Übrigen hat die Pin nicht wirklich etwas mit den Phänomenen zu tun, die gemessen werden. Man könnte also auch einen BME280 mit mit 7 verwenden. Wichtig ist lediglich, daß die Pin beim Senden der Daten die gleiche ist, die beim Eintrag des Sensors verwendet wurde. Und jede Pin kann nur einmal pro Gerät verwendet werden. Was also gehen sollte: SHT mit Pin 7 anlegen, Daten mit Header "X-Pin: 7" senden, BME280 mit Pin 11 anlegen, Daten mit Header "X-Pin: 11" senden Und was auf keinen Fall geht: mehrere Pins im Header oder in der Konfiguration (habe ich hier schon gesehen)

thjean commented 5 years ago

Hallo, Danke für die schnelle Rückmeldung und für die Aussicht auf die Möglichkeit, später einmal mehr als zwei Komponenten eintragen zu können.

Der beschriebene Weg funktioniert, allerdings mit ein paar Anmerkungen: Ich habe - wie im Issue beschrieben - einen Sensortyp als BME280 konfiguriert, die BME-Daten mit "X-Pin: 11" gesendet, und den zweiten Sensortyp als SHT31 konfiguriert und die Daten mit "X-Pin: 7" gesendet. Nachdem ich mit diesem Setup anfangs keine Temp/Feuchte Werte mehr auf maps.luftdaten.info sehen konnte, bin ich jetzt systematischer vorgegangen und sehe, dass generell anscheinend immer die zuletzt gesendeten Daten berücksichtigt werden. Mit der Sendereihenfolge "SHT Daten, dann BME Daten" werden die BME Werte angezeigt, die SHT-Daten werden ignoriert/überschrieben. Mit der Sendereihenfolge "BME280 Daten (Temp, Feuchte, Druck) zuerst und dann SHT Daten (Temp, Feuchte)" klappt es wie gewünscht: Alle Werte werden dargestellt, Temp. und Feuchte sind die Werte vom SHT31 und der Luftdruck ist der Wert vom BME280. Wenn ich jedoch bei den BME280 Daten mit "X-Pin: 11" nur den Luftdruck sende (um Temp/Feuchte nicht doppelt zu schicken), dann geht's schief: Ab dem Moment werden keine Temperatur und Feuchte Werte mehr auf maps.luftdaten.info aktualisiert, nach ein paar Minuten wird der Sensor bei Temperatur und Feuchte nicht mehr angezeigt. Beim Luftdruck wird weiterhin der letzte Wert angezeigt aus dem BME280 Datenpaket, das noch alle drei Werte enthielt. Weiterhin ist die Anzeige auffällig, die Werte in der Tabelle stimmen nicht mit den Werten im Graph überein - dazu später mehr. Es hat ein paar Versuche gebraucht, darauf zu kommen, da seitens Server die Daten immer mit "201" bestätigt werden, also auch dann, wenn mit "X-Pin: 11" nur Luftdruck Werte gesendet werden.

Um heraus zu finden, welche Daten denn nun dargestellt werden, habe ich mir die angezeigten Werte in der Tabelle und im Graph genauer angeschaut und dabei folgendes beobachtet: Feinstaubwerte: In der Tabelle wird der Feinstaubwert ohne Nachkommastelle angezeigt, die Nachkommastelle ist abgeschnitten. Im Graph werden zwei Nachkommastellen angezeigt. Temperatur: In der Tabelle wird die Temperatur ohne Nachkommastelle angezeigt, die Nachkommastelle ist abgeschnitten. Im Graph werden zwei Nachkommastellen angezeigt. Luftfeuchte: In der Tabelle wird die Luftfeuchte ohne Nachkommastelle angezeit, die Nachkommastelle ist abgeschnitten. Im Graph wird die Luftfeuchte ohne Nachkommastelle, aber korrekt gerundet angezeigt. Luftdruck: In der Tabelle wird der Luftdruch mit einer Nachkommastelle korrekt gerundet angezeigt, im Graph werden zwei Nachkommastellen angezeigt.

Zwischendurch (als ich mit "X-Pin: 11" nur den Luftdruck gesendet habe, war die Anzeige des Luftdrucks durcheinander: der Sensor wurde dreimal in der Tabelle angezeigt mit teils unterschiedlichen Werten, in den Graphen wurde der letzte Luftdruck aus einem vollständigen BME280 Paket angezeigt. Die Werte in Tabelle und Graph stimmten nicht überein. Nach etwa 10 Min. wurde nur noch ein Sensor angezeigt. Erst als mit "X-Pin: 11" wieder drei Werte gesendet wurden, war die Luftdruck-Anzeige wieder aktuell und korrekt.

Sensor2

ricki-z commented 5 years ago

Zunächst habe ich den Issue nach meine-luftdaten-info verschoben, da passt er meines Erachtens nach besser. Ich lasse den Issue hier stehen und werde mir das bei Gelegenheit genauer anschauen. Die Karte sollte eigentlich beide Sensoren SHT31 und BME280 anzeigen. Beide haben ja jeweils eine eigene ID. Was die Werte angeht: Wir zeigen keine Nachkommastellen an, weil die "Genauigkeit" aller Werte nicht wirklich mehr zulässt. Wir sind hier schon fast angegangen worden, wie wir uns getrauen können, Nachkommastellen bei den PM-Werten anzuzeigen. Damals hatten wir auf Grund der Mittelwertbildung eine Nachkommastelle bei den Werten angezeigt. Bei der Temperatur sollten wir das aber ändern können.

thjean commented 5 years ago

Hallo, Ich kann auch nach weiteren Versuchen bestätigen, dass mit "X-Pin: 7" gesendete Werte auf der Map nicht angezeigt werden, obwohl sie von der API mit HTTP/1.1 201 Created akzeptiert werden. Das ist aber überhaupt kein Problem, wenn die Pin nicht weiter ausgewertet wird, sende ich mit "X-Pin: 11" eine Mischung aus SHT31 und BME280 Daten. Wird mit "X-Pin:11 " nur der Luftdruckwert gesendet (also ohne Temperatur und Feuchte), dann wird auch dieser Wert von der API mit HTTP/1.1 201 Created akzeptiert, aber auf der Map nicht dargestellt. In diesem Fall wird weiterhin der letzte zuvor gesendete Luftdruckwert aus einem "X-Pin:11" Paket mit allen drei Werten dargestellt. Zu den Nachkommastellen bin ich der gleichen Meinung: Angesichts der Genauigkeit der Sensoren/Messungen ergeben Nachkommastellen keinen Sinn, bestenfalls kann bei der Temperatur eine Nachkommastelle die Veränderung zeigen. Zumindest bei dem üblichen - und sehr anwenderfreundlichen - Aufbau mit HT-Rohren sind die Belüftungsverhältnisse nicht ideal, so dass Temperatur und Luftfeuchte deutlich abweichen von den Werten, die an gleicher Stelle bei besserer Belüftung gemessen werden. Von den vielen DHT, deren Luftfeuchte nahe 100% hängt, gar nicht zu reden. Ich möchte nur anregen, die Werte in der Tabelle zu runden (egal ob kaufmännisch oder mathematisch) und nicht die Nachkommastellen abzuschneiden und dies auch einheitlch für alle Phänomenen zu tun. Zum Schluss noch ein großes Lob für die tolle Arbeit, ich kann mir ungefähr vorstellen, welches persönliche Engagement dahinter stehen muss. Insofern bitte meine Anmerkungen nicht als Kritik, sondern als nice-to-have Verbesserungen ansehen.

ricki-z commented 5 years ago

Jetzt sollten die SHTs angezeigt werden. Diese waren noch nicht auf der Karte als Temperatursensoren eingetragen.

thjean commented 5 years ago

Hallo, Danke für den Fix. Die Anzeige der SHT-Werte in der Map klappt leider trotzdem noch nicht. Ich vermute, dass woanders noch ein Wurm sitzt, denn die API liefert mir nach dem Posten der SHT (Test-)Werte die Sensor-ID 20939 für die Feinstaubwerte zurück statt der ID 20940 für Temperatur, Feuchte und Luftdruck. Dies passiert sowohl bei der Konfiguration "SDS011 X-Pin:1" und "SHT31 X-Pin:7" als auch mit der Konfiguration "SHT31 X-Pin:7" und "BME280 X-Pin:11".

Gesendete Testdaten:

Host: api.luftdaten.info
Content-Type: application/json
X-PIN: 7
X-Sensor: esp32-12078136
Content-Length: 143
Connection: close

{"software_version": "2.98.B2.10", "sensordatavalues":[{"value_type":"temperature","value":"11.11"},{"value_type":"humidity","value":"55.55"}]}

API-Antwort:

HTTP/1.1 201 Created
Date: Mon, 06 May 2019 12:34:44 GMT
Server: Apache/2
Allow: POST, OPTIONS
Connection: close
Transfer-Encoding: chunked
Content-Type: application/json

82
{"sensor":20939,"timestamp":"2019-05-06T12:34:44.436043","sensordatavalues":[{"sensordata":3554077181},{"sensordata":3554077181}]}
0
ricki-z commented 5 years ago

Ich habe jetzt noch den SHT31 zum Eintrag hinzugefügt (ID ist 25735). Damit sind jetzt alle 3 Einträge vorhanden: Pin 11: BME280 (20939) Pin 1: SDS011 (20940) Pin 7: SHT31 (25735)

thjean commented 5 years ago

Oh, danke! Dann teste ich mal weiter und berichte.

thjean commented 5 years ago

Es ist wie verhext... Die API nimmt die Daten für alle drei Pins entgegen, ober die Map will den SHT mit ID 25735 einfach nicht anzeigen, egal ob ich nur diese eine Pin sende oder zwei oder alle drei :)

ricki-z commented 5 years ago

Unter http://api.luftdaten.info/v1/sensor/25735/ kann man die Daten sehen. Irgendwo beim Aufbereiten der Daten für die Karte scheinen die Daten "verloren" zu gehen. Ich schau mir das nochmal an.

ricki-z commented 5 years ago

Jetzt sollten alle 3 Komponenten auf der Karte erscheinen.

thjean commented 5 years ago

Ja, ich kann die Werte aller drei Sensoren seit einigen Stunden auf der Karte sehen - aber nur in der Tabelle, der Graph für den SHT31 ist leer.

ricki-z commented 5 years ago

Dort sollten jetzt auch nach und nach Werte kommen. Die von heute spiele ich noch ein, mehr bräuchte recht lang.

thjean commented 5 years ago

Danke nochmal für die Extra Mühe, bitte keinen Aufwand machen. Es reicht doch vollkommen, wenn die Werte künftig im Graph erscheinen.

ricki-z commented 5 years ago

Ab und zu bleibt die Influx-Datenbank oder Grafana hängen (die Kombi erzeugt die Grafiken). Dann muss ich die Werte manchmal nachimportieren. Insofern ist das gleich ein Testlauf, das dort auch die SHTs importiert werden. Und damit ist nur der Server beschäftigt, ich sitze nur "daneben" und warte ;-)

thjean commented 5 years ago

Prima, die SHT-Werte kommen jetzt, ich sehe dann mal morgen nach, ob auch die 24h floating Werte einlaufen. Ich traue mich schon fast gar nicht mehr, noch was zu schreiben, aber .... im Temperatur-Graph heißt der Sensor "SHT22". Ist das Ganze eine Sonderausgabe für mich - das hätte ich gar nicht verdient :)

molchi75 commented 5 years ago

Hallo,

ich habe ein ähnliches Problem. Mein raspi lädt die Daten des sds011 und des dht22 alle 150 Sekunden hoch, unter http://api.luftdaten.info/v1/sensor/26429/ http://api.luftdaten.info/v1/sensor/26430/ sind die Daten auch zu sehen. In der Map jedoch und in Grafana werden sie nicht angezeigt. Für Hilfe wäre ich dankbar :)

ricki-z commented 5 years ago

Im gesendeten JSON kommt z.B. für die PM10-Werte als 'value' "{'value': '3.90'}". Hier darf nur der Wert kommen. Es ist also nicht wirklich ein "ähnliches Problem".

molchi75 commented 5 years ago

Danke für die schnelle Antwort, habe meinen Fehler im Programm gefunden.