Acties:
  • +7 Henk 'm!

  • hsmade
  • Registratie: December 2023
  • Laatst online: 14-09 16:26
Goed, het is me gelukt om de temperatuur en humidity uit te lezen, maar vraag me niet hoe.
In ieder geval heb ik nu iets wat werkt en wat ik kan proberen te 'refactoren'.
Het is erg timing gevoelig lijkt het, wat ook niet heel gek is, want ik doe reverse-bitbanging :D.

Wat ik als eerste probeerde, was om met 2 masters op de I2C bus te werken. Dus de esp als 2de master. Na veel proberen en meten lijkt het er op dat de I2C hardware in de ESP er niet goed tegen kan dat er nog een andere controller op de bus zit. Tijdens idle van de ESP, zie ik heel veel 'ruis' op de bus, waardoor zowel de originele master als de slave de weg kwijt raken.

Daarna probeerde ik om, met de print met het display (en dus de MCU) er af, de sensor te besturen met de ESP, dat gaat ook niet. Ik krijg steeds NACK terug, wat wijst op een hardere pull up op de bus dan de slave kan sinken, of hij 'hoort' me niet.
Ik heb weinig zin om daar aanpassingen aan te doen, aangezien ik de resideo zelf zo min mogelijk wil aanpassen.

Dus, dan maar I2C 'lezen' met GPIO.. Het gaat allemaal erg traag (11-30 kHz), dus dat gaat nog wel. Maar ik merk wel dat je vooral niet te veel dingen tussen twee bytes moet uitvoeren.
Hoe ik het nu gedaan heb is eerst alle 36 bits uitlezen en dan de data er uit plukken. Niet heel netjes, erg verbose en omslachtig, maar het lijkt wel consistent te werken.
Ik wil wel kijken of ik dat nog netter en leesbaarder kan maken.

De code wacht nu op een I2C bericht van de master (de MCU) om te lezen uit adres 0x40, en begint dan mee te lezen. Afhankelijk van hoe je het interval zet in de yaml file, kan het dus zijn dat ie 1 of 2 berichten mist, maar uiteindelijk pakt ie 't wel gewoon weer op.

Code:

C++: cht8305_sensor.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include "esphome.h"
#define SDA_PIN D2
#define SCL_PIN D1

class Cht8305Sensor : public PollingComponent, public Sensor {
private:

public:
    Sensor *temperature_sensor = new Sensor();
    Sensor *humidity_sensor = new Sensor();
    Cht8305Sensor(uint32_t update_interval) : PollingComponent(update_interval) {

    }

    float get_setup_priority() const { return setup_priority::DATA; }

    void setup() override {
        pinMode(SDA_PIN, INPUT);
        pinMode(SCL_PIN, INPUT);
    }

    void update() override {

        // Check for a possible start of a new transaction
        while(digitalRead(SDA_PIN) == HIGH && digitalRead(SCL_PIN) == HIGH) {}
        ESP_LOGD("I2C", "wait for pins to be high");
        if (digitalRead(SDA_PIN) == HIGH && digitalRead(SCL_PIN) == HIGH) {
            delayMicroseconds(5); // Wait a short time to ensure stability after start condition

            // Check again to see if the bus is still idle
            if (digitalRead(SDA_PIN) == HIGH && digitalRead(SCL_PIN) == HIGH) {
                // Now, it's likely the bus is idle, start listening
                while (digitalRead(SCL_PIN) == HIGH) {} // Wait for the start of a new byte

                // Assume that the bus is stable; start reading bits
                byte receivedByte = 0;
                for (int i = 0; i < 7; i++) {
                    while (digitalRead(SCL_PIN) == LOW) {} // Wait for clock pulse
                    receivedByte = (receivedByte << 1) | digitalRead(SDA_PIN);
                    while (digitalRead(SCL_PIN) == HIGH) {} // Wait for SCL to go low (end of bit)
                }

                // read operation bit
                bool ReadOp;
                while (digitalRead(SCL_PIN) == LOW) {} // Wait for clock pulse
                ReadOp = digitalRead(SDA_PIN) == HIGH?true:false;
                while (digitalRead(SCL_PIN) == HIGH) {} // Wait for SCL to go low (end of bit)

                // read ACK/NACK
                bool ACK;
                while (digitalRead(SCL_PIN) == LOW) {} // Wait for clock pulse
                ACK = digitalRead(SDA_PIN) == LOW?true:false;
                while (digitalRead(SCL_PIN) == HIGH) {} // Wait for SCL to go low (end of bit)


                // this should be the address
//                ESP_LOGD("I2C", "received address %02X, op:%s result:%s", receivedByte, ReadOp?"R":"W", ACK?"ACK":"NACK");
                if (receivedByte != 0x40 || !ReadOp || !ACK) {
                    ESP_LOGW("I2C", "invalid data, breaking off. addr=%02X, read=%u, ack=%u", receivedByte, ReadOp, ACK);
                    return;
                }

                bool bits[36];
                for (int i = 0; i < 36; i++) {
                    while (digitalRead(SCL_PIN) == LOW) {} // Wait for clock pulse
                    bits[i] = digitalRead(SDA_PIN);
                    while (digitalRead(SCL_PIN) == HIGH) {} // Wait for SCL to go low (end of bit)
                }

                uint16_t temp_raw = bits[0];
                for (int i=1; i<8; i++) {
                    temp_raw = (temp_raw << 1) | bits[i];
                }
                //i=8 is ack
                for (int i=9; i<17; i++) {
                    temp_raw = (temp_raw << 1) | bits[i];
                }
                double temperature = 165 * (temp_raw / 65535.0) - 40;
                temperature -= 1.4; // as seen on the display
                ESP_LOGD("cht8305", "temperature: %f raw:%i", temperature, temp_raw);
                temperature_sensor->publish_state(temperature);

                // i=17 is ack
                uint16_t hum_raw = bits[18];
                for (int i=19; i<26; i++) {
                    hum_raw = (hum_raw << 1) | bits[i];
                }
                // i=26 is ack
                for (int i=27; i<35; i++) {
                    hum_raw = (hum_raw << 1) | bits[i];
                }
                double humidity = (hum_raw / 65535.0) * 100;
                humidity += 2; // as seen on the display
                ESP_LOGD("cht8305", "humidity: %f raw:%i", humidity, hum_raw);
                humidity_sensor->publish_state(humidity);
            }
        }
    }
};


C++: cm1106_sensor.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// put this file in your esphome folder
// protocol implemented as described in https://en.gassensor.com.cn/Product_files/Specifications/CM1106-C%20Single%20Beam%20NDIR%20CO2%20Sensor%20Module%20Specification.pdf

#include "esphome.h"

class CM1106 : public UARTDevice {
public:
    CM1106(UARTComponent *parent) : UARTDevice(parent) {}

    int16_t getCo2PPM() {
        byte expectedBytes[] = {0x16, 0x05, 0x01};
        int currentPos = 0;
        uint8_t response[8] = {0};

        while (readUartResponse(response+currentPos, 1)) {
          if (response[currentPos] == expectedBytes[currentPos]) {
              currentPos++;
          }

          if (currentPos != sizeof(expectedBytes)) continue; // haven't read them all yet
          readUartResponse(response+3, sizeof(response)-3);
          uint8_t checksum = calcCRC(response, sizeof(response));
          int16_t ppm = response[3] << 8 | response[4];
          if (response[7] == checksum) {
              ESP_LOGD(TAG, "CM1106 Received CO₂=%uppm DF3=%02X DF4=%02X", ppm, response[5], response[6]);
              return ppm;
          } else {
              ESP_LOGW(TAG, "Got wrong UART checksum: 0x%02X - Calculated: 0x%02X, ppm data: %u", response[7], checksum, ppm);
              return -1;
          }
        }
        return -1;
    }

private:
    const char *TAG = "cm1106";

    // Checksum: 256-(HEAD+LEN+CMD+DATA)%256
    uint8_t calcCRC(uint8_t* response, size_t len) {
        uint8_t crc = 0;
        // last byte of response is checksum, don't calculate it
        for (int i = 0; i < len - 1; i++) {
            crc -= response[i];
        }
        return crc;
    }

    bool readUartResponse(uint8_t *response, size_t responseLen) {
        return read_array(response, responseLen);
    }
};

class CM1106Sensor : public PollingComponent, public Sensor {
private:
    CM1106 *cm1106;

public:
    CM1106Sensor(UARTComponent *parent, uint32_t update_interval) : PollingComponent(update_interval) {
        cm1106 = new CM1106(parent);
    }

    float get_setup_priority() const { return setup_priority::DATA; }

    void setup() override {
    }

    void update() override {
        int16_t ppm = cm1106->getCo2PPM();
        if (ppm > -1) {
            publish_state(ppm);
        }
    }

    virtual ~CM1106Sensor() { delete cm1106; }

};


YAML: resideo.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
esphome:
  name: resideo
  includes:
    - cm1106_sensor.h
    - cht8305_sensor.h

esp8266:
  board: d1_mini

uart:
  rx_pin: D6
  baud_rate: 9600
  id: cm1106_uart

sensor:
- platform: custom
  lambda: |-
    auto cm1106Sensor = new CM1106Sensor(id(cm1106_uart), 1000);
    App.register_component(cm1106Sensor);
    return {cm1106Sensor};
  sensors:
  - name: "CO₂ Sensor"
    accuracy_decimals: 0
    unit_of_measurement: "ppm"
    icon: "mdi:molecule-co2"

- platform: custom
  lambda: |-
    auto cht8305Sensor = new Cht8305Sensor(2000);
    App.register_component(cht8305Sensor);
    return {cht8305Sensor->temperature_sensor, cht8305Sensor->humidity_sensor};
  sensors:
  - name: "Temperature"
    accuracy_decimals: 1
    unit_of_measurement: "°C"
  - name: "Humidity"
    accuracy_decimals: 1
    unit_of_measurement: "%"

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 16:41
hsmade schreef op vrijdag 5 januari 2024 @ 21:52:
Goed, het is me gelukt om de temperatuur en humidity uit te lezen, maar vraag me niet hoe.
Respect _/-\o_

Ik zie dat je van de Wemos de D1 en D2 gebruikt voor SCL/SDA. Kun je aangeven waar op de PCB van de Resideo ik moet inhaken op de I2C aansluiting?

En even ter verificatie: er is in de CM1106 driver niks gewijzigd om dit te kunnen doen? (aangezien je die ook post, maar is vermoedelijk om een complete instructie te hebben staan voor iemand die er mee aan de slag wil).

