<?xml version="1.0" encoding="UTF-8"?>
<upgrade appID="GroNode">
	
	<version>1.0.7.8</version>

	<files>
		<file>
			<fileURL>http://grolabupdate.opengrow.pt/gronode/GroNodeFirmware_H003_1.0.7.8.hex</fileURL>
			<board>3</board>
			<fileName>GroNodeFirmware_H003_1.0.7.8.hex</fileName>
			<md5>392ADEE8E2DD93494D237D56D2E857BD</md5>
		</file>
		<file>
			<fileURL>http://grolabupdate.opengrow.pt/gronode/GroNodeFirmware_H004_1.0.7.8.hex</fileURL>
			<board>4</board>
			<fileName>GroNodeFirmware_H004_1.0.7.8.hex</fileName>
			<md5>28D6F4BBCFB59EE5A67D941E82EEF40F</md5>
		</file>
		<file>
			<fileURL>http://grolabupdate.opengrow.pt/gronode/GroNodeFirmware_H005_1.0.7.8.hex</fileURL>
			<board>5</board>
			<fileName>GroNodeFirmware_H005_1.0.7.8.hex</fileName>
			<md5>0F06A1687C52D9018823592030B56193</md5>
		</file>
		<file>
			<fileURL>http://grolabupdate.opengrow.pt/gronode/GroNodeFirmware_H006_1.0.7.8.hex</fileURL>
			<board>6</board>
			<fileName>GroNodeFirmware_H006_1.0.7.8.hex</fileName>
			<md5>28F4CC2B4843D8E58EEBE6D0DF7A8671</md5>
		</file>
		<file>
			<fileURL>http://grolabupdate.opengrow.pt/gronode/GroNodeFirmware_H007_1.0.7.8.hex</fileURL>
			<board>7</board>
			<fileName>GroNodeFirmware_H007_1.0.7.8.hex</fileName>
			<md5>D535EFDF0C8FA0F2A79E0F7E9DD0B705</md5>
		</file>
		<file>
			<fileURL>http://grolabupdate.opengrow.pt/gronode/GroNodeFirmware_H008_1.0.7.8.hex</fileURL>
			<board>8</board>
			<fileName>GroNodeFirmware_H008_1.0.7.8.hex</fileName>
			<md5>9BCDD72C3C15775812B97522F208E527</md5>
		</file>
	</files>
	
	<versionCompatibility>
		<groNodeSettings>1.0.3.00</groNodeSettings> 
		<mailSettings>1.0.3.00</mailSettings>
		<areasGrowsData>1.0.3.00</areasGrowsData>
		<stagesData>1.0.3.00</stagesData>
		<alarmsData>1.0.6.00</alarmsData>
		<schedulesData>1.0.3.00</schedulesData>
		<modulesData>1.0.6.02</modulesData>
		<latestFormatFlash>1.0.7.8</latestFormatFlash>
	</versionCompatibility>

	<description>
GroNode v1.0.7.8 (2025-11-06):
    - Fixed an overflow issue in the SNTP time service;
    - Improved system stability;
    - General minor fixes and refinements;
    - Code cleanup;

GroNode v1.0.7.7 (2025-05-19):
    - Cloud upload JSON overhaul;
    - Implemented Automatic Temperature Compensation (ATC) for EC;
    - Implemented a new command to get the total Cameras and Cameras IDs list;
    - Implemented a status flag to indicate that there was an error in sending e-mail notification;
    - Implemented some more protections when saving to Flash;
    - Implemented a mechanism to detect faulty interface communications;
    - Added definition for new sensor types (CO2, NH3, PAR, ORP, DO, PH SUBSTRATE, and EC SUBSTRATE);
    - Added compatibility with new modules and new hardware versions;
    - Daylight saving is now added directly to time, instead of changing the TimeZone;
    - Default datetime now is 00:00 01/01/2024;
    - When creating JSON, if at some point the connection is lost, it restarts the process;
    - Whenever GroNode's IP changes, it resets all communication Tasks, APPServer, APPServerAction, E-mails Notifications, and Cloud Upload;
    - When a module re-registers, the cooldown times, LED settings, security settings, and devices' speed, are set to the values we have on GroNode memory, was already working, but it was reviewed;
    - If a Schedule is rescheduled to inactive and was active, the output will now turn OFF;
    - Change Day/Night e-mail now presents the datetime of the Sunset/Sunrise, not the datetime of the e-mail creation;
    - Improved initial datetime validation, now hours above 23, days above 31, months above 12, or seconds or minutes above 59 triggers an RTCC reset to 00:00 01/01/2024;
    - Improved power fail detection;
    - Improved GroNode’s responsiveness in detecting Ethernet disconnections;
    - Improved parsing operation for UserBot' Sensors/Devices;
    - Improved datetime handling;
    - Fixed external interrupt clearing some wrong flags;
    - Fixed incorrect start time calculation for Schedules that start with a nonvalid weekday;
    - Fixed sending e-mail notifications when the notifications are disabled;
    - Fixed data logs command response missing 4 bytes, causing the software to assume that the data logs were corrupted;
    - Fixed incorrect frame count calculation for data logs command response;
    - Fixed sending unnecessary commands to modules, especially when modules are offline;
    - Fixed not taking into account daylight saving to define e-mail datetime;
    - Fixed a bug in DataLogs caused by improper handling of daylight saving time transitions;
    - Minor fixes on the construction of e-mail notifications, typos, wrong names, and so on;
    - Code cleanup;
    - Other minor changes and improvements.

