Autor Thema: Funksensor mit Bosch sensortec BME680 / Luftgüte  (Gelesen 39018 mal)

Offline kylix

  • New Member
  • *
  • Beiträge: 5
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #375 am: 30 April 2018, 10:16:07 »
Hi Thomas,

the basic.ino sketch doesn't seem to use those 2 functions (I'll have to check bsec.h and bsec.cpp):

#include "bsec.h"

// Helper functions declarations
void checkIaqSensorStatus(void);
void errLeds(void);

// Create an object of the class Bsec
Bsec iaqSensor;

String output;

// Entry point for the example
void setup(void)
{
  Serial.begin(115200);

  iaqSensor.begin(BME680_I2C_ADDR_PRIMARY, Wire);
  output = "\nBSEC library version " + String(iaqSensor.version.major) + "." + String(iaqSensor.version.minor) + "." + String(iaqSensor.version.major_bugfix) + "." + String(iaqSensor.version.minor_bugfix);
  Serial.println(output);
  checkIaqSensorStatus();

  bsec_virtual_sensor_t sensorList[7] = {
    BSEC_OUTPUT_RAW_TEMPERATURE,
    BSEC_OUTPUT_RAW_PRESSURE,
    BSEC_OUTPUT_RAW_HUMIDITY,
    BSEC_OUTPUT_RAW_GAS,
    BSEC_OUTPUT_IAQ_ESTIMATE,
    BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE,
    BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY,
  };

  iaqSensor.updateSubscription(sensorList, 7, BSEC_SAMPLE_RATE_LP);
  checkIaqSensorStatus();

  // Print the header
  output = "Timestamp [ms], raw temperature [°C], pressure [hPa], raw relative humidity [%], gas [Ohm], IAQ, IAQ accuracy, temperature [°C], relative humidity [%]";
  Serial.println(output);
}

// Function that is looped forever
void loop(void)
{
  if (iaqSensor.run()) { // If new data is available
    output = String(millis());
    output += ", " + String(iaqSensor.rawTemperature);
    output += ", " + String(iaqSensor.pressure);
    output += ", " + String(iaqSensor.rawHumidity);
    output += ", " + String(iaqSensor.gasResistance);
    output += ", " + String(iaqSensor.iaqEstimate);
    output += ", " + String(iaqSensor.iaqAccuracy);
    output += ", " + String(iaqSensor.temperature);
    output += ", " + String(iaqSensor.humidity);
    Serial.println(output);
  } else {
    checkIaqSensorStatus();
  }
}

// Helper function definitions
void checkIaqSensorStatus(void)
{
  if (iaqSensor.status != BSEC_OK) {
    if (iaqSensor.status < BSEC_OK) {
      output = "BSEC error code : " + String(iaqSensor.status);
      Serial.println(output);
      for (;;)
        errLeds(); /* Halt in case of failure */
    } else {
      output = "BSEC warning code : " + String(iaqSensor.status);
      Serial.println(output);
    }
  }

  if (iaqSensor.bme680Status != BME680_OK) {
    if (iaqSensor.bme680Status < BME680_OK) {
      output = "BME680 error code : " + String(iaqSensor.bme680Status);
      Serial.println(output);
      for (;;)
        errLeds(); /* Halt in case of failure */
    } else {
      output = "BME680 warning code : " + String(iaqSensor.bme680Status);
      Serial.println(output);
    }
  }
}

void errLeds(void)
{
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(100);
  digitalWrite(LED_BUILTIN, LOW);
  delay(100);
}

Offline kylix

  • New Member
  • *
  • Beiträge: 5
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #376 am: 30 April 2018, 10:19:57 »
I think I found them in bsec.cpp, but they are different:
/**
 @brief Callback function for reading registers over I2C
 */
