Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Trying to decode signal from Marlec Solar Iboost+ #1739

Closed
mehstg opened this issue Jun 14, 2021 · 145 comments
Closed

Trying to decode signal from Marlec Solar Iboost+ #1739

mehstg opened this issue Jun 14, 2021 · 145 comments
Assignees
Labels
device support Request for a new/improved device decoder feedback request for more information; may be closed id 30d if not received

Comments

@mehstg
Copy link

mehstg commented Jun 14, 2021

I have a Marlec Solar Iboost+ solar diverter which communicates to it's display unit on 868.3mhz. From a few threads online it appears to use a TI CC1100 tranceiver.

I have some sample cu8 files recorded and would love to understand how you determine the encoding/modulation etc. Running -a on a recording gives me output like below:

*** signal_start = 4294957301, signal_end = 59789, signal_len = 69784, pulses_found = 6
Iteration 1. t: 9201    min: 4104 (4)    max: 14298 (2)    delta 16102010
Iteration 2. t: 9201    min: 4104 (4)    max: 14298 (2)    delta 0
Pulse coding: Short pulse length 4104 - Long pulse length 14298

Short distance: 269, long distance: 487, packet distance: 1872

p_limit: 9201
bitbuffer:: Number of rows: 3 
[00] { 1} 80        : 1
[01] { 4} 10        : 0001
[02] { 1} 00        : 0
@zuckschwerdt
Copy link
Collaborator

Please update your rtl_433, 21.05 is current.
There should be a warning about -a. Use -A.

@mehstg
Copy link
Author

mehstg commented Jun 14, 2021

Thanks for the quick response. Have updated and attached a full output of -A

output.txt
output1.txt

@zuckschwerdt
Copy link
Collaborator

The three packets are: Noise or a preamble, then two FSK transmissions.

Detected FSK package	@0.630716s
Analyzing pulses...
Total count:  181,  width: 62.91 ms		(15727 S)
Pulse width distribution:
 [ 0] count:    1,  width: 3400 us [3400;3400]	( 850 S)
 [ 1] count:   84,  width:   88 us [72;104]	(  22 S)
 [ 2] count:   15,  width:  244 us [236;260]	(  61 S)
 [ 3] count:   49,  width:  164 us [148;180]	(  41 S)
 [ 4] count:   22,  width:  356 us [316;412]	(  89 S)
 [ 5] count:    3,  width:  484 us [476;492]	( 121 S)
 [ 6] count:    7,  width:   68 us [68;68]	(  17 S)
Gap width distribution:
 [ 0] count:    1,  width:  112 us [112;112]	(  28 S)
 [ 1] count:   24,  width:  228 us [216;244]	(  57 S)
 [ 2] count:   85,  width:   72 us [60;88]	(  18 S)
 [ 3] count:   41,  width:  152 us [144;168]	(  38 S)
 [ 4] count:   15,  width:  316 us [300;388]	(  79 S)
 [ 5] count:    6,  width:  420 us [384;472]	( 105 S)
 [ 6] count:    7,  width:  676 us [560;792]	( 169 S)
 [ 7] count:    1,  width:   52 us [52;52]	(  13 S)
Pulse period distribution:
 [ 0] count:    1,  width: 3512 us [3512;3512]	( 878 S)
 [ 1] count:   55,  width:  352 us [304;412]	(  88 S)
 [ 2] count:   45,  width:  236 us [224;252]	(  59 S)
 [ 3] count:   23,  width:  488 us [404;576]	( 122 S)
 [ 4] count:   42,  width:  156 us [148;172]	(  39 S)
 [ 5] count:   14,  width:  780 us [568;888]	( 195 S)
Pulse timing distribution:
 [ 0] count:    1,  width: 3400 us [3400;3400]	( 850 S)
 [ 1] count:  154,  width:   80 us [68;104]	(  20 S)
 [ 2] count:   39,  width:  236 us [216;260]	(  59 S)
 [ 3] count:   90,  width:  160 us [144;180]	(  40 S)
 [ 4] count:   41,  width:  344 us [300;412]	(  86 S)
 [ 5] count:    6,  width:  492 us [472;560]	( 123 S)
 [ 6] count:   23,  width:   64 us [52;68]	(  16 S)
 [ 7] count:    1,  width:  112 us [112;112]	(  28 S)
 [ 8] count:    6,  width:  696 us [628;792]	( 174 S)
 [ 9] count:    1,  width:    0 us [0;0]	(   0 S)