v1.0.7.6 (2024-08-22):
    - Development build;
    - Added compatibility with CtrlBot, TankBot Plus, and Compact Combined CO2 Sensor;
    - Code cleanup;
    - Other minor changes and improvements.

v1.0.7.5 (2023-06-15):
    - Updated e-mail notifications engine (the notifications should work normally again);
    - Improved power fail handling;
    - Code cleanup;
    - Other minor changes and improvements.

v1.0.7.4 (2023-04-19):
    - Added support to the GroNode hardware version 8;
    - Added a new command to read all outputs (still not used);
    - Improved e-mail notifications format to comply with the e-mail standards regarding lines' size;
    - Improved overall communications;
    - Improved Alarms and Areas handling;
    - Improved debugging;
    - Improved modules firmware and hardware versions handling;
    - Improved several data structures;
    - Improved support to PowerBots/TankBots/CtrlBots using the UserBot slots;
    - Changed the security shutdown default timer to 5 minutes;
    - Fixed some incorrect blank spaces and empty data when sending Areas through the UpdateAll command;
    - Fixed editing Alarm from "All Day" to "Day" causing the respective output would go off and then the output would be turned on right away, staying on indefinitely;
    - Fixed forcing TankBot Plus output's speed on outputs that do not exist;
    - Fixed in some cases not properly resetting the module communications timeout thus causing some false "Not Alive" situations;
    - Fixed in some cases not properly resetting the Alarm state causing desynchronization on the running bars (software visuals);
    - Fixed duplicating Area when creating a new area with advanced lightning;
    - Fixed not properly saving module after configuring shutdown procedure;
    - Fixed sending the ping command to an offline module thus causing some issues communicating with other modules;
    - Code cleanup;
    - Other minor changes and improvements.

v1.0.7.3 (2022-12-12):
    - Added support to the CtrlBots with firmware versions 1.x.0.6;
    - Added a new command to read all devices' data from modules;
    - Improved e-mail notifications format to comply with the e-mail standards regarding lines' size;
    - Minor communications improvements;
    - Minor fixes regarding devices' data on Areas' e-mail notifications;
    - Minor fixes regarding Alarms/Schedules data on Areas' e-mail notifications;
    - Code cleanup;
    - Other minor changes and improvements.

v1.0.7.2 (2022-05-30):
    - Added a new communication paradigm based on small frames, the old method still works when the module doesn't support the new one;
    - Added a new method to handle a timed action (Alarms/Schedules), if the active time is lower than 3600s (1Hour), the respective module will handle that active time directly, the old method still works when the module doesn't support the new one;
    - These 2 new features will be implemented for the remaining modules in their next firmware update;
    - Improved e-mail notifications format to comply with the e-mail standards regarding lines' size;
    - Improved module's firmware comparison tools;
    - Improved packages loss counter regarding communications;
    - Improved overall communications;
    - Improved Areas' reading to better validate if an Area/Grow exists;
    - Fixed sending an incorrect Area in the UpdateAll command;
    - Code cleanup;
    - Other minor changes and improvements.

v1.0.7.1 (2021-12-16):
    - Added support to new TankBot and PowerBot hardware versions;
    - Improved the support for the new CO2 Combined Sensor and new PowerBots in general;
    - Improved RF communications;
    - Improved output speed handling;
    - Minor fixes related to e-mail notifications;
    - Other minor changes and improvements.

