NEWS
Welchen Luftgütesensor
-
….. ich kann aber einfach die BMEs umstecken.... `
Ja genau mach das mal.
[EDIT] Ich werde am Wochenende mal ein geeichtes Temperaturmessgerät von der Arbeit mitnehmen und das prüfen.
-
Wo kann man denn die Platinen bestellen!?
Und die restlichen Bauteile einfach bei Conrad bestellen!?
Will endlich auch mein Sensor zum laufen bekommen
Gruß
Adrian
Gesendet von iPhone mit Tapatalk Pro
-
….. ich kann aber einfach die BMEs umstecken....
Ja genau mach das mal.
nicht so wirklich ein Unterschied (ab ziemlich genau 21:00)EDIT: https://homematic-forum.de/forum/viewtopic.php?f=31&t=27682&hilit=BME280+eugen&start=120#p292154
Gruß
Rainer
-
….. ich kann aber einfach die BMEs umstecken....
Ja genau mach das mal.
filename="Teensy_20170803a.jpg" index="0">~~
nicht so wirklich ein Unterschied (ab ziemlich genau 21:00)Gruß
Rainer `
komisch…kann mir gar nicht vorstellen, dass die so ungenau sind... Schaue gleich nochmal in den code rein ob da alles richtig ist...
Wo kann man denn die Platinen bestellen!?
Und die restlichen Bauteile einfach bei Conrad bestellen!?
Will endlich auch mein Sensor zum laufen bekommen
Gruß
Adrian
Gesendet von iPhone mit Tapatalk Pro `
Platinen kannst du bei mir bestellen. Platine mit Buchsen/Stiftleisten und einer Schraubklemme 4€/Stk. zzgl. 1,50€ Versand
Die restlichen Bauteile kann man hier bekommen (Natürlich sind auch andere Bezugsquellen möglich):
<u>Bosch BME280 Modul:</u>
http://www.ebay.de/itm/BME280-Atmospher … 2395977813
<u>Teensy-LC:</u>
http://www.exp-tech.de/teensy-lc
<u>Ethernet-Modul:</u>
http://www.ebay.de/itm/HR961160C-USR-ES … 2461205378
<u>iAQ Core-C:</u>
Bei Sammelbestellung evtl. über mich ansonsten andere Anbieter wie RS-Components oder Mouser o.ä.
<u>Spannungsregler DC für 7-28V auf 5VDC:</u>
https://www.voelkner.de/products/288579 … -Sip3.html
Gruß Maik
-
Hallo Maik,
@MaikB85:kann mir gar nicht vorstellen, dass die so ungenau sind `
ich hatte oben noch einen Link zu der Diskussion im HM-Forum gepostet.Dort ist wiederum ein Link zu aufwändigen Vergleichen diverser Sensoren.
Gruß
Rainer
-
-
Ich bin zuletzt hier gelandet und fand das interessant:
https://www.mikrocontroller.net/topic/398067
Also das Problem ist wohl, dass die Temperaturmessung eigentlich nicht unbedingt zur Messung der Umgebungstemperatur vorgesehen ist, sondern zur Bestimmung der Luftfeuchte dient (Temperatur des Chips). So steht es wohl auch im Datenblatt. Das würde aber heißen, dass die Luftfeuchte passen müsste. Temperatur könnte man ja dann mit einem Offset "richtig" stellen.
-
dass die Luftfeuchte passen müsste `
Das fürchte ich passt nicht.
Ich habe leider kein haarhygrometer mehr, das ich kalibrieren könnte, aber ich habe das damals mit den HM sensoten gemacht, die passten ziemlich passabel.
Dann kann der Wert jetzt nicht stimmen
Was ist denn eben mit meinem CO2 passiert?
Gruß
Rainer
-
Bezgl. Temp und Luftfeuchtigkeit. Meine test dht11 haben auch sporadisch solche spitzen.
Falls der HM Sensor keinen knick weg hat würde ich mich erstmal an dem orientieren. Das haben meine messungen der letzten 24h ergeben.
Meine DHT11/12 BMP280 haben sich nach einiger Zeit alle dem HM Sensor angenähert.
Wie oft aktualisiert ihr die Sensoren? Alles unter einer Minute ist mist musste ich feststellen. Dann messen die nicht richtig.
-
Wie oft aktualisiert ihr die Sensoren? Alles unter einer Minute ist mist musste ich feststellen. Dann messen die nicht richtig. `
Stimmt das glaube ich habe ich auch schon gelesen.Ich fürchte da sind wir weit weg. Etwa alle 7 Sekunden.
Gruß
Rainer
-
Kannst nicht auf 30 oder 60 erhöhen und nochmal über Nacht loggen?
Gesendet von meinem SM-G930F mit Tapatalk
-
Wäre kein Problem die Abfrage für den BME280 nur jede Minute auszuführen. Müsste der Code dafür geändert werden. Ich würde da jetzt nicht unbedingt das letzte Delay() zu hoch setzten weil dann alles steht für die Zeit und so auch immer wieder die Verbindung neu aufgebaut werden muss. Ist nicht so schön das müsste man dann schon richtig über eine Zeitabfrage machen. Ich kann das aber erst heute Abend ändern…
Gesendet von meinem SM-G925F mit Tapatalk
-
Ich würde da jetzt nicht unbedingt das letzte Delay() zu hoch setzten weil dann alles steht für die Zeit …das müsste man dann schon richtig über eine Zeitabfrage machen. Ich kann das aber erst heute Abend ändern... `
Danke!Als Arduinisch-Anfänger hatte ich mir da zwar schon den sketch angesehen und auch nur die Delays gesehen. aber kein allgemeines Time-setting.
ich hätte jetzt heute abend alle delays verdoppelt ohne zu wissen was ich tue
Frage an die Profis: kann man dann nicht auch in den "Settings" eine variable setzen um mal eben verschiedene Zeiten auszutesten ohne jedesmal den Code zu ändern? Oder wird da nur ein Wert geändert?
Der Drop gestern abend lag daran, dass der Teensy noch am PC hing. beim runterfahren wurde wohl kurz die Stromzuführung gekappt.
Gruß
Rainer
-
Das könnte man auch über IOBroker bzw MQTT nachher machen wenn der Code auf dem Teensy dementsprechend angepasst wird. Also dass du settings im IOBroker anlegst, die dann per MQTT an den Teensy geschickt werden. Das klappt wunderbar. Werde ich dann direkt heute Abend so machen
Gesendet von meinem SM-G925F mit Tapatalk
-
@ Rainer
Hab mal schnell die Zeitfunktion gebastelt…
Bitte mal folgenden Code ausprobieren:
! ```
#include <bme280boschwrapper.h> #include <ethernet.h> #include <stdlib.h> #include <avr pgmspace.h=""> #include <pubsubclient.h> #include "Wire.h" ! // Modultexte für MQTT Adapter char modul_name[] = "Raumsensor_Wohnzimmer"; char humidity_str[] = "/Wohnzimmer/Luftfeuchtigkeit"; char temperature_str[] = "/Wohnzimmer/Raumtemperatur"; char pressure_str[] = "/Wohnzimmer/Luftdruck"; char co2_str[] = "/Wohnzimmer/CO2"; char status_str[] = "/Wohnzimmer/iAQ_Status"; char resistance_str[] = "/Wohnzimmer/iAQ_Widerstand"; char tvoc_str[] = "/Wohnzimmer/TVOC"; ! //Setup Ethernet Library byte mac[] = { 0xAB, 0xAD, 0xBE, 0xEF, 0xEF, 0xDE }; //MAC Adresse des Ethernet Moduls IPAddress arduino_ip(192, 168, 178, 102); //IP des Teensy IPAddress server_ip(192, 168, 178, 100); //MQTT Broker (= Raspberry Pi) EthernetClient client; ! // BME280 initialisieren Bme280BoschWrapper bme280(true); unsigned long syncTime; ! //IAQ Core C Setup #define iaqaddress 0x5A ! uint16_t predict; uint8_t statu; int32_t resistance; uint16_t tvoc; ! // =========================================================== // Callback Funktion von MQTT. Die Funktion wird aufgerufen // wenn ein Wert empfangen wurde. // =========================================================== void callback(char* topic, byte* payload, unsigned int length) { //char message_buff[100]; ! //Serial.print("Nachricht erhalten mit Topic: "); //Serial.println(topic); ! //// Kopieren der Nachricht und erstellen eines Bytes mit abschließender \0 //unsigned int i = 0; //for (i = 0; i<length; 8/1883/i++)/{/message_buff[i]="payload[i];" }/;/serial.print("nachricht:/");/serial.println(message_buff);/mqtt/client/zur/kommunikation/mit/dem/server/server_ip/-/variable/des/types/byte/serveradresse/ist/der/standard/tcp/port/callback/function/wird/aufgerufen/wen/nachrichten/eintreffen/angabe/ethernet/clients/pubsubclient/mqttclient(server_ip,/1883,/callback,/client);/messdaten/vom/iaq/core/lesen/void/readallbytes()/wire.requestfrom(iaqaddress,/9);/predict="(Wire.read()" <</|/wire.read());/statu="Wire.read();" resistance="(Wire.read()" &/0x00)/(wire.read()/16)/tvoc="(Wire.read()" status/ermitteln/checkstatus()/if/(statu="=" 0x10)/serial.println("aufwärmphase...");/else/serial.println("bereit");/0x01)/serial.println("belegt");/0x80)/serial.println("fehler");/serial.println("kein/empfangen,/modul/prüfen");/setup()/ethernet.begin(mac,/arduino_ip);/delay(1000);/shield/zeit/geben/zum/initialisieren/serial.begin(115200);/wire.begin();/while/(!bme280.begini2c(0x76))/serial.println("sensor/nicht/gefunden.");/synctime="millis();" loop()/aufbau/verbindung/mqtt-broker/falls/diese/offen/ist./(!mqttclient.connected())/mqttclient.connect(modul_name);/abonieren/von/angegebenen/topic/mqttclient.subscribe("/wohnzimmer/settings/#");/schleife/für/(mqttclient.loop())/serial.println("verbunden");/unsigned/long/currentmillis="millis();" ((unsigned/long)(currentmillis/synctime)="">= 60000) //Alle 60sec ausführen { // Bosch BME280 Messwerte senden if (bme280.measure()) { char tempBuffer[10]; ! dtostrf((bme280.getTemperature() / 100.0), 2, 2, tempBuffer); mqttClient.publish(temperature_str, tempBuffer); ! delay(1000); ! dtostrf((bme280.getHumidity() / 1024.0), 3, 2, tempBuffer); mqttClient.publish(humidity_str, tempBuffer); ! delay(1000); ! dtostrf((bme280.getPressureDouble() / 100.0), 4, 2, tempBuffer); mqttClient.publish(pressure_str, tempBuffer); ! delay(1000); } else { Serial.println("Messung mit BME280 fehlgeschlagen."); } ! syncTime = currentMillis; } ! delay(1000); ! readAllBytes(); checkStatus(); ! char tempBuffer[10]; ! //CO2 Wert snprintf(tempBuffer, sizeof(tempBuffer), "%u", (predict)); mqttClient.publish(co2_str, tempBuffer); ! //Status snprintf(tempBuffer, sizeof(tempBuffer), "%u", (statu)); mqttClient.publish(status_str, tempBuffer); ! //Widerstandswert snprintf(tempBuffer, sizeof(tempBuffer), "%lu", (resistance)); mqttClient.publish(resistance_str, tempBuffer); ! //TVOC Wert snprintf(tempBuffer, sizeof(tempBuffer), "%u", (tvoc)); mqttClient.publish(tvoc_str, tempBuffer); ! delay(5000); }</length;></pubsubclient.h></avr></stdlib.h></ethernet.h></bme280boschwrapper.h>
! in der Zeile:
~~[code]~~ if ((unsigned long)(currentMillis - syncTime) >= 60000) //Alle 60sec ausführen[/code]
kannst du das Messintervall des BME280 einstellen
! Gruß Maik
! P.S. natürlich wieder die Variablen oben für dich anpassen![/i][/i][/i] -
-
-
Also ich möchte eine Platine bestellen! Schick mir mal eine PN
Gruß
Adrian
Gesendet von iPhone mit Tapatalk Pro
-
Ich habe jetzt den zweiten Sensor fertig und kann die Werte vergleichen. Leider habe ich sie an zwei verschiednen ioBroker installationen angemeldet und kann sie so nicht direkt zusammen visualisieren.
Die Werte passen jeweils zusammen, aber nicht zum HomeMatic Wandthermostaten.
Die BME liegen (auch mit 1Minute Messintervall) etwa 3°C und 4 °C höher als der WT.
Die Feuchtewerte differieren entsprechend, als ob die abs. Feuchte gemessen und über die Temperatur auf rF umgerechnet wird.
Wenn man also nur die Temperatur im Backend korrigiert bleibt die rF falsch (beim WIFFI ist es genau so).
Leider ist mir die Langzeitbeobachtung mal wieder durch zwei Drops durch das aus- und wieder anschalten des PC und anschließender (falscher) Neukalibrierung des IAQ misslungen. Was mich besonders ärgert, dass sie bis gestern abned noch ziemlich parallel liefen, jetzt nicht mehr
Was mir aber gerade beim erneuten Kalibrieren bei offenem Fenster auffiel ist dass der Widerstand beider IAQ etwa um den Faktor 4-5 unterschiedlich ist. Eine absolute Kalibrierung über den Widerstand ist somit zumindest modulübergreifend nicht möglich. Solange die relativen Werte nachher wieder passen ist ja gut.
Gästezimmer:
Daddelzimmer:
Im MOment stehen noch beide Sensoren nebeneinander direkt neben einem Wandthermostat.
Gruß
Rainer
-
Ich glaube man muss sich nochmal genau das Datenblatt vom Bosch BME280 ansehen. Dort wird sicher beschrieben sein wie der genau arbeitet. Sind auf jeden Fall ein paar Seiten [emoji16]
Ich werde auf jeden Fall wenn ich nachher Zuhause bin nochmal direkt mit einem geeichten Temperaturmessgerät vergleichen…
Gruß Maik
Gesendet von meinem SM-G925F mit Tapatalk