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

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

Vorheriges Thema - Nächstes Thema

Papa Romeo

#120
Hallo Jörg,

habe jemand gefunden, der mir das Gehäuse ausdrucken kann.
Wenn du also die Druckdatei aktualisiert hast, kannst du sie mir vielleicht zukommen lassen.

Gruß

Papa Romeo

PS: Gehäuse ist da.
...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

Starsurfer

Hat schon jemand den bme280 erfolgreich eingebunden? Ich bin da anscheinend zu blöd für...
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

#122
Hab leider nur ein BMP280 da ... (oder gleich ein BME680?)
Der ist ohne Luftfeuchte, aber die I2C-Anbindung ist die Gleiche ...

Zitat//All BME680 chips have the same ID: 0x61
//Please note that the Chip ID from the BME280 sensor is 0x60
//Reading the temperature value from the BME680 is identical to reading the temperature from the BME280

Grüße,
Jürgen

Starsurfer

Im Prinzip egal, Hauptsache es kommt was an :-) In der Version die ich ein paar Beiträge vorher angehängt habe, funktioniert irgendwie gar nichts mehr.
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

#124
Hallo Starsurfer,

prinzipiell kannst Du Dir die bme280.h und die bme280.cpp von der LGW "schnappen" (Grüße an HCS) (+ I2CBase.h + cpp) und
"einfach" ein BME-Objekt instanziieren:


  m_hasBME280 = m_bme.TryInitialize(0x76);


if (m_hasBME280) {
    bmeTemperature = m_bme.GetTemperature();
    bmePressure = m_bme.GetPressure();
    bmeHumidity = m_bme.GetHumidity();
  }


Den Rest mit Kompensation etc. kann man dann darum aufbauen...

Oder doch besser die Adafruit-Lib nehmen: https://github.com/adafruit/Adafruit_BME280_Library

Würde es aber bevorzugen, ähnlich der LGW einfach im Setup zu prüfen ob Sensoren I2C-technisch da sind und diese dann abzufragen...
Also gleich ordentlich implementieren...


juergs

#125
Noch eine andere Geschichte:

hatte erst vor kurzem einen neue Raspberry 3B+ aufgesetzt und betreibe
eine fhem-Instanz mit dem Sensor von Jörg und einer LaCrosseGateway_V1.30-Instanz mit 1 NanoGateway-BME680-Sensor.
Zusätzlich eine Docker-Instanz  mit eine LaCrosse-Gateway in der Version 1.32 und drei BME680-NanoGatewaway-Sensoren.

Der Raspi ist nicht wesentlich ausgelastet, dennoch hängt er sich in den letzten Tagen immer wieder nachts auf.
Beobachtet man das Geschen, fällt auf, dass der Netz- und Logfile-Traffic, den die LGWs und Jörgs Sensor erzeugen doch sehr hoch ist.

Macht es nicht Sinn, die Zykluszeiten etwas herunterzudrehen um fhem auch noch Zeit für andere Aufgaben zu geben
und die Logfile-Belastung herunterzuschrauben?

Die Ursache kann natürlich auch etwas ganz anderes sein ...  ;)

Jürgen
 

Starsurfer

Die Adafruit Lib habe ich genommen und das Beispiel eingebaut, der BME wurde aber nicht erkannt. Ich werde das noch mal testen, eventuell lag das auch an der Verkabelung, der MH-Z hat ja auch auf einmal keine Daten mehr gesendet.

Wenn ich das richtig sehe, werden die Werte minütlich gesendet, wenn man das auf 3 Minuten ändert sollte das eigentlich auch reichen, denke ich.
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

#127
Hmm, auffäällig sind die unterschiedlichen I2C-IDs (0x60 + 0x76) die Verwendung finden ...

... und
Zitat#define BME280_ADDRESS (0x77)

? ? ?

Da kann man vorher nur den "I2C_Scanner" laufen lassen...

Starsurfer

#128
Ist es vielleicht möglich, das sich das LGW aufhängt? Ich habe das hier bei zwei LGW's gehabt, die sich immer wieder aus dem WLAN verabschiedet haben und dann hat sich das FHEM WEB andauernd aufgehängt, es war fast unmöglich eine Seite im FHEM aufzurufen (auf einem Zotac Z-Box).

Laut espeasy Scanner: 0x76

Ah daran könnte es liegen:
// Create BME280 object
BME280_I2C bme; // I2C using address 0x77
// or BME280_I2C bme(0x76); // I2C using address 0x76



