Portisch / RF-Bridge-EFM8BB1

Alternative Firmware for the Sonoff RF Bridge EFM8BB1 chip
289 stars 122 forks source link

Help adding custom protocol for Novy Extractor #212

Closed Arganox closed 2 years ago

Arganox commented 2 years ago

Latest firmware used?

Tasmota 10.1.0 Portish 0x04

Information

Novy Extractor

Sniffed data

0xB1 sniffing: "RfRaw":{"Data":"AA B1 03 01A4 0302 3ED0 28091809180918091809181818091809090918 55"} "RfRaw":{"Data":"AA B1 03 019A 030C 3EC6 28091809180918091809181818091809090918 55"}

I've had a go @ refining these traces in some custom code. But I'm kinda lost on how to pin-point the BIT0 en BIT1 for these sniffed values?

This is what I came up with:

#if EFM8BB1_SUPPORT_Novy_PROTOCOL == 1
#define Novy
SI_SEGMENT_VARIABLE(PROTOCOL_BUCKETS(Novy)[], static uint16_t, SI_SEG_CODE) = { 410, 780, 16070 };
SI_SEGMENT_VARIABLE(PROTOCOL_START(Novy)[], static uint8_t, SI_SEG_CODE) = { HIGH(2), LOW(0) };
SI_SEGMENT_VARIABLE(PROTOCOL_BIT0(Novy)[], static uint8_t, SI_SEG_CODE) = { HIGH(0), LOW(0) };
SI_SEGMENT_VARIABLE(PROTOCOL_BIT1(Novy)[], static uint8_t, SI_SEG_CODE) = { HIGH(1), LOW(1) };
//SI_SEGMENT_VARIABLE(PROTOCOL_END(Novy)[], static uint8_t, SI_SEG_CODE) = { };
#endif

#if EFM8BB1_SUPPORT_new_protocol_PROTOCOL == 1
        /*
         * New protocol description
         */
        {
            { &PROTOCOL_BUCKETS(Novy), ARRAY_LENGTH(PROTOCOL_BUCKETS(Novy)) },
            { &PROTOCOL_START(Novy), ARRAY_LENGTH(PROTOCOL_START(Novy)) },
            { &PROTOCOL_BIT0(Novy), ARRAY_LENGTH(PROTOCOL_BIT0(Novy)) },
            { &PROTOCOL_BIT1(Novy), ARRAY_LENGTH(PROTOCOL_BIT1(Novy)) },
            { &PROTOCOL_END(Novy), ARRAY_LENGTH(PROTOCOL_END(Novy)) },
            18
        }
#endif

@Portisch could you maybe have a quick look at this and maybe guide me in the right direction?

Arganox commented 2 years ago

nvm, got it working coding an extra protocol via Simplicity Studio.