GL-S10 compatiblity with an encrypted stream

Hello!

I'm interested in using a GL-S10 to receive data from my Victron PV setup, which uses BLE to broadcast various bits of state of the solar controllers and inverter. However, this data is encrypted with a 128bit AES key. You can see an example of how this is handled in this C++ example. Can the GL-S10 decrypt the broadcast message natively? If not, is it possible for it to still capture and upload the encrypted payload and then I can decrypt server-side?

Hi,

The GL-S10 can decrypt the broadcast message natively. But this requires customizing the firmware accordingly. By the way, decrypt the broadcast message natively will consumption processing performance.

The S10 can upload the broadcast message by mqtt server. Can this meet your requirements? One more thing is S10 only support scan legacy advertising. If you want to extended advertising feature, i recommend to use S20 or S200.

@Helpsen I'm finally getting back to this project. I have the s10 successfully uploading data to an MQTT broker and I can read the data out as json. I get the following:

        {
            "mac": "F62EE67D6F7B",
            "rssi": -80,
            "n": "VE.Direct Smart",
            "ad": "02010617FFE10210024BA0014D156ACE13AF30B3E7EE8E249A2ABE100956452E44697265637420536D617274",
            "ts": 0
        },

The python library I am using to parse this data normally expects to be reading the BLE data directly and expects the advertisement data in bytes. Do you know what encoding is used when the data is parsed and written to json by the S10? I tried encoding the advertisement string to utf-8 using my_json['ad'].encode('utf-8') but this failed. It is encoded differently?

Now this could be a for a variety of reasons, some of which may have nothing to do with the s10, but I'm just trying to figure out how to get this data back to its original format to then pass into this library. Could you please advise?