Toevallig ook nog naar de voeding gekeken, of de ESP ook met de accu gevoed kan worden? Ik wil er graag mee verder en o.a. dit uitzoeken maar gebrek aan tijd :-(

[ Voor 31% gewijzigd door ThinkPad op 05-01-2024 22:31 ]


Acties:
  • +1 Henk 'm!

  • hsmade
  • Registratie: December 2023
  • Laatst online: 14-09 16:26
Afbeeldingslocatie: https://tweakers.net/i/Xw0xp02XYsYoKs-pXLBtRADneiA=/x800/filters:strip_icc():strip_exif()/f/image/xk6dJLSUSrnfugjojieqVDgn.jpg?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/Id2Q5kUoruEJw58HJglhDCX7kvw=/x800/filters:strip_icc():strip_exif()/f/image/ACIUGndtWy33QUe699k4kbgO.jpg?f=fotoalbum_large

Zo heb ik het gedaan. Oranje en bruin gaan door de lege gaatjes heen naar de achterkant. Op de print bij de sensor staat sda en scl geschreven, dan weet je zeker dat je goed zit. D1 is scl en D2 is sda.
In de cm1106 code is niets gewijzigd idd. Je zou kunnen proberen of de wemos het doet als je de + van de accu aan de +5 van de wemos hangt. Maand de 3.3 zou ik niet doen zonder te checken of de ics op de wemos tegen 3.7V kunnen (laadspanning).

[ Voor 4% gewijzigd door hsmade op 05-01-2024 22:35 ]


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 16:41
Dankje, ik ga er van het weekend eens mee aan het proberen.

Je ESP zou ik trouwens naar linksboven verplaatsen, dan heeft hij zo min mogelijk invloed op de temperatuursensor.

Acties:
  • 0 Henk 'm!

  • hsmade
  • Registratie: December 2023
  • Laatst online: 14-09 16:26
Ik had de accu er uit gehaald (gebruik ik niet, en ik hou niet zo van ongebruikte accu's). En ik dacht: das een mooi plekje. Maar het is waarschijnlijk zo'n beetje de slechtste plek :)

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 16:41
Temperatuur en luchtvochtigheid uitlezen lukt hier nu ook, dankjewel @hsmade _O_

Ik zag trouwens dat als je het display eraf haalt, dat daaronder op het hoofd PCB ook al ruimte lijkt te zijn voor iets van een ESP-10/ESP-11 device, zit ook een soldeerpad bij 'ANT'. Weet niet of je die pins ook had bekeken met logic analyzer? Wellicht stuurt de CPU via die pins ook al de CO2/temp./hum. door?

En het hoofd PCB heeft de opdruk "GS241T-H02-A1-V1.25". De Resideo/Smartwares meter blijkt de Siterwell GS241T te zijn.

[ Voor 16% gewijzigd door ThinkPad op 06-01-2024 14:50 ]


Acties:
  • +1 Henk 'm!

  • hsmade
  • Registratie: December 2023
  • Laatst online: 14-09 16:26
Ik had niet gekeken, maar goeie tip. Zal eens kijken wat dat doet. Ik zou er geen WiFi printje in duwen overigens, überhaupt niet in de behuizing. Het wordt best warm, als in, het beïnvloedt de meting nogal. Heb 'm nu buiten de behuizing hangen, en dan is het ok. Afbeeldingslocatie: https://tweakers.net/i/LL_ncBPsuO6JRmKsRntYoDmDbCw=/x800/filters:strip_icc():strip_exif()/f/image/odpvCIUDpj6fpMWmO77ZKtye.jpg?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/Xvo8THDrkR-A3gIu7ooSOcgX6LM=/x800/filters:strip_icc():strip_exif()/f/image/xGU8rNxcHSSRjiDTTsbiyMPo.jpg?f=fotoalbum_large

Acties:
  • 0 Henk 'm!

  • hsmade
  • Registratie: December 2023
  • Laatst online: 14-09 16:26
Denk wel dat er nog iets van averaging in moet, of in ieder geval foutdetectie.
Afbeeldingslocatie: https://tweakers.net/i/D5KIqxYf6Yj_iCgWjwhFnZVyfWo=/x800/filters:strip_icc():strip_exif()/f/image/yeXQ1y5Gf9v2dasAEn1DMj0N.jpg?f=fotoalbum_large

Acties:
  • +1 Henk 'm!

  • TD-er
  • Registratie: Januari 2000
  • Laatst online: 16-09 19:18
Hele simpele manier van het filteren van dit soort leesfouten is ofwel simpelweg de foute waarde weggooien, of een IIR filter maken.

Dat is een heel simpel filter waarbij je alleen maar een fractie van het verschil met de vorige waarde overneemt.

code:
1
2
3
4
5
6
7
8
9
new_sample = read();
if (old_sample == -1) {
  // zodat je niet hoeft te wachten op de eerste sample
  old_sample = new_sample;  
  return new_sample;  
}
nieuw = 3*old_sample + new_sample;
old_sample = new_sample;
return nieuw / 4.0;

Beetje pseudo code, maar het idee is wel duidelijk.
Als je een sterkere filtering wilt (maar ook meer vertraging in de response van je meting) dan verhoog je die "3" en "4". (zolang er maar "1" verschil in zit)

Eventueel lees je de sensor wat vaker zodat die vertraging minder erg is.

Edit:
Code even aangepast naar iets wat wel zou moeten werken, na het nuttigen van een verse bak koffie :)

[ Voor 13% gewijzigd door TD-er op 07-01-2024 12:45 . Reden: Code even aangepast naar iets wat wel zou moeten werken ]

Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)


Acties:
  • 0 Henk 'm!

  • wuniek
  • Registratie: Juli 2005
  • Laatst online: 06-09 12:20
@hsmade Interessante code om met bit-banging I2C zelf te doen. Dank voor het delen en alle moeite. Gezien hier ook met pointers voor de objecten gewerkt wordt, moeten de objecten na processing ook weer verwijderd worden? Of is dat in dit geval niet nodig? lastig soms dat C++ 8)

Acties:
  • +2 Henk 'm!

  • hsmade
  • Registratie: December 2023
  • Laatst online: 14-09 16:26
@TD-er Ik denk dat ze dit in de originele code ook doen, omdat het display traag reageert.
Ik zal es een dumpje maken van de ruwe data, kijken of het 'eenmalige' fouten zijn, of meer achter elkaar. Kan ik aan de hand daarvan beslissen of ik ze weg gooi, of dat ik dat filter gebruik (nice!).

@wuniek Ik denk het niet, omdat ik geen `new` gebruiken, en het simpele arrays zijn. Maar mijn C++ kennis is wel van 25 jaar geleden... Inmiddels ben ik verwend met Golang :D

Ik heb overigens een seriele poort gevonden bij de MCU/display print. Poort P2. Bovenste is data, onderste is GND. 9600 Baud. Alleen wat er uit komt mist de temp/hum.

Bij opstarten:
code:
1
2
3
4
5
6
7
8
GS241T-H01_S1_V01.02
ac disconnect 
brt adc value:0799
vbat adc value:0905
brt adc value:0795
vbat adc value:0900
brt adc value:0790
vbat adc value:08F7


Na een tijdje:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
brt adc value:0782
vbat adc value:08FC
Uart_Tx:110101ED
Uart_Rx:16050102F700F3F8
Uart_Tx:110101ED
Uart_Rx:16050102F700F5F6
brt adc value:0780
vbat adc value:08FD
Uart_Tx:110101ED
Uart_Rx:16050102F800F7F3
Uart_Tx:110101ED
Uart_Rx:16050102F800F9F1
brt adc value:0780
vbat adc value:08F9
Uart_Tx:110101ED
Uart_Rx:16050102F800FBEF
Uart_Tx:110101ED
Uart_Rx:16050102F800FDED
Uart_Tx:110101ED
key 1
key1 short 1


We zien hier dus de data uit de cm1106, de batterij spanning, toetsen, en die witte sensor naast de 8305 (staat BRT V bij). Ik heb het vermoeden dat dat een pressure sensor is, dus luchtdruk. Als ik er op blaas of duw gaat ie wat omhoog en als ik los laat direct weer terug naar wat ie was.

De pennen naar dat wireless bordje wat er op kan, komt geen data overheen overigens (vanaf de MCU). En het relais lijkt ook niet aangestuurd (afgezien van dat de componenten missen, uiteraard).

[ Voor 5% gewijzigd door hsmade op 07-01-2024 12:30 ]


Acties:
  • +2 Henk 'm!

  • TD-er
  • Registratie: Januari 2000
  • Laatst online: 16-09 19:18
Heb de code van mijn IIR filter aangepast.
Had er duidelijk even de aandacht niet bij...

Edit:
Nu we toch bezig zijn maar even snel een stukje wat waarschijnlijk ook wel door de compiler geaccepteerd zal worden:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class IIRfilter
{
public:
  IIRfilter(float alpha, float startVal = 0.0f) : _alpha(alpha), _lastVal(startVal) {}

  float next(float newVal)
  {
    _lastVal = (1.0f - _alpha) * newVal +  _alpha * _lastVal;
    return _lastVal;
  }

private:
  float _alpha;
  float _lastVal;
};

[ Voor 74% gewijzigd door TD-er op 08-01-2024 10:01 ]

Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 16:41
@hsmade Mooi gevonden! Staat best wat leuke info in. Dat is dan een pin die naar de plek voor een ESP-achtig device loopt denk ik? BRT lijkt mij 'brightness', een lichtsensor dus :) Ff testen met een doosje erover/zaklamp erop schijnen?

Is het met deze serial output nu makkelijker/stabieler om de boel uit te lezen? Jammer dat de temp/hum mist, maar die ga ik toch niet gebruiken. Ik zag al dat iig. de temperatuur niet betrouwbaar is nu de ESP erbij zit in de behuizing. Geeft bijna 3 graden teveel aan.

Als ik de batterijwaardes in https://hexed.it/ zet, dan zijn het mogelijk 64 bit floats, 08F9 vertaalt naar 3,14 wat op zich een logische spanning voor een lithium batterij zou kunnen zijn. Maar misschien heb ik het wel helemaal mis en wordt er ook een bepaalde formule gebruikt.

[ Voor 8% gewijzigd door ThinkPad op 07-01-2024 14:33 ]


Acties:
  • 0 Henk 'm!

  • wuniek
  • Registratie: Juli 2005
  • Laatst online: 06-09 12:20
De ESP gaat bij mij in de behuizing, aan de kant van de PCB waar niet de temperatuur sensor zit. Om verwarming zo veel mogelijk te beperken wordt dan deep sleep aangeroepen, zodat enkel om de paar minuten een waarde van de sensoren aan Home Assistant wordt doorgegeven. Dit gaat ook helpen met het stroomgebruik als de ESP op accu zou moeten werken (hiervoor nog even de onboard power supply uitzoeken). M.b.v. een variabele in home assistant kan dan worden aangegeven dat deep sleep niet moet plaats vinden als je bv een firmware update wilt doen. Dit kan allemaal in HA of de yaml gedefinieerd worden.

https://esphome.io/components/deep_sleep.html

Acties:
  • +1 Henk 'm!

  • hsmade
  • Registratie: December 2023
  • Laatst online: 14-09 16:26
BRT V is inderdaad een 'brightness' sensor. Ik zie m omlaag duiken als het daglicht is.

Verder ben ik de code opnieuw aan het schrijven omdat het nu 1) erg hacky is en 2) timing sensitive (als ik ergens een ESP_LOGD welhaal, breekt het :D ).
Ik zal m dan meteen als 'external component' maken, zodat ie future proof is (ze stoppen met custom components).

Acties:
  • 0 Henk 'm!

  • Gizz
  • Registratie: Maart 2001
  • Laatst online: 14:08

Gizz

Dunder-Mifflin, Inc.

Over de Resideo, ik heb er nu ook twee! Maar niet om een ESP aan toe te voegen; elke logische ruimte thuis wordt al gemeten met o.a. CO2-sensoren aan een ESP. Ik heb ze gekocht voor op kantoor bij mijn huidige opdrachtgever en eentje om mee te nemen op vakantie of uit te lenen aan vrienden/familie.

Sinds afgelopen maandag heb ik nummer 1 ingeplugd op mijn werk en.. 2x per werkdag roept de Resideo "Low battery!". Wat is dat nou voor een raar gedrag voor een apparaat dat permanent gevoed wordt? :P Heb ik een model met een gare batterij of herkennen anderen ook het semi-willekeurig melden dat de batterij leeg is en is het een bug in de firmware?

Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX


Acties:
  • +1 Henk 'm!

  • VVVJeroen
  • Registratie: Juni 2007
  • Niet online
Gizz schreef op donderdag 11 januari 2024 @ 15:04:
Over de Resideo, ik heb er nu ook twee! Maar niet om een ESP aan toe te voegen; elke logische ruimte thuis wordt al gemeten met o.a. CO2-sensoren aan een ESP. Ik heb ze gekocht voor op kantoor bij mijn huidige opdrachtgever en eentje om mee te nemen op vakantie of uit te lenen aan vrienden/familie.

Sinds afgelopen maandag heb ik nummer 1 ingeplugd op mijn werk en.. 2x per werkdag roept de Resideo "Low battery!". Wat is dat nou voor een raar gedrag voor een apparaat dat permanent gevoed wordt? :P Heb ik een model met een gare batterij of herkennen anderen ook het semi-willekeurig melden dat de batterij leeg is en is het een bug in de firmware?
Dit schijnt op te lossen te zijn door het aan/uit knopje op "On" te zetten, dan blijft hij het ook doen als hij niet in de stekker zit, waardoor je hem makkelijker even buiten kan leggen om te kalibreren naar 400.
ThinkPad schreef op donderdag 4 januari 2024 @ 14:26:
@Soepstengel Handleiding gelezen? Je moet het schakelaartje achterop naar 'on' zetten zodat de interne batterij kan worden opgeladen (ik vermoed dat hij door het schakelaartje fysiek wordt losgekoppeld om battery drain te voorkomen).

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 16:41
Met het schakelaartje op 'off' is de batterij fysiek losgekoppeld van het device inderdaad.

Acties:
  • 0 Henk 'm!

  • Gizz
  • Registratie: Maart 2001
  • Laatst online: 14:08

Gizz

Dunder-Mifflin, Inc.

Dank! Schakelaar stond inderdaad nog op off :)
Helemaal gemist dat dit al langsgekomen was in het topic.

[ Voor 39% gewijzigd door Gizz op 11-01-2024 17:38 ]

Canon EOS 5Dm3 + 5D + 7D + 300D + 1000FN + EF 17-40 4L + EF 35 1.4L + EF 50 1.8 + EF 80-200 2.8L + 550EX


Acties:
  • 0 Henk 'm!

  • Soepstengel
  • Registratie: April 2006
  • Laatst online: 16-09 13:39
ThinkPad schreef op donderdag 4 januari 2024 @ 14:23:
Ik gebruik een Wemos D1 Mini, deze voed ik met 5V & GND van de DC-connector en de RX pin hangt aan de TX pin van de CO2-sensor. Met onderstaande code luistert de ESP mee en stuurt niet zelf de CO2-sensor aan.
Ik ben inmiddels ook bezig om dit voor elkaar te krijgen, maar ben ik nou gek of zit er geen TX pin op mijn boordje?

Afbeeldingslocatie: https://tweakers.net/i/UxV691tDDstyMO2QXmwIhz4577U=/x800/filters:strip_icc():strip_exif()/f/image/44o4VSPWSeYxlrRy3uLDJ416.jpg?f=fotoalbum_large

Desktop: Ryzen 7 7800X3D | 32 GB | Radeon RX 6800


Acties:
  • +1 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 16:41
