Commit graph

78 commits

Author SHA1 Message Date
Jan-Jonas Sämann
044cf316b5 Decode 80 02 as EventsResponse
Data also looks like some sort of table
2022-06-07 01:53:44 +02:00
Jan-Jonas Sämann
6b47291ac1 Add payload debug function print_table_unpack
Helps recognize values in unknown payloads by decoding data from payload
with different offsets, data types and print results as aligned table

Enhances DebugDecodeAny class
2022-06-07 01:51:15 +02:00
Jan-Jonas Sämann
391fec99d2 Pypackage fix interval sleep time 2022-05-29 07:22:44 +02:00
Jan-Jonas Sämann
4e709254c7 pypackage add event log entry count for 1161 2022-05-24 20:10:28 +02:00
Jan-Jonas Sämann
34f6f9363d pypackage typo 2022-05-24 19:28:58 +02:00
Jan-Jonas Sämann
d5252866f8 pypackage add txpower min, high
Now txpower can be one of min, low, high, max
2022-05-24 18:34:38 +02:00
Jan-Jonas Sämann
88e9de42b8 pypackage add powerfactor where possible 2022-05-24 18:26:48 +02:00
Jan-Jonas Sämann
68cb8a59d9 Pypackage Disable retransmit in log parse mode
Disable retransmit if InverterTransaction is invoked without an actual
radio attached.
2022-05-24 18:12:43 +02:00
Jan-Jonas Sämann
5935e0dabe Update pypackage set txpower per nrf/inverter
Add config parameter `txpower` in inverters- and nrf context.
This enables overriding txpower default RF24_PA_MAX, in some cases
inverters require RF24_PA_LOW. For larger setups, txpower can be set per
inverter to be able to query a far away (max) and a near by (low) one from within
one instance.

Valid values can be:
 * `txpower: 'max'` (corresponds to RF24_PA_MAX, default)
 * `txpower: 'low'` (corresponds to RF24_PA_LOW)
2022-05-23 07:31:09 +02:00
Jan-Jonas Sämann
93b3f02b24 Add pypackage retransmit last frame
Mentioned in #30 by @stefan123t
2022-05-21 17:58:50 +02:00
lumapu
8238e90903 * fix #38 current assignment for 4-channel inverters
* added last received timestamp in /hoymiles livedata web page #47
* improved style.css
* improved NTP as described in #46
2022-05-19 16:52:21 +02:00
Jan-Jonas Sämann
e473583a55 Change alarm code 2
Seems that alarm code 2 appears on failed commands
2022-05-16 13:10:09 +02:00
Jan-Jonas Sämann
e4eebb67e4 Improve python code quality
Mostly fix naming convetion, add descriptions. Cleanup code, left behind
from tinkering.
2022-05-16 12:29:58 +02:00
Jan-Jonas Sämann
2934c23688 Update UnknownResponse decoder 2022-05-15 18:26:59 +02:00
Jan-Jonas Sämann
5101b22ff7 Provide Influx2 output plugin
Allready thougt about it earlier and requested in #29
2022-05-15 16:19:38 +02:00
Jan-Jonas Sämann
7415139038 Provide rx time in response 2022-05-15 16:06:38 +02:00
Jan-Jonas Sämann
e5b427f4f2 Provice decoders super class to ensure properties 2022-05-15 16:04:38 +02:00
Jan-Jonas Sämann
532168e1eb Allow disable mqtt 2022-05-14 19:51:47 +02:00
Jan-Jonas Sämann
0f52c62b3f Setup NRF send/receive pipes
Fixes no response from WR
2022-05-14 19:47:10 +02:00
Jan-Jonas Sämann
3aff763e8f WIP: Partially decode event log 0x11 and 0x12 2022-05-11 18:58:09 +02:00
Jan-Jonas Sämann
d408264521 Adds documentation to python-hoymiles module 2022-05-11 18:52:28 +02:00
Jan-Jonas Sämann
38346abde2 Update python decoders improves protocol analysis 2022-05-11 00:14:40 +02:00
Jan-Jonas Sämann
d27f0c1148 Integrate ahoy.py into hoymiles module
Finally get rid of ahoy.py and integrate functionallity into the module
itself. Prepares for pipelines, adding pip installer or debian packaging.