Level estimates [high, low]:  15964,      3
RSSI: -0.1 dB SNR: 37.3 dB Noise: -37.4 dB
Frequency offsets [F1, F2]:    5735,   -421	(+21.9 kHz, -1.6 kHz)
Guessing modulation: No clue...

That means it's likely FSK PCM with a bit width of 80 µs.
Try: -X 'n=Marlex,m=FSK_PCM,s=80,l=80,r=1000'

@mehstg
Copy link
Author

mehstg commented Jun 14, 2021

No joy with the FSK PCM commands above, I did notice in the output from rtl_433 it suggested

-X 'n=name,m=OOK_PWM,s=14832,l=42372,r=7536,g=0,t=0,y=25716'

Have tried with that, which gives me some output, but nothing that makes sense to me.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time      : @0.127464s
model     : name         count     : 2             num_rows  : 2             rows      : 
len       : 22           data      : fffff8, 
len       : 0            data      : 
codes     : {22}fffff8, {0}

@zuckschwerdt
Copy link
Collaborator

From the timings it looks like FSK_PCM should work. All pulse/gap widths are multiples of 80 µs.

The first block (which is seen as OOK) is warm-up / preamble or garbage. The analyzer can't handle PCM because there is no obvious "rhythm" to it -- thus no pdv link or suggestion of a -X.

Grab a sample then (-S unknown), check on https://triq.org/pdv/ that it looks plausible (remotely like e.g. https://triq.org/iqs/#/Schrader_TPMS_SMD3MA4/01/driving_315M_250k.cu8) then upload here as zip.

@mehstg
Copy link
Author

mehstg commented Jun 14, 2021

g008_868.3M_1000k.cu8.zip

This seems to be the closest to your link above. It was transmitted just after I pressed the boost button on the unit and the remote display showed "Boosting for 15 mins". I realise this could either be transmitted as characters, or could just be a reference to a stored phrase on the display unit though.

@zuckschwerdt
Copy link
Collaborator

That would be a good file to investigate. The zip link is broken. Upload didn't work for some reason?

@mehstg
Copy link
Author

mehstg commented Jun 14, 2021

Have just updated the link. Must have navigated away before it finished the upload.

@zuckschwerdt
Copy link
Collaborator

I guess the -A output is from a file input, not live? The sample rate is wrong then. The real bit width is 20 µs. This works:
rtl_433 -s1M -X 'n=Marlec,m=FSK_PCM,s=20,l=20,r=1000' g008_868.3M_1000k.cu8
and gives
{186}d555555569c8e9c88612aae6d5c2af41077c00401fbc3b8

Grab a good number of codes and put them in a https://triq.net/bitbench then find the data in there, or just post a link.

@mehstg
Copy link
Author

mehstg commented Jun 14, 2021

Yes, the -A output was from file and not live. I'll grab a few and have a play. Thank you for your guidance.

Quick question, do you include the {186} when pasting in to bitbench

@zuckschwerdt
Copy link
Collaborator

Someday rtl_433 should recognize the _1000kon the cu8, but currently it doesn't and defaults to 250k. Always add -s 1M when using 1000k input files.

@zuckschwerdt
Copy link
Collaborator

When collecting codes in BitBench note that you can add comments, e.g.
{186}d555555569c8e9c88612aae6d5c2af41077c00401fbc3b8 [boost button]

@mehstg
Copy link
Author

mehstg commented Jun 14, 2021

I have uploaded some codes to bitbench - here

@zuckschwerdt
Copy link
Collaborator