int8_t Bsec::i2cRead(uint8_t devId, uint8_t regAddr, uint8_t *regData, uint16_t length)
{
uint16_t i;
int8_t rslt = 0;
if(Bsec::i2c_obj) {
Bsec::i2c_obj->beginTransmission(devId);
Bsec::i2c_obj->write(regAddr);
rslt = Bsec::i2c_obj->endTransmission();
Bsec::i2c_obj->requestFrom((int) devId, (int) length);
for (i = 0; (i < length) && Bsec::i2c_obj->available(); i++) {
regData[i] = Bsec::i2c_obj->read();
}
} else {
rslt = -1;
}
return rslt;
}

/**
 * @brief Callback function for writing registers over I2C
 */
int8_t Bsec::i2cWrite(uint8_t devId, uint8_t regAddr, uint8_t *regData, uint16_t length)
{
uint16_t i;
int8_t rslt = 0;
if(Bsec::i2c_obj) {
Bsec::i2c_obj->beginTransmission(devId);
Bsec::i2c_obj->write(regAddr);
for (i = 0; i < length; i++) {
Bsec::i2c_obj->write(regData[i]);
}
rslt = Bsec::i2c_obj->endTransmission();
} else {
rslt = -1;
}

return rslt;
}

Offline hdgucken

  • Full Member
  • ***
  • Beiträge: 149
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #377 am: 30 April 2018, 12:15:41 »
Ok, i meant "bsec_iot_example" in the folder "example"  :)
Thats different.

greetings Thomas  ;)

Offline PeMue

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4347
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #378 am: 02 Oktober 2018, 22:30:13 »
Hallo zusammen,

habe zufällig hier https://blog.jokielowie.com/en/2017/12/niedlugo-pomiar-jakosci-powietrza-bosch-bme680-oraz-ccs811-iaq-tvoc/ etwas interessantes über BME680 bzw. CCS811 gefunden.

Gruß PeMue
1x FB7170 (29.04.88) 5.7 1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F)
1x RPi BV2LCDCSM 1.63 5.7 2xMAX HKT, 1xMAX RT, V200KW1
1xFB 7490 (113.06.05) 5.7 1xCUL V3 1.63 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 1xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU 1xRFXtrx 90 1xWT440H 1xCM160 3xTFA30.3150 5xFA21
Informativ Informativ x 2 Liste anzeigen

Offline juergs

  • Hero Member
  • *****
  • Beiträge: 1121
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #379 am: 03 Oktober 2018, 11:13:48 »
Hallo Peter,
die ePaper-Display-Idee finde ich gut.
Nach ca. 1 Jahr verabschiedet sich mein kleines OLED-Display
bei Dauerbetrieb langsam …

Grüße,
Jürgen

Offline PeMue

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4347
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #380 am: 03 Oktober 2018, 16:49:14 »
... die ePaper-Display-Idee finde ich gut.
so etwas? Dann sollten wir aber einen neuen Thread dafür öffnen.

Gruß PeMue
1x FB7170 (29.04.88) 5.7 1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F)
1x RPi BV2LCDCSM 1.63 5.7 2xMAX HKT, 1xMAX RT, V200KW1
1xFB 7490 (113.06.05) 5.7 1xCUL V3 1.63 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 1xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU 1xRFXtrx 90 1xWT440H 1xCM160 3xTFA30.3150 5xFA21

Offline juergs

  • Hero Member
  • *****
  • Beiträge: 1121
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #381 am: 03 Oktober 2018, 17:18:43 »
so etwas? Dann sollten wir aber einen neuen Thread dafür öffnen.
Gruß PeMue

