2025-05-1600
This commit is contained in:
		
							
								
								
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| .pio | ||||
| .vscode/.browse.c_cpp.db* | ||||
| .vscode/c_cpp_properties.json | ||||
| .vscode/launch.json | ||||
| .vscode/ipch | ||||
							
								
								
									
										10
									
								
								.vscode/extensions.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								.vscode/extensions.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| { | ||||
|     // See http://go.microsoft.com/fwlink/?LinkId=827846 | ||||
|     // for the documentation about the extensions.json format | ||||
|     "recommendations": [ | ||||
|         "platformio.platformio-ide" | ||||
|     ], | ||||
|     "unwantedRecommendations": [ | ||||
|         "ms-vscode.cpptools-extension-pack" | ||||
|     ] | ||||
| } | ||||
							
								
								
									
										4
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| { | ||||
|     "C_Cpp.errorSquiggles": "Disabled", | ||||
|     "cmake.configureOnOpen": true | ||||
| } | ||||
							
								
								
									
										101
									
								
								include/CO2.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								include/CO2.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,101 @@ | ||||
| #include <Arduino.h> | ||||
|  | ||||
| #include <HardwareSerial.h> | ||||
|  | ||||
| HardwareSerial Co2Port(1); // use UART2 | ||||
|  | ||||
| // co2 Grenzwerte | ||||
| /* #define CO2_WARN_1 650 | ||||
| #define CO2_WARN_2 950 | ||||
| #define CO2_WARN_3 1250 | ||||
| #define CO2_WARN_4 1500 | ||||
| #define CO2_CRITICAL_PPM 1850 */ | ||||
| /* #define CO2_WARN_1 600 | ||||
| #define CO2_WARN_2 800 | ||||
| #define CO2_WARN_3 1000 | ||||
| #define CO2_WARN_4 1500 | ||||
| #define CO2_WARN_5 2000 */ | ||||
| #define CO2_WARN_1 800 | ||||
| #define CO2_WARN_2 1000 | ||||
| #define CO2_WARN_3 1400 | ||||
| #define CO2_WARN_4 1500 | ||||
| #define CO2_WARN_5 2000 | ||||
| #define CO2_CRITICAL_PPM 1850 | ||||
|  | ||||
| int CO2Wert = -99; | ||||
| char antwort[100] = {0xFF}; | ||||
| int range =2000; | ||||
| bool readCo2Flag; | ||||
|  | ||||
| char getCheckSum(char *packet) | ||||
|   { | ||||
|     char i, checksum; | ||||
|     for (i = 1; i < 8; i++) | ||||
|     { | ||||
|       checksum += packet[i]; | ||||
|     } | ||||
|     checksum = 0xFF - checksum; | ||||
|     return checksum +1; | ||||
|   } | ||||
|  | ||||
| int readCO2() { | ||||
|   char cmd[9] = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79}; | ||||
|   Co2Port.write(cmd,9); | ||||
|   if(Co2Port.available()) { | ||||
|     Co2Port.readBytes(antwort, 9); | ||||
|   } | ||||
|   #ifdef DebugCO2 | ||||
|   for (int a=0; a<9; a++){ | ||||
|     Serial.printf(" BufferRead [%d] = 0x%02X \n", a, antwort[a]); | ||||
|   } | ||||
|   Serial.println(); | ||||
|   #endif | ||||
|   if (antwort[0] != 0xFF) return -1; | ||||
|   if (antwort[1] != 0x86) return -2; | ||||
|   int antwortHigh = (int) antwort[2]; // CO2 High Byte | ||||
|   int antwortLow = (int) antwort[3];  // CO2 Low Byte | ||||
|   int ppm = (256 * antwortHigh) + antwortLow; | ||||
|   Co2Port.flush(); | ||||
|   return ppm;  | ||||
| } | ||||
|  | ||||
| void calibrationCo2() { | ||||
|   char cmd[9] = {0xFF, 0x01, 0x79, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||||
|   cmd[8] = getCheckSum(cmd); | ||||
|   Serial.printf("Checksumme = 0x%02X\n", cmd[8]); | ||||
|   Co2Port.write(cmd,9); | ||||
|   #ifdef DebugCO2 | ||||
|   for (int a=0; a<9; a++){ | ||||
|     Serial.printf(" BufferCalibration [%d] = 0x%02X \n", a, cmd[a]); | ||||
|   } | ||||
|   Serial.println(); | ||||
|   #endif | ||||
| } | ||||
|  | ||||
| void setRange() | ||||
| { | ||||
|   char cmd[9] = {0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; | ||||
|    | ||||
|   cmd[6] = range >> 8; | ||||
|   cmd[7] = range & 0xFF; | ||||
|   cmd[8] = getCheckSum(cmd); | ||||
|   Serial.printf("Checksumme = 0x%02X\n", cmd[8]); | ||||
|   Co2Port.write(cmd,9); | ||||
|   #ifdef DebugCO2 | ||||
|   for (int a=0; a<9; a++){ | ||||
|     Serial.printf(" BufferRange [%d] = 0x%02X \n", a, cmd[a]); | ||||
|   } | ||||
|   Serial.println(); | ||||
|   #endif | ||||
| } | ||||
|  | ||||
| void beginC02() | ||||
| { | ||||
|   Co2Port.begin(9600, SERIAL_8N1, 32, 33);  | ||||
|   readCo2Flag = false; | ||||
|   delay(100); | ||||
|   calibrationCo2(); | ||||
|   delay(100); | ||||
|   setRange(); | ||||
|   delay(100); | ||||
| } | ||||
							
								
								
									
										39
									
								
								include/README
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								include/README
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
|  | ||||
| This directory is intended for project header files. | ||||
|  | ||||
| A header file is a file containing C declarations and macro definitions | ||||
| to be shared between several project source files. You request the use of a | ||||
| header file in your project source file (C, C++, etc) located in `src` folder | ||||
| by including it, with the C preprocessing directive `#include'. | ||||
|  | ||||
| ```src/main.c | ||||
|  | ||||
| #include "header.h" | ||||
|  | ||||
| int main (void) | ||||
| { | ||||
|  ... | ||||
| } | ||||
| ``` | ||||
|  | ||||
| Including a header file produces the same results as copying the header file | ||||
| into each source file that needs it. Such copying would be time-consuming | ||||
| and error-prone. With a header file, the related declarations appear | ||||
| in only one place. If they need to be changed, they can be changed in one | ||||
| place, and programs that include the header file will automatically use the | ||||
| new version when next recompiled. The header file eliminates the labor of | ||||
| finding and changing all the copies as well as the risk that a failure to | ||||
| find one copy will result in inconsistencies within a program. | ||||
|  | ||||
| In C, the usual convention is to give header files names that end with `.h'. | ||||
| It is most portable to use only letters, digits, dashes, and underscores in | ||||
| header file names, and at most one dot. | ||||
|  | ||||
| Read more about using header files in official GCC documentation: | ||||
|  | ||||
| * Include Syntax | ||||
| * Include Operation | ||||
| * Once-Only Headers | ||||
| * Computed Includes | ||||
|  | ||||
| https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html | ||||
							
								
								
									
										32
									
								
								include/mess_HTU21D.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								include/mess_HTU21D.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| #include "Adafruit_HTU21DF.h" | ||||
|  | ||||
| Adafruit_HTU21DF htu = Adafruit_HTU21DF(); | ||||
|  | ||||
| struct { | ||||
|   char temperature[15] = {0}; | ||||
|   char humity[15] = {0}; | ||||
| } htuData; | ||||
|  | ||||
| void init_HTU21(){ | ||||
|     if (!htu.begin()) { | ||||
|         Serial.println("Couldn't find sensor HUT21D!"); | ||||
|         while (1); | ||||
|     } | ||||
|     Serial.println("HUT21D gefunden"); | ||||
| } | ||||
|  | ||||
| void read_HTU21D() { | ||||
|     float t = htu.readTemperature(); | ||||
|     dtostrf(t,10,4,htuData.temperature); | ||||
|     float h = htu.readHumidity(); | ||||
|     dtostrf(h,8,2,htuData.humity); | ||||
| } | ||||
|  | ||||
| void M2M_HTU21D(long deviceId = 4711) { | ||||
|     char topic[100]; | ||||
|     sprintf(topic, "%s%ld%s", "hjk/devices/", deviceId, "/telemetry/temperature_Htu_21" ); | ||||
|     client.publish(topic, htuData.temperature, true); | ||||
|     sprintf(topic, "%s%ld%s", "hjk/devices/", deviceId, "/telemetry/humity" ); | ||||
|     client.publish(topic, htuData.humity, true); | ||||
|     Serial.printf("HTU21:\t\t %s °C\n", htuData.temperature); | ||||
|     Serial.printf("HTU21:\t\t %s %% \n", htuData.humity); | ||||
							
								
								
									
										46
									
								
								lib/README
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								lib/README
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
|  | ||||
| This directory is intended for project specific (private) libraries. | ||||
| PlatformIO will compile them to static libraries and link into executable file. | ||||
|  | ||||
| The source code of each library should be placed in a an own separate directory | ||||
| ("lib/your_library_name/[here are source files]"). | ||||
|  | ||||
| For example, see a structure of the following two libraries `Foo` and `Bar`: | ||||
|  | ||||
| |--lib | ||||
| |  | | ||||
| |  |--Bar | ||||
| |  |  |--docs | ||||
| |  |  |--examples | ||||
| |  |  |--src | ||||
| |  |     |- Bar.c | ||||
| |  |     |- Bar.h | ||||
| |  |  |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html | ||||
| |  | | ||||
| |  |--Foo | ||||
| |  |  |- Foo.c | ||||
| |  |  |- Foo.h | ||||
| |  | | ||||
| |  |- README --> THIS FILE | ||||
| | | ||||
| |- platformio.ini | ||||
| |--src | ||||
|    |- main.c | ||||
|  | ||||
| and a contents of `src/main.c`: | ||||
| ``` | ||||
| #include <Foo.h> | ||||
| #include <Bar.h> | ||||
|  | ||||
| int main (void) | ||||
| { | ||||
|   ... | ||||
| } | ||||
|  | ||||
| ``` | ||||
|  | ||||
| PlatformIO Library Dependency Finder will find automatically dependent | ||||
| libraries scanning project source files. | ||||
|  | ||||
| More information about PlatformIO Library Dependency Finder | ||||
| - https://docs.platformio.org/page/librarymanager/ldf.html | ||||
							
								
								
									
										36
									
								
								platformio.ini
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								platformio.ini
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | ||||
| ; PlatformIO Project Configuration File | ||||
| ; | ||||
| ;   Build options: build flags, source filter | ||||
| ;   Upload options: custom upload port, speed and extra flags | ||||
| ;   Library options: dependencies, extra library storages | ||||
| ;   Advanced options: extra scripting | ||||
| ; | ||||
| ; Please visit documentation for the other options and examples | ||||
| ; https://docs.platformio.org/page/projectconf.html | ||||
|  | ||||
| [env:nodemcu-32s] | ||||
| platform = espressif32 | ||||
| board = nodemcu-32s | ||||
| framework = arduino | ||||
| ;monitor_port = /dev/ttyUSB0 | ||||
| monitor_speed = 115200 | ||||
| monitor_filters = time | ||||
| ;upload_port = /dev/ttyUSB0 | ||||
|  | ||||
| build_flags = | ||||
|     -DNoDEBUG | ||||
|     -DHELLIGKEIT | ||||
|     -DNoDebugCO2 | ||||
|     -DHTU_Korrectur=-3.15 | ||||
|  | ||||
| lib_deps = | ||||
|     knolleary/PubSubClient @ 2.8 | ||||
|     ;adafruit/Adafruit GFX Library @ 1.10.4 | ||||
|     adafruit/Adafruit GFX Library @ 1.11.9 | ||||
|     2dom/PxMatrix LED MATRIX library @ 1.8.2 | ||||
|     ;adafruit/Adafruit BusIO @ 1.7.2 | ||||
|     adafruit/Adafruit BusIO @ 1.16.1 | ||||
|     adafruit/Adafruit HTU21DF Library @ 1.0.5 | ||||
|  | ||||
|      | ||||
|      | ||||
							
								
								
									
										1095
									
								
								src/main.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1095
									
								
								src/main.cpp
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										11
									
								
								test/README
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								test/README
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
|  | ||||
| This directory is intended for PlatformIO Unit Testing and project tests. | ||||
|  | ||||
| Unit Testing is a software testing method by which individual units of | ||||
| source code, sets of one or more MCU program modules together with associated | ||||
| control data, usage procedures, and operating procedures, are tested to | ||||
| determine whether they are fit for use. Unit testing finds problems early | ||||
| in the development cycle. | ||||
|  | ||||
| More information about PlatformIO Unit Testing: | ||||
| - https://docs.platformio.org/page/plus/unit-testing.html | ||||
		Reference in New Issue
	
	Block a user