Commit graph

160 commits

Author SHA1 Message Date
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
Martin Grill
79192bbede Merged local changes. JSON payloads now contain all known information. 2022-04-06 19:20:02 +02:00
Martin Grill
abd0629072 Include raw data and some more metadata in .json 2022-04-06 18:30:17 +02:00
Jan-Jonas Sämann
030af13c96 Update ahoy.py channel hopping and logging
* Improve channel hopping
   by rotating rx start channel for each transaction
 * Set autoack True
   gives nearly 100% transmission success rate
 * Cleanup unused lines
2022-04-06 12:02:01 +02:00
Jan-Jonas Sämann
5c7168b984 Update ahoy.py decode cmd 131, 132
* cmd=131 seem to appear on HM-600
 * cmd=132 seem to appear in HM-1200
2022-04-06 12:00:10 +02:00
Jan-Jonas Sämann
ec18712583 Update ahoy.py decode cmd 129 as error response 2022-04-06 11:57:56 +02:00
Jan-Jonas Sämann
86715ac116 Update ahoy.py implement poor channel hopping
This will catch alot more packes
2022-04-05 14:49:57 +02:00
Jan-Jonas Sämann
1425d46b7e Update ahoy.py add timestamps 2022-04-04 23:42:02 +02:00
Jan-Jonas Sämann
d83b9e1a8d Update ahoy.py alter mqtt topics
Refine mqtt topic's to be more usable. Make message layout kind of compatible
with shelly EM's.
2022-04-04 23:40:57 +02:00
Jan-Jonas Sämann
0fdce24a51 Update ahoy.py make dtu and inverter serial configurable
Adds config file support for dtu and inverter serial numbers to keep them
outside this repo
2022-04-04 23:36:13 +02:00
Jan-Jonas Sämann
51afd1298d Update python requirements add crcmod 2022-04-04 23:31:22 +02:00
Jan-Jonas Sämann
141d53ff9c Update ahoy.py decode cmd=131
CMD 131 seem to contain temperatures
2022-04-04 23:18:34 +02:00
Martin Grill
f41386d326 Merge branch 'main' of github.com:grindylow/ahoy 2022-04-01 16:39:17 +02:00
Martin Grill
3562f1eac6 Now outputs received acdata and dcdata to MQTT. No error handling yet. 2022-04-01 16:39:00 +02:00
Martin Grill
3ba0d0f3b1 fixed minor formatting issues 2022-03-28 20:33:28 +02:00
Martin Grill
686d4b6a22 Initial documentation for ahoy.py 2022-03-28 20:27:47 +02:00
Martin Grill
270cb4aaae added example log 2022-03-28 20:24:51 +02:00
Martin Grill
5eed17b8c1 minor formatting improvements 2022-03-28 18:57:47 +02:00
Martin Grill
8ec61d40db Can now interpret contents of cmds 1 and 2 2022-03-28 18:46:54 +02:00