Ja, muss aber erst noch bestellen ...  ;)
Das OLED-Display ist wirklich so schlecht im Dauerbetrieb geworden …  :(
« Letzte Änderung: 04 Oktober 2018, 20:57:52 von juergs »

Offline fh168

  • Sr. Member
  • ****
  • Beiträge: 752
    • Robins-Blog
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #382 am: 04 Oktober 2018, 19:35:57 »
Wo gibt es den sketch mit dem OLED Display und der IAD - Anzeige?
Hue, Lacrosse, PCA301, MySensors, V 1.54 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-Bridge, ESA 2000 WZ, Blogbeiträge: http://bit.ly/16chI8u , http://bit.ly/12Q27Gw , http://bit.ly/14PhvXB  http://bit.ly/18sbgs5

Offline juergs

  • Hero Member
  • *****
  • Beiträge: 1121
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #383 am: 04 Oktober 2018, 20:47:59 »
Hallo fh168,

hier und hdguckens aktuellerer  Universal-Sensor-Sketch

Jeweils mit spezifischer LGW-Version (bin leider noch auf "LaCrosseGateway V1.30")  + fhem-Modul-Änderungen zu betreiben!
Vom Bosch müsste es auch schon wieder neue Versionen der BSEC-Library geben ….

Würde aber eher noch den Sketch von hdgucken hier in diesem Thread nehmen,
da ich noch nicht auf die neue Version der LaCrosseGateway umgestellt habe.
Sobald PeMue mit dem Braten der LGW-Platine nachgezogen hat, baue ich meine Sketche ebenfalls um (Sorry..)

Die IAQ-Quer ist nur der gleitende Mittelwert des IAQ-Wertes, der steht etwas ruhiger …

Grüße,
Jürgen
« Letzte Änderung: 04 Oktober 2018, 21:07:46 von juergs »

Offline juergs

  • Hero Member
  • *****
  • Beiträge: 1121
« Letzte Änderung: Heute um 14:17:08 von juergs »

Offline hdgucken

  • Full Member
  • ***
  • Beiträge: 149
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #385 am: 18 November 2018, 21:29:21 »
sieht sehr interessant aus  :D

Offline juergs

  • Hero Member
  • *****
  • Beiträge: 1121
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #386 am: 18 November 2018, 22:51:22 »
… und der Preis von 19$ scheint im Bereich des BME680 zu liegen …  ;)

Offline juergs

  • Hero Member
  • *****
  • Beiträge: 1121

Offline PeMue

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4347
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #388 am: 27 November 2018, 19:23:40 »
Sobald PeMue mit dem Braten der LGW-Platine nachgezogen hat, baue ich meine Sketche ebenfalls um (sorry ...)
hat er  ;) und die BME680 werden erkannt bzw. liefern Werte.

Gruß Peter
« Letzte Änderung: 27 November 2018, 19:35:12 von PeMue »
1x FB7170 (29.04.88) 5.7 1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F)
1x RPi BV2LCDCSM 1.63 5.7 2xMAX HKT, 1xMAX RT, V200KW1
1xFB 7490 (113.06.05) 5.7 1xCUL V3 1.63 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 1xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU 1xRFXtrx 90 1xWT440H 1xCM160 3xTFA30.3150 5xFA21
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline juergs

  • Hero Member
  • *****
  • Beiträge: 1121
Antw:Funksensor mit Bosch sensortec BME680 / Luftgüte
« Antwort #389 am: 09 Dezember 2018, 17:20:30 »
Hallo Peter,

die Sensor-Platine hat sich nach der Bestückung etwas zickig angestellt.
Habe aber auch eine etwas "eigenwilligen" Aufbau gewählt:

Da die FTDI232 noch nicht da waren, habe ich mich mit einem Serial-Adapter beholfen.
Dann war zu klären wie das mit dem RTS-Signal zu handeln ist, wenn der Adapter dieses nicht nach außen geführt hat...

Den Flash-Vorgang habe ich dann versucht, mit 2 Tastern zu "simulieren",  was aber auf Anhieb nicht funktionierte.
Dann habe ich mich auf die Fehlersuche begeben:
Beim Antippen des CH-PD-Pins mit der Oszi-Spitze leuchtete die Reset-LED kurz auf.
Dann habe ich den CH_PD-Eingang kurzerhand mit 3V3Volt verbunden -> Programmieren geht!

Um die Frage zu beantworten wie das mit der ID und mehreren Sensoren geht (seriell, mit 115.200 KBaud, 8N1):

