Thomas Basler
8acae28c59
Feature: New handling of command queue
...
Goal of this change is to prevent a overflow in the command queue by flooding it with MQTT commands and therefor also prevent the reading of the inverter data.
To achieve this it is now possible to specify a insert type for each queue element.
2024-12-15 20:45:32 +01:00
Thomas Basler
818fdc42c9
Simplify inverter handling
2024-09-26 18:17:11 +02:00
Thomas Basler
0c012bf62a
Move inverter housekeeping tasks inside the InverterAbstract class
2024-09-23 22:08:53 +02:00
Thomas Basler
a54b19bf5b
Feature: Inverter radio statistics (rx/tx statistics)
...
The statistics are shown in the WebApp and published via MQTT.
Statistics are reset at midnight.
2024-09-22 18:51:07 +02:00
Thomas Basler
a949776966
Feature: Add support for HERF 1 channel inverters
2024-09-02 20:44:26 +02:00
Thomas Basler
6e607f7f67
Feature: Add option to clear eventlog at midnight
2024-05-31 00:07:28 +02:00
Thomas Basler
1888054627
Fix: Re-Request grid profile parameters if received data are invalid / to short
...
Fixes #1874
2024-03-31 12:42:00 +02:00
Thomas Basler
f995287a6e
Feature: Add support for HERF inverters
2024-03-06 21:57:18 +01:00
Thomas Basler
e9b113486b
Fix: Reset Yield day correction in combination with Zero Yield Day on Midnight lead to wrong values.
2023-12-19 10:46:54 +01:00
Thomas Basler
3288b974c1
Fix: Remove debug output as it floods the console
2023-12-17 17:55:26 +01:00
Thomas Basler
e95afbf2cc
Use references instead of pointers whenver possible
2023-12-12 13:26:07 +01:00
Thomas Basler
8fb43fedf8
Add const keyword to methods
2023-12-12 01:30:40 +01:00
Thomas Basler
d6494fa791
Add const keyword to method parameters
2023-12-12 00:21:14 +01:00
Thomas Basler
47e905bcfc
Add const statement to several variables
2023-12-11 19:54:57 +01:00
Thomas Basler
8b5d406a4f
Introduce several const statements
2023-12-07 15:19:04 +01:00
Thomas Basler
e0c07b9bcf
Remove code nesting
2023-12-07 14:13:58 +01:00
Thomas Basler
1de3b48166
Feature: Implement offset cache for "YieldDay"
...
Thanks to @broth-itk for the idea!
Fix : #1258 #1397
2023-11-22 20:21:25 +01:00
Thomas Basler
fa7641f715
Fix: Power not set to 0 when not reachable at EOD
...
If the inverter polling was disabled before it got unreachable the values where not set to zero
Fix : #1488
2023-11-09 22:30:35 +01:00
Thomas Basler
17e92fc5eb
Feature: Support HMT-1600/1800/2000-4T
2023-11-07 18:34:37 +01:00
Thomas Basler
21fb10f7f2
Feature: Add one channel HMS inverter with different byte assignment
...
Fix #1148
2023-09-14 23:58:08 +02:00
Thomas Basler
3a3adb4723
Completly ignore a disabled (polling + command) inverter.
...
This leads to higher update rates on still enabled inverters.
2023-09-10 11:49:41 +02:00
Thomas Basler
9ac6dd6e8d
Feature: First very basic support to read the grid profile
...
The parser is still missing and requires community support to collect data.
2023-09-07 22:08:07 +02:00
Thomas Basler
1acefd8b8c
Fix: Do not resend fetch limit request if the last one failed
...
Due to side effects it is possible that the inverter receives the request but the DTU does not receive the answer. In this case the DTU would resend the request but the inverter would generate a event log entry (DTU command failed) because it received the message twice.
2023-09-05 22:09:16 +02:00
Thomas Basler
ec9af886d5
Feature: Added option to set daily yield to zero at midnight
2023-09-05 20:27:52 +02:00
Thomas Basler
55afa81cf1
Convert from FreeRTOS Semaphore to std::mutex
2023-09-02 16:46:23 +02:00
Thomas Basler
b88030f76e
Feature: Re-Request DevInfo if it contains invalid data
...
It can sometimes occour that the DevInfo request returns invalid data. Currently this is identified if the firmware build year is < 2016. In this case the package will be re-requested now.
2023-08-25 11:04:14 +02:00
Thomas Basler
3504884836
Fix: xSemaphoreTake was useless
...
There was no check of the return value implemented therefore xSemaphoreTake was just executed and not locked
2023-04-28 21:02:10 +02:00
Thomas Basler
0441bbbe72
Fix: Queue consumed whole memory on inverter timeout
...
When the poll interval was e.g. 1sec it was possible that the queue ran full and consumed the whole memory.
Now new entries are only added to the queue automatically if the queue is empty. This issue also caused a lot of "DTU command failed" messages.
2023-04-25 19:24:56 +02:00
Thomas Basler
f5767e61ef
Implement CMD56 as own command.
...
By doing so, it's possible to send all packets via the sendEsbPacket method. A lot of stuff could be removed which is no more used.
2023-04-15 10:55:48 +02:00
Thomas Basler
996404ceed
Introduce gpio2 for the CMT2300A module
...
This implements the sending interrupt instead of polling. On the other hand, gpio3 is made optional.
2023-04-15 10:55:48 +02:00
Thomas Basler
83c623708f
Fix crash if radio settings where changed while the radio was not initialized
2023-04-15 10:55:47 +02:00
Thomas Basler
de2b7ab2d2
Check that all RF modules as in idle mode before sending mqtt packages
2023-04-15 10:55:47 +02:00
Thomas Basler
b7fb294368
Set DTU serial for CMT modules
2023-04-15 10:55:47 +02:00
Thomas Basler
dc91929d6e
First rough implementation of HMT inverters
2023-04-15 10:55:47 +02:00
Thomas Basler
45882543b6
Allow dynamic pin mapping for CMT module
2023-04-15 10:55:47 +02:00
Thomas Basler
90c689a41a
Implement HoymilesRadio_CMT
2023-04-15 10:55:47 +02:00
Thomas Basler
8404dd57a7
Add a HoymilesRadio base class
...
This enables to have multiple radio implementations while the inverter classes just refere to the base class
2023-04-15 10:55:47 +02:00
Thomas Basler
a7e9aaa862
Move reference to the radio instance into the inverter instance
...
This is required to support different radios for different inverters
2023-04-15 10:55:47 +02:00
Thomas Basler
c2e4c5d43e
Added first implementation of HMS inverter classes
2023-04-15 10:55:47 +02:00
Thomas Basler
d6028cbd50
Remove not required F() macro. Frees ~20kb flash.
2023-04-04 18:51:18 +02:00
Thomas Basler
f689fedf4e
Hoymiles Lib: Remove hard coded Serial output
...
The serial port for output of debug information can now changed during runtime
2022-12-19 20:52:12 +01:00
Thomas Basler
5feefed14e
Added missing copyright information
2022-12-14 22:37:37 +01:00
Thomas Basler
36abaeee12
Moved pin assignment outside the hoymiles library
...
Allows setting the pins during runtime and not just using the defines
2022-11-27 12:07:25 +01:00
Thomas Basler
2b2afee770
Fix issue that in multi inverter environments some inverters where not fetched
...
When the radio was busy, the current inverter was just skipped and switched to the next one
2022-11-15 22:30:29 +01:00
Thomas Basler
6229e4b5a8
Fixed issue that fetching stopped when inverter was deleted
...
This happend when due to special timing the last inverter was deleted. In that case interverPos was never changed and the fetching process stucked
2022-11-14 20:00:16 +01:00
Thomas Basler
26b9bbf537
Prevent null pointer exception when deleting inverter
...
The removeInverterBySerial can be called in a webserver callback method.
This is maybe executed on another core which can then run in parallel to the radio loop hoymiles loop.
Accessing inverters which are already removed can lead to exceptions.
The Semaphore prevents that parallel execution
2022-11-10 18:26:01 +01:00
Thomas Basler
4031b71d7d
Implemented resend of PowerCommand
2022-10-04 18:12:55 +02:00
Thomas Basler
6cbcfacac6
Renamed several methods from Sample to Simple
2022-10-03 13:14:31 +02:00
Thomas Basler
754913368a
Implemented way to periodically fetch the current limit from the inverter
...
The fetch is only executed at least 4 minutes after the last set command.
Otherwise it would generate a entry in the event log (ID 2)
2022-09-30 18:34:30 +02:00
Thomas Basler
3153ee4993
Implemented getTimeout method in AlarmDataCommand
2022-09-30 18:34:30 +02:00