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 = 11;
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;
21
23extern char LongMessage[MaxLongTextLength]; // Temp storage for assembling long messages (REST API - Google Sheets reporting)
24extern char ShortMessage[MaxShotTextLength]; // Temp storage for assembling short messages (Log entries, Error messages)
25extern char CurrentTime[MaxWordLength]; // Buffer for storing current time in text format
26
28static const uint8_t WirelessCSNPin = 9;
29static const uint8_t WirelessCEPin = 10;
30static const uint8_t WirelessChannel[6] = {"Res1"};
31static const uint8_t WirelessPayloadSize = 32;
32static const uint16_t WirelessMessageTimeout = 500;
33static const uint16_t WirelessReceiveTimeout = 60000;
34
37
38typedef struct
39{
40 bool Debug = true;
41 bool Metric = true;
42
43 // initialized via Designated initializer https://riptutorial.com/c/example/18609/using-designated-initializers
44 struct ReservoirModuleSettings
45 {
46 ReservoirModuleSettings(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) {}
52 };
53 struct ReservoirModuleSettings Res1 = {.SerialReportDate = true, .SerialReportMemory = true, .SerialReportJSONFriendly = true, .SerialReportJSON = true, .SerialReportWireless = true};
54
55 struct DHTSensorSettings
56 {
57 DHTSensorSettings(uint8_t Pin = 0, uint8_t Type = 0) : Pin(Pin), Type(Type) {}
58 uint8_t Pin;
59 uint8_t Type;
60 };
61 struct DHTSensorSettings DHT1 = {.Pin = 3, .Type = 22};
62
64 {
65 PHSensorSettings(uint8_t Pin = 0, float Slope = 0.0, float Intercept = 0.0) : Pin(Pin), Slope(Slope), Intercept(Intercept) {}
66 uint8_t Pin;
67 float Slope;
68 float Intercept;
69 };
70 struct PHSensorSettings PHSen1 = {.Pin = A0, .Slope = -0.031199, .Intercept = 22.557617};
71
73 {
74 TDSSensorSettings(uint8_t Pin = 0, uint8_t PowerPin = 0) : Pin(Pin), PowerPin(PowerPin) {}
75 uint8_t Pin;
76 uint8_t PowerPin;
77 };
78 struct TDSSensorSettings TDS1 = {.Pin = A1, .PowerPin = A2};
79
80 struct SoundSettings
81 {
82 SoundSettings(uint8_t Pin = 0) : Pin(Pin) {}
83 uint8_t Pin;
84 bool Enabled = true;
85 };
86 struct SoundSettings Sound1 = {.Pin = 2};
87
89 {
90 WaterTempSensorSettings(uint8_t Pin = 0) : Pin(Pin) {}
91 uint8_t Pin;
92 };
93 struct WaterTempSensorSettings WTemp1 = {.Pin = 4};
94
95 struct WeightSensorSettings
96 {
97 WeightSensorSettings(uint8_t DTPin = 0, uint8_t SCKPin = 0, long Offset = 0, float Scale = 0.0) : DTPin(DTPin), SCKPin(SCKPin), Offset(Offset), Scale(Scale) {}
98 uint8_t DTPin;
99 uint8_t SCKPin;
100 long Offset;
101 float Scale;
102 };
103 struct WeightSensorSettings Weight1 = {.DTPin = 5, .SCKPin = 6, .Offset = 246106, .Scale = -22716.50};
104 struct WeightSensorSettings WeightWR = {.DTPin = A3, .SCKPin = A4, .Offset = 260682, .Scale = -22084.60};
105
106 uint8_t CompatibilityVersion = Version;
107} Settings;
108
113void saveSettings(Settings *ToSave);
119Settings *loadSettings(bool ResetEEPROM = false);
120void 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
DHTSensorSettings(uint8_t Pin=0, uint8_t Type=0)
Definition Settings.h:57
< PHSensor default settings
Definition Settings.h:64
PHSensorSettings(uint8_t Pin=0, float Slope=0.0, float Intercept=0.0)
Definition Settings.h:65
uint8_t Pin
pH sensor Po pin
Definition Settings.h:66
< ReservoirModule default settings
Definition Settings.h:185
ReservoirModuleSettings(bool SerialReportDate=true, bool SerialReportMemory=true, bool SerialReportJSONFriendly=true, bool SerialReportJSON=true, bool SerialReportWireless=true)
Definition Settings.h:46
bool SerialReportDate
Enable/disable reporting the current time to the Serial output.
Definition Settings.h:47
bool SerialReportJSON
Enable/disable sending JSON formatted reports to the Serial output.
Definition Settings.h:50
bool SerialReportWireless
Enable/disable sending wireless package exchange reports to the Serial output.
Definition Settings.h:51
bool SerialReportMemory
Enable/disable reporting the remaining free memory to the Serial output.
Definition Settings.h:48
bool SerialReportJSONFriendly
Enable/disable sending Text formatted reports to the Serial output.
Definition Settings.h:49
SoundSettings(uint8_t Pin=0)
Definition Settings.h:82
< PHSensor default settings
Definition Settings.h:73
uint8_t PowerPin
TDS sensor A pin.
Definition Settings.h:76
uint8_t Pin
TDS sensor A pin.
Definition Settings.h:75
TDSSensorSettings(uint8_t Pin=0, uint8_t PowerPin=0)
Definition Settings.h:74
< WaterTempSensor default settings
Definition Settings.h:89
uint8_t Pin
DS18B20 sensor yellow signal wire.
Definition Settings.h:91
WaterTempSensorSettings(uint8_t Pin=0)
Definition Settings.h:90
< WeightSensor default settings
Definition Settings.h:87
uint8_t DTPin
Weight sensor DT pin.
Definition Settings.h:88
WeightSensorSettings(uint8_t DTPin=0, uint8_t SCKPin=0, long Offset=0, float Scale=0.0)
Definition Settings.h:97