@Soepstengel De derde van links als je vanaf de pin met opdruk '3' gaat tellen. De pin met aanduiding 'T' .
De middelste in het rijtje dus eigenlijk, precies boven het 6-potige zwarte chipje.

Sorry heb momenteel geen mogelijkheid om te tekenen zodat ik het kan aanwijzen op je foto :P

CO2-uitlezing werkt hier al dagenlang betrouwbaar. De temperatuur/luchtvochtigheid werkt niet stabiel met ESPHome, staat hier op 'NA' en gebruik ik niet (sorry @hsmade ). Maar was met de ESP erbij in de behuizing ook niet betrouwbaar meer (iig. temperatuur niet, luchtvochtigheid zou minder uit moeten maken zou je zeggen).

Prima apparaatje zo, die Resideo. Mocht er nog iemand van zijn tweede meter af willen, PM sturen mag ;) Had al een familielid die interesse toonde :P

[ Voor 98% gewijzigd door ThinkPad op 19-01-2024 22:04 ]


Acties:
  • +4 Henk 'm!

  • Soepstengel
  • Registratie: April 2006
  • Laatst online: 16-09 13:39
ThinkPad schreef op vrijdag 19 januari 2024 @ 21:59:
@Soepstengel De derde van links als je vanaf de pin met opdruk '3' gaat tellen. De pin met aanduiding 'T' .
De middelste in het rijtje dus eigenlijk, precies boven het 6-potige zwarte chipje.

Sorry heb momenteel geen mogelijkheid om te tekenen zodat ik het kan aanwijzen op je foto :P

CO2-uitlezing werkt hier al dagenlang betrouwbaar. De temperatuur/luchtvochtigheid werkt niet stabiel met ESPHome, staat hier op 'NA' en gebruik ik niet (sorry @hsmade ). Maar was met de ESP erbij in de behuizing ook niet betrouwbaar meer (iig. temperatuur niet, luchtvochtigheid zou minder uit moeten maken zou je zeggen).

Prima apparaatje zo, die Resideo. Mocht er nog iemand van zijn tweede meter af willen, PM sturen mag ;) Had al een familielid die interesse toonde :P
Yes, het werkt! Heeft met wel een avond gekost in totaal, maar dat is vooral te wijten aan mijn niet bestaande soldeer skills (inmiddels wel wat beter). Leuk projectje!

Voor mij moest de yaml wel iets anders, iets met een wrappend sensor block ofzo (ik ben nog steeds geen fan van yaml...)
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
esphome:
  name: resideo-01
  friendly_name: Resideo 01
  includes:
    - "cm1106.h"

esp8266:
  board: nodemcuv2

# Enable logging
logger:
  baud_rate: 0 #disable serial logging, because we need RX/TX for the sensor.
    
uart:
  rx_pin: RX
  baud_rate: 9600
  id: cm1106_uart

# hieronder is iets anders
sensor:
- platform: custom
  lambda: |-
    auto cm1106Sensor = new CM1106Sensor(id(cm1106_uart), 3000);
    App.register_component(cm1106Sensor);
    return {cm1106Sensor};
  sensors:
  - name: "CO₂ Sensor"
    accuracy_decimals: 0
    unit_of_measurement: "ppm"
    state_class: measurement
    device_class: carbon_dioxide
    icon: "mdi:molecule-co2"


Overigens ontzettend bedankt voor het delen van de code en alle info @ThinkPad, @hsmade en @TD-er _/-\o_

Desktop: Ryzen 7 7800X3D | 32 GB | Radeon RX 6800


Acties:
  • +9 Henk 'm!

  • Soepstengel
  • Registratie: April 2006
  • Laatst online: 16-09 13:39
De tweede inmiddels ook gedaan maar dit keer tussendoor wel even wat foto's gemaakt. Wellicht handig voor de mensen die dit ook willen doen.

De draden pasten toevallig precies door een paar gaatjes die bij een opening in de behuizing uitkwamen waar mijn ESP 8266 moest komen. Ik had deze toevallig nog liggen, als je ze wilt kopen kan je beter voor de mini variant gaan die elders in dit topic gebruikt worden. Per ongeluk met mijn soldeerbout de blauwe en roze draad geraakt, dus daar moest even een krimpkousje overheen.

Zoals je ziet past het net achter de afdekplaat, maar dan ook echt net. Mocht je dit willen doen, let goed op de positionering! De eerste keer drukte het klepje constant op de boot knop en kwam het hele ding niet online.

Overigens heb ik de temperatuur en luchtvochtigheid niet aangesloten omdat ik het hele huis al vol heb hangen met die dingen.

Afbeeldingslocatie: https://tweakers.net/i/gVOnr8gdvFeh20mCEWg44i412VE=/232x232/filters:strip_icc():strip_exif()/f/image/oJYXD6yNKDURrReY89fd273Y.jpg?f=fotoalbum_tileAfbeeldingslocatie: https://tweakers.net/i/s5tA48r1BLP9ec8fmgnb23f5ISI=/232x232/filters:strip_icc():strip_exif()/f/image/dBLtzVt8Stesycqbc0TxvcJa.jpg?f=fotoalbum_tileAfbeeldingslocatie: https://tweakers.net/i/PZ2Wrr9h25Ay0RWjcK1TXFKbfjo=/232x232/filters:strip_icc():strip_exif()/f/image/aWCSSJcqtihEwpkNwkBZ0g6S.jpg?f=fotoalbum_tile
Afbeeldingslocatie: https://tweakers.net/i/Fo9TgdUibOh7BGgiHyjrn15nDPk=/232x232/filters:strip_icc():strip_exif()/f/image/hIaocQsohJixjh6CRzPscwC7.jpg?f=fotoalbum_tile

Desktop: Ryzen 7 7800X3D | 32 GB | Radeon RX 6800


Acties:
  • +4 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 16:41
Nog een tip: de Resideo's staan ook betaalbaar (€30) op Marktplaats trouwens, nieuw in doos (y)
Ben er eentje aan het regelen voor familielid :)

[ Voor 20% gewijzigd door ThinkPad op 25-01-2024 13:56 ]


Acties:
  • +2 Henk 'm!

  • Kaspers
  • Registratie: Juni 2004
  • Laatst online: 16:35
Ter inspiratie: eindelijk de tijd genomen de CO2 sensor eens netjes weg te werken aan het plafond. Had al een stabiele configuratie met een d1-mini en een MH-Z19B. Overigens gevoed via USB, en dat moest nu via een AC/DC converter, want die zijn soms nog redelijk goed weg te werken in een bestaand inbouwdoosje.

Een en ander eerst passend gemaakt in een doosje:

Afbeeldingslocatie: https://tweakers.net/i/1LmafrwUcbIeOwDr7I_XxGLproo=/800x/filters:strip_exif()/f/image/vB2s7oRkHRxxRA0R5h7WZD92.png?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/vYQlgoYR907_S7uGpK6gQaEwyaI=/800x/filters:strip_exif()/f/image/ByANasByGyV9uhZzk2kIzF3P.png?f=fotoalbum_large

Vervolgens wat houtwerk toegevoegd onder de inbouwdoos in het plafond:

Afbeeldingslocatie: https://tweakers.net/i/LTBEpzb7_FyADc-TZO4xx0cZ-sY=/800x/filters:strip_exif()/f/image/5wDPcgBYoWuetYOihAdMqux4.png?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/da207vZ9s9crGsFuVlq6r16PhYs=/800x/filters:strip_exif()/f/image/H0UAHb6FknQ0U0fKduzhwes4.png?f=fotoalbum_large

Hele verhaal er tegenaan geschroefd:

Afbeeldingslocatie: https://tweakers.net/i/OqRM4TygIeStcnOCYqJNLHpVIuY=/800x/filters:strip_exif()/f/image/rCrlNfP231c1IOWHDAd0tEAx.png?f=fotoalbum_large

En 't kapje er op d:)b

Afbeeldingslocatie: https://tweakers.net/i/O_bpbxU0eGlFSki1706SkMvgMI0=/800x/filters:strip_exif()/f/image/TDyfHGn2wt6514rasPNJsqf3.png?f=fotoalbum_large

Nu nog even wat bijverven. En die hoekjes misschien nog wat opvullen met acrylaat/beglazingskit.

Acties:
  • +2 Henk 'm!

  • TD-er
  • Registratie: Januari 2000
  • Laatst online: 16-09 19:18
Kijk wel uit dat sommige chemicalien die nog even blijven "ademen" de CO2-meting kunnen beinvloeden.
Ik zou sowieso de meter pas plaatsen als je verf of kit droog is al was het alleen al om te voorkomen dat er iets 'neerslaat' in de sensor.

Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)


Acties:
  • +1 Henk 'm!

  • joezzt
  • Registratie: November 2009
  • Niet online
TD-er schreef op zondag 7 januari 2024 @ 12:44:
Heb de code van mijn IIR filter aangepast.
Had er duidelijk even de aandacht niet bij...

Edit:
Nu we toch bezig zijn maar even snel een stukje wat waarschijnlijk ook wel door de compiler geaccepteerd zal worden:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class IIRfilter
{
public:
  IIRfilter(float alpha, float startVal = 0.0f) : _alpha(alpha), _lastVal(startVal) {}

  float next(float newVal)
  {
    _lastVal = (1.0f - _alpha) * newVal +  _alpha * _lastVal;
    return _lastVal;
  }

private:
  float _alpha;
  float _lastVal;
};
Bijna! Dit is zoals het hoort:
lastval+=(newval-lastval)*k
Hoe lager k (van 0 tot 1) hoe trager.

Gibson S-1, Godin Multiac ACS SA, Camps Cut 500S, Roland Jazz Chorus-120 , King Tempo II 607, TMS320C10, SAM4L


Acties:
  • +2 Henk 'm!

  • Seafarer
  • Registratie: November 2012
  • Laatst online: 15:29

Seafarer

XXX

Kaspers schreef op donderdag 1 februari 2024 @ 20:51:
Ter inspiratie: eindelijk de tijd genomen de CO2 sensor eens netjes weg te werken aan het plafond. Had al een stabiele configuratie met een d1-mini en een MH-Z19B. Overigens gevoed via USB, en dat moest nu via een AC/DC converter, want die zijn soms nog redelijk goed weg te werken in een bestaand inbouwdoosje.

Een en ander eerst passend gemaakt in een doosje:

[Afbeelding]

[Afbeelding]

Vervolgens wat houtwerk toegevoegd onder de inbouwdoos in het plafond:

[Afbeelding]

[Afbeelding]

Hele verhaal er tegenaan geschroefd:

[Afbeelding]

En 't kapje er op d:)b

[Afbeelding]

Nu nog even wat bijverven. En die hoekjes misschien nog wat opvullen met acrylaat/beglazingskit.
Beetje ongeoorloofde constructie. Hout hoort niet in een lasdoos. Brandgevaar.

Een CV-Ketel is een vlamkoeler en een radiator is een waterkoeler.


Acties:
  • 0 Henk 'm!

  • True
  • Registratie: April 2011
  • Niet online

True

Dislecticus

Seafarer schreef op vrijdag 2 februari 2024 @ 09:05:
[...]

Beetje ongeoorloofde constructie. Hout hoort niet in een lasdoos. Brandgevaar.
Of wat die witte draad bij de fasen doet en waarom die niet bruin is.
Of waarom die middelste fase draad niet volledig ingestoken is in de wago.

VW ID.7 Tourer Pro S | 5670 Wp JA Solar - 14x405 33° op Zuid | Twente


Acties:
  • 0 Henk 'm!

  • Kaspers
  • Registratie: Juni 2004
  • Laatst online: 16:35
Seafarer schreef op vrijdag 2 februari 2024 @ 09:05:
[...]

Beetje ongeoorloofde constructie. Hout hoort niet in een lasdoos. Brandgevaar.
True schreef op vrijdag 2 februari 2024 @ 15:37:
[...]


Of wat die witte draad bij de fasen doet en waarom die niet bruin is.
Of waarom die middelste fase draad niet volledig ingestoken is in de wago.
Haha, kom maar door (y).
Maar je hebt idd gelijk, had die witte even bruin moeten schilderen van de trafo, of eigenlijk de zwarte moeten gebruiken, aangezien bij AC dat de fase is.

Afbeeldingslocatie: https://tweakers.net/i/pBFF9EFxPmT9B_ehl0B8eOiLx9g=/800x/filters:strip_exif()/f/image/67Gcgjd1vafhdp8XBTnyg5YV.png?f=fotoalbum_large

[ Voor 3% gewijzigd door Kaspers op 02-02-2024 16:05 ]


Acties:
  • +1 Henk 'm!

  • True
  • Registratie: April 2011
  • Niet online

True

Dislecticus

Kaspers schreef op vrijdag 2 februari 2024 @ 16:03:
[...]


[...]


Haha, kom maar door (y).
Maar je hebt idd gelijk, had die witte even bruin moeten schilderen van de trafo, of eigenlijk de zwarte moeten gebruiken, aangezien bij AC dat de fase is.

[Afbeelding]
Die trafo is standaard op 8 mm gestript en een wago vraagt 11 mm, dus dat is ook een dingetje: https://www.tracopower.co...ns/tiw06_installation.pdf