(COM6) Compiled: Fri Dec 07 17:57:22 2018
(COM6) Protocol: UniversalSensor
(COM6) BSEC version: 1.4.5.1<LF>ESP Core Version: 2_4_0_RC1
(COM6) ESP SDK Version: 2.0.0(656edbf)
(COM6)
(COM6) Do you want to delete settings in EEPROM (Y/N)?
(COM6) Not deleted.
(COM6)
(COM6) Node-ID is: 255 (0xFF)
(COM6) New value (1-254):
(COM6) sl<NUL>lœž|<NUL>Œ#<STX>ân<EOT><EOT><FF>Œ<EOT>$ì<FF>#|ƒ<STX>ä<ESC>“r²Ü>Œ<EOT>bŒòonŸ$nnœâì<FF>b<FS>pì#$ <ETX>{lpûnà<DLE><STX><FF><EOT>‚<FF>l<EOT>ŒÜ<EOT><EOT><FF>b<EOT>oã|<STX>dì<EOT><EOT>p<FF>„ûnNî<STX>lŒŽd`<STX><ESC><DC2>on<FF>$`<STX><SI><STX>o{Û’o<FF><FF>b<EOT>Ü<SI>l<SO>{›’o<FF><EOT>b<FF>Ü<SO>lÜãâ<FF>Ü<FS>ŽŒŒœpr$ü‚oÜ<STX><Error: RX FRAMING ERROR><Error: RX FRAMING ERROR><Error: RX FRAMING ERROR><ESC>{‚²Üî<STX><FF><DC3/XOFF>b<ESC>“olœ|Œûn|p<FF>$ž|<ESC><STX><EOT>nàŽ‚<ETX>ä<ESC>ã’ƒ<ETX><EOT><ESC>b<DC2>Ûo`{l<Error: RX FRAMING ERROR>
(COM6) BME680 wireless sensor V3.0
(COM6) Compiled: Fri Dec 07 17:57:22 2018
(COM6) Protocol: UniversalSensor
(COM6) BSEC version: 1.4.5.1<LF>ESP Core Version: 2_4_0_RC1
(COM6) ESP SDK Version: 2.0.0(656edbf)
(COM6)
(COM6) Do you want to delete settings in EEPROM (Y/N)?
(COM6) Y
(COM6) Settings deleted.
(COM6)
(COM6) Node-ID is: 255 (0xFF)
(COM6) New value (1-254):
(COM6) 112
(COM6) Node-ID set to: 112 (0x70)
(COM6) Save permanently (Y/N)?
(COM6) OK.


(COM6) RFM69  init ... done
(COM6) BME680 init ... done
(COM6) BH1750 init ... done
(COM6) Ready, start measuring ...
(COM6)
(COM6) [63321.00] P: 994.3| T: 38.24| rH: 18.11| IAQ: 25.00 (0)| Gas: 1184.00| Light: 15.42lx
(COM6) [66321.00] P: 994.2| T: 38.28| rH: 18.00| IAQ: 25.00 (0)| Gas: 1443.00| Light: 15.42lx
(COM6) [69321.00] P: 994.3| T: 38.32| rH: 17.88| IAQ: 25.00 (0)| Gas: 2019.00| Light: 15.42lx
(COM6) [72321.00] P: 994.3| T: 38.33| rH: 17.83| IAQ: 25.00 (0)| Gas: 2560.00| Light: 15.42lx
(COM6) [75321.00] P: 994.3| T: 38.35| rH: 17.77| IAQ: 25.00 (0)| Gas: 3147.00| Light: 15.42lx
(COM6) [78321.00] P: 994.3| T: 38.33| rH: 17.77| IAQ: 25.00 (0)| Gas: 3593.00| Light: 15.42lx

Versuche, das auf der Sensor-HW/Platine noch herauszufinden woran das liegt/lag ...
...und ob die LGW damit zurecht kommt.  ;-)

Grüße,
Jürgen


 
« Letzte Änderung: 09 Dezember 2018, 17:22:53 von juergs »
Gefällt mir Gefällt mir x 1 Liste anzeigen

 

decade-submarginal