Set a preamble align of aaab and four codes look similar (format string of 8h:

4e 47 4e 44 30 95 57 36 ae 15 7a 08 3b e0 02 00 fd e1 6e
4e 47 4e 44 b0 f8 5c 04 00 fe 23 f3 9a 0e 7e 39 91 08 38 00 00 00 00 00 01 11 23 2c 27 20 27 a0 16 0d 01 00 00 00 00 00 00 3c 3e 7
4e 47 4e 44 b2 f9 5c 04 00 00 00 00 00 00 d3 75 65 a4 74 24 e3 c2 30 70 00 00 00 00 00 03 07 4a ea a8 48 a9 66 64 61 a0 00 69 0
4e 47 4e 44 b2 f9 5c 04 03 92 0e 60 29 80 f0 28 00 00 00 00 00 01 94 c5 c4 e4 25 03 e2 c1 90 10 00 00 00 00 00 02 3c 86 b2 4a fb 0

Those leading bytes look like a device ID of sync word, also like ASCII, use a format string of 8c to see that.

It's generally too much data with no reference to the values (kWh etc.?) to take a guess. You'd need to collect codes in stable conditions, like very slowly changing kW reading, correlate with the head unit output and then try to find where those values are located in the bytes.

@mehstg
Copy link
Author

mehstg commented Jun 14, 2021

i'll drain some water from the tank so it starts heating, that should give me a consistent output of different phrases and take another capture

@mehstg
Copy link
Author

mehstg commented Jun 14, 2021

Have added a new bitbench here - I drained water off from the tank to force it to start heating via solar again. The text shown on the display was "Heating by Solar 1.21kW Htr1" where the kW value was constantly changing. Just thinking, but there are two transmitting devices here, the Solar iboost itself, but also the CT clamp down by the meter that measures how much energy is going back to grid....We are most interested in the transmissions from the Iboost device itself.

Bitbench link - here

@zuckschwerdt
Copy link
Collaborator

Format the BitBench like this. (i.e. comments in [..], preamble aaab, format "8h")

If you can, capture 20-50 messages while the kW is slowly changing. That way all codes should look mostly the same and the differing bits show where the kW value is hiding.

@mehstg
Copy link
Author

mehstg commented Jun 14, 2021

I have captured over a 5min period. During this time, the system was heating using solar and the kW output was fluctuating between 0.9kW and about 1.4kW.

BitBench

@zuckschwerdt
Copy link
Collaborator

zuckschwerdt commented Jun 14, 2021

Good work. Sorry I didn't spot this earlier, but the codes aren't actually that long. It's multiple packets. PCM can't reliably transmit more than say two 00's, i.e. 16 bit without losing the timing. And we can actually see the gaps in amplitude:

marlec

I'll try to recover the shorter codes from your rows. Otherwise use this to capture from now on:
rtl_433 -f 868.3M -X 'n=Marlec,m=FSK_PCM,s=20,l=20,g=350,r=600,preamble=aad391d391' or replay with
rtl_433 -s 1M -Y minmax -X 'n=Marlec,m=FSK_PCM,s=20,l=20,g=350,r=600,preamble=aad391d391' myfile.cu8

The codes in your uploaded sample are now much better to view: BitBench.

@mehstg
Copy link
Author

mehstg commented Jun 14, 2021

That’s excellent. I’ll take some more traces tomorrow as the sun has almost gone here today now (unless I can trick it in to thinking I’m exporting solar by flipping the polarity on the CT clamp.

This is much lower level than I am used to working at but really interesting. I appreciate your time.

@zuckschwerdt
Copy link
Collaborator

zuckschwerdt commented Jun 14, 2021

I've picked just the pristine looking codes from the one sample and the picture is looking much better now: BitBench. There is a value visibly counting and then some checksum-like fields at the end.

The preamble is aaaa..., the sync word is d391 (repeated twice), then there is a length byte, data (of length byte len), and a CRC-16 checksum (poly 0x8005 init 0xffff).

@zuckschwerdt
Copy link
Collaborator

There is now a "decoder" for this device class in current rtl_433. Get a fresh copy (or git pull) and recompile.
The actual meaning of the data payload is not known. You need to run this and try to collect hints.
There are at least 3 different message types (from the sample you provided): short messages, a very long message, and a long message from another device (the last one, slightly different freq). E.g.

2555cdab855e820ef800803f
2555cdab855e820eeb00803f
2555cdab855e820edf00803f
2555cdab855e820ed200803f
2555cdab855e820eba00803f
2555cdab855e820ead00803f
2555cdab855e820ea100803f
2555cdab855e820e8800803f
2555cdab855e820e7c00803f
2555cdab855e820e6f00803f
2555cdab855e820e6300803f
2555cdab855e820e4a00803f
2555cdab855e820e3e00803f
2555cdab855e820e3100803f
2555cdab855e820e2500803f
2555cdab855e820e1800803f
2555cdab855e820e0c00803f
69ec555e85003007c51b00ca86123107ea32124c50e8176819d10481531fd1f406d81d22fae309c3ea9baf
42ee55ca86123107c51b005e85003007c51b00040dd400350c803fc1b8

These messages are properly aligned and CRC checked. But the content might be whitened or encrypted perhaps.

@zuckschwerdt
Copy link
Collaborator

Maybe @duc996 can help with further decoding. He added the Archos-TBH in #1199.
This protocol is eerily similar, basically I just copied the Archos-TBH code and it worked.
I have no clue how they figured out the encryption scheme (the TI CC1100 has hardware encryption support and that might well be used here).

@mehstg
Copy link
Author

mehstg commented Jun 15, 2021

That's great. I grabbed some more signals this morning using the decoder.

42eea45e85003007c51b00ca86123107c51b00040d4250350c803fb33d
2584cdab9443820ef800803f
2584cdab9443820eeb00803f
2584cdab9443820ed200803f
2584cdab9443820ead00803f
2584cdab9443820ea100803f
2584cdab9443820e8800803f
2584cdab9443820e6300803f
2584cdab9443820e5600803f
2584cdab9443820e4a00803f
2584cdab9443820e3e00803f
2584cdab9443820e3100803f
2584cdab9443820e2500803f
2584cdab9443820e1800803f
42ee84ca86123107c51b004394003007c51b00040dd700350c803ff471
2585cdabffff820e350c803f
2585cdabffff820e280c803f
2585cdabffff820e1c0c803f
2585cdabffff820e030c803f
2585cdabffff820ef70b803f
2585cdabffff820eea0b803f
2585cdabffff820ede0b803f
2585cdabffff820ed10b803f
2585cdabffff820ec50b803f
2585cdabffff820eb90b803f
2585cdabffff820eac0b803f
2585cdabffff820ea00b803f
2585cdabffff820e930b803f
2585cdabffff820e870b803f
2585cdabffff820e7b0b803f
2585cdabffff820e6e0b803f
2585cdabffff820e620b803f
2585cdabffff820e550b803f
2585cdabffff820e490b803f
2585cdabffff820e3d0b803f
2585cdabffff820e300b803f
2585cdabffff820e240b803f
2585cdabffff820e170b803f
2585cdabffff820e0b0b803f
2585cdabffff820eff0a803f
2585cdabffff820ef20a803f
2585cdabffff820ee60a803f
2585cdabffff820ed90a803f
2585cdabffff820ecd0a803f
2585cdabffff820ec10a803f
2585cdabffff820ea80a803f
2585cdabffff820e9b0a803f
2585cdabffff820e8f0a803f
2585cdabffff820e830a803f
2585cdabffff820e760a803f
2585cdabffff820e6a0a803f
2585cdabffff820e5d0a803f
2585cdabffff820e510a803f
2585cdabffff820e450a803f
2585cdabffff820e380a803f
2585cdabffff820e2c0a803f
2585cdabffff820e1f0a803f
2585cdabffff820e130a803f
2585cdabffff820e070a803f
2585cdabffff820efa09803f
2585cdabffff820eee09803f
2585cdabffff820ee109803f
2585cdabffff820ed509803f
2585cdabffff820ec909803f
2585cdabffff820ebc09803f
2585cdabffff820eb009803f
2585cdabffff820ea309803f
2585cdabffff820e7e09803f
2585cdabffff820e7209803f
2585cdabffff820e6509803f
2585cdabffff820e5909803f
2585cdabffff820e4d09803f
2585cdabffff820e4009803f
2585cdabffff820e3409803f
2585cdabffff820e2709803f
2585cdabffff820e1b09803f
2585cdabffff820e0f09803f
2585cdabffff820e0209803f
2585cdabffff820ef608803f
2585cdabffff820edd08803f
2585cdabffff820ed108803f
2585cdabffff820ec408803f
2585cdabffff820eb808803f
2585cdabffff820eab08803f
2585cdabffff820e9f08803f
2585cdabffff820e9308803f
2585cdabffff820e8608803f
2585cdabffff820e7a08803f
2585cdabffff820e6d08803f
2585cdabffff820e6108803f
2585cdabffff820e5508803f
2585cdabffff820e4808803f
2585cdabffff820e2f08803f
2585cdabffff820e2308803f
2585cdabffff820e1708803f
2585cdabffff820e0a08803f
2585cdabffff820ef107803f
2585cdabffff820ee507803f
2585cdabffff820ed907803f
2585cdabffff820ecc07803f
2585cdabffff820ec007803f
2585cdabffff820ea707803f
2585cdabffff820e9b07803f
2585cdabffff820e8e07803f
2585cdabffff820e8207803f
2585cdabffff820e7507803f
2585cdabffff820e6907803f
42eea55e85003007c51b00ca86123107c51b00040d2343350c803fde13
2586cdab855e820ef800803f
2586cdab855e820edf00803f
2586cdab855e820ed200803f
2586cdab855e820ec600803f
2586cdab855e820eba00803f
2586cdab855e820ead00803f
2586cdab855e820ea100803f
2586cdab855e820e7c00803f
2586cdab855e820e6f00803f
2586cdab855e820e6300803f
2586cdab855e820e5600803f
2586cdab855e820e4a00803f
2586cdab855e820e3e00803f
2586cdab855e820e3100803f
2586cdab855e820e2500803f
2586cdab855e820e1800803f
2586cdab855e820e0c00803f
42ee86ca86123107c51b005e85003007c51b00040da800350c803f7a3c
42eea65e85003007c51b00ca86123107c51b00040d0cdb350c803f8fc3
2587cdab855e820ef800803f
2587cdab855e820edf00803f
2587cdab855e820ed200803f
2587cdab855e820ec600803f
2587cdab855e820eba00803f
2587cdab855e820ead00803f
2587cdab855e820ea100803f
2587cdab855e820e9400803f
2587cdab855e820e8800803f
2587cdab855e820e7c00803f
2587cdab855e820e6300803f
2587cdab855e820e5600803f
2587cdab855e820e4a00803f
2587cdab855e820e3e00803f
2587cdab855e820e3100803f
2587cdab855e820e2500803f
2587cdab855e820e1800803f
69ec875e85003007c51b00ca86123107769f1bacb2df748ec76466a6317528c96cc2b0b5e7c1dc978d8c6b
42ee87ca86123107c51b005e85003007c51b00040daa00350c803f5730

@merbanan
Copy link
Owner

The CC110X family of chips has no built in encryption but they have an optional whitening step and FEC step. Neither seem to be used here. https://www.ti.com/lit/ds/symlink/cc1101.pdf page 38.

2555cdab855e820[ef8]00803f
2555cdab855e820[eeb]00803f

The marked region is clearly counting down something.

@merbanan
Copy link
Owner

2585cdab[ffff]820e6907803f
2586cdab[855e]820ef800803f

This seems to be a specific block.

@merbanan
Copy link
Owner

25[84]cdab9443820eeb00803f
25[85]cdabffff820ed108803f
25[86]cdab855e820e7c00803f
25[87]cdab855e820e3100803f

And this block is counting up for some reason.

@merbanan
Copy link
Owner

The next step is now to match observed states from the panel to actually transmitted codes.

The manual has some info about that possible states.
https://www.marlec.co.uk/wp-content/uploads/2016/02/Solar-iBoost-User-Manual-SM-505B-01.07019.pdf

At least the kW value should be easy to find.

@zuckschwerdt
Copy link
Collaborator

You are right of course, whitening only. I was confused by the encryption example from the Archos-TBH.
And the changing 2nd byte (84..87) shows that there is no xor chain also. Seems to be plain text then.

@zuckschwerdt
Copy link
Collaborator

The layout hints to two single byte values, then 2-byte values, and the 2-byte groups look like little endian, i.e. format TYPE?8h SEQ?8h <16h <16h <16h DOWN?<16h <16h
BitBench with that format (for type "25").

@JimboJ
Copy link

JimboJ commented May 6, 2023

Yep, I can confirm the iBoost unit is NOT isolated. I found out the hard way one evening when I connected the ground of my oscilloscope and it vapourised many of the PCB tracks on the iBoost unit. A costly mistake that evening for such a basic mistake. Anyway, I now have a new iBoost, sender, and buddy. I was probing around the buddy (which is isolated as it runs on USB) to see if there was any serial debug but not found anything yet. I can sniff the pins that connect the wireless module to the PIC but thats as far as I have got so far. My expectation is that I can record and playback the config commands which set up the wireless module and listen to anything that was destined for the buddy. With that, I should be able to decode it and show the state of the system elsewhere. I guess I just need a SPI protocol analyzer/decoder now, unfortunately, my oscilloscope doesn't have such functionality....

Did that happen trying to connect to the port that looks very much like UART?

@JNSwanson
Copy link

Yes I will publish what I have. I have figured out the boost protocol and will add it to HomeAssistant when I get a chance.

@CaptianJinx
Copy link

Yep, I can confirm the iBoost unit is NOT isolated. I found out the hard way one evening when I connected the ground of my oscilloscope and it vapourised many of the PCB tracks on the iBoost unit. A costly mistake that evening for such a basic mistake. Anyway, I now have a new iBoost, sender, and buddy. I was probing around the buddy (which is isolated as it runs on USB) to see if there was any serial debug but not found anything yet. I can sniff the pins that connect the wireless module to the PIC but thats as far as I have got so far. My expectation is that I can record and playback the config commands which set up the wireless module and listen to anything that was destined for the buddy. With that, I should be able to decode it and show the state of the system elsewhere. I guess I just need a SPI protocol analyzer/decoder now, unfortunately, my oscilloscope doesn't have such functionality....

Did that happen trying to connect to the port that looks very much like UART?

No. I wanted to check the fan voltage and signal. The bang happened when I connected the scope ground lead to the black wire on the fan. It was a big spark. I am so used to messing around with microelectronics I didn't think about this scenario. Silly mistake really. Could easily have been my fingers! I haven't seen a UART type port and don't intend to open the iBoost again. All I want is to know the import/export/heating status in a different application. I am hoping I can configure a CC1100 with the same settings as the PIC in the buddy and listen to traffic then use it in my home automation dashboard. Does anyone know of any sample code out there where we can connect a Cc1100 and Arduino to listen to the traffic on the air?

@JNSwanson
Copy link

JNSwanson commented May 10, 2023

You will need a receiver like this "CC1101 868MHZ M115 Wireless Module Long Distance Transmission Antenna Module" https://www.ebay.co.uk/itm/253096814443
just search for C1101 and 868Mhz. I found the crystals on the 868MHZ version to be off in frequency. You can either alter the frequency in the setup to compensate, or fit a better crystal like this one : https://uk.farnell.com/epson/x1e0000210666-tsx-3225-26mhz-16pf/crystal-26mhz-16pf-3-2-x-2-5mm/dp/2471832. You need to do some soldering. I have the boost function working now, so will post soon.

@no1knows
Copy link

Yes I will publish what I have. I have figured out the boost protocol and will add it to HomeAssistant when I get a chance.

Any luck? I'm holding my breath :)

@JNSwanson
Copy link

https://github.com/JNSwanson/ESP-Home-iBoost

Let me know how you get on.

@8none1
Copy link

8none1 commented Jun 6, 2023

This is working perfectly for me. Thank you!

@JimboJ
Copy link

JimboJ commented Jun 10, 2023

@JNSwanson

My apologies for not testing sooner. Thank you for your hard work!

As you mention in your instructions, I got the compile error, but copied the .CPP file to the build folder and that solved that issue.

I've done no frequency tuning, got the cc1101 from eBay (not changed the crystal), and am getting full data. I've not looked at the LQI. I will have a look.

Any thoughts on a nice project box, at the moment I'm at breadboard stage, but working nicely so far. Just used 2.54mm wires to 2.00mm to connect the breadboard to the cc1101.

Lovely Integration, great work I'll keep testing, but this is likely to replace my iBoost Buddy (with added boost relay).

@no1knows
Copy link

no1knows commented Jun 10, 2023

@JNSwanson

My apologies for not testing sooner. Thank you for your hard work!

As you mention in your instructions, I got the compile error, but copied the .CPP file to the build folder and that solved that issue.

I've done no frequency tuning, got the cc1101 from eBay (not changed the crystal), and am getting full data. I've not looked at the LQI. I will have a look.

Any thoughts on a nice project box, at the moment I'm at breadboard stage, but working nicely so far. Just used 2.54mm wires to 2.00mm to connect the breadboard to the cc1101.

Lovely Integration, great work I'll keep testing, but this is likely to replace my iBoost Buddy (with added boost relay).

Here 's my approach to an enclosure.

@zuckschwerdt
Copy link
Collaborator

zuckschwerdt commented Jun 10, 2023

@JimboJ without a printer (or the patience) plastic electrical distribution boxes work well enough for very cheap

small
e.g. https://www.amazon.de/dp/B015N5MD8I

large
e.g. https://www.amazon.de/dp/B09D3XP1Z1

@maksyms
Copy link

maksyms commented Jun 14, 2023

@JNSwanson thanks so much for your contribution! I've just finished soldering the ESP8266 and C1101, flashed it, it boots fine, but I don't see any sign of activity on 868Mhz in the debug output. Can it be because I already have iBoost+ Buddy paired? Does ESP8266+C1101 need to be paired with iBoost+? Thank you!

@JNSwanson
Copy link

JNSwanson commented Jun 15, 2023

No you don’t need to pair it, it uses the strongest signal it finds. What do you see in the debug? As mentioned, the Xtals on the receivers are sometimes off in frequency. Try getting as close to the iBoost or buddy as possible and maybe try different frequencies from the table. If you can solder ok, the Farnell Xtal is much better (10ppm)

@maksyms
Copy link

maksyms commented Jun 15, 2023

Understood, thanks!

I see that radio was set up fine:

[08:53:53]Radio OK
[08:53:53]Radio RX OK
[08:53:53]Setup Finished

but later, there is no output from it at all. Here are the last lines in the log:

[08:53:53][C][api:138]: API Server:
[08:53:53][C][api:139]:   Address: cc1101.local:6053
[08:53:53][C][api:143]:   Using noise encryption: NO
[08:53:57][D][api:102]: Accepted 192.168.0.59
[08:53:57][D][api.connection:959]: Home Assistant 2023.6.0 (192.168.0.59): Connected successfully

And the LED isn't blinking at all, after the setup blink (looking at the code, I believe it should blink regularly).

I'm wondering whether my C1101 is botched. I have a few more, so I'll try another one.

@JNSwanson
Copy link

Looks like the connection th the radio module is ok. I think it is a similar problem to this: JNSwanson/ESP-Home-iBoost#1 Are you close to the Buddy?

@maksyms
Copy link

maksyms commented Jun 15, 2023

Thanks a lot, @JNSwanson. Yes, I put the unit right next to Buddy, and there is still absolutely nothing, not even a blip. I also ordered the recommended crystals - I can handle SMD soldering.

@maksyms
Copy link

maksyms commented Jun 16, 2023

@JNSwanson Just to confirm, I've just finished resoldering the crystal - and voila, all is working right away! Thanks for your amazing work!

@JimboJ
Copy link

JimboJ commented Jul 2, 2023

Thanks for the tips, I've moved on from the bread board stage, i used a 8pin Adapter Board Converter Plate For Wireless Mod, https://www.ebay.co.uk/itm/115717550843 and a project box from cpc.

PXL_20230626_094830240
PXL_20230626_094807230
PXL_20230626_094800267
PXL_20230626_094811806

My coding skills are a little rusty but I'll try to whip up a PR

Potential enhancements

  1. Hassio sensor to show LQI to iBoost Controller (1 or 5 min update interval)
  2. Hassio sensor to show LQI to iBoost Sender (clamp unit) again (1 or 5 min update interval)
  3. I prefer kWh to Wh, totally accept it's exactly the same data for the historical data.
  4. I prefer kW for the instantaneous boost amount, again accept totally the same data.
  5. Hassio sensor for Battery of the iBoost Sender (clamp unit)
  6. Sensor for the Net Electricity (instantaneous) used W or KW
  7. "START" AND "CANCEL" to "Start" and "Cancel" for the button press labels
  8. Sensor for when water is Hot, (when the tank is fully hot, iBoost displays Hot)

@gdt
Copy link
Collaborator

gdt commented Sep 29, 2023

What's the status of this issue and next steps?

@gdt gdt added the feedback request for more information; may be closed id 30d if not received label Sep 29, 2023
@JNSwanson
Copy link

Which particular issue?

@gdt
Copy link
Collaborator

gdt commented Sep 29, 2023

Issue #1739 of course; that's where I asked. This is an open bug report, and it is not clear that it makes sense to remain open.

@JNSwanson
Copy link

As quoted previously, there is a solution posted here https://github.com/JNSwanson/ESP-Home-iBoost. This isn't my thread.

@CaptianJinx

This comment was marked as off-topic.

@zuckschwerdt zuckschwerdt self-assigned this Oct 4, 2023
@acjolly21
Copy link

This is fascinating stuff to read....but I am struggling as a novice with no electronics or radio wave knowledge. Would it be possible to buy a radio receiver device such as this one https://www.youtube.com/watch?v=da1CLA82jw8 and read the frequencies on a PC or phone...thereby bypassing electronics and soldering skills?

@zuckschwerdt
Copy link
Collaborator

rtl_433 supports Marlec Solar iBoost+ sensors but there is no decoding of the raw data -- somebody would need finish figuring out what the received values mean.

@zuckschwerdt
Copy link
Collaborator

zuckschwerdt commented Mar 26, 2024

Some basic known fields have been added with eb1a696 now.
You get:

  • boost_time
  • solar_off
  • tank_hot
  • battery_low
  • heating
  • import_val
  • saved_today
  • saved_yesterday
  • saved_last_7
  • saved_last_28
  • saved_total

@zuckschwerdt
Copy link
Collaborator

A detailed protocol analysis is in https://miscsolutions.wordpress.com/2022/10/02/home-energy-management-system-part-2-hacking-the-iboost-protocol/
An ESP32 implementation is in https://github.com/JNSwanson/ESP-Home-iBoost
Basic values are decoded.
Feel free to open an new issue or PR if more interesting values are found.
Closing.

@JimboJ
Copy link

JimboJ commented Aug 4, 2024

@JNSwanson I wanted to say thankyou for your hard work on this project, for over a year, this has controlled my iboost (as my only source of hot water). It replaced an ESPHome and a relay soldered into an IBoost Buddy (old Style). I did change the crystal on the 2nd controller I made (for the one you recommended), that was even better as you said.
Today my IBoost went pop, not the first time, last time it was just a 16a fast blow fuse. Today it’s the fuse, plus some solder joints are burnt. It’s dead, 5 and a half years of use, first fuse lasted 3 years.
Given the cost of a replacement unit is at least £300, I think I’m going to look for a different device, Myenergi Eddi maybe. Something with an API that is easier to work with (Recommendations welcome).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
device support Request for a new/improved device decoder feedback request for more information; may be closed id 30d if not received
Projects
None yet
Development

No branches or pull requests