VW ID.7 Tourer Pro S | 5670 Wp JA Solar - 14x405 33° op Zuid | Twente


Acties:
  • 0 Henk 'm!

  • Seafarer
  • Registratie: November 2012
  • Laatst online: 15:29

Seafarer

XXX

Kaspers schreef op vrijdag 2 februari 2024 @ 16:03:
[...]


[...]


Haha, kom maar door (y).
Maar je hebt idd gelijk, had die witte even bruin moeten schilderen van de trafo, of eigenlijk de zwarte moeten gebruiken, aangezien bij AC dat de fase is.

[Afbeelding]
En in de gebruiksaanwijzing staat iets over afzekeren. Want deze bedrading kan niet tijdelijk 16 amp hebben om de zekering in de meterkast te laten ploffen. Dus gaat het branden met hout in de buurt. O-)

Een CV-Ketel is een vlamkoeler en een radiator is een waterkoeler.


Acties:
  • 0 Henk 'm!

  • hsmade
  • Registratie: December 2023
  • Laatst online: 14-09 16:26

Acties:
  • +1 Henk 'm!

  • MzKzM73
  • Registratie: Augustus 2003
  • Laatst online: 09:25
Heb deze ook. Had eerst mijn twijvels want ze gaven best veel verschil tussen de 2 (ca 170 PPM verschil). Toen op advies van hier een dagje naast elkaar in de buitenlucht gezet en toen gaven ze binnen 2 PPM van elkaar aan. Sindsdien heb ik er redelijk vertrouwen in.
Wat ik wel irritant vind is dat de helderheid van de display segmenten spontaan veranderd. Met name in de slaapkamer kan dat wel vervelend zijn.
Deze doen ook temperatuur en relatieve luchtvochtigheid, al heb ik ze eigenlijk vast op PPM CO2 staan.
Ook handig dat er een accu in zit, dus als je even de stroom eraf moet hebben voor klussen blijven ze gewoon doorwerken.

Acties:
  • 0 Henk 'm!

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 08-09 13:47
Super jammer dat het overzicht in de startpost niet meer wordt bijgewerkt.

Heb dit topic voor een aardig eind teruggelezen maar ik kan niet vinden wat ik zoek terwijl ik denk/hoop dat zoiets toch wel zou moeten bestaan?

Ik zoek:
- CO2 meter (een echte, geen laboratorium kwaliteit maar wel behoorlijk nauwkeurig/betrouwbaar)
- Display optioneel
- Batterij niet nodig (maar mag)
- WiFi met lokale API
- Liefst iets in de buurt van de €40,- maar €80,- max
- KNX mag ook ipv WiFi maar dat past niet binnen het budget schat ik in

Heb wel een paar Tuya-compatible devices kunnen vinden maar praten met die dingen is/lijkt een ramp.

Beste optie tot nu toe lijkt de Awair Element 2e hands op de kop tikken of een ESP aan een SDC40 (of gelijkwaardig) solderen. Heb alleen al ruim voldoende projectjes, dus iets off the shelve is een stuk prettiger.

Iemand suggesties?

[ Voor 188% gewijzigd door bartvb op 12-02-2024 14:29 ]


Acties:
  • +1 Henk 'm!

  • Raymond P
  • Registratie: September 2006
  • Laatst online: 15:03
@bartvb Vorige week nog een SCD40 en SEN55 met (connectors/kabeltje) in een doosje geplakt met een esp32-c3.

Uitendelijk wel de 2x4 aders gesoldeerd. Tasmota (knx ip) erop flashen (+ mini config) en een paar gaatjes boren was in totaal nog geen 15 minuutjes werk. Het zit wel in een lelijk lasdoosje, maar ligt op een kast dus who cares.

- knip -


Acties:
  • +1 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 16:41
De Resideo van iBood die hier onlangs besproken werd heb je in 10 min. omgebouwd met een ESP8266 erin als je weet aan welke kant je een soldeerbout moet vasthouden :+

Op iBood nu uitverkocht, maar Marktplaats staat er ook vol mee. Ben je voor €25-30 klaar en kun je hem lokaal uitlezen. Zit een CM1106 NDIR sensor in die prima accuraat is vergeleken met een Aranet4 of vergeleken met MH-Z19.

[ Voor 6% gewijzigd door ThinkPad op 12-02-2024 16:18 ]


Acties:
  • 0 Henk 'm!

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 08-09 13:47
Hmm, geen off the shelve oplossing dus. Jammer :)

Maar dat is behoorlijk betaalbaar via Marktplaats. Dan toch maar even knutselen, dank voor de suggestie :)

Ik heb hier geen Home Assistant in gebruik, ESP Home is dus niet heel bruikbaar, maar het lijkt erop dat dit niet super ingewikkeld is om in vanilla Arduino aan de praat te krijgen. Heb ook vooral interesse in de CO2 sensor, dus alleen het UART deel aan de praat krijgen is goed genoeg voor mij.

Paar vraagjes; heb net een van de Resideos uit de doos gehaald, een tijd buiten gezet (paar uur) en daarna ingeschakeld. Hij gaat dan aan het calibreren maar aan het eind van de rit (ver na het calibreren, na iets van een uur) gaf hij een waarde van 600ppm CO2 aan. Dat is een stuk hoger dan ik had verwacht buiten?

Volgende stap is het verbinden van een ESP. Heb hier vooral ESP32-WROOMs liggen. Voor zover ik weet doen die alleen aan 3,3V TTL. Hoe hebben jullie dat opgelost, of valt er niets op te lossen en gebruikt de Resideo ook 3.3V? Op de foto's zitten de ESPs rechtstreeks aan de UART contacten op de prints. De scope zit hier nog in een verhuisdoos :)

Acties:
  • 0 Henk 'm!

  • Raymond P
  • Registratie: September 2006
  • Laatst online: 15:03
@bartvb Als je ze in +/-400ppm co2 legt (of buiten) dan moeten ze wel aan staan om daar iets van mee te krijgen. Het zijn digitale sensors, niet analoog. :)
De buitenlucht is ook erg variabel en met name hoge luchtvochtigheid, dauw of zonlicht heeft een flink effect op NDIR sensors.

Volgens de datasheet van o.a. een CM1106H-NS die ik kon vinden is UART op 3.3V TTL (5V compatible).

- knip -


Acties:
  • 0 Henk 'm!

  • ZonnigY
  • Registratie: Mei 2022
  • Laatst online: 15:52
Ik heb de resideo's van ibood binnen. Ze vonden het hier bij het aanzetten 1500+ ppm. Mijn gekalibreerde meter zat op 850... Nu even kijken of de auto kalibratie werkt. De handleiding zegt niets over buiten of in een zeer goed gekalibreerde ruimte zetten (zoals bij mijn oude co2 meter), maar vind dat ik hem 24 uur in de ruimte moet laten staan. Dat maar eens testen. Gelukkig kan het alarm uit :)

Bosch 5800i 10, vloerverwarming & fancoils, Zehnder Q600


Acties:
  • 0 Henk 'm!

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 08-09 13:47
Ik heb hier ook zitten kijken bij mijn Steinel Multisensor (KNX aanwezigheidsmelder) en daar staat in de handleiding ook niets over calibreren. Vreemd. Zelfde met de Gira CO2 KNX sensoren die ik hier heb hangen:
https://partner.gira.de/data2/21043290.pdf

In die handleiding staat alleen:
CO2 sensor module
The integrated CO2 sensor module is responsible for measuring the CO2. It is maintenance-free
due to the automatic calibration method (dual beam measuring cell). It has excellent long-term
stability.
After switch-on, the CO2 sensor module requires a warm-up period of up to 5 minutes, until
normal operation is reached.
The automatic calibration method is only available in the case of permanent bus voltage
and after 24 hours for the first time.
Mij lijkt dat die auto calibratie alleen werkt als je regelmatig 400ppm (of iets in die buurt) in de ruimte hebt waar de sensor hangt. Dit is wat die sensoren nu doen:

Afbeeldingslocatie: https://tweakers.net/i/fQLH0606DhzdZT5TMBCsD-4XptE=/800x/filters:strip_exif()/f/image/1a7xtnDZPFTemOSgdqW9I063.png?f=fotoalbum_large

Iedere keer twee sensoren in 1 ruimte. Je ziet dat ze wel dezelfde trend volgen, maar ze zijn het niet bepaald eens over de absolute waarde...

De Steinel is het overigens behoorlijk eens met de Resideo's die nu op mijn bureau staan in het kantoor. Steinel zegt 975ppm, Resideo's zeggen 1025 en 1040 ppm.

Lijkt erop dat ik hier wat meer moet gaan ventileren. Volgende project is de Zehnder Q600 WTW-unit traploos in toerental laten varieren op basis van CO2. Heb ook een klep in het systeem zitten waardoor ik de ventilatievoud op de benedenverdiepingen kan verlagen als we allemaal op de slaapverdieping zijn. Er valt genoeg te spelen met de CO2 waardes dus.


@Raymond P Haha, ik had de Resideo's natuurlijk wel aangezet. Maar hoge luchtvochtigheid kan best het probleem zijn geweest hier. Dank voor de datasheet!

[ Voor 14% gewijzigd door bartvb op 14-02-2024 22:09 ]


Acties:
  • 0 Henk 'm!

  • Raymond P
  • Registratie: September 2006
  • Laatst online: 15:03
De laagst gemeten waarde binnen 24 uur is de nieuwe 400ppm.
Auto Calibration:
Rough installing and influence of transportation might result in reducing of sensor measuring accuracy and
baseline drift, sensor will correct the drift by the built-in self-correcting logic, and the auto baseline correction period
is 24h+7 days. Powering on the sensor for 24 hours continuously, it will record the lowest CO2 concentration
measurement value during the 24 hours, which will be regarded as baseline (400ppm) when sensor implements
auto calibration after the 24 hours working, and then the sensor will enter regular 7 days correction cycle, auto
calibration will be implemented every 7 days. In order to ensure correct auto calibration, please make sure
working environment of the sensor can reach to outdoor fresh air level (400ppm) during the 24 hours and regular
7days auto baseline correction cycle.
Note: Please contact with Cubic for more detailed auto calibration strategy.
(uit de datasheet)

Hier is dat niet elke dag haalbaar, om (kans op) +/-400ppm binnen te hebben moet er echt stevig gelucht worden op tijden dat ik daar helemaal geen trek in heb.
En sensors elke dag in een ruimte leggen waar dat wel haalbaar is ben ik écht te lui voor.
Sensors met een grotere ABC periode werken imo dan ook fijner.

- knip -


Acties:
  • 0 Henk 'm!

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 16:18
@TD-er Is het een idee om die resideo ondersteuning mee te nemen in ESPEasy? (climate build)
Ik heb nu een Resideo omgebouwd zoals velen hier, heb nog een RF chipje liggen voor besturing van een Orcon MVS15RHB. Zou mooi zijn als ik die besturing in de resideo kan proppen, scheelt me een controller (en 5V adapter)

Echter is Orcon ondersteuning alleen in de Itho plugin van ESPEasy gebouwd, is niet meegenomen naar de port voor ESPHome.

Acties:
  • 0 Henk 'm!

  • TD-er
  • Registratie: Januari 2000
  • Laatst online: 16-09 19:18
Ik sta altijd open voor PR's :)
Vooral voor dingen waarvan ik de hardware niet zelf heb liggen is het wel wenselijk dat iemand met de echte hardware al een opzetje heeft en dingen kan testen.

En qua uitsparen van adapters voor stroomvoorziening...
Je zou ook kunnen denken aan PoE met Ethernet.
Heb nu net weer een hele trits aan supported Ethernet chips toegevoegd inclusief de M5Stack AtomPoE (vandaag ook PR voor Arduino ervoor gemaakt).
Dan kun je lekker compacte modules maken en de voeding compleet ergens anders plaatsen.

Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)


Acties:
  • 0 Henk 'm!

  • OcGuru
  • Registratie: Juni 2004
  • Laatst online: 13:00

OcGuru

Giulietta Qv

Hier ook aan het stoeien met een van de Resideo van Ibood.

Heb nu een draad aan de D aansluiting zitten de de G.

de D gaat uiteraard naar de Rx van de esp8266. en de G naar de ground toe van de esp.

Maar zodra ik deze inplug op de esp stopt de communicatie tussen de co2 module en display. Tevens krijg ik geen data binnen dan. Haal ik hem weer los dan werkt weer alles als vanouds. Heb er nu een logic analyzer op zitten en dit werkt prima.

Moet de seriële poort van de esp eerst nog geconfigureerd worden ofzo ? Dacht dat een hardware matige Rx pin gewoon direct zou moeten werken.

Bl44t


Acties:
  • 0 Henk 'm!

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 16:18
De RX van de ESP is standaard een seriele console, die moet je uitschakelen. Tevens is de RX hoog tijdens boot. Misschien toch handiger om een andere pin te kiezen hiervoor?

Hier werkt ie inmiddels. Gisteren een halfuur buiten gelegd (daarom is de accu handig), is nu gecalibreerd. Gaf buiten 575 of iets in die richting aan, dus was ook wel nodig.