v1.0.6.16 (2021-11-08):
    - Added power-fail protection to the RGB and Buzzer initializing;
    - Added power-fail protection to Alarms and Schedules whenever SPIFlash is used;
    - Added a new type of e-mail notifications for warning the user about unstable communication between modules;
    - Added an excessive e-mail notifications protection when a module is experiencing communication issues with GroNode, now when a module loses communication 3 times in 5 minutes, GroNode will not send e-mail notifications regarding the state of that module for 1 hour;
    - Added a max quota system to limit the number o e-mail notifications per hour (max of 20 e-mail notifications per hour);
    - Added Alarms and Schedules state to the cloud upload JSON;
    - Improved RGB and Buzzer initializing;
    - Improved general exceptions debugging;
    - Improved the e-mail notifications handling for the default/bogus e-mail addresses;
    - Improved the Areas' Day/Night transition;
    - Improved communication between GroNode and GroLab Software;
    - Improved Areas/Grows power consumption calculation;
    - Improved clearing of all Schedules and Alarms;
    - Improved data consistency check when reading from flash;
    - Improved the handling of Alarms that are based on a timed action, when changing GroNode clock, now when changing GroNode clock the devices related with those Alarms will be turned OFF and those Alarms will restart;
    - Complete review and improvement of e-mail notifications subject, header, content, and footer;
    - Complete review and improvement of Alarm editing features while Alarm is active/running, in short, now it's possible to make changes without resetting the Alarm activity, except when changing the total time ON of an Alarm based on a timed action;
    - Decreased the waiting time for the communications with modules, thus improving overall performance;
    - Changed the handling of Modules' state e-mail notifications when GroNode starts, now it waits 1 minute before sending this type of notification, after that period it sends the notifications for the Modules that are offline;
    - Fixed a rare case that could cause a timed action to not be triggered by the Alarm after disabling/enabling it;
    - Fixed duplicated e-mail notifications associated with Areas' Day/Night transition and Modules' state;
    - Fixed sending e-mail notifications for some General Alarms even with the General Alarms Notifications option disabled;
    - Fixed some internal verifications of modules firmware version;
    - Fixed a case that would make an Area stuck to its current Day/Night configuration after changing the GroNode's clock to the past;
    - Fixed a rare exception caused by receiving corrupted/incorrect data from TCP commands;
    - Fixed requesting LED settings from old PowerBots (Hardware version 2) that do not support this feature;
    - Several minor fixes related to e-mail notifications;
    - Other minor changes and improvements.


v1.0.6.13 (2020-07-24):
    - Minor fixes regarding notification emails; 

v1.0.6.12 (2020-07-13):
    - Fixed sending unnecessary notification emails on a specific condition (alarm with a persistence mode enabled and the device to act on belongs to a module that is currently offline);
    - Fixed sending excessive notification emails when a security alarm is switching between waiting for validation and active modes;
    - Fixed incorrect LED status settings initialization when SoilBot initialize the connection with GroNode;
    - Fixed not sending a notification email when module loses connection with GroNode on some specific situations;
    - Fixed not being able to reset GroNode credentials when the clock is not valid;
    - Other minor changes and improvements.

v1.0.6.11 (2020-04-17):
    - Added new input types: CO2, Pressure, Other Switch, and Other Sensor;
    - Added new input types to the email notifications;
    - Added new input types to the cloud upload (JSON);
    - Added status for tracking the email authentication result (fail/success);
    - Changed Hello Message in SMTP;
    - Changed authentication with UserBot modules: now the UserBot defines the IO types;
    - Changed the EC units to the correct ones in the cloud upload (JSON);
    - Removed blocking of reading an alarm if it was already in memory;
    - Removed unnecessary warnings on AstroTime;
    - Removed security settings read from SoilBot (this module doesn't support this feature, so it's unnecessary);
    - Improved speed control and cool-down time features compatibility with modules that supports them;
    - Improved module status LED settings, now when a new module register the settings are set to default and saved;
    - Fixed a potential issue when changing the condition of an active alarm to a false condition;
    - Other minor fixes and improvements;

v1.0.6.10 (2020-02-19):
    - Fixed an exception when composing an alarm/schedule e-mail notification that contains a peripheral shared between grows;
    - Other minor fixes and improvements.

v1.0.6.9 (2020-02-07):
    - Added more information to several e-mail notifications;
    - Implemented Internet connectivity check;
    - Implemented e-mail service connectivity check;
    - Implemented e-mail status, that provides feedback regarding potential issues with e-mail notifications;
    - Changing the GroNode clock to 15 minutes or more before the current time clears the stored data-logs to preserve data consistency;
    - Fixed updating unnecessary GroNode data when receiving updated settings from GroLab Software;
    - Fixed not turning off the buzzer when an Alarm (custom time mode with specific conditions) becomes inactive;
    - Fixed not properly rescheduling Alarms with custom time mode and specific actions;

