2020-11-06 22:19:16 +01:00
/** \addtogroup Homie
* @ {
*
2020-10-16 15:03:51 +02:00
* @ file HomieConfiguration . h
* @ author your name ( you @ domain . com )
* @ brief
* @ version 0.1
* @ date 2020 - 10 - 16
*
* @ copyright Copyright ( c ) 2020
* All Settings , configurable in Homie
2020-11-06 22:19:16 +01:00
*
2020-10-16 15:03:51 +02:00
*/
# ifndef HOMIE_PLANT_CONFIG_H
# define HOMIE_PLANT_CONFIG_H
2020-10-16 16:22:48 +02:00
# include "HomieTypes.h"
# define MAX_PLANTS 7
2020-10-16 15:03:51 +02:00
/**
2021-04-07 19:40:31 +02:00
* @ name Homie Attributes
2020-11-06 22:19:16 +01:00
* generated Information
* @ {
* */
2020-10-16 15:03:51 +02:00
2021-11-29 17:25:08 +01:00
# define NUMBER_TYPE "Float" /**< numberic information, published or read in Homie */
2021-04-07 19:40:31 +02:00
/**
2022-03-06 14:25:14 +01:00
* @ }
*
2021-04-07 19:40:31 +02:00
* @ name Temperatur Node
* @ {
* */
2020-12-21 17:07:15 +01:00
# define TEMPERATURE_NAME "Temperature"
# define TEMPERATURE_UNIT "°C"
2021-04-07 19:40:31 +02:00
# define TEMPERATUR_SENSOR_LIPO "lipo" /**< Homie node: temperatur, setting: lipo temperatur (or close to it) */
# define TEMPERATUR_SENSOR_CHIP "chip" /**< Homie node: temperatur, setting: battery chip */
# define TEMPERATUR_SENSOR_WATER "water" /**< Homie node: temperatur, setting: water temperatur */
/** @}
*
* @ name Plant Nodes
* @ {
*/
2020-12-21 17:07:15 +01:00
2020-11-06 22:19:16 +01:00
HomieNode plant0 ( " plant0 " , " Plant 0 " , " Plant " ) ; /**< dynamic Homie information for first plant */
HomieNode plant1 ( " plant1 " , " Plant 1 " , " Plant " ) ; /**< dynamic Homie information for second plant */
2021-04-07 19:40:31 +02:00
HomieNode plant2 ( " plant2 " , " Plant 2 " , " Plant " ) ; /**< dynamic Homie information for third plant */
HomieNode plant3 ( " plant3 " , " Plant 3 " , " Plant " ) ; /**< dynamic Homie information for fourth plant */
HomieNode plant4 ( " plant4 " , " Plant 4 " , " Plant " ) ; /**< dynamic Homie information for fivth plant */
HomieNode plant5 ( " plant5 " , " Plant 5 " , " Plant " ) ; /**< dynamic Homie information for sixth plant */
HomieNode plant6 ( " plant6 " , " Plant 6 " , " Plant " ) ; /**< dynamic Homie information for seventh plant */
2020-10-16 15:03:51 +02:00
2021-08-29 20:45:50 +02:00
# if defined(TIMED_LIGHT_PIN)
HomieNode timedLightNode ( " timedLight " , " TimedLight " , " Status " ) ;
# endif // TIMED_LIGHT_PIN
2020-10-16 15:03:51 +02:00
HomieNode sensorLipo ( " lipo " , " Battery Status " , " Lipo " ) ;
HomieNode sensorSolar ( " solar " , " Solar Status " , " Solarpanel " ) ;
HomieNode sensorWater ( " water " , " WaterSensor " , " Water " ) ;
HomieNode sensorTemp ( " temperature " , " Temperature " , " temperature " ) ;
2020-11-06 23:29:46 +01:00
HomieNode stayAlive ( " stay " , " alive " , " alive " ) ; /**< Necessary for Mqtt Active Command */
2020-10-16 15:03:51 +02:00
2021-04-07 19:40:31 +02:00
/**
* @ }
*/
2020-11-06 22:19:16 +01:00
2020-10-16 15:03:51 +02:00
/**
2020-11-06 22:19:16 +01:00
* @ name Settings
* General settings for the controller
* @ {
2020-10-16 15:03:51 +02:00
*/
2021-06-29 23:49:48 +02:00
HomieSetting < long > deepSleepTime ( " sleep " , " time in seconds to sleep " ) ;
2020-10-31 12:44:32 +01:00
HomieSetting < long > deepSleepNightTime ( " nightsleep " , " time in seconds to sleep (0 uses same setting: deepsleep at night, too) " ) ;
2021-08-23 00:58:37 +02:00
HomieSetting < long > pumpIneffectiveWarning ( " pumpConsecutiveWarn " , " if the pump was triggered this amount directly after each cooldown, without resolving dryness, warn " ) ;
2021-06-29 23:49:48 +02:00
HomieSetting < long > waterLevelMax ( " tankmax " , " distance (mm) at maximum water level " ) ;
HomieSetting < long > waterLevelMin ( " tankmin " , " distance (mm) at minimum water level (pumps still covered) " ) ;
HomieSetting < long > waterLevelWarn ( " tankwarn " , " warn (mm) if below this water level % " ) ;
HomieSetting < long > waterLevelVol ( " tankVolume " , " (ml) between minimum and maximum " ) ;
HomieSetting < const char * > lipoSensorAddr ( " lipoDSAddr " , " 1wire address for lipo temperature sensor " ) ;
HomieSetting < const char * > waterSensorAddr ( " tankDSAddr " , " 1wire address for water temperature sensor " ) ;
2020-11-04 21:57:40 +01:00
HomieSetting < const char * > ntpServer ( " ntpServer " , " NTP server (pool.ntp.org as default) " ) ;
2020-10-16 15:03:51 +02:00
2021-08-29 20:45:50 +02:00
# if defined(TIMED_LIGHT_PIN)
HomieSetting < double > timedLightVoltageCutoff ( " LightVoltageCutoff " , " voltage at wich to disable light " ) ;
HomieSetting < long > timedLightStart ( " LightStart " , " hour to start light " ) ;
HomieSetting < long > timedLightEnd ( " LightEnd " , " hour to end light " ) ;
HomieSetting < bool > timedLightOnlyWhenDark ( " LightOnlyDark " , " only enable light, if solar is low " ) ;
2021-12-05 02:36:03 +01:00
HomieSetting < long > timedLightPowerLevel ( " LightPowerLevel " , " 0-255 power level " ) ;
2021-08-29 20:45:50 +02:00
# endif // TIMED_LIGHT_PIN
2020-11-06 22:19:16 +01:00
/**
2021-04-07 19:40:31 +02:00
* @ }
2020-11-06 22:19:16 +01:00
*/
/**
* @ name Plant specific ones
* Setting for one plant
* @ {
* */
2020-10-16 15:03:51 +02:00
2020-11-04 21:57:40 +01:00
# define GENERATE_PLANT(plant, strplant) \
2021-07-09 21:50:51 +02:00
HomieSetting < double > mSensorDry # # plant = HomieSetting < double > ( " dry " strplant , " Plant " strplant " - Moist sensor dry % " ) ; \
2021-06-29 23:49:48 +02:00
HomieSetting < long > mPumpAllowedHourRangeStart # # plant = HomieSetting < long > ( " hourstart " strplant , " Plant " strplant " - Range pump allowed hour start (0-23) " ) ; \
HomieSetting < long > mPumpAllowedHourRangeEnd # # plant = HomieSetting < long > ( " hourend " strplant , " Plant " strplant " - Range pump allowed hour end (0-23) " ) ; \
HomieSetting < bool > mPumpOnlyWhenLowLight # # plant = HomieSetting < bool > ( " lowLight " strplant , " Plant " strplant " - Enable the Pump only, when there is no sunlight " ) ; \
2022-08-22 18:08:19 +02:00
HomieSetting < long > mPumpCooldownInSeconds # # plant = HomieSetting < long > ( " delay " strplant , " Plant " strplant " - How long to wait until the pump is activated again (sec) " ) ; \
2021-11-19 19:48:14 +01:00
HomieSetting < long > pPumpDuration # # plant = HomieSetting < long > ( " pumpDuration " strplant , " Plant " strplant " - time seconds to water when pump is active " ) ; \
HomieSetting < long > pPumpMl # # plant = HomieSetting < long > ( " pumpAmount " strplant , " Plant " strplant " - ml (if using flowmeter) to water when pump is active " ) ; \
2021-10-26 21:50:55 +02:00
HomieSetting < long > pPowerLevel # # plant = HomieSetting < long > ( " powerLevel " strplant , " Plant " strplant " - pwm duty cycle in percent " ) ; \
2022-04-27 21:19:26 +02:00
PlantSettings_t mSetting # # plant = { & mSensorDry # # plant , & mPumpAllowedHourRangeStart # # plant , & mPumpAllowedHourRangeEnd # # plant , & mPumpOnlyWhenLowLight # # plant , & mPumpCooldownInSeconds # # plant , & pPumpDuration # # plant , & pPowerLevel # # plant , & pPumpMl # # plant } ; \
2020-12-21 16:26:53 +01:00
/**< Generate all settings for one plant \
* \
* Feature to start pumping only at morning : @ link { SOLAR_CHARGE_MIN_VOLTAGE } and @ link { SOLAR_CHARGE_MAX_VOLTAGE } \
2020-11-06 23:29:46 +01:00
*/
2020-11-04 21:57:40 +01:00
2020-11-06 22:19:16 +01:00
/**
* @ }
*/
GENERATE_PLANT ( 0 , " 0 " ) ; /**< Homie settings for first plant */
GENERATE_PLANT ( 1 , " 1 " ) ; /**< Homie settings for second Plant */
GENERATE_PLANT ( 2 , " 2 " ) ; /**< Homie settings for third plant */
GENERATE_PLANT ( 3 , " 3 " ) ; /**< Homie settings for fourth plant */
GENERATE_PLANT ( 4 , " 4 " ) ; /**< Homie settings for fifth plant */
GENERATE_PLANT ( 5 , " 5 " ) ; /**< Homie settings for sixth plant */
GENERATE_PLANT ( 6 , " 6 " ) ; /**< Homie settings for seventh plant */
2020-10-16 16:22:48 +02:00
2021-10-06 22:00:17 +02:00
# endif /* HOMIE_PLANT_CONFIG_H @} */