Geeft wel bewustwording zo'n ding. We ventileren meer inmiddels.

Orcon inmiddels ook aan de praat, maar nog met 2 losse modules. Nu de boel nog samen laten werken in HA.
Heb nog een resideo liggen en een extra RF module, dus mogelijk ga ik nog kijken of ik een plugin voor espeasy kan maken of de Orcon support alsnog naar esphome krijgen.

Acties:
  • 0 Henk 'm!

  • TD-er
  • Registratie: Januari 2000
  • Laatst online: 16-09 19:18
Hoe is de power van je ESP en de sensor geregeld?
Als je beide GNDs met elkaar verbind, maar ze hebben elk een eigen voeding, dan kun je hele vreemde dingen krijgen.

Het beste is om alles uit dezelfde voeding te doen (mits deze dat trekt en alle kabeltjes niet te dun zijn uiteraard)
Welk signaal-niveau voor de serial data heeft de sensor nodig?
Als dit 5V level is, dan kan het zijn dat de interne diodes in de ESP dit naar 3V3 trekken en daardoor de levels te laag worden vor je display met z'n eigen controller.

Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)


Acties:
  • +1 Henk 'm!

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 16:18
Nog een andere plek gevonden in de resideo behuizing: op z'n kant naast de print. Moeten er wel 2 nokjes van het deksel gesneden worden en misschien even een tussenschotje maken.
Voordeel is dat ik dan de RF module in het verlengde van de ESP binnenin de behuizing kwijt kan.

Orcon RF support ga ik naar ESPHome trekken. Integreert net wat makkelijker met HA dan ESPEasy.

Overigens debiel wat houtkachels in de lucht gooien. Had vanavond 1570ppm te pakken, zet het raam open en liep alleen maar op :X. Halve straat heeft houtkachels en het is windstil.

[ Voor 19% gewijzigd door _JGC_ op 17-02-2024 23:07 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Hier nu ook 2 Resideo co2 meters in huis. De waardes lijken mij toch redelijk wat hoog. Half dagje in de buitenlucht gehad gisteren en veel lager dan 600ppm komen ze niet. Kwestie van tijd? Kan niet echt vinden hoe deze sensoren zichzelf kalibreren.

Acties:
  • 0 Henk 'm!

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 08-09 13:47
Hier geven ze een heel groot deel van de tijd 400ppm aan, loopt soms langzaam op naar de 500 oid maar veel gekker wordt het niet. WTW hier maar die staat op de laagste (normale, niet afwezig) stand. Raar.

Heb bij een van de Resideos wel even met de oscilloscoop zitten kijken maar dat behoorlijk voorzichtig gedaan, denk niet dat ik iets heb kortgesloten. Maar lijkt er een beetje op dat hij nu denkt dat 600ppm 400ppm is oid. Die unit geeft nu overigens een constant groene balk boven het display die ongeveer om de 5 seconde heel kort oranje oplicht. Iemand een idee wat dat is?

Binnenkort maar eens een ESP aan hangen en er wat logging op loslaten.

Acties:
  • +2 Henk 'm!

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 16:18
De sensor in de resideo doet automatische calibratie. De eerste 24 uur wordt de laagste waarde op 400 gezet, vervolgens wordt dat elke 7 dagen gedaan.

Als je dat ding de eerste 24 uur een tijdje buiten legt of in een extreem goed geventileerde ruimte is dat de waarde die als 400 gezet wordt.

Leg je dat ding neer in een slecht geventileerde ruimte die altijd op 1500 zit, is die 1500 na een dag de nieuwe 400 waarde en geeft je meter altijd 400 aan.

Acties:
  • 0 Henk 'm!

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 08-09 13:47
Dank!

Worden die calibratiewaardes onthouden, of begint dit opnieuw nadat je de stroom vde sensor/MCU spanningsloos hebt gemaakt?

Acties:
  • 0 Henk 'm!

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 16:18
Geen idee eigenlijk, maar wat denk je waarom er een batterij in zit?

Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 16:41
De CO2-sensor in de Resideo is een CM1106 waar een datasheet van beschikbaar is. Hier staat in beschreven hoe je de sensor kan kalibreren:

- De 'CA' pin een aantal seconden verbinden (maar of dat met GND of 3V3 is staat er dan weer niet bij :S )
- Een commando tot kalibratie sturen over serial

Voor dat tweede kun je het beste de sensor even demonteren van de Resideo en standalone met een ESP o.i.d. verbinden, dan weet je zeker dat de CPU van de Resideo zich er niet mee loopt te bemoeien. En dan kun je ook zien wat voor reply de CO2-sensor teruggeeft.

[ Voor 7% gewijzigd door ThinkPad op 18-02-2024 09:49 ]


Acties:
  • 0 Henk 'm!

  • Raymond P
  • Registratie: September 2006
  • Laatst online: 15:03
_JGC_ schreef op zaterdag 17 februari 2024 @ 23:05:
Nog een andere plek gevonden in de resideo behuizing: op z'n kant naast de print. Moeten er wel 2 nokjes van het deksel gesneden worden en misschien even een tussenschotje maken.
Voordeel is dat ik dan de RF module in het verlengde van de ESP binnenin de behuizing kwijt kan.

Orcon RF support ga ik naar ESPHome trekken. Integreert net wat makkelijker met HA dan ESPEasy.

Overigens debiel wat houtkachels in de lucht gooien. Had vanavond 1570ppm te pakken, zet het raam open en liep alleen maar op :X. Halve straat heeft houtkachels en het is windstil.
Ik denk dat je dan ook heel erg blij wordt van een fijnstofmeter. :p Hier ook last van als de wind verkeerd staat.
Ikea heeft een unit voor een paar tientjes, daar zit een Sen54 in.

---

Over een paar maandjes komt Sensirion overigens met een (erg kleine) sensor waar onder andere een fijnstof, nox én ndir co2 sensor in zit (sen6x).

- knip -


Acties:
  • 0 Henk 'm!

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 16:18
@Raymond P Eerst maar eens koolfilters in de roosters zetten. Fijnstofmeter is leuk, maar iets waar je geen invloed op hebt meten geeft alleen maar onrust.

Acties:
  • 0 Henk 'm!

  • Raymond P
  • Registratie: September 2006
  • Laatst online: 15:03
Weten wanneer je wel/niet een raampje open kunt zetten is hier wel handig. Een beetje invloed heb je altijd.

Actieve koolstof is leuk tegen stikstofoxiden en geurtjes maar doet niets tegen Co2 (en fijnstof).

- knip -


Acties:
  • 0 Henk 'm!

  • TD-er
  • Registratie: Januari 2000
  • Laatst online: 16-09 19:18
_JGC_ schreef op zaterdag 17 februari 2024 @ 23:05:
[...]

Orcon RF support ga ik naar ESPHome trekken. Integreert net wat makkelijker met HA dan ESPEasy.
[...]
Even voor mijn idee, daar ik nog nooit iets met HA gekoppeld heb, wat maakt dat het met ESPEasy zoveel moeilijker is?
Oftewel wat mis ik nog?
Dan ga ik kijken hoe ik dat kan toevoegen.

Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)


Acties:
  • +1 Henk 'm!

  • Ingelogd
  • Registratie: April 2010
  • Laatst online: 07:36
_JGC_ schreef op zondag 18 februari 2024 @ 09:18:
De sensor in de resideo doet automatische calibratie. De eerste 24 uur wordt de laagste waarde op 400 gezet, vervolgens wordt dat elke 7 dagen gedaan.

Als je dat ding de eerste 24 uur een tijdje buiten legt of in een extreem goed geventileerde ruimte is dat de waarde die als 400 gezet wordt.

Leg je dat ding neer in een slecht geventileerde ruimte die altijd op 1500 zit, is die 1500 na een dag de nieuwe 400 waarde en geeft je meter altijd 400 aan.
400ppm klopt eigenlijk ook niet meer. In 2015 zat het rond de 400ppm, gemiddeld in 2023 was het 420ppm. Eigenlijk zou er een optie moeten zijn dat de 1-punts kalibratie waarde van de sensor handmatig aangepast kan worden.

[ Voor 4% gewijzigd door Ingelogd op 18-02-2024 14:11 ]


Acties:
  • 0 Henk 'm!

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 16:18
TD-er schreef op zondag 18 februari 2024 @ 13:21:
[...]

Even voor mijn idee, daar ik nog nooit iets met HA gekoppeld heb, wat maakt dat het met ESPEasy zoveel moeilijker is?
Oftewel wat mis ik nog?
Dan ga ik kijken hoe ik dat kan toevoegen.
Ik denk dat het aan HA ligt, of iig mijn beperkte kennis van HA tot nu toe. Alles wat ik tot nu toe met MQTT aan HA hang wordt direct opgepakt in de discovery. ESPEasy wordt totaal niet gezien, moet waarschijnlijk met een yml bestand handmatig worden toegevoegd.

Maargoed, is wel prettig om gewoon 1 platform te hebben. Die Orcon ondersteuning is zo op het eerste gezicht niet zo moeilijk te porten, paar byte reeksen toevoegen en de aangepaste itho lib uit ESPEasy includen en dat is het ook wel.

Acties:
  • 0 Henk 'm!

  • TD-er
  • Registratie: Januari 2000
  • Laatst online: 16-09 19:18
Evengoed is het wel belangrijk voor mij te weten waarom dingen "niet zo easy" zijn :)
Dus zal even naar die discovery kijken.
Nou ja "even"... heb zonet al even zitten Googlen en dat is toch wel minstens een week werk denk ik. (dus meerdere kalenderweken voor het geimplementeerd is)

Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)


Acties:
  • 0 Henk 'm!

  • OcGuru
  • Registratie: Juni 2004
  • Laatst online: 13:00

OcGuru

Giulietta Qv

TD-er schreef op zaterdag 17 februari 2024 @ 16:49:
Hoe is de power van je ESP en de sensor geregeld?
Als je beide GNDs met elkaar verbind, maar ze hebben elk een eigen voeding, dan kun je hele vreemde dingen krijgen.

Het beste is om alles uit dezelfde voeding te doen (mits deze dat trekt en alle kabeltjes niet te dun zijn uiteraard)
Welk signaal-niveau voor de serial data heeft de sensor nodig?
Als dit 5V level is, dan kan het zijn dat de interne diodes in de ESP dit naar 3V3 trekken en daardoor de levels te laag worden vor je display met z'n eigen controller.
Esp word door de usb gevoed dor de pc. En de resideo door zn accu. Ik zou toch moeten werken als je beide gnd aan elkaar koppelt zodat de allebei dezelfde 0v- referentie hebben. Vaak genoeg verschillende dingen gevoed via deze manier :P


Maar goed. Hij doet het inmiddels naar veel try & error :o. Er stonden een paar spaties verkeerd en daardoor kreeg ik een shitload aan compile errors met de meest wazige waarschuwingen cq foutmeldingen. Lekker makkelijk |:( :P


Afbeeldingslocatie: https://tweakers.net/fotoalbum/image/pST3U5brV0spQKZqyUh5dHKp.png


De mensen in de topic super bedankt voor de aangepaste cm1106.h file en alle informatie en uitzoekwerk _/-\o_

Bl44t


Acties:
  • 0 Henk 'm!

  • Raymond P
  • Registratie: September 2006
  • Laatst online: 15:03
TD-er schreef op zondag 18 februari 2024 @ 14:57:
Evengoed is het wel belangrijk voor mij te weten waarom dingen "niet zo easy" zijn :)
Dus zal even naar die discovery kijken.
Nou ja "even"... heb zonet al even zitten Googlen en dat is toch wel minstens een week werk denk ik. (dus meerdere kalenderweken voor het geimplementeerd is)
Referentiekader is dan wel belangrijk denk ik. Verschil tussen volledig automagisch en zelf toevoegen.
Het aanpassen van een yaml file is een drempel voor een HA gebruiker die verder alles via de webinterface met een muis kan doen op z'n ready-to-use pre-installed hardware.

Fwiw je moet een addon installeren in Homeassistant om met config files aan de slag te gaan als je niet bekend bent met cli/sftp etc.
Het splitten/includen van verschillende files is ook niet echt handig en met een flinke lijst sensors absoluut geen pretje om handmatig te onderhouden.

- knip -


Acties:
  • 0 Henk 'm!

  • TD-er
  • Registratie: Januari 2000
  • Laatst online: 16-09 19:18
Naar wat ik zo snel 'even' heb gezien is dat je via een retained message per sensor je configuratie aangeeft en als dat niet meer van toepassing is 'clear' je die door een leeg retained message te publishen. (standaard voor MQTT)
Best een slimme manier om ook na een restart van HA weer te weten welke sensoren er zouden moeten zijn. Lekker simpel ook, houd ik wel van :)

Ik zal me dus 'even' moeten verdiepen in hoe die messages geformatteerd moeten worden en hoe de topic-structuur in HA zou moeten zijn.

Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)


Acties:
  • +1 Henk 'm!

  • Raymond P
  • Registratie: September 2006
  • Laatst online: 15:03
@TD-er Klopt, feitelijk schrijf je daar de config weg die user anders in yaml zou moeten doen. Daar kan je dus een vertaalslag voeren naar de huidige structuur.