v1.0.6.8 (2020-01-23):
    - Fixed not being able to calculate the recurrence of a future schedule that has weekdays restrictions;
    - Fixed GroNode not logging after recovering from a power failure;
    - Fixed excessive retries when it is not possible to send the wake-up e-mail notification;
    - Fixed day/night alarms being wrongly reset at day/night transition;
    - Other minor fixes and improvements;

v1.0.6.7 (2019-12-23):
    - Added support for the new Hardware version 06;
    - Fixed some alarms not getting properly handled when a Day/Night transition occurs;
    - Scheduled alarms present in memory without being used are now deleted and handled in conformity;

v1.0.6.6 (2019-08-01):
    - Added an extra request for module's IOs when reviewing Alarm conditions;

v1.0.6.5 (2019-03-26):
    - Fixed data-logs memory getting erased due to a synchronization issue between internal clock and Internet clock (when using Internet clock mode);
    - Other minor fixes and improvements;

v1.0.6.4 (2019-01-31):
    ATTENTION: THIS FIRMWARE UPDATE WILL RESET YOUR GRONODE'S NOTIFICATION SETTINGS! THIS WAY IT'S REQUIRED TO RECONFIGURE THEM.
    - Fixed email notifications;
    - Other minor fixes and improvements;
	
v1.0.6.3 (2018-09-14):
    - Cool-down time, device speed and sample time are now set upon module new authentication;
    - Moved timestamp field outside datastream (cloud's JSON);
    - Fixed wrong pH units used in the cloud's JSON;
    - Increased cloud's JSON version to 1.0.1;
    - Improved e-mail notifications system;
    - Improved and implemented new battery check on GroNode's Hardware 05;
    - Improved module security settings;
    - Improved moisture sample time;
    - Added new options regarding clear flash command;
    - Implemented a protection to not allow that sample time or security settings exceed certain values;
    - Upgrading from a version lower than 1.0.6.2 will now force to clear modules to allow the software to apply backups;
    - Removed obsolete debugs;

v1.0.6.2 (2018-07-09):
    - Implemented TimeStamp on JSON File;
    - EndPoint is now configurable for Cloud feature;
    - If an old version of the GroLab software tries to save the Cloud EndPoint to null, the previous cloud endpoint is restored;
    - Fixed bug in calculating JSON stream size;
    - Fixed a rare issue when sending data-logs that was causing to miscalculating data-logs size;
    - Minor fixes and improvements;

v1.0.6.1 (2018-06-01):
    - Minor fixes and improvements;

v1.0.6.0 (2017-12-05):
    - Implemented single time execution mode to Schedules/Alarms;
    - Implemented independent device Security Cool-down time to prevent rapid switching in sensitive devices (ex. HPS);
    - Implemented Custom Time alarms, alarms that only act during a desired period of the day;
    - Improved RF communications with better buffer management and CRC enhancement;
    - Improved GroLab modules registration process;
    - Improved setting GroNode clock, more validations (to prevent erroneous date/time definitions);
    - Improved data logs management;
    - Improved GroLab modules data checking, now it will have a non-blocking behavior (improving alive/not alive);
    - Fixed minor issues related to e-mail notifications templates;
    - Fixed not closing SMTP when connection lost, causing e-mail notifications operation to block until a GroNode Reset;
    - Fixed data logs frame count when dumping all data to GroLab Software;
    - Fixed rewrite speed command constantly setting the speed;
    - Persistence Alarms and Schedules now ease of the RF Network by having a timeout to retry the persistence;
    - If GroNode is DHCP, upon wake up the default IP is set 10.0.0.101 (this forces DHCP reacquire);

v1.0.5.1 (2017-05-03):
    - Implemented a new command responsible to update almost all data to improve communications performance;
    - Added timestamp to the commands that did not have timestamp yet;
    - Added 8 peristaltic pumps to the grow data structure to be used as EC and nutrients control;
    - Improved power fail protection during data-logs recording;
    - Schedule triggered by an alarm now waits until waiting time is over before stopping/deleting the schedule;
    - Buzzer was not activating if a buzzed alarm was active and a change was made in main buzzer (GroNode settings);
    - Day/night calculation was acting on undesired alarms, more specific irrigation alarms;
    - Fixed e-mail/data-log issues when the timeout was bigger than 6 hours, e-mail/data-log was not being sent/saved;
    - Fixed bug on action socket, was trying to listen when no socket was open;
    - Fixed links on e-mail notifications footer;
    - Other input and soil temperature where not being written correctly on e-mail notifications;
    - Minor fixes and overall improvements related to security alarms;
    - If there are no security alarms active when GroNode wake up, all security counters reset to zero;
    - Security alarms now look at the outputs of the alarms to decide if they need to be disabled or not;
    - Solved a minor bug when clearing all schedules/alarms;
    - Security alarm validations are now protected against alarm reactivation while validating (same applies to enable/disable);
    - Communication layer improved between GroNode and other modules;
    - Other minor changes and improvements;

v1.0.5.0 (2017-02-10):
    - Implemented data logging and policies;
    - Implemented IP cameras;
    - Implemented violet led blinking when pressing GroNode validating button and there is nothing to validate (check GroNode alive state);
    - Added a condition to check if module sensors/devices data was already read;
    - Added module communication errors and not alive counters;
    - Added warning line to the woke up notification email when GroNode clock is not valid;
    - Added new power fail protections when GroNode is preparing to write on flash;
    - Added a specific TCP session timeout while sending data logs frames to GroLab;

v1.0.4.1 (2017-01-13):
    - Forced week recurrence to all days in schedules created by alarms;
    - Bug fixed on delete alarm;
    - Main water pump was being duplicated in email notifications;
    - Fixed module alive/not alive email triggers;
    - Format schedules/alarms flash now clears the status flag;

v1.0.4.0 (2017-01-03):
    - Added sample time to modules inputs structure;
    - Added support to new SoilBot model;
    - Added main heater to area structure;
    - Improved mail system;
    - Improved GroNode commands;
    - Other minor improvements and fixes;

v1.0.3.5:
    - Prepared GroNode firmware upgrade to perform full modules data backup;
    - Implemented command to pause/resume modules search;
    - Minor fixes on data log;
    - Other minor improvements and fixes;

v1.0.3.4:
    - Added support for resistive sensors;
    - Improved alarms;
    - Improved firmware upload;
    - Improved clock initializer;
    - Other minor improvements and fixes;

v1.0.3.3:
    - Possible security counter fix, memory block was not correctly calculated;
    - Code optimizations;
    - Schedules now get stuck if they are not able to perform an ON/OFF action;
    - Disabling buzzer bug solved, when mute is applied to an alarm and there's another one active with buzzer enabled, the buzzer will not shutdown;
    - Added protection for day/night alarm. Now it's only checked if there is an area associated;
    - Improved area day/night calculation;
    - Other minor fixes and improvements;
    - Added missing timezone constants;
    - Fixed issue when changing alarm day/night while active;

v1.0.3.2:
    - Fixed GroNode validation button not triggering mail;
    - Fixed format alarms not resetting LED and buzzer state;
    - Now GroNode will reset after formatting all data;
    - Mail security alarm count was not being performed correctly;
    - Day/night Calculation for ASTRO_MANUAL, now depends on dates and not on schedule state;

v1.0.3.1:
    - Now speed settings are applied when a new module registers (this will avoid the loss of speed settings on modules);
    - Implemented a new command to read calibration parameters;
    - Added success to frame "all alarms" command;
    - Now the calibration struct is sent when the user sends high/low calibration command;
    - Module firmware changes are now saved on flash;
    - Improved day/night calculations;
    - All active alarms during day/night transition are now set to inactive and respective reversed action is applied;

v1.0.3.0:
    - Improved ON/OFF actions speed;

v1.0.2.1 (2016-10-06):
    - Improved mail notifications;
    - Improved instant power calculation;
    - Improved communications;
    - Removed HTTP server;
    - Fixed format flash issues;
    - Other minor improvements and fixes;

v1.0.2.0 (2016-10-06):
    - Communication improvements;

v1.0.1.53 (2016-09-29):
    - Disabling active schedule wasn't always(if on progress) turning output off;
    - Remade Schedule Trigger Alarm creation math;
    - Security alarms were not activating the output if there was a schedule on progress;
    - Added soft reset on General Exception, preventing GroNode from blocking on improbable Fatal Error;
    - Fixed battery sampling;
    - Stopped calculating recurrence for disabled Schedules;

v1.0.1.52 (2016-09-19):
    - Fixed issues with FOR Alarms;
	</description>
</upgrade>