Commit Graph

181 Commits

Author SHA1 Message Date
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
3c0d89f599 Replaced println by printf and code style changes 2023-04-15 10:55:47 +02:00
Thomas Basler
a585ffe199 Add variable for max channel count (to extend serveral arrays) 2023-04-15 10:55:47 +02:00
Thomas Basler
90c689a41a Implement HoymilesRadio_CMT 2023-04-15 10:55:47 +02:00
Thomas Basler
8927b8374a Added HMS/HMT devices to the DevInfoParser 2023-04-15 10:55:47 +02:00
Thomas Basler
41e2ba7fcf Move serveral methods from the HoymilesRadio_NRF class to the HoymilesRadio base class 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
299ba8f27a Doc: Resolve Markdown Lint errors 2023-04-06 23:34:35 +02:00
Thomas Basler
d6028cbd50 Remove not required F() macro. Frees ~20kb flash. 2023-04-04 18:51:18 +02:00
Thomas Basler
d099bc4ff8 Fix #753: Only apply offset if data is in the buffer to prevent negative numbers 2023-03-30 22:11:20 +02:00
Thomas Basler
041249523e Fixed typo in comment 2023-03-28 22:41:27 +02:00
Thomas Basler
8d8c7f8a71 Fixed typo: Successfull --> Successful 2023-03-23 23:30:55 +01:00
Thomas Basler
70130f47ae Remove not required register keyword 2023-03-20 18:05:57 +01:00
Thomas Basler
f423ce0a6b Fix #644: Added additional HM-400 to mapping table 2023-02-28 19:42:15 +01:00
Thomas Basler
fa3d0370f0 Fix isReachable and isProducing based on PollEnabled 2023-02-18 23:50:16 +01:00
Thomas Basler
7da782c4ef Hoymiles Lib: Added flags to inverter to enable/disable polling and commands to the inverter 2023-02-18 15:51:46 +01:00
Thomas Basler
8cbae76797 Implement offsets for YieldTotal (#549)
This allows to enter a offset in kWh in the inverter properties which will be applied to the read Yield Total value of the inverter. Using this can set your total production to zero if you e.g. are using a used device.
2023-02-13 20:25:00 +01:00
Thomas Basler
ceaf08c1a0 Hoymiles Lib: Rename ChannelMaxPower to StringMaxPower 2023-02-06 19:56:12 +01:00
Thomas Basler
d4c838a16e BREAKING CHANGE: Prometheus API!
Added additional field to the prometheus api which identifies a channel by it's type. That means that e.g. channel 0  exists for type AC and DC.

This commit also introduces a additional field in the statistics byte assignment table. This field identifies whether a channel is on the AC or DC side. MQTT and WebAPI is still compatible with the previous design.
2023-02-06 19:51:10 +01:00
Thomas Basler
6b36369b06 Hoymiles Lib: Migrate byteAssign array to std::list 2023-02-06 19:44:00 +01:00
Thomas Basler
7c33688167 Use same line ending in printf as in println
This prevents mistakes in the webconsole
2023-01-04 18:48:33 +01:00
Thomas Basler
43d25dd24a Hoymiles Lib: Change field order and move channel to first position 2022-12-25 12:02:11 +01:00
Thomas Basler
1d650b59ae Hoymiles Lib: Add digits column to byteAssignment table
This allows to specify amount of digits for calculated fields
2022-12-25 12:02:11 +01: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
0d350b14bb Migrated _rxBuffer from CircularBuffer to queue 2022-11-28 18:25:50 +01:00
Thomas Basler
3c8bd56576 Added MI-1500 with Gen3 Protocol to Hardware Id list 2022-11-28 18:16:46 +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
6388be7a9e Added new Hardware Part Number for HM-800
See #363
2022-11-21 17:52:27 +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
dd7babb448 Added a timeout of 5ms to detect current time.
This prevents false positives when a interrupt occours during the reading of the time
2022-11-14 20:19:38 +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
0d619e780a Prevent null pointer exception
It could occur that the command queue contained commands for inverters which are already deleted.
Therefor it has to be checked that getInverterBySerial returns a valid inverter
2022-11-10 18:32:28 +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
547fe41ab1 Add missing parser class to documentation 2022-10-31 14:14:01 +01:00
Thomas Basler
4049f6bdb7 Implemented method to get the amount of relevant digits 2022-10-31 11:51:08 +01:00
Thomas Basler
27ed4e3cda BREAKING: Change power factor from percent value to value between 0 and 1
If you write these values to a database you have to update them.
2022-10-31 10:50:31 +01:00
Thomas Basler
f2a08ba503 Rename FLD_PCT to FLD_PF and assign UNIT_NONE 2022-10-31 00:43:07 +01:00
Thomas Basler
f741fea333 Move serial number formatting to inverter class 2022-10-29 11:22:56 +02:00
Thomas Basler
f21dd351ef Optimize performance by removing not required string constructors 2022-10-29 11:22:56 +02:00
Thomas Basler
9f4d8bdddb Better limit description 2022-10-20 19:34:10 +02:00
Thomas Basler
3ab7d9f6fe Fix #246: Allow negative float values
This is required for the temperature field which can be negative as well
2022-10-20 18:18:36 +02:00
Thomas Basler
678f165350 Fix warning: missing initializer for member 2022-10-19 22:16:29 +02:00
Thomas Basler
1dd6e9c453 Check 4th byte on DevInfoSimple to get max_power
This is required to detect models with fixed power limits
2022-10-19 22:16:18 +02:00