Een integration zoals Tasmota waar je dat globaal doet ipv per-device kan ook.

- knip -


Acties:
  • +1 Henk 'm!

  • LarsMachiels
  • Registratie: November 2019
  • Laatst online: 16:20
Voor geïnteresseerden:

Voorbeeld MQTT autodiscovery configuratie message voor Home Assistant / Domoticz

Topic: homeassistant/sensor/MS-wand_CO2/config (elke sensor heeft zijn eigen message)

Voorbeeld MQTT autodiscovery configuratie message voor autodiscovery. "state_topic" geeft aan waar de eigenlijke waarde gevonden kan worden.

{ "name" : "MS-wand CO2", "unique_id" : "MS-wand_CO2", "device_class" : "carbon_dioxide", "state_topic" : "moresense/msp-6ECC/values", "value_template" : "{{ value_json.CO2 }}", "unit_of_measurement" : "ppm", "dev" : { "identifiers" : "MS-wand", "manufacturer" : "MoreSense", "model" : "MS05", "name" : "MoreSense MS05", "sw_version" : "1.0.5" } }

Meting zelf:

{"ClientID":"MS-6ECC","Date":"19-02-2024","Time":"09:47:08","CO2":1211,"Temperature":20.38,"Humidity":54.31}

Acties:
  • 0 Henk 'm!

  • TD-er
  • Registratie: Januari 2000
  • Laatst online: 16-09 19:18
Even voor de duidelijkheid de messages geformatteerd:
JSON:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  "name": "MS-wand CO2",
  "unique_id": "MS-wand_CO2",
  "device_class": "carbon_dioxide",
  "state_topic": "moresense/msp-6ECC/values",
  "value_template": "{{ value_json.CO2 }}",
  "unit_of_measurement": "ppm",
  "dev": {
    "identifiers": "MS-wand",
    "manufacturer": "MoreSense",
    "model": "MS05",
    "name": "MoreSense MS05",
    "sw_version": "1.0.5"
  }
}


Meting zelf:
JSON:
1
2
3
4
5
6
7
8
{
  "ClientID": "MS-6ECC",
  "Date": "19-02-2024",
  "Time": "09:47:08",
  "CO2": 1211,
  "Temperature": 20.38,
  "Humidity": 54.31
}

En deze meting stuur je dan naar "moresense/msp-6ECC/values" ?
Dan zit ik alleen nog even met dat je dus 3 meetwaarden in dat bericht hebt staan.
Maar je geeft maar 1 unit of measure aan.
Stuur je dan meerdere van die discovery messages die elk verwijzen naar een andere value_template?
Dus "{{ value_json.Temperature }}" bijvoorbeeld?

En waar bepaal je de ClientID? Of waar wordt die gebruikt?

[ Voor 3% gewijzigd door TD-er op 19-02-2024 11:08 ]

Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)


Acties:
  • 0 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 16:41
@TD-er Ik twijfel een beetje of dit topic de juiste plek is om te bespreken hoe ESPEasy geschikt kan worden gemaakt voor Home Assistant ;)

[ Voor 5% gewijzigd door ThinkPad op 19-02-2024 11:16 ]


Acties:
  • 0 Henk 'm!

  • Raymond P
  • Registratie: September 2006
  • Laatst online: 15:03
@TD-er Bekijk het andersom. Je maakt een virtueel device en daaraan koppel je sensors. Elke sensor is (in principe) 1 entry met een reference naar virtueel device en kan meerdere attributes bevatten.

Feitelijk gezien heb je dus idd meerdere messages in een topic, bijvoorbeeld een knop:
Afbeeldingslocatie: https://tweakers.net/i/YfRpl8JCqkVM9k7Y2rGt5NjxFf4=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/tZTaiwURyU6qodECA5ZJ8prk.png?f=user_large

Binnen HA hangt het dan netjes aan elkaar:
Afbeeldingslocatie: https://tweakers.net/i/SEPxMN7dTfx2McBZuILH4n2DzGo=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/Hz3x41x8V4x4rXEyf3XI11GA.png?f=user_large

Edit: @ThinkPad mea culpa, daar heb je gelijk in.

[ Voor 3% gewijzigd door Raymond P op 19-02-2024 11:20 ]

- knip -


Acties:
  • +1 Henk 'm!

  • TD-er
  • Registratie: Januari 2000
  • Laatst online: 16-09 19:18
@ThinkPad
Tsja op zich heb je daar wel een punt... Nou ja hier dan maar verder voor wie info heeft die ik zou kunnen gebruiken om dit te implementeren.

Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)


Acties:
  • 0 Henk 'm!

  • LarsMachiels
  • Registratie: November 2019
  • Laatst online: 16:20
TD-er schreef op maandag 19 februari 2024 @ 11:07:
Even voor de duidelijkheid de messages geformatteerd:
JSON:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  "name": "MS-wand CO2",
  "unique_id": "MS-wand_CO2",
  "device_class": "carbon_dioxide",
  "state_topic": "moresense/msp-6ECC/values",
  "value_template": "{{ value_json.CO2 }}",
  "unit_of_measurement": "ppm",
  "dev": {
    "identifiers": "MS-wand",
    "manufacturer": "MoreSense",
    "model": "MS05",
    "name": "MoreSense MS05",
    "sw_version": "1.0.5"
  }
}


Meting zelf:
JSON:
1
2
3
4
5
6
7
8
{
  "ClientID": "MS-6ECC",
  "Date": "19-02-2024",
  "Time": "09:47:08",
  "CO2": 1211,
  "Temperature": 20.38,
  "Humidity": 54.31
}

En deze meting stuur je dan naar "moresense/msp-6ECC/values" ?
Dan zit ik alleen nog even met dat je dus 3 meetwaarden in dat bericht hebt staan.
Maar je geeft maar 1 unit of measure aan.
Stuur je dan meerdere van die discovery messages die elk verwijzen naar een andere value_template?
Dus "{{ value_json.Temperature }}" bijvoorbeeld?

En waar bepaal je de ClientID? Of waar wordt die gebruikt?
Voor elke waarde (co2/temp/hum. etc.) moet een aparte config message worden aangemaakt. Deze messages moeten de "retain" status krijgen. Vervolgens moeten de metingen naar de MQTT server gestuurd worden. De inhoud mag je zelf bepalen zolang je de plek kan aangeven in de config messages.

Afbeeldingslocatie: https://tweakers.net/i/cVoWRHPAUrPJkxik6nbGB7zpki8=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/TmP2nELcoo0su2GOG3xZxady.png?f=user_large

Acties:
  • 0 Henk 'm!

  • Driek
  • Registratie: Maart 2002
  • Nu online
ThinkPad schreef op maandag 12 februari 2024 @ 16:17:
De Resideo van iBood die hier onlangs besproken werd heb je in 10 min. omgebouwd met een ESP8266 erin als je weet aan welke kant je een soldeerbout moet vasthouden :+

Op iBood nu uitverkocht, maar Marktplaats staat er ook vol mee. Ben je voor €25-30 klaar en kun je hem lokaal uitlezen. Zit een CM1106 NDIR sensor in die prima accuraat is vergeleken met een Aranet4 of vergeleken met MH-Z19.
Is er nog een specifieke esp8266? Ik verdwaal altijd in de versie die er zijn.

Er is een resideo onderweg, daarna uiteraard aan de slag om te koppelen aan ha.

Tijd van werken, tijd van rusten


Acties:
  • +2 Henk 'm!

  • TD-er
  • Registratie: Januari 2000
  • Laatst online: 16-09 19:18
Ik zou in deze tijd niet meer een ESP8266 aanschaffen, maar eerder gewoon een ESP32-variant.
Als je er nog eentje hebt liggen, dan kan een ESP8266 nog wel natuurlijk, maar koop ze niet meer 'nieuw'.

Mocht je iets zoeken, ga er dan in elk geval voor eentje met minimaal 4 MB, dat maakt updaten een stuk makkelijker.

Volgens mij ondersteunen alle firmwares (ESPEasy/Tasmota/ESPHome/Espruna, etc) inmiddels wel de iets nieuwere ESP32's zoals de ESP32-S2/S3/C3
Van de C3 zijn er ook hele compacte versies te krijgen, die zijn wellicht makkelijker weg te werken? (Voorbeeld)
En die zijn er met USB-C te krijgen en voorzien van fatsoenlijk stabiele stroomvoorziening vanuit USB. Dat is bij menig ESP8266 bordje nogal eens een uitdaging.

Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)


Acties:
  • 0 Henk 'm!

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 16:18
De Orcon op ESPHome werkt nu. Nog wel wat bugs mogen oplossen, want Orcon en Itho hebben voor verschillende instellingen dezelfde bytereeksen en de detectie is met een if/then/else constructie gebouwd waarbij Itho eerst is... OrconAuto is dezelfde bytereeks als IthoHigh.
Verder was de Itho lib in ESPEasy iets aangepast mbt uitgecommente SPI init (doet ESPEasy zelf), dat moest weer terug in de lib.

Yaml file van hierboven samengevoegd, nu mooi fan knopjes, fan status en een CO2 waarde op 1 module.

Edit: calibratie blijft een dingetje... liggen nu 2 naastelkaar, de een 1228, de ander 1895.

[ Voor 8% gewijzigd door _JGC_ op 19-02-2024 23:51 ]


Acties:
  • +1 Henk 'm!

  • TD-er
  • Registratie: Januari 2000
  • Laatst online: 16-09 19:18
@_JGC_ Evengoed zou een PR, of een GitHub issue met de benodigde info voor implementatie van de resideo in ESPEasy nog steeds welkom zijn hoor :)

Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)


Acties:
  • 0 Henk 'm!

  • Driek
  • Registratie: Maart 2002
  • Nu online
TD-er schreef op maandag 19 februari 2024 @ 22:36:
Ik zou in deze tijd niet meer een ESP8266 aanschaffen, maar eerder gewoon een ESP32-variant.
Als je er nog eentje hebt liggen, dan kan een ESP8266 nog wel natuurlijk, maar koop ze niet meer 'nieuw'.

Mocht je iets zoeken, ga er dan in elk geval voor eentje met minimaal 4 MB, dat maakt updaten een stuk makkelijker.

Volgens mij ondersteunen alle firmwares (ESPEasy/Tasmota/ESPHome/Espruna, etc) inmiddels wel de iets nieuwere ESP32's zoals de ESP32-S2/S3/C3
Van de C3 zijn er ook hele compacte versies te krijgen, die zijn wellicht makkelijker weg te werken? (Voorbeeld)
En die zijn er met USB-C te krijgen en voorzien van fatsoenlijk stabiele stroomvoorziening vanuit USB. Dat is bij menig ESP8266 bordje nogal eens een uitdaging.
Dank je, dan zal ik degene bestellen die je linkte, ik heb nog wel wat oude liggen, maar die paar euro is dan wel handig om te investeren.

Tijd van werken, tijd van rusten


Acties:
  • 0 Henk 'm!

  • TD-er
  • Registratie: Januari 2000
  • Laatst online: 16-09 19:18
Die ik linkte zijn erg makkelijk en ik heb er nu zo'n stuk of 3 gebruikt (van de 20 die ik besteld heb ;) ) en die werkten allen prima.
Heb er ook een paar van die "pinheader adapters" bij besteld, is soms wat makkelijker om even snel wat Dupont stekkers op te klemmen.
Die verkoper van de C3 modules leverde trouwens ook extreem snel. Was binnen een week in huis.
Linkje van die adapter heb ik er even bijgezocht, willekeurige verkoper, daar de verkoper waar ik ze besteld had ze niet meer heeft staan.

Raad wel aan deze ultra-goedkope C3 modules een paar extra te kopen.
Tot nog toe ben ik blij verrast dat ik nog geen issues ben tegen gekomen, maar ze zien er wel net zo goedkoop uit als de prijs doet vermoeden.

