Added temperature handling and temperature wordmap. Also removed to old versions. Integrated and functional

This commit is contained in:
Matthias Mitscherlich
2024-03-25 15:34:16 +01:00
parent e7dd0ea1f6
commit 39dcb7cf80
7 changed files with 154 additions and 4052 deletions
-3927
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -21,8 +21,8 @@ idf_component_register(
"application/src/daywordmap.cpp"
"application/src/wordmap.cpp"
"application/src/ota.cpp"
# "old/src/temperaturewordmap.cpp"
# "old/src/temperature.cpp"
"application/src/temperaturewordmap.cpp"
"application/src/temperature.cpp"
INCLUDE_DIRS # optional, add here public include directories
"./"
"hal/inc"
@@ -13,8 +13,8 @@
// --------------------------------------------------------------------------------------------------------------------
#ifndef MAIN_INC_TEMPERATURE_H_
#define MAIN_INC_TEMPERATURE_H_
#ifndef MAIN_APPLICATION_INC_TEMPERATURE_H_
#define MAIN_APPLICATION_INC_TEMPERATURE_H_
/**
* temperature implementation
@@ -34,20 +34,20 @@
// CompilerIncludes
// All include files that are provided by the compiler directly
#include <stdint.h>
#include <string>
#include <list>
// ProjectIncludes
// All include files that are provided by the project
// --------------------------------------------------------------------------------------------------------------------
// Constant and macro definitions
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// Type definitions.
// --------------------------------------------------------------------------------------------------------------------
@@ -58,23 +58,33 @@
// Function declarations
// --------------------------------------------------------------------------------------------------------------------
using namespace std;
class Temperature
class temperature
{
// -----------------------------------------------------------------------------------------------------------------
// Public Section
// -----------------------------------------------------------------------------------------------------------------
public:
Temperature(void);
// Class Constructor
temperature();
void generateWordlist(int temperature, list<string>* wordlist);
void generateWordlist(int temperature, std::list<std::string>* wordlist);
void calculateRGB(int temperature, uint8_t* red, uint8_t* green, uint8_t* blue);
// -----------------------------------------------------------------------------------------------------------------
// Protected Section
// -----------------------------------------------------------------------------------------------------------------
protected:
// -----------------------------------------------------------------------------------------------------------------
// Private Section
// -----------------------------------------------------------------------------------------------------------------
private:
int minTemperature;
int maxTemperature;
};
/** @} */
#endif /* MAIN_INC_TEMPERATURE_H_ */
#endif /* MAIN_APPLICATION_INC_TEMPERATURE_H_ */
@@ -1,5 +1,5 @@
// --------------------------------------------------------------------------------------------------------------------
/// \file TemperatureWordmap.h
/// \file temperaturewordmap.h
/// \brief File description
// --------------------------------------------------------------------------------------------------------------------
//
@@ -13,12 +13,12 @@
// --------------------------------------------------------------------------------------------------------------------
#ifndef MAIN_INC_TEMPERATUREWORDMAP_H_
#define MAIN_INC_TEMPERATUREWORDMAP_H_
#ifndef MAIN_APPLICATION_INC_TEMPERATUREWORDMAP_H_
#define MAIN_APPLICATION_INC_TEMPERATUREWORDMAP_H_
/**
* TemperatureWordmap implementation
* \defgroup TemperatureWordmap
* temperaturewordmap implementation
* \defgroup temperaturewordmap
* \brief {group_description}
* \addtogroup {Layer}
*
@@ -46,7 +46,6 @@
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// Type definitions.
// --------------------------------------------------------------------------------------------------------------------
@@ -57,17 +56,32 @@
// Function declarations
// --------------------------------------------------------------------------------------------------------------------
class TemperatureWordmap: public Wordmap
class temperaturewordmap: public wordmap
{
public:
TemperatureWordmap(LEDMatrix* matrix);
// -----------------------------------------------------------------------------------------------------------------
// Public Section
// -----------------------------------------------------------------------------------------------------------------
public:
// Class Constructor
temperaturewordmap(ledmatrix* matrix);
~temperaturewordmap();
// -----------------------------------------------------------------------------------------------------------------
// Protected Section
// -----------------------------------------------------------------------------------------------------------------
protected:
void createList_NL(void);
// void createList_EN(void);
};
void createList_EN(void);
// -----------------------------------------------------------------------------------------------------------------
// Private Section
// -----------------------------------------------------------------------------------------------------------------
private:
};
/** @} */
#endif /* MAIN_INC_TEMPERATUREWORDMAP_H_ */
#endif /* MAIN_APPLICATION_INC_TEMPERATUREWORDMAP_H_ */
@@ -17,7 +17,7 @@
// Include files
// --------------------------------------------------------------------------------------------------------------------
#include "temperature.h"
#include <temperature.h>
#include "logger.h"
@@ -26,7 +26,6 @@
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// Type definitions
// --------------------------------------------------------------------------------------------------------------------
@@ -49,14 +48,14 @@
// --------------------------------------------------------------------------------------------------------------------
Temperature::Temperature()
temperature::temperature()
{
Temperature::minTemperature = 14;
Temperature::maxTemperature = 29;
this->minTemperature = 14;
this->maxTemperature = 29;
};
void Temperature::generateWordlist(int temperature, list<string>* wordlist)
void temperature::generateWordlist(int temperature, std::list<std::string>* wordlist)
{
// Clear the list
wordlist->clear();
@@ -69,16 +68,16 @@ void Temperature::generateWordlist(int temperature, list<string>* wordlist)
if (temperature < minTemperature)
{
wordlist->push_back("below");
wordlist->push_back(to_string(minTemperature));
wordlist->push_back(std::to_string(minTemperature));
}
else if (temperature > maxTemperature)
{
wordlist->push_back("above");
wordlist->push_back(to_string(maxTemperature));
wordlist->push_back(std::to_string(maxTemperature));
}
else
{
wordlist->push_back(to_string(temperature));
wordlist->push_back(std::to_string(temperature));
}
// Add fixed postamble
@@ -86,14 +85,14 @@ void Temperature::generateWordlist(int temperature, list<string>* wordlist)
}
void Temperature::calculateRGB(int temperature, uint8_t* red, uint8_t* green, uint8_t* blue)
void temperature::calculateRGB(int temperature, uint8_t* red, uint8_t* green, uint8_t* blue)
{
int calcBlue = 0;
int calcRed = 0;
int factor = 100 / (maxTemperature - minTemperature);
LOGGER_INFO("Incoming Temperature is: %i (min: %i, max: %i", temperature, minTemperature, maxTemperature);
LOGGER_INFO("Incoming Temperature is: %i (min: %i, max: %i)", temperature, minTemperature, maxTemperature);
if (temperature < minTemperature)
{
@@ -17,16 +17,13 @@
// Include files
// --------------------------------------------------------------------------------------------------------------------
#include "temperaturewordmap.h"
#include "logger.h"
#include <temperaturewordmap.h>
// --------------------------------------------------------------------------------------------------------------------
// Constant and macro definitions
// --------------------------------------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------------------------------------
// Type definitions
// --------------------------------------------------------------------------------------------------------------------
@@ -49,13 +46,18 @@
// --------------------------------------------------------------------------------------------------------------------
TemperatureWordmap::TemperatureWordmap(LEDMatrix* matrix) : Wordmap(matrix)
temperaturewordmap::temperaturewordmap(ledmatrix* matrix) : wordmap(matrix)
{
createList_NL();
createList_EN();
}
void TemperatureWordmap::createList_NL(void)
temperaturewordmap::~temperaturewordmap()
{
}
void temperaturewordmap::createList_NL(void)
{
// First, clear the list
wordlist[NL].clear();
@@ -90,7 +92,7 @@ void TemperatureWordmap::createList_NL(void)
wordlist[NL].push_back((struct word){"degrees", {{14,9},{15,9},{16,9},{17,9},{18,9},{19,9}}});
}
void temperaturewordmap::createList_EN(void)
{
}
+59 -55
View File
@@ -45,6 +45,8 @@
#include "clockwordmap.h"
#include "daywordmap.h"
#include "ota.h"
#include "temperature.h"
#include "temperaturewordmap.h"
// --------------------------------------------------------------------------------------------------------------------
// Constant and macro definitions
// --------------------------------------------------------------------------------------------------------------------
@@ -107,9 +109,6 @@ extern "C" void app_main(void)
ret = nvs_flash_init();
}
ESP_LOGE("Test", "System start");
vTaskDelay(100);
// -----------------------------------------------------------------------------------------------------------------
// UART
//
@@ -128,15 +127,10 @@ extern "C" void app_main(void)
ESP_ERROR_CHECK(uart_set_pin(debugUart, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE));
ESP_ERROR_CHECK(uart_driver_install(debugUart, 1024, 1024, 0, NULL, 0));
ESP_LOGE("Test", "Uart installed");
vTaskDelay(100);
// uart uartDebug = uart(&debugUart);
// uartDebug.open();
// uartDebug.write(255, 255, (uint8_t*)"START", 5);
ESP_LOGE("Test", "Uart interface open");
vTaskDelay(100);
esplog esplogger = esplog();
esplogger.open();
@@ -150,9 +144,6 @@ extern "C" void app_main(void)
// Call the logger executable within a dedicated task and forget about it afterwards
xTaskCreate(loggerTask, (const char*)"loggerTask", 3000, &debugLogger, 3, &loggerTaskHandle);
ESP_LOGE("Test", "Logger Task started");
vTaskDelay(100);
LOGGER_PRINT("\n\r-----------------------------------------------------------------------\n\r");
LOGGER_PRINT("System Start\n\r");
LOGGER_PRINT("\n\r");
@@ -160,30 +151,27 @@ extern "C" void app_main(void)
LOGGER_PRINT("Release: %d.%d \n\r", MAJORRELEASE, MINORRELEASE);
LOGGER_PRINT("Compiled on %s at %s\n\r\n\r\n\r", __DATE__, __TIME__);
// -----------------------------------------------------------------------------------------------------------------
// I2C Masterbus for sensoring peripherals
//
i2c_port_t i2c_master_port = I2C_NUM_0;
i2c_config_t i2cConfig = {
.mode = I2C_MODE_MASTER,
.sda_io_num = (int)GPIO_I2C_SDA,
.scl_io_num = (int)GPIO_I2C_SCK,
.sda_pullup_en = GPIO_PULLUP_ENABLE,
.scl_pullup_en = GPIO_PULLUP_ENABLE,
.master = 400000,
.clk_flags = 0
};
ESP_ERROR_CHECK(i2c_param_config(i2c_master_port, &i2cConfig));
ESP_ERROR_CHECK(i2c_driver_install(i2c_master_port, i2cConfig.mode, 0, 0, 0));
i2c i2cSensor = i2c(&i2c_master_port);
i2cSensor.open();
ESP_LOGE("Test", "Logger System Rpintout");
vTaskDelay(100);
// // -----------------------------------------------------------------------------------------------------------------
// // I2C Masterbus for sensoring peripherals
// //
// i2c_port_t i2c_master_port = I2C_NUM_0;
//
// i2c_config_t i2cConfig = {
// .mode = I2C_MODE_MASTER,
// .sda_io_num = (int)2,
// .scl_io_num = (int)3,
// .sda_pullup_en = GPIO_PULLUP_ENABLE,
// .scl_pullup_en = GPIO_PULLUP_ENABLE,
// .master = 400000,
// .clk_flags = 0
// };
//
// ESP_ERROR_CHECK(i2c_param_config(i2c_master_port, &i2cConfig));
// ESP_ERROR_CHECK(i2c_driver_install(i2c_master_port, i2cConfig.mode, 0, 0, 0));
//
// i2c i2cSensor = i2c(&i2c_master_port);
// i2cSensor.open();
//
// // -----------------------------------------------------------------------------------------------------------------
// // I2C RGB Sensor on I2C MasterBus for sensors
// //
@@ -197,33 +185,27 @@ extern "C" void app_main(void)
// struct isl29125::rgb_t rgbValue;
// rgbSensor.getRGB(&rgbValue);
// // -----------------------------------------------------------------------------------------------------------------
// // I2C RGB Sensor on I2C MasterBus for sensors
// //
// bmp280 tempSensor = bmp280(0x76, i2cSensor);
// // Reset the sensor
// tempSensor.resetSensor();
// // Make sure to apply a wait cycle between reset and continuous use - 2ms is advised as minimum
// vTaskDelay(10);
// // Initialize the BMP280
// tempSensor.initialize();
// // Set the temperature Oversampling
// tempSensor.setSensorTemperatureOversampling(bmp280::BMP280_Oversampling_t::X1);
// // Set the sensor to NORMAL mode
// tempSensor.setSensorMode(bmp280::BMP280_Mode_t::NORMAL);
// -----------------------------------------------------------------------------------------------------------------
// I2C RGB Sensor on I2C MasterBus for sensors
//
bmp280 tempSensor = bmp280(0x76, i2cSensor);
// Reset the sensor
tempSensor.resetSensor();
// Make sure to apply a wait cycle between reset and continuous use - 2ms is advised as minimum
vTaskDelay(10);
// Initialize the BMP280
tempSensor.initialize();
// Set the temperature Oversampling
tempSensor.setSensorTemperatureOversampling(bmp280::BMP280_Oversampling_t::X1);
// Set the sensor to NORMAL mode
tempSensor.setSensorMode(bmp280::BMP280_Mode_t::NORMAL);
// -----------------------------------------------------------------------------------------------------------------
// Wifi create and connect
//
Wifi wifi = Wifi();
ESP_LOGE("Test", "Wifi object created");
vTaskDelay(100);
wifi.start_client();
ESP_LOGE("Test", "Wifi started");
vTaskDelay(100);
// -----------------------------------------------------------------------------------------------------------------
// Programmable LEDs in a strip
//
@@ -236,6 +218,11 @@ extern "C" void app_main(void)
//
Clock clk = Clock(Clock::Mode_t::TEN_BEFORE_HALF);
// -----------------------------------------------------------------------------------------------------------------
// The Temperature class that calculates temperature string and colour
//
temperature temp = temperature();
// -----------------------------------------------------------------------------------------------------------------
// Wordmaps for clock(time), clock(day) and temperature
//
@@ -245,6 +232,8 @@ extern "C" void app_main(void)
DayWordmap daywords = DayWordmap(&matrix);
daywords.setColour(0xFF, 0x00, 0x80);
temperaturewordmap tempwords = temperaturewordmap(&matrix);
// -----------------------------------------------------------------------------------------------------------------
// OTA handler
@@ -255,6 +244,7 @@ extern "C" void app_main(void)
xTaskCreate(otaTask, (const char*)"OTATask", 4000, &otaUpdater, 3, &otaTaskHandle);
std::list<std::string> clockWordlist;
std::list<std::string> tempWordList;
while(1)
@@ -269,6 +259,20 @@ extern "C" void app_main(void)
daywords.setWord(wordmap::Language_t::NL, *it, true);
}
// Get the temperature from sensor
int currentTemperature = tempSensor.getTemperature() / 100;
LOGGER_INFO("The current temperature is: %i (%s)", currentTemperature, std::to_string(21));
// Generate temperature wordlist
temp.generateWordlist(currentTemperature, &tempWordList);
for(it = tempWordList.begin(); it != tempWordList.end(); it++)
{
tempwords.setWord(wordmap::Language_t::NL, *it, true);
}
uint8_t tRed, tGreen, tBlue;
temp.calculateRGB(currentTemperature, &tRed, &tGreen, &tBlue);
tempwords.setColour(tRed, tGreen, tBlue);
matrix.update();
vTaskDelay(1000);
}
@@ -292,7 +296,7 @@ void otaTask(void* parameters)
ota* otaHandler = (ota*) parameters;
while (1)
{
otaHandler->task();
// otaHandler->task();
vTaskDelay(otaHandler->checkInterval_ms);
}
}