lumapu / ahoy

Various tools, examples, and documentation for communicating with Hoymiles microinverters
https://ahoydtu.de
Other
948 stars 222 forks source link

RFE: Stand-alone Hoymiles lib / Support for RTL-SDR and SX127x/RFM9x chips #1630

Open LorbusChris opened 3 months ago

LorbusChris commented 3 months ago

I'd like to integrate communications with my Hoymiles HMS more flexibly into other projects, i.e. to recv messages.

I'd also like to be able to do this using an RTL-SDR dongle.

It looks like it could also be possible to use an SX1276 (aka RFM95) for this, which supports LoRa, FSK, GFSK, MSK, GMSK and OOK. Even the SX1231/RFM69 might be supportable. Are there any obvious reasons these chips CANNOT be used that I'm missing?

Has anyone considered adding a Hoymiles HMS decoder to https://github.com/merbanan/rtl_433 ?

SX1276 enablement could then happen in https://github.com/NorthernMan54/rtl_433_ESP, which would make the decoder more widely usable in the Arduino/ESP32 ecosystem.

Also ref: https://github.com/tbnobody/OpenDTU/issues/1993 for the sibling issue on the OpenDTU repo

lumapu commented 3 months ago

Sorry I don't know the mentioned radio modules. We use the same module as Hoymiles uses in their DTUs.

This is a snipped of the configuration of the CMT2300A radio module:

click to expand ``` ;--------------------------------------- ; CMT2300A Configuration File ; Generated by CMOSTEK RFPDK 1.53_Update3 ; 2023.03.24 17:29 ;--------------------------------------- ; Mode = Advanced ; Part Number = CMT2300A ; Frequency = 860.000 MHz ; Xtal Frequency = 26.0000 MHz ; Demodulation = GFSK ; AGC = On ; Data Rate = 20.0 kbps ; Deviation = 20.0 kHz ; Tx Xtal Tol. = 19 ppm ; Rx Xtal Tol. = 20 ppm ; TRx Matching Network Type = 20 dBm ; Tx Power = +20 dBm ; Gaussian BT = 0.5 ; Bandwidth = Auto-Select kHz ; CDR Type = Counting ; CDR DR Range = NA ; AFC = On ; AFC Method = Auto-Select ; Data Representation = 0:F-low 1:F-high ; Rx Duty-Cycle = Off ; Tx Duty-Cycle = Off ; Sleep Timer = Off ; Sleep Time = NA ; Rx Timer = Off ; Rx Time T1 = NA ; Rx Time T2 = NA ; Rx Exit State = STBY ; Tx Exit State = STBY ; SLP Mode = Disable ; RSSI Valid Source = PJD ; PJD Window = 8 Jumps ; LFOSC Calibration = On ; Xtal Stable Time = 155 us ; RSSI Compare TH = NA ; Data Mode = Packet ; Whitening = Disable ; Whiten Type = NA ; Whiten Seed Type = NA ; Whiten Seed = NA ; Manchester = Disable ; Manchester Type = NA ; FEC = Enable ; FEC Type = x^3+x^2+1 ; Tx Prefix Type = 0 ; Tx Packet Number = 1 ; Tx Packet Gap = 32 ; Packet Type = Variable Length ; Node-Length Position = First Node, then Length ; Payload Bit Order = Start from msb ; Preamble Rx Size = 2 ; Preamble Tx Size = 30 ; Preamble Value = 170 ; Preamble Unit = 8-bit ; Sync Size = 4-byte ; Sync Value = 1296587336 ; Sync Tolerance = None ; Sync Manchester = Disable ; Node ID Size = NA ; Node ID Value = NA ; Node ID Mode = None ; Node ID Err Mask = Disable ; Node ID Free = Disable ; Payload Length = 32 ; CRC Options = IBM-16 ; CRC Seed = 0 crc_seed ; CRC Range = Entire Payload ; CRC Swap = Start from MSB ; CRC Bit Invert = Normal ; CRC Bit Order = Start from bit 15 ; Dout Mute = Off ; Dout Adjust Mode = Disable ; Dout Adjust Percentage = NA ; Collision Detect = Off ; Collision Detect Offset = NA ; RSSI Detect Mode = At PREAM_OK ; RSSI Filter Setting = 32-tap ; RF Performance = High ; LBD Threshold = 2.4 V ; RSSI Offset = 26 ; RSSI Offset Sign = 0 ```

As you know such a request is not our scope, so you have to do the research by you own.

LorbusChris commented 3 months ago

@lumapu thank you for your reply (and for creating this repo!)! And yes, this may obviously be out of scope, so feel free to close too. I'll continue to reference this issue for discoverability nonetheless :)