Improve configuration adds commandline switches for:

  * `--verbose, enabling verbose logging
  * `--log-transactions`, outbut all rf raw data

Improve loop, now runs all queued commands per inverter within interval.
Skip sleep when interval is allready due.
2022-05-11 00:05:09 +02:00
Jan-Jonas Sämann
6627eeb931 Update channel hop list
remove channel 9 and 11 because there was never seen a single frame
received
2022-05-08 16:25:53 +02:00
Jan-Jonas Sämann
1ef4507e8f Update 1161-Series decoders
Fixes missing HM1200 decoder
2022-05-08 13:02:30 +02:00
Jan-Jonas Sämann
ff615dba8b Pull-in diff from franz supports 1121-Series
Source
  https://www.mikrocontroller.net/topic/525778#7058357
2022-05-08 12:43:58 +02:00
Jan-Jonas Sämann
3b54b58567 Update Decodes, group decoders by inverter serial
Seems to be that we can not exactly determine the actual model by
looking at the serial. What we seemingly can guess is how many MPPT and
Phases a range of serials have.

Some Group-Based decoders should be compatible across the group.

A group is now named by the lowest model

  * 1121: HM300 1 MPPT, 1 Phase
  * 1141: HM600 2 MPPT, 1 Phase
  * 1161: HM1200 4 MPPT, 1 Phase
2022-05-08 12:38:00 +02:00
Thomas Basler
31aba4d722 Fixed divider for AC Current 2022-05-07 10:45:07 +01:00
Thomas Basler
809dec69c7 Merge branch 'pypackage' of https://github.com/Sprinterfreak/ahoy into pypackage 2022-05-07 10:33:14 +01:00
Thomas Basler
767e1c5ee9 Fixed Power assignment for DC Port 1 2022-05-07 10:31:17 +01:00
Jan-Jonas Sämann
0946f1c765 Merge branch 'main' into pypackage 2022-05-06 22:23:02 +02:00
Jan-Jonas Sämann
976991df46 Remove debug script test.py 2022-05-06 20:04:20 +02:00
Jan-Jonas Sämann
f71e43f9ab Merge remote-tracking branch 'refs/remotes/jan/pypackage' into pypackage 2022-05-06 20:01:20 +02:00
Jan-Jonas Sämann
ef67cbe26e Add python requirement PyYAML 2022-05-06 19:59:01 +02:00
Jan-Jonas Sämann
0ee867993c MQTT payload injection and default unknown decoder
Adds the ability to directly inject payloads to be sent to the inverter.
Fixes application crash at missing decoder by adding default decoding.

All unknown payloads are now printed as long- and short-lists for faster
protocol analysis
2022-05-06 19:54:04 +02:00
Thomas Basler
e8ad778918 Fixed total production for string 3 2022-05-06 06:25:52 +01:00
Thomas Basler
eb2608b77d Fixed syntax errors 2022-05-05 21:07:03 +01:00
Thomas Basler
39e253bc28 Added parser for HM-1500 2022-05-05 21:07:03 +01:00
Jan-Jonas Sämann
a1cfaf5918 Change default mqtt prefix to hoymiles/serial 2022-05-05 21:07:25 +02:00
Jan-Jonas Sämann
a33c49fd35 Fix mqtt broker config disable attribute 2022-05-05 20:40:10 +02:00
Jan-Jonas Sämann
fcdf9a8b37 Fix ahoy.yml.sample zero byte serial
Turns out, serial numbers can't have zero bytes.
2022-05-05 19:57:02 +02:00
Jan-Jonas Sämann
9026dfa4bc Prepare decoder template for HM-1500 2022-05-05 19:42:58 +02:00
Jan-Jonas Sämann
9d75ca0c34 Ahoy Python Rewrite
Is was clear, the cmd approach does not decode payloads reliably.
The modular form allows for easy tinkering.

This implements

 * hoymiles protocol
 * transport-layer enables for retransmit of missed fragments
 * full payload decode
 * device specific decoders
 * transaction tracking enables decoding of different datasets
 * multi-inverter support
 * configuration format change to YAML (required for multi-inverter)

First PoC, lots of things have to be relocated, rewritten and exteded.

Currently only supports Hoymiles HM-600, more device decodes have to be added by
users who have the hardware.
2022-05-05 18:35:24 +02:00
Jan-Jonas Sämann
d7f9f6d3be PoC Hoymiles package full payload decode WIP
Transform ahoy.py into a python library, implements decoding of
fragmented large payloads.
The module also allows for easier tinkering and replay testing.
2022-05-02 22:41:42 +02:00
Martin Grill
8030acd283 No delay 2022-04-16 11:13:23 +02:00
Martin Grill
dd085e4a69 Merge branch 'main' of github.com:grindylow/ahoy 2022-04-16 11:10:03 +02:00
Martin Grill
f1ed0e486c More sensible order in main loop: rx, then tx. More consistent output (no more duplicates: JSON only) 2022-04-16 11:09:41 +02:00
Jan-Jonas Sämann
0309dcb41a Update ahoy.py split and relocate code
Split on_receive from actual device specific decoder.
Rename decoder to hm600 because thats my dut.
Alters debug prints, remove json dump from console, makes it more readable.
Move Tx before Rx in main loop, change timing
2022-04-10 11:56:52 +02:00
Jan-Jonas Sämann
fe4719bada Update ahoy.py add 0x80 subtype argument
Add a subtype parameter for mesage composer, allowing for dynamic
request more registers
2022-04-10 11:14:40 +02:00
Thomas Basler
cfc7ff3d2c Added possibility to connect to MqTT Broker with username and password 2022-04-06 19:07:09 +01:00