Alternatief is de SEEED Studio variant (ook bij TinyTronics.nl als je 'm snel wilt) in dezelfde formfactor.
Die is alleen wel ruim 3x zo duur maar heeft een externe antenne.
Kan een voordeel zijn voor de ontvangst, maar ook een nadeel omdat je 'm wel maar net kwijt moet kunnen.

Een goedkope voeding is als een lot in de loterij, je maakt kans op een paar tientjes korting, maar meestal betaal je de hoofdprijs. mijn posts (nodig wegens nieuwe layout)


Acties:
  • 0 Henk 'm!

  • Driek
  • Registratie: Maart 2002
  • Nu online
is er ergens een goede how to om de esp aan de resideo te hangen, en de esp te programmeren/flashen?

Tijd van werken, tijd van rusten


Acties:
  • 0 Henk 'm!

  • Cadezo
  • Registratie: Februari 2006
  • Niet online
Ik heb ook de Resideo geüpgraded met een Wemos D1 Mini (5V/GND van de DC barrel; Tx naar Rx). Het valt me alleen op dat de waarde in Home Assistant achterloopt op de waarde op het display (op de Resideo zelf). Als ik bijvoorbeeld kunstmatig hoeveelheid CO2 verhoog dan wordt dit vrijwel direct weergegeven op het diplay, terwijl de waarde in Home Assistant pas later omhoog schiet. Meer mensen die dit opvalt?

Nvm, opnieuw compiled (met korter update interval van 1sec/1000ms in de yaml) en nu is het realtime.

[ Voor 16% gewijzigd door Cadezo op 20-02-2024 18:35 ]


Acties:
  • 0 Henk 'm!

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 08-09 13:47
Driek schreef op dinsdag 20 februari 2024 @ 09:37:
is er ergens een goede how to om de esp aan de resideo te hangen, en de esp te programmeren/flashen?
Er staat behoorlijk wat informatie in dit topic. Maar het hangt er nogal vanaf wat je wil doen. Met de posts in dit topic zou het moeten lukken om de waardes in Home Assistant te krijgen.

Een gestructureerde HowTo is er, voor zover ik weet, niet.

Acties:
  • 0 Henk 'm!

  • Driek
  • Registratie: Maart 2002
  • Nu online
bartvb schreef op woensdag 21 februari 2024 @ 16:45:
[...]


Er staat behoorlijk wat informatie in dit topic. Maar het hangt er nogal vanaf wat je wil doen. Met de posts in dit topic zou het moeten lukken om de waardes in Home Assistant te krijgen.

Een gestructureerde HowTo is er, voor zover ik weet, niet.
Ik ga me er eens in verdiepen.
Ik ben zelf wel een beetje technisch, kan wat solderen, kan wat programmeren. Maar zeker voor het laatste heb ik vaak wel een handleiding nodig.
Ik ben van het betere jat, plak en pas aan werk. Maar ik kijk hoe ver ik ga komen.

Tijd van werken, tijd van rusten


Acties:
  • 0 Henk 'm!

  • ZonnigY
  • Registratie: Mei 2022
  • Laatst online: 15:52
Driek schreef op woensdag 21 februari 2024 @ 18:39:
[...]

Ik ga me er eens in verdiepen.
Ik ben zelf wel een beetje technisch, kan wat solderen, kan wat programmeren. Maar zeker voor het laatste heb ik vaak wel een handleiding nodig.
Ik ben van het betere jat, plak en pas aan werk. Maar ik kijk hoe ver ik ga komen.
Hou ons op de hoogte. Die how to is wel welkom 8)

Bosch 5800i 10, vloerverwarming & fancoils, Zehnder Q600


Acties:
  • +1 Henk 'm!

  • Driek
  • Registratie: Maart 2002
  • Nu online
ZonnigY schreef op woensdag 21 februari 2024 @ 18:58:
[...]


Hou ons op de hoogte. Die how to is wel welkom 8)
Volgens mij is deze post en die eronder een goed startpunt.
hsmade in "CO2-meters voor in huis"

zo te zien is het de esp programeren met esphome.
De 2 extra bestanden op de juiste plek zetten, en de yaml gebruiken.

Helaas heb ik mij esp nog niet binnen, dus ik kan nog niet aan de slag.*

*niet helemaal waar, net nog een esp8266mod(volgens de print een esp-12-f) gevonden.

[ Voor 14% gewijzigd door Driek op 21-02-2024 19:18 ]

Tijd van werken, tijd van rusten


Acties:
  • 0 Henk 'm!

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 08-09 13:47
Ik heb hier zelf geen Home Assistant draaien, ga dus ook geen ESPhome gebruiken.

Plan is hier om de waarden van de CO2 sensor op te pikken en door te sturen naar een MQTT server met vrij kale Arduino code via een ESP32-C3 Super Mini. GIsterenavond uur mee zitten prutsen om de Wifi aan de praat te krijgen om erachter te komen dat die ESP maar half werkte. Zelfde code op een ander bordje werkte perfect 8)7 Dat krijg je met goedkope Chinese meuk...

[ Voor 4% gewijzigd door bartvb op 21-02-2024 21:19 ]


  • Cadezo
  • Registratie: Februari 2006
  • Niet online
Cadezo schreef op dinsdag 20 februari 2024 @ 18:22:
Ik heb ook de Resideo geüpgraded met een Wemos D1 Mini (5V/GND van de DC barrel; Tx naar Rx). Het valt me alleen op dat de waarde in Home Assistant achterloopt op de waarde op het display (op de Resideo zelf). Als ik bijvoorbeeld kunstmatig hoeveelheid CO2 verhoog dan wordt dit vrijwel direct weergegeven op het diplay, terwijl de waarde in Home Assistant pas later omhoog schiet. Meer mensen die dit opvalt?

Nvm, opnieuw compiled (met korter update interval van 1sec/1000ms in de yaml) en nu is het realtime.
Toch even hier terugkomend... Gaat dus om de Resideo-ESP mod.

Ik merk dat als ik het update interval op 3000ms laat staan in de yaml, dat er een mismatch is tussen de waarde op het display en de waarde in Home Assistant. Zeker bij een plotseling stijging of daling van de CO2-waarde wordt dit vrijwel direct weergegeven op het display, maar wordt dit pas beduidend later weergegeven in Home Assistant.

Als ik het update interval op 1500ms of 1000ms zet dan merk ik dat de CO2-waarde in Home Assistant wel realtime is (en soms zelfs heel kort lijkt voor te lopen op de waarde op het display). Enige is dat er errors en warnings in de ESPhome log komen:

code:
1
2
3
[19:20:24][E][uart:015]: Reading from UART timed out at byte 0!
[19:20:24][W][component:214]: Component <unknown> took a long time for an operation (0.10 s).
[19:20:24][W][component:215]: Components should block for at most 20-30ms.


Verder lijkt het prima te werken. Ik kan alleen even niet goed de impact van de error/warnings inschatten. Iemand die hier meer verstand van heeft?

Gaat dus om deze regel in de yaml:
C++:
1
auto cm1106Sensor = new CM1106Sensor(id(cm1106_uart), 3000);

  • Raymond P
  • Registratie: September 2006
  • Laatst online: 15:03
@Cadezo Als je "realtime" data wilt zonder het display in de weg te zitten kan je de PWM pin op die CM1106 pakken.
Het tellen van (tijd tussen) pulsen op een esptje is ook geen rocket science.

Althans, ga ervan uit dat die ook actief is als uart/i2c in gebruik is zoals bij een mh-z19 en soortgelijk.
Volgens de datasheet wel ff opletten bij een powertoggle/boot.

Maareh, is er zo veel verloop in co2 concentraties dan? Pakweg 50ppm zal sowieso wel binnen een normale afwijking vallen. Met een beetje smoothing ben je die variatie zo kwijt. :)

- knip -


  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 16:41
Ik laat hem elke 5 min. data sturen, net als de temperatuur en luchtvochtigheid in huis is dat ook bij luchtkwaliteit snel zat voor mij, dat zijn toch waardes die niet binnen een paar seconden ineens sterk wijzigen.

[ Voor 25% gewijzigd door ThinkPad op 22-02-2024 22:19 ]


Acties:
  • +2 Henk 'm!

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 08-09 13:47
Misschien helpt mijn geprutst nog wat?

Zoals gezegd heb ik geen Home Assistant en dus ook geen ESPhome. Heb net een ESP32 C3 Super Mini aan de Resideo gehangen. Heb de contacten die bereikbaar zijn aan de achterkant (bij de voeding) gebruikt. Heb het stukje plastic met de gaatjes weggeknipt.

V = 3,3V op de ESP32
G = Ground
D = pin 20 (RX op de ESP)
C = pin 21 (TX op de ESP)

Met die TX doe ik (nog) niets. Maar in theorie zou het mogelijk moeten zijn om b.v. de sensor te laten calibreren. Als je maar zorgt dat je niet door de communicatie van de MCU van de Resideo heen zit maar dat is vrij voorspelbaar.

Dit is de Arduino code:


*** Code verwijderd. Zie 2 posts verder ***


Werkt (tijdens mijn minimale testen ;) ) perfect. Heb je ook geen gehackte CH1106 library nodig :)

Ik moet hier nog even een MQTT library in hangen en dan is dit projectje weer klaar.

Afbeeldingslocatie: https://tweakers.net/i/2x6HPUsTeM2wG6gZMfUcu13AAvU=/x800/filters:strip_icc():strip_exif()/f/image/CGPIFUDIn9fFgxsCXCR2HIc9.jpg?f=fotoalbum_large

[ Voor 61% gewijzigd door bartvb op 23-02-2024 15:51 ]


Acties:
  • 0 Henk 'm!

  • Driek
  • Registratie: Maart 2002
  • Nu online
Driek schreef op woensdag 21 februari 2024 @ 19:09:
[...]

Volgens mij is deze post en die eronder een goed startpunt.
hsmade in "CO2-meters voor in huis"

zo te zien is het de esp programeren met esphome.
De 2 extra bestanden op de juiste plek zetten, en de yaml gebruiken.

Helaas heb ik mij esp nog niet binnen, dus ik kan nog niet aan de slag.*

*niet helemaal waar, net nog een esp8266mod(volgens de print een esp-12-f) gevonden.
Inderdaad binnen 10 minuten.
Esp configureren, 3 draadjes solderen.
Go.

Heb het nu met een te grote nodemcu, nog even op ali wachten op een kleinere esp, en dan netjes afwerken.

Tijd van werken, tijd van rusten


Acties:
  • +1 Henk 'm!

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 08-09 13:47
Allereerst en niet te vergeten; iedereen in dit topic ontzettend veel dank voor het uitpluizen van hardware/software en het tippen van de Resideo!


Mijn eerste code was niet helemaal OK, hield er na een paar uur mee op. Verbeterde (en wat strakkere) versie die ook de statusbits uitleest:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <map>

// Pins for external UART
#define RXD1 20
#define TXD1 21

void processCM106(HardwareSerial& serial);
void sendCO2(int co2level, bool statusBits[], std::map<int, const char*>& statusLabels);

void setup() {
  wifiSetup();

  Log.begin();

  // External UART
  Serial1.begin(9600, SERIAL_8N1, RXD1, TXD1);
}

void loop() {
  processCM1106(Serial1);
  delay(20);  // Save some energy

  Log.loop();
}


void processCM1106(HardwareSerial& serial) {
  const byte startByte1 = 0x16;
  const byte startByte2 = 0x05;
  const byte startByte3 = 0x01;
  const int packetLength = 8;

  static byte buffer[packetLength];
  static int index = 0;

  // Define and populate the statusLabels map
  std::map<int, const char*> statusLabels;
  statusLabels[0] = "preheating";
  statusLabels[1] = "sensor_error";
  statusLabels[2] = "over_measurement";
  statusLabels[3] = "under_measurement";
  statusLabels[4] = "non_calibrated";
  statusLabels[5] = "light_aging";
  statusLabels[6] = "drift";
  statusLabels[7] = "reserved";

  while (serial.available()) {
    byte receivedByte = serial.read();
    if (index == 0 && receivedByte != startByte1) {
      continue;  // Skip if the first byte doesn't match
    }
    buffer[index] = receivedByte;
    index++;

    if (index == packetLength) {
      if (buffer[0] == startByte1 && buffer[1] == startByte2 && buffer[2] == startByte3) {
        // Packet found, process it
        int co2level = buffer[3] * 256 + buffer[4];
        byte status_byte = buffer[5];

      bool statusBits[8];
      for (int i = 0; i < 8; i++) {
        statusBits[i] = (status_byte >> i) & 0x01;
      }

      // Call sendCO2 with CO2 level, statusBits array, and statusLabels map
      sendCO2(co2level, statusBits, statusLabels);

      }
      index = 0;  // Reset index for the next packet
    }
  }
}


void sendCO2(int co2level, bool statusBits[], std::map<int, const char*>& statusLabels) {
  // Print CO2 level
  Log.print("CO2 Level: ");
  Log.println(co2level);

  // Print status labels and values
  Log.println("Status:");
  for (int i = 0; i < 8; i++) {
    Log.print(statusLabels[i]);
    Log.print(": ");
    Log.println(statusBits[i] ? "true" : "false");
  }
}


Niet 1 op 1 copy/pastebaar. Je moet even je eigen Wifi code hierin zetten ipv `wifiSetup();` en ik gebruik een Logging library. Je kan `Log.` vervangen door `Serial.` als je in je `setup()` even `Serial.begin(115200)` doet.

Verbeteringen/opmerkingen zeer welkom.

[ Voor 10% gewijzigd door bartvb op 23-02-2024 16:26 ]


Acties:
  • +2 Henk 'm!

  • jj85
  • Registratie: Januari 2002
  • Nu online
offtopic:
Resideo CO2 meter, nieuw voor ongeveer 30 euro nu https://www.amazon.nl/Res...xidesensor/dp/B09HKKSKZ1/

Acties:
  • 0 Henk 'm!

  • OcGuru
  • Registratie: Juni 2004
  • Laatst online: 13:00

OcGuru

Giulietta Qv

Zelf ook iets in elkaar geflanst :P

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <WiFi.h>
#include <PubSubClient.h>

byte    cm1106_bytes[8]={0,0,0,0,0,0,0,0}; 
int co2;


// Change the credentials below, so your ESP8266 connects to your router
const char* ssid = "*****";
const char* password = "*****";

