Thomas Basler
8b806e46c1
Apply better variable names
2023-12-11 17:24:53 +01:00
Thomas Basler
06651f365a
Feature: First version of GridProfile Parser which shows all values contained in the profile.
2023-12-11 14:58:17 +01:00
Thomas Basler
f851acab4d
Add libfrozen to project to create constexpr maps
2023-12-10 14:57:05 +01:00
Thomas Basler
0737cb0cb3
Optimize AlarmLogParser to save memory
2023-12-09 11:41:32 +01:00
Thomas Basler
00bc631e87
Feature: Added basic Grid Profile parser which shows the used profile and version
...
Other values are still outstanding.
2023-12-09 11:12:37 +01:00
Thomas Basler
c9508d2660
Doc: Added byte specification to each command
2023-12-07 20:26:11 +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
d0397c821f
Add channel count to description of detected inverter type (DevInfoParser)
2023-11-24 18:17:11 +01:00
Thomas Basler
8cf31729df
Adjusted inverter names for HMS-1600/1800/2000-4T
2023-11-24 18:11:08 +01:00
Thomas Basler
bcc647fd51
Added HMT-1600-4T and HMT-1800-4T to DevInfoParser
...
Fix #1524
2023-11-24 18:10:08 +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
7538b4363c
Made resetreason methods static
2023-11-19 17:00:26 +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
2ae8ed5e18
Doc: Add class description for inverters
2023-11-05 13:44:08 +01:00
Thomas Basler
0a4945ae39
Adjusted inverter names
2023-11-05 13:43:48 +01:00
Thomas Basler
f1a8c2ea82
Feature: Added additional event log descriptions and implemented i18n
2023-10-11 13:22:42 +02:00
Thomas Basler
dc5b5e837f
Rename "DTU command failed" to "Time calibration" as mentioned in #121
2023-10-10 16:23:11 +02:00
Thomas Basler
f203a971b0
Feature: Added Descriptions for Event Log Messages as shown in #121
2023-10-09 19:38:22 +02:00
Thomas Basler
d373702d7b
Added additional ID for HMS-1000 to DevInfoParser
...
Fix #1392
2023-10-09 16:58:21 +02:00
Thomas Basler
32d91379fa
Init all data members befor pushing it into the buffer
2023-09-30 10:48:41 +02:00
Thomas Basler
d4345917da
Added additional ID for HMS-900 to DevInfoParser
...
Fix #1392
2023-09-30 10:45:49 +02: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
a974e217df
Fix #1335 : Only the first inverter was set to zero at midnight via mqtt
2023-09-13 18:46:23 +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
8023b6620a
Fix: Ignore incomplete SystemConfigPara packages
...
Some inverters seem to transmit too less and incomplete data. These packages will be ignored now.
2023-09-07 23:10:01 +02:00
Thomas Basler
0260af9ada
Hoymiles Lib: Move semaphore handing into parser base class
2023-09-07 22:08:07 +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
6127fbe940
Feature: Added option to set runtime values to zero when inverter becames unreachable
2023-09-02 12:22:22 +02:00
Thomas Basler
2c41be106e
Feature: Allow setting of the Reachable Threshold per inverter
2023-09-01 19:17:12 +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
4bf9083b23
Prometheus Endpoint: Publish only relevant amount of digits
...
Implemented method to return the correctly formatted field value as string
2023-08-22 11:45:14 +02:00
Bernhard Roth
6eb3c63288
Fix issue #1256 (HMS-2000-4T reactive power should be signed)
2023-08-21 11:14:24 +02:00
Thomas Basler
188a6cf39d
Replace template by abstract class
2023-08-05 01:01:53 +02:00
Thomas Basler
22d9b128b9
Fix: Move setting of CMD_PENDING state into the right order
2023-08-04 23:44:18 +02:00
Thomas Basler
832df5a80e
Implement the command queue thread safe
...
The queue will be maybe filled from within another thread (mqtt/web) and handled from the main loop
2023-08-03 00:17:32 +02:00
Thomas Basler
be09c4052f
Fix: Ensure that only completly assembled packets are put into the command queue
2023-08-02 22:41:53 +02:00
Thomas Basler
686112e4ee
Fix: Wrong detection of HM-300 inverters
...
Was introduced in v23.8.1; Fixes #1198
2023-08-02 18:41:25 +02:00
Thomas Basler
5bbc67bc49
Fix: Clear parser buffers to prevent random numbers if no data was received
2023-07-31 22:52:38 +02:00
Thomas Basler
ef65094181
Fix: Prevent wrong values of devinfo data because of non-atomic transaction
2023-07-31 22:27:28 +02:00
Thomas Basler
74169c3b17
Fix: Prevent wrong values of systemconfigpara data because of non-atomic transaction
2023-07-31 22:06:04 +02:00
Thomas Basler
698ecbcd53
Fix: Prevent wrong values of alarm data because of non-atomic transaction and fix calculation of getEntryCount()
2023-07-31 22:06:04 +02:00
Thomas Basler
14305a9f12
Fix: Prevent wrong values of statistics data because of non-atomic transaction
2023-07-31 22:05:22 +02:00
Thomas Basler
9821c1905b
Fix: Uninitliazed variable used before first use
2023-07-31 21:44:50 +02:00
Thomas Basler
658a42db80
Apply code formatter without functional changes
2023-07-22 18:00:41 +02:00
Thomas Basler
0ffbba0cf5
Fix: Allow sending of ChannelChangeCommand even if EnableCommands is disabled
...
This is required to successfull move the inverter to another frequency and then polling it. Without this command its not even possible to poll a inverter.
Fixes #1127
2023-07-10 18:30:59 +02:00
jstammi
82038d3e2d
Fix: do not calc sizes multiple times
...
tbnobody/OpenDTU/issues/1022
2023-06-28 19:26:45 +02:00
jstammi
4ae6a2b4ef
Fix: calc expected statistics packet length per parser
...
tbnobody/OpenDTU/issues/1022
2023-06-28 16:53:38 +02:00
Thomas Basler
69aa247470
Added check in statistics data that at least all required bytes are received
...
It can occour for some inverters that incomplete fragments with valid crc but less bytes are received
This was mentioned in #1084
2023-06-27 18:59:54 +02:00
Thomas Basler
184c659197
Added new found HMS-400 to DevInfoParser
...
Fixes #1045
2023-06-19 11:33:06 +02:00
Thomas Basler
64c96c34f4
Revert "Fix: String numbers for HMT inverters are mirrored"
...
This reverts commit 593a33020f .
2023-06-14 21:44:55 +02:00
Thomas Basler
593a33020f
Fix: String numbers for HMT inverters are mirrored
...
Fixes : #1005
2023-06-07 18:05:51 +02:00
Thomas Basler
82b0272ceb
Removed duplicate code by moving it into the radio base class
2023-06-03 12:07:46 +02:00
Thomas Basler
c5a31de5a8
First try to output some dBm info for the NRF module
2023-06-03 11:54:23 +02:00
Thomas Basler
249436a303
Added possible description for alarm code 73
...
https://github.com/tbnobody/OpenDTU/discussions/590#discussioncomment-6049750
2023-05-31 19:23:35 +02:00
Thomas Basler
e0027d951b
Feature: Added new found HMS-900 to DevInfoParser
...
Fixes #967
2023-05-27 11:14:15 +02:00
Thomas Basler
5fea7ee066
Fix: Doublecheck if the MutiDataCommand begins with the correct ID
...
ID is 0x15 | 0x80
2023-05-24 22:06:58 +02:00
Thomas Basler
8f2a2b40b1
Fix: Filter incoming packages from CMT module for the right destination address
...
The CMT module receives every package on it's target frequency. Compared to the NRF module to filtering takes place. Therefor it's required to check if the package destination id is really the id of our dtu
2023-05-24 21:55:15 +02:00
Thomas Basler
fe90c863bf
Fix: Better handling of invalid fragment ids
2023-05-23 19:32:51 +02:00
Thomas Basler
295eeba556
Feature: Added new found HMS-450 to DevInfoParser
...
Fixes #911
2023-05-11 18:26:56 +02:00
Thomas Basler
7be5dd865a
Feature: Added new found HMS-1600 to DevInfoParser
2023-05-09 19:29:23 +02:00
Thomas Basler
99ab78d544
Feature: Added new found HMS-600 to DevInfoParser
2023-05-06 17:49:04 +02:00
Thomas Basler
74abc1ec1d
Feature: Added new found HMS-2000 to DevInfoParser
...
Fix #886
2023-05-06 12:16:05 +02:00
Markus Krause
a56d5adb77
fix SPI assignment across generations
2023-04-28 21:26:22 +02:00
Markus Krause
b086c6ace6
remove non-sensical octa-spi setting in FIFO mode
2023-04-28 21:26:22 +02:00
Markus Krause
a37b394139
try fix SPI driver for CMT
2023-04-28 21:26:22 +02:00
Markus Krause
14f9d1b3c6
avert SPI collision on S3/S2/C3
2023-04-28 21:26:22 +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
98da2b64e2
Rename FLD_PRA to FLD_Q
2023-04-24 22:29:59 +02:00
Thomas Basler
270a7f4933
Rename UNIT_VA to UNIT_VAR
2023-04-24 22:25:15 +02:00
Thomas Basler
793cd9db91
Fix: Possible crash when multiple tasks accessed the SPI bus
...
This could happen when the main loop and the web server callback accessed the SPI bus at the same time (e.g. to show the isConnected status)
2023-04-22 10:59:32 +02:00
Thomas Basler
f5c15a445b
Move byteAssignment to stack (avoid container) to save heap
2023-04-22 01:12:29 +02:00
Thomas Basler
0e9c666981
Implement method as static
2023-04-21 19:02:10 +02:00
Thomas Basler
5d2656550c
Optimize detection if RF module is configured
...
Use PinMapping method instead of dedicated method in Hoymiles lib --> Same result but reduces variables
2023-04-17 23:19:53 +02:00
Thomas Basler
af3a277e30
Introduced HoymilesRadio property to determine if a configuration attempt was done
2023-04-17 18:59:56 +02:00
Thomas Basler
1416efc6f9
Fix: Endless loop when CMT module was configured but not connected
2023-04-17 18:58:23 +02:00
Thomas Basler
7c37d289c0
Enabled additional statistics data for HMT inverters
...
Not yet shown in web ui and mqtt
2023-04-15 10:55:48 +02:00
Thomas Basler
6856ba9972
Fix: Change defines to get a correct calculation if base frequency of CMT module is different compared to Hoymiles base frequency
2023-04-15 10:55:48 +02:00
Thomas Basler
f3942bb647
Fix: Set correct frequency when changing it via web ui
...
Previously it could happen that the frequency was changed between saving old and recovering new frequency. Therefor an invalid frequency was saved in the CMT module
2023-04-15 10:55:48 +02:00
Thomas Basler
8356db94b9
Send ChannelChangeCommand only once per cycle as the inverter will not response at all
2023-04-15 10:55:48 +02:00
Thomas Basler
ac7b5dba11
Resend and Retransmit count is now implementable per command
2023-04-15 10:55:48 +02:00
Thomas Basler
e2aa29f117
Remove cmtProocess method and move RF logic into the cmt2300wrapper class
2023-04-15 10:55:48 +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
cfb37906ca
Rename cmtFreqToChan to getChannelFromFrequency and simplify handling of current channel
2023-04-15 10:55:48 +02:00
Thomas Basler
1259f09503
Replace multiple print calls by a single printf in HoymilesRadio_NRF
2023-04-15 10:55:48 +02:00
Thomas Basler
a11ee472c6
Optimize cmtChToFreq method to return float instead of string. Renamed also to getFrequencyFromChannel
2023-04-15 10:55:48 +02:00
Thomas Basler
2a92f67a9a
Implement get and set channel in cmt2300 wrapper class
2023-04-15 10:55:48 +02:00
Thomas Basler
fffd872b20
Replace HOY_BASE_FREQ by CMT_BASE_FREQ
2023-04-15 10:55:48 +02:00
Thomas Basler
5b648b63ac
Implemented blocking write method in CMT2300 driver and use it in sendEsbPacket.
2023-04-15 10:55:48 +02:00
Thomas Basler
6331210b94
IsReachable of the inverter was never reached
2023-04-15 10:55:48 +02:00
Thomas Basler
25722f6055
Adjust buffer size in StatisticsParser for inverters with more inputs
2023-04-15 10:55:48 +02:00
Thomas Basler
50ce7f014d
Expose min and max frequency in HoymilesRadio_CMT
2023-04-15 10:55:48 +02:00
Thomas Basler
6ea34b331d
Increase command timeouts to support inverters with 6 channels and more phases
2023-04-15 10:55:48 +02:00
Thomas Basler
1614b2ad2d
Add newline after log output
2023-04-15 10:55:48 +02:00
Thomas Basler
5e11f0b854
Implement property in HoymilesRadio_CMT to set the frequency during runtime
2023-04-15 10:55:48 +02:00