Gbox 4.20
Grow box automation and monitoring - <a href='https://sites.google.com/site/growboxguy/'>https://sites.google.com/site/growboxguy/</a>
 
Loading...
Searching...
No Matches
Settings.h
Go to the documentation of this file.
1#pragma once
2
12static const uint8_t Version = 9;
13
15
17static const uint8_t MaxWordLength = 32;
18static const uint8_t MaxShotTextLength = 64;
19static const uint16_t MaxLongTextLength = 256;
20static const uint8_t QueueDepth = 8;
21static const uint8_t MovingAverageDepth = 10;
22
24extern char LongMessage[MaxLongTextLength]; // Temp storage for assembling long messages (REST API - Google Sheets reporting)
25extern char ShortMessage[MaxShotTextLength]; // Temp storage for assembling short messages (Log entries, Error messages)
26extern char CurrentTime[MaxWordLength]; // Buffer for storing current time in text format
27
29static const uint8_t WirelessCSNPin = 9;
30static const uint8_t WirelessCEPin = 10;
31static const uint8_t WirelessChannel[6] = {"Aero1"};
32static const uint8_t WirelessPayloadSize = 32;
33static const uint16_t WirelessMessageTimeout = 500;
34static const uint16_t WirelessReceiveTimeout = 60000;
35
38
39typedef struct
40{
41 bool Debug = true;
42 bool Metric = true;
43
44 //<initialized via Designated initializer https://riptutorial.com/c/example/18609/using-designated-initializers
46 {
47 AeroponicsModuleSettings(bool SerialReportDate = true, bool SerialReportMemory = true, bool SerialReportJSONFriendly = true, bool SerialReportJSON = true, bool SerialReportWireless = true) : SerialReportDate(SerialReportDate), SerialReportMemory(SerialReportMemory), SerialReportJSONFriendly(SerialReportJSONFriendly), SerialReportJSON(SerialReportJSON), SerialReportWireless(SerialReportWireless) {}
53 };
54 struct AeroponicsModuleSettings Aero1 = {.SerialReportDate = true, .SerialReportMemory = true, .SerialReportJSONFriendly = true, .SerialReportJSON = true, .SerialReportWireless = true};
55
57 {
58 AeroponicsSettings(uint8_t SpraySolenoidPin = 0, bool SpraySolenoidNegativeLogic = false, uint16_t SpraySolenoidClosingDelay = 0, uint16_t TankDrainingTimeout = 0, bool SprayEnabled = true, float Duration = 0.0, uint16_t DayInterval = 0, uint16_t NightInterval = 0, float MinPressure = 0.0, float MaxPressure = 0.0) : SpraySolenoidPin(SpraySolenoidPin), SpraySolenoidNegativeLogic(SpraySolenoidNegativeLogic), SpraySolenoidClosingDelay(SpraySolenoidClosingDelay), TankDrainingTimeout(TankDrainingTimeout), SprayEnabled(SprayEnabled), Duration(Duration), DayInterval(DayInterval), NightInterval(NightInterval), MinPressure(MinPressure), MaxPressure(MaxPressure) {}
64 float Duration;
65 uint16_t DayInterval;
66 uint16_t NightInterval;
69 };
70 struct AeroponicsSettings AeroT1 = {.SpraySolenoidPin = 5, .SpraySolenoidNegativeLogic = true, .SpraySolenoidClosingDelay = 600, .TankDrainingTimeout = 180, .SprayEnabled = true, .Duration = 1.0, .DayInterval = 6, .NightInterval = 10, .MinPressure = 5.0, .MaxPressure = 7.0};
71
73 {
74 uint8_t Pin;
75 float Offset;
76 float Ratio;
77 };
78 struct PressureSensorSettings Pres1 = {.Pin = A7, .Offset = 0.57, .Ratio = 2.7};
79
80 struct SoundSettings
81 {
82 uint8_t Pin;
83 bool Enabled;
84 };
85 struct SoundSettings Sound1 = {.Pin = 2, .Enabled = true};
86
103 struct PressurePumpSettings AeroPump1 = {.PumpPin = 3, .PumpPinNegativeLogic = false, .BypassSolenoidPin = 4, .BypassSolenoidNegativeLogic = true, .BypassSolenoidMaxOpenTime = 180, .BypassSolenoidClosingDelay = 600, .PumpEnabled = true, .Speed = 70, .SpeedLimitLow = 30, .SpeedLimitHigh = 100, .PumpTimeOut = 420, .PrimingTime = 10, .BlowOffTime = 3};
104
105 struct WeightSensorSettings
106 {
107 uint8_t DTPin;
108 uint8_t SCKPin;
109 long Offset;
110 float Scale;
111 };
112 struct WeightSensorSettings Weight1 = {.DTPin = A0, .SCKPin = A1, .Offset = -288069, .Scale = -22280.70};
113
114 uint8_t CompatibilityVersion = Version;
115} Settings;
116
121void saveSettings(Settings *ToSave);
127Settings *loadSettings(bool ResetEEPROM = false);
128void restoreDefaults();
Settings * loadSettings(bool ResetEEPROM=false)
Load settings from EEPROM.
Definition Settings.cpp:20
void restoreDefaults()
Load sketch default settings into EEPROM.
Definition Settings.cpp:45
char CurrentTime[MaxWordLength]
Buffer for storing current time in text format.
char LongMessage[MaxLongTextLength]
Temp storage for assembling long messages (REST API, MQTT reporting)
char ShortMessage[MaxShotTextLength]
Temp storage for assembling short text messages (Log entries, Error messages,etc)
void saveSettings(Settings *ToSave)
Store settings in EEPROM - Only updates changed bits.
Definition Settings.cpp:10
bool & Debug
True - Turns on extra debug messages on the Serial Output.
bool & Metric
True - Use metric units, False - Use imperial units.
constexpr uint8_t Version
Default Settings for each component within the module. Loaded when the Arduino starts.
Definition Settings.h:12
constexpr uint16_t WirelessMessageTimeout
(ms) One package should be exchanged within this timeout (Including retries and delays)
Definition Settings.h:32
constexpr uint8_t WirelessPayloadSize
Size of the wireless packages exchanged with the Main module. Max 32 bytes are supported on nRF24L01+...
Definition Settings.h:31
constexpr uint8_t WirelessCEPin
nRF24l01+ wireless transmitter CE pin - Pre-connected on RF-Nano
Definition Settings.h:29
constexpr uint8_t MaxShotTextLength
Default char * buffer length for storing mutiple words. Memory intense!
Definition Settings.h:18
constexpr uint8_t QueueDepth
Limits the maximum number of active modules. Memory intense!
Definition Settings.h:20
constexpr uint8_t MaxWordLength
Default char * buffer length for storing a word + null terminator. Memory intense!
Definition Settings.h:17
constexpr uint16_t MaxLongTextLength
Default char * buffer length for storing a long text. Memory intense!
Definition Settings.h:19
constexpr uint16_t WirelessReceiveTimeout
(ms) If no packages are received from the Main module over this limit, try reseting the nRF24L01+ wir...
Definition Settings.h:33
constexpr uint8_t WirelessCSNPin
< nRF24L01+ wireless receiver
Definition Settings.h:28
constexpr uint8_t WirelessChannel[6]
This needs to be unique and match with the Name of the HempyModule_Web object in the MainModule_Web....
Definition Settings.h:30
bool SerialReportJSON
Enable/disable sending JSON formatted reports to the Serial output.
Definition Settings.h:51
bool SerialReportJSONFriendly
Enable/disable sending Text formatted reports to the Serial output.
Definition Settings.h:50
bool SerialReportMemory
Enable/disable reporting the remaining free memory to the Serial output.
Definition Settings.h:49
bool SerialReportDate
Enable/disable reporting the current time to the Serial output.
Definition Settings.h:48
bool SerialReportWireless
Enable/disable sending wireless package exchange reports to the Serial output.
Definition Settings.h:52
AeroponicsModuleSettings(bool SerialReportDate=true, bool SerialReportMemory=true, bool SerialReportJSONFriendly=true, bool SerialReportJSON=true, bool SerialReportWireless=true)
Definition Settings.h:47
< Aeroponics_Tank default settings
Definition Settings.h:57
uint16_t DayInterval
Spray every X minutes - When the lights are ON.
Definition Settings.h:65
uint16_t NightInterval
Spray every X minutes - When the lights are OFF.
Definition Settings.h:66
uint16_t TankDrainingTimeout
(sec) How long does it take to fully drain the pressure tank by opening the spray and bypass solenoid...
Definition Settings.h:62
bool SprayEnabled
Enable/disable spraying cycle.
Definition Settings.h:63
uint16_t SpraySolenoidClosingDelay
(ms) Time required for the solenoid to close. To avoid draining the tank the bypass valve is not allo...
Definition Settings.h:61
uint8_t SpraySolenoidPin
Relay controlling DC power to the solenoid.
Definition Settings.h:59
AeroponicsSettings(uint8_t SpraySolenoidPin=0, bool SpraySolenoidNegativeLogic=false, uint16_t SpraySolenoidClosingDelay=0, uint16_t TankDrainingTimeout=0, bool SprayEnabled=true, float Duration=0.0, uint16_t DayInterval=0, uint16_t NightInterval=0, float MinPressure=0.0, float MaxPressure=0.0)
Definition Settings.h:58
float Duration
Spray time in seconds (Actual duration is ~0.5sec longer due to thread + solenoid delay)
Definition Settings.h:64
bool SpraySolenoidNegativeLogic
true - Relay turns on to LOW signal, false - Relay turns on to HIGH signal
Definition Settings.h:60
float MinPressure
Turn on pump below this pressure.
Definition Settings.h:67
float MaxPressure
Turn off pump above this pressure.
Definition Settings.h:68
< PressurePump default settings
Definition Settings.h:88
uint16_t BypassSolenoidMaxOpenTime
(sec) Max time the bypass can stay open
Definition Settings.h:93
bool PumpPinNegativeLogic
true - Relay turns on to LOW signal, false - Relay turns on to HIGH signal
Definition Settings.h:90
bool BypassSolenoidNegativeLogic
true - Relay turns on to LOW signal, false - Relay turns on to HIGH signal
Definition Settings.h:92
uint16_t PrimingTime
(Sec) For how long to keep the bypass solenoid on when starting the pump - Remove air bubbles from pu...
Definition Settings.h:100
uint8_t PumpPin
Pump relay pin.
Definition Settings.h:89
bool PumpEnabled
Enable/disable pump. false= Block running the pump.
Definition Settings.h:95
uint16_t BlowOffTime
(Sec) For how long to open the bypass solenoid on after turning the pump off - Release pressure from ...
Definition Settings.h:101
uint8_t SpeedLimitHigh
Maximum allowed speed to prevent over-revving.
Definition Settings.h:98
uint8_t BypassSolenoidPin
Bypass solenoid relay pin.
Definition Settings.h:91
uint8_t SpeedLimitLow
Duty cycle limit, does not allow lowering the speed too much. Avoids stalling the motor.
Definition Settings.h:97
uint8_t Speed
Duty cycle of the PWM Motor speed.
Definition Settings.h:96
uint16_t BypassSolenoidClosingDelay
(ms) How long it takes for the solenoid to close
Definition Settings.h:94
uint16_t PumpTimeOut
(Sec) Max pump run time
Definition Settings.h:99
< PressureSensor default settings
Definition Settings.h:73
float Offset
Pressure sensor calibration: voltage reading at 0 pressure.
Definition Settings.h:75
uint8_t Pin
Pressure sensor Pin: Signal(yellow)
Definition Settings.h:74
float Ratio
Pressure sensor voltage to pressure ratio.
Definition Settings.h:76
< WeightSensor default settings
Definition Settings.h:87
uint8_t DTPin
Weight sensor DT pin.
Definition Settings.h:88