// MQTT broker credentials (set to NULL if not required)
const char* MQTT_username = "***"; 
const char* MQTT_password = "****"; 


const char* mqtt_server = "IP_mqqt server";



WiFiClient espClient;
PubSubClient client(espClient);






long now = millis();
long lastMeasure = 0;


void setup_wifi() {
  delay(10);
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("WiFi connected - ESP IP address: ");
  Serial.println(WiFi.localIP());
}

void reconnect() {
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
        if (client.connect("ESP8266Client", MQTT_username, MQTT_password)) {
      Serial.println("connected");  
         } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
        delay(5000);
    }
  }
}


void setup() {
  

  
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
Serial2.begin(9600); // opens serial port, sets data rate to 9600 bps
  setup_wifi();
  client.setServer(mqtt_server, 1883);

}


void loop() {

  if (!client.connected()) {
    reconnect();
  }
  if(!client.loop())
    client.connect("ESP8266Client", MQTT_username, MQTT_password);

  now = millis();

  if (now - lastMeasure > 5000) {
    lastMeasure = now;
    
    
    client.publish("room/co2", String(co2).c_str());

        
  }


while (Serial2.available()<8) {} // Wait 'till there are 8 Bytes waiting
for(int n=0; n<8; n++)
   cm1106_bytes[n] = Serial2.read(); // Then: Get them.

      co2 = cm1106_bytes[3] * 256 + cm1106_bytes[4];


}



Verstuurd dus elke 5 seconde de co2 waarde naar de mqqt broker. In mijn geval mosquitto. In node-red zet ik deze weer in een entity van HA. Zit alleen nog niks in van een checksum van de seriële data zoals de sketch hierboven van bartvb. Maar das een kleinigheidje.:P :+

Idem ook met een esp32 gedaan ivm de hardware matige extra uart poorten. Scheelt weer een softserial libary waar ik niet zo fan van ben.

Bl44t


Acties:
  • 0 Henk 'm!

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 08-09 13:47
Hier net wat problemen met 1 van de ESPs, gaf heel onregelmatig waarden door. Bleek een slechte soldeerverbinding te zijn :o Had een draadje van een netwerkkabel gebruikt maar het plastic van die mantels smelt nogal snel. Niet handig :) Zo maar even wat betere dunne draad bestellen ergens. Draait nu weer stabiel :)

@OcGuru lekker bezig!

Het is weekend dus mijn hoofd doet het niet op normale snelheid, maar gaat jouw code niet de mist in als er 1x iets anders tussendoor komt aan seriele data? Als er ergens per ongeluk 1 byte mist of extra wordt opgepikt of als er een ander pakket over de lijn komt dan gaat jouw code out of sync lijkt me?

Nadat je dat gefixt hebt zou je ook een gemiddelde uit kunnen rekenen over die periode van 5 minuten. Weinig werk, geeft wel een mooier resultaat.

Ik reken overigens ook geen checksums uit in mijn code, zou wel beter zijn. Ik haal wel de statusbits uit maar dat lijkt tot nu toe niet super nuttig.

Wil wel een keer kijken of ik ook een commando naar de CM1106 kan sturen om te calibreren. Hij staat nu verdacht vaak op 400ppm terwijl de andere sensoren daar anders over denken.

Er is ook een SCD40 onderweg. Handig als vergelijkingsmateriaal met de andere sensoren hier. Op dit moment zijn er nogal grote verschillen tussen verschillende sensoren in dezelfde ruimtes.

Acties:
  • 0 Henk 'm!

  • jweetje
  • Registratie: Februari 2022
  • Laatst online: 14:59
Dankzij de leuke hacks hier ook twee Resideo's aangeschaft. De mod met ESP en Ha staat op de planning. Bij het proberen van de sensors met mij stomme kop 8)7 unit-1 in huis aangezet en die de calibratie laten doorlopen. Unit-1 heeft wat waarde weergegegevn maar blijft nu eigenlijk standaard op 400ppm staan. Heb accu al los gehad en daarna buiten laten staan voor uurtje en de calibratie laten doorlopen tegelijk met unit-2. Geen effect, uni-2 geeft geeft realistische waarde aan binnen maar unit-1 blijft 400ppm aangeven. De handleiding is erg beperkt. Kan ik nog een factory reset doen of is unit-1 gewoon niet good?

Acties:
  • 0 Henk 'm!

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 16:18
Trekt uiteindelijk vanzelf bij.

Bij de slaapkamer van de jongste stond de teller ook strak op 400, die is nu ergens in de 500 overdag.

Heb nu een automation toegevoegd, boven de 1000ppm gaat de mechanische ventilatie op stand 2, als de waarde 15 minuten lang lager dan 1000ppm is gaat ie terug naar auto.

Acties:
  • +11 Henk 'm!

  • nnk
  • Registratie: Maart 2002
  • Laatst online: 06-09 06:26

nnk

Spreek uit: en en kaa

Ik zie in dit topic vaak de vraag voorbijkomen 'hoe bouw ik zelf een goedkope CO2 sensor en het liefst zonder te solderen'. Daar is wel eerder antwoord op gegeven, maar hier is mijn variant voor ongeveer 35 euro. Disclaimer: ik ben geen expert qua sensoren en er zijn vast ook goedkopere of betere oplossingen te vinden. Maar deze is vrij eenvoudig in ieder geval.

Dit zijn de dingen die ik gekocht heb:
* Een Ai-Thinker ESP8266 NodeMCU V2 (met headers al er op) (bijvoorbeeld hier).
* Een Sensirion SCD40 met connector en bedrading (bijvoorbeeld hier).
* Een simpele USB kabel en voeding

De sensor en de ESP zijn op deze manier verbonden (solderen niet nodig):
* Geel (SCL) naar D1
* Wit (SDA) naar D2
* Zwart (GND) naar GND
* Rood (VCC) naar 3V3

Afbeeldingslocatie: https://tweakers.net/i/iWJbCAUYpaMgGn1U1J_RAeXePVk=/800x/filters:strip_exif()/f/image/v3n6bH3YZWCgviN3ReZMI4St.png?f=fotoalbum_large

Via de USB poort aan de computer verbinden om te flashen met ESPHome (geen losse UART programmer nodig). Dat heb ik gedaan met deze YAML:

YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
esphome:
  name: co2sensor

esp8266:
  board: nodemcuv2

logger:

api:
  password: "password"

ota:
  password: "password"

wifi:
  ssid: "SSID"
  password: "password"

  ap:
    ssid: "Co2Sensor Fallback Hotspot"
    password: "55gLy9Jp7tog"

captive_portal:

i2c:
  sda: 4
  scl: 5
  scan: true
  id: bus_a 

sensor:
  - platform: scd4x
    co2:
      name: "CO2"
    temperature:
      name: "Temperature"
    humidity:
      name: "Humidity"


Na het flashen (e.g. "docker run --rm --privileged -v "${PWD}":/config --device=/dev/ttyUSB0 -it ghcr.io/esphome/esphome run co2sensor.yaml") zal de sensor vanzelf in Home Assistant te zien zijn als nieuw device. Daarna kan je hem bijvoorbeeld met deze kaart op de Lovelace dashboard zien:

YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
type: custom:mini-graph-card
name: CO2
entities:
  - sensor.co2
hours_to_show: 24
points_per_hour: 2
decimals: 0
show:
  labels: true
color_thresholds:
  - value: 1500
    color: red
  - value: 1250
    color: '#ff4c00'
  - value: 900
    color: orange
  - value: 600
    color: green


Hopelijk hebben jullie hier iets aan!

Edit: zoals hieronder aangegeven moet hij nog wel in een behuizing (ik dacht aan iets van Lego maken), want zonlicht kan de metingen beinvloeden.

Acties:
  • +1 Henk 'm!

  • Seafarer
  • Registratie: November 2012
  • Laatst online: 15:29

Seafarer

XXX

nnk schreef op zondag 25 februari 2024 @ 20:04:
Ik zie in dit topic vaak de vraag voorbijkomen 'hoe bouw ik zelf een goedkope CO2 sensor en het liefst zonder te solderen'. Daar is wel eerder antwoord op gegeven, maar hier is mijn variant voor ongeveer 35 euro. Disclaimer: ik ben geen expert qua sensoren en er zijn vast ook goedkopere of betere oplossingen te vinden. Maar deze is vrij eenvoudig in ieder geval.

Dit zijn de dingen die ik gekocht heb:
* Een Ai-Thinker ESP8266 NodeMCU V2 (met headers al er op) (bijvoorbeeld hier).
* Een Sensirion SCD40 met connector en bedrading (bijvoorbeeld hier).
* Een simpele USB kabel en voeding

De sensor en de ESP zijn op deze manier verbonden (solderen niet nodig):
* Geel (SCL) naar D1
* Wit (SDA) naar D2
* Zwart (GND) naar GND
* Rood (VCC) naar 3V3

[Afbeelding]

Via de USB poort aan de computer verbinden om te flashen met ESPHome (geen losse UART programmer nodig). Dat heb ik gedaan met deze YAML:

YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
esphome:
  name: co2sensor

esp8266:
  board: nodemcuv2

logger:

api:
  password: "password"

ota:
  password: "password"

wifi:
  ssid: "SSID"
  password: "password"

  ap:
    ssid: "Co2Sensor Fallback Hotspot"
    password: "55gLy9Jp7tog"

captive_portal:

i2c:
  sda: 4
  scl: 5
  scan: true
  id: bus_a 

sensor:
  - platform: scd4x
    co2:
      name: "CO2"
    temperature:
      name: "Temperature"
    humidity:
      name: "Humidity"


Na het flashen (e.g. "docker run --rm --privileged -v "${PWD}":/config --device=/dev/ttyUSB0 -it ghcr.io/esphome/esphome run co2sensor.yaml") zal de sensor vanzelf in Home Assistant te zien zijn als nieuw device. Daarna kan je hem bijvoorbeeld met deze kaart op de Lovelace dashboard zien:

YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
type: custom:mini-graph-card
name: CO2
entities:
  - sensor.co2
hours_to_show: 24
points_per_hour: 2
decimals: 0
show:
  labels: true
color_thresholds:
  - value: 1500
    color: red
  - value: 1250
    color: '#ff4c00'
  - value: 900
    color: orange
  - value: 600
    color: green


Hopelijk hebben jullie hier iets aan!
Nou mooi dan.

Kijkend naar mijn Aranet van 200.00 euries. }:|

Een CV-Ketel is een vlamkoeler en een radiator is een waterkoeler.


Acties:
  • 0 Henk 'm!

  • Alicanto
  • Registratie: Mei 2011
  • Laatst online: 12:09
Als iemand er hiervan nog eentje over heeft en kwijt wil, pm dan maar. Ik heb al genoeg CO2 sensoren en had ‘m dus niet gekocht, maar het is bij nader inzien wel een leuk cadeautje voor een vriend die bijna jarig is.

Acties:
  • +2 Henk 'm!

  • ThinkPad
  • Registratie: Juni 2005
  • Laatst online: 16:41
@OcGuru Waarom niet ESPHome om het in één klap in Home Assistant te hebben? Dan hoef je niet eerst MQTT, dan Node-RED en dan naar HASS :? Code voor het in ESPHome uitlezen van de CM1106 is al eerder gepost hier in dit topic, draait bij mij al wekenlang zonder issues.

@nnk Vergeet niet de sensor in een behuizing te plaatsen, IR-licht (zonlicht dus) kan de meting verstoren namelijk.
@Alicanto Hierboven nog gepost, €30 voor één nieuwe: jj85 in "CO2-meters voor in huis" en op Marktplaats staan ze ook voor rond dat bedrag wel nieuw in doos.

[ Voor 30% gewijzigd door ThinkPad op 25-02-2024 21:53 ]


Acties:
  • +1 Henk 'm!

  • OcGuru
  • Registratie: Juni 2004
  • Laatst online: 13:00

OcGuru

Giulietta Qv

ThinkPad schreef op zondag 25 februari 2024 @ 21:52:
@OcGuru Waarom niet ESPHome om het in één klap in Home Assistant te hebben? Dan hoef je niet eerst MQTT, dan Node-RED en dan naar HASS :? Code voor het in ESPHome uitlezen van de CM1106 is al eerder gepost hier in dit topic, draait bij mij al wekenlang zonder issues.

@nnk Vergeet niet de sensor in een behuizing te plaatsen, IR-licht (zonlicht dus) kan de meting verstoren namelijk.
@Alicanto Hierboven nog gepost, €30 voor één nieuwe: jj85 in "CO2-meters voor in huis" en op Marktplaats staan ze ook voor rond dat bedrag wel nieuw in doos.
Esphome lijkt mij een behoorlijke overhead nodig te hebben voor zoiets simpels. Tevens moet ik dan esphome installeren terwijl ik mqtt en node-red sowiezo al heb draaien.

Het was ook maar een probeersel. Misschien dat ik het alsnog via esphome doe, maar denk het niet. :> :+

Bl44t

Pagina: 1 ... 35 ... 40 Laatste

Let op:
Aanbiedingen graag in Awair element en andere CO2 meter kortingscodes