Ist das hier eigentlich ein echter BME680
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

#129
ZitatWenn ich das richtig sehe, werden die Werte minütlich gesendet, wenn man das auf 3 Minuten ändert sollte das eigentlich auch reichen, denke ich.

Die Hardwareabfragen laufen ca. alle 10 sek. :
unsigned long intervalDht     = 10000;    // default
unsigned long intervalIaq     = 10000;    // default
unsigned long intervalMhz19   = 10000;    // default
unsigned long intervalLdr     = 1000;    // default
unsigned long intervalLed     = 0;        //


Aber beispielhaft in Loop:

// send and clear IAQ msg if any
  if (WiFi.status() == WL_CONNECTED && strlen(iaqMsg) != 0) {
    prepareMessage(iaqMsg);
    DEBUG_PRINT("IAQ msg:");
    DEBUG_PRINT(message);
    Udp.beginPacketMulticast( ipMulti, portMulti, WiFi.localIP() );
    Udp.println(message);
    Udp.endPacket();
    strcpy(iaqMsg, "");
  };


Wird in Loop mit voller Bandbreite gesendet, sobald ein Messergebnis vorliegt.
Unabhängig, ob die Daten "dirty" sind oder nicht ...

herrmannj

Ja, BME läuft mit adafruit. Ich stelle den code ins git sobald die Anpassungen für Wemos und Test durch sind.

@Jürgen:
Ja, die Intervalle kann man anpassbar machen, ich finde es aber ganz in schon ok wenn man die Infos zeitnah im fhem hat. Im code esp code kannst Du das sonst selber probieren, die sind kommentiert. Alles loggen ist Wahnsinn, logisch.

Netzwerk"last" kommt da aber nicht zusammen, das sind um die 20-30byte alle paar Sekunden, das schafft ein Taschenrechner aus den 90ern ;). Der Absturz kommt von woanders.

Was ich habe ist _ein_ Sensor der alle x Tage mal einen Reset wegen Hardware Watchdog macht (der Sensor, nicht fhem). Da vermute ich aber eine Macke auf dem esp.

vg
joerg

herrmannj

Zitat von: juergs am 02 Februar 2019, 17:28:59
Die Hardwareabfragen laufen ca. alle 10 sek. :
unsigned long intervalDht     = 10000;    // default
unsigned long intervalIaq     = 10000;    // default
unsigned long intervalMhz19   = 10000;    // default
unsigned long intervalLdr     = 1000;    // default
unsigned long intervalLed     = 0;        //


Aber beispielhaft in Loop:

// send and clear IAQ msg if any
  if (WiFi.status() == WL_CONNECTED && strlen(iaqMsg) != 0) {
    prepareMessage(iaqMsg);
    DEBUG_PRINT("IAQ msg:");
    DEBUG_PRINT(message);
    Udp.beginPacketMulticast( ipMulti, portMulti, WiFi.localIP() );
    Udp.println(message);
    Udp.endPacket();
    strcpy(iaqMsg, "");
  };


Wird in Loop mit voller Bandbreite gesendet, sobald ein Messergebnis vorliegt.
Unabhängig, ob die Daten "dirty" sind oder nicht ...

Helligkeit jede Sekunde, der rest alle 10 Sekunden (auslesen und senden).

Aber nochmal, das ist keine "last" ...

juergs

Hallo Jörg, Starsurfer,

klar, es ist die Summe...  ;)

Die Hänger korrelieren allerdings mit dem Einsatz des , deshalb mein Verdacht ...
Lief vorher (vor 2-3 Tagen ohne Probleme).
Ist natürlich auch schwierig schwierig zu diagnostizieren woran es effektiv liegt.
Der Raspi muss dann hart resettet werden ( bin mal gespannt, wann das Filesystem platt macht .. ) 

Sorry, bin gerade an 3D-Gehäusen dran ...
Jürgen


juergs

#133
Hallo Jörg,

ZitatHelligkeit jede Sekunde, der rest alle 10 Sekunden (auslesen und senden).

if (WiFi.status() == WL_CONNECTED && strlen(iaqMsg) != 0)
iaqMsg wird ja nicht nach dem Senden gelöscht...
Senden erfolgt in Loop "ungebremst" (DEBUG-Ausgaben bremsen noch etwas aus) ... oder liege ich falsch?

Jürgen

herrmannj

Wäre ein Bug aber ich behaupte, nee.

Wenn ein Messwert da ist wird er gesendet und gelöscht. Passt doch auch mit deinem Log oben