Hallo iedereen,
Heb hier een CCS811 CO2 sensor. Nu heb ik een Ardiuno skets gevonden die de waren van de sensor op de serial montor laat zien. Nu ben ik geen programmer. Heb via zoeken op Google de skets zo aangepast dat deze ook verbinding maakt met Wifi en een Mosquitto server. Ik kan wel de fout code in een MQTT topic krijgen. Het lukt mij alleen niet op de CO2 warden in een MQTT topic te krijgen. Is er its in de code wat ik kan gebruiken om de waarden van de sensor in een MQTT topic te krijgen, of moet daarvoor de code compleet veranderd worden?
Dit is de aangepaste skets:
Dit stukje code laat de warden zien op de serial monitor. Nu heb ik eigenlijk alles wat daar gebruikt wordt geprobeerd, maar ik krijg alleen text en geen waarden.
Hier twee voorbeelden van wat ik geprobeerd heb:
Met vriendelijke groet
Heb hier een CCS811 CO2 sensor. Nu heb ik een Ardiuno skets gevonden die de waren van de sensor op de serial montor laat zien. Nu ben ik geen programmer. Heb via zoeken op Google de skets zo aangepast dat deze ook verbinding maakt met Wifi en een Mosquitto server. Ik kan wel de fout code in een MQTT topic krijgen. Het lukt mij alleen niet op de CO2 warden in een MQTT topic te krijgen. Is er its in de code wat ik kan gebruiken om de waarden van de sensor in een MQTT topic te krijgen, of moet daarvoor de code compleet veranderd worden?
Dit is de aangepaste skets:
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
103
104
105
106
107
108
109
110
111
112
113
| /* ccs811basic.ino - Demo sketch printing results of the CCS811 digital gas sensor for monitoring indoor air quality from ams. Created by Maarten Pennings 2017 Dec 11 */ #include <Wire.h> // I2C library #include "ccs811.h" // CCS811 library #include <ESP8266WiFi.h> #include <PubSubClient.h> // Wiring for ESP8266 NodeMCU boards: VDD to 3V3, GND to GND, SDA to D2, SCL to D1, nWAKE to D3 (or GND) CCS811 ccs811(D3); // nWAKE on D3 //Wifi Settings const char* ssid = "My SSID"; const char* password = "MyPasswd"; //MQTT Settings const char* mqttServer = "192.168.178.192"; const int mqttPort = 1883; const char* mqttUser = "openhab2"; const char* mqttPassword = "MyPasswd"; WiFiClient espClient; PubSubClient client(espClient); void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.println("Connecting to WiFi.."); } Serial.println("Connected to the WiFi network"); client.setServer(mqttServer, mqttPort); while (!client.connected()) { Serial.println("Connecting to MQTT..."); if (client.connect("ESP8266Client", mqttUser, mqttPassword )) { Serial.println("connected"); } else { Serial.print("failed with state "); Serial.print(client.state()); delay(2000); } } client.publish("CCS811/Info", "Hello from ESP8266"); client.subscribe("CCS811/Info"); client.subscribe("CCS811/CO2"); // Enable I2C Wire.begin(); // Enable CCS811 ccs811.set_i2cdelay(50); // Needed for ESP8266 because it doesn't handle I2C clock stretch correctly bool ok= ccs811.begin(); if( !ok ) Serial.println("init: CCS811 begin FAILED"); // Print CCS811 versions Serial.print("init: hardware version: "); Serial.println(ccs811.hardware_version(),HEX); Serial.print("init: bootloader version: "); Serial.println(ccs811.bootloader_version(),HEX); Serial.print("init: application version: "); Serial.println(ccs811.application_version(),HEX); // Start measuring ok= ccs811.start(CCS811_MODE_1SEC); if( !ok ) Serial.println("init: CCS811 start FAILED"); } void loop() { // Read uint16_t eco2, etvoc, errstat, raw; ccs811.read(&eco2,&etvoc,&errstat,&raw); // Print measurement results based on status if( errstat==CCS811_ERRSTAT_OK ) { Serial.print("CCS811: "); Serial.print("eco2="); Serial.print(eco2); Serial.print(" ppm "); Serial.print("etvoc="); Serial.print(etvoc); Serial.print(" ppb "); client.publish("CCS811/CO2", "eco2"); //Serial.print("raw6="); Serial.print(raw/1024); Serial.print(" uA "); //Serial.print("raw10="); Serial.print(raw%1024); Serial.print(" ADC "); //Serial.print("R="); Serial.print((1650*1000L/1023)*(raw%1024)/(raw/1024)); Serial.print(" ohm"); Serial.println(); } else if( errstat==CCS811_ERRSTAT_OK_NODATA ) { Serial.println("CCS811: waiting for (new) data"); client.publish("CCS811/CO2", "waiting for (new) data"); } else if( errstat & CCS811_ERRSTAT_I2CFAIL ) { Serial.println("CCS811: I2C error"); } else { Serial.print("CCS811: errstat="); Serial.print(errstat,HEX); Serial.print("="); Serial.println( ccs811.errstat_str(errstat) ); } // Wait delay(1000); } |
Dit stukje code laat de warden zien op de serial monitor. Nu heb ik eigenlijk alles wat daar gebruikt wordt geprobeerd, maar ik krijg alleen text en geen waarden.
code:
1
2
| Serial.print("eco2="); Serial.print(eco2); Serial.print(" ppm "); Serial.print("etvoc="); Serial.print(etvoc); Serial.print(" ppb "); |
Hier twee voorbeelden van wat ik geprobeerd heb:
code:
1
2
| client.publish("CCS811/CO2", "(eco2)"); client.publish("CCS811/CO2", "eco2"); |
Met vriendelijke groet