puuu / ESPiLight

ESPiLight - pilight 433.92 MHz protocols library for Arduino
GNU General Public License v3.0
109 stars 41 forks source link

some protocols not working? #69

Open zackdvd opened 4 months ago

zackdvd commented 4 months ago

Hey, hope you can support me, slowly I'm going crazy with this.

Some protocols work, some not... Working:

  rf.send("elro_800_switch",    R"( {"systemcode":5, "unitcode":1, "on":1} )");
  rf.send("quigg_gt1000",       R"( {"id":0, "unit":0, "on":1} )");

Not working

  rf.send("intertechno_switch", R"( {"id":"20648806", "unit":0, "on":1} )");
  rf.send("kaku_switch_old",    R"( {"id":21, "unit":8, "on":1} )");
  rf.send("kaku_switch_old",    R"( {"id":19, "unit":8, "on":1} )");

I copied the config (ids, units etc.) from my working original pilight implementation on a raspberry, so that is correct. Furhtermore with debug enabled, I got feedback like this:

piLightCreatePulseTrain: protocol: quigg_gt1000 create Code succeded.
piLightCreatePulseTrain: protocol: elro_800_switch create Code succeded.

But from the other send function calls, I get nothing.

Any idea what could be the fault? Anything I can try? Thank you for your help!

P.S. I think the R"(...)" notation is way better to read than the \" notation.

zackdvd commented 4 months ago

After a long debug session I might found the issue, but in any case found a workaround.

Problem is, that espilight do not take into account these alias names for protocols.

Workaround: Go to pilight github page: https://github.com/pilight/pilight/tree/master/libs/pilight/protocols/433.92 search for your not working protocol. I e.g. searched for intertechno and found it in arctech_switch.c:

    protocol_set_id(arctech_switch, "arctech_switch");
    protocol_device_add(arctech_switch, "kaku_switch", "KlikAanKlikUit Switches");
    protocol_device_add(arctech_switch, "dio_switch", "D-IO Switches");
    protocol_device_add(arctech_switch, "nexa_switch", "Nexa Switches");
    protocol_device_add(arctech_switch, "coco_switch", "CoCo Technologies Switches");
    protocol_device_add(arctech_switch, "intertechno_switch", "Intertechno Switches");

So I just use "arctech_switch" in my send command and it works. Hope someone or @puuu may fix that!

This is a complete list of supported protocols:

x10
tfa30
tfa2017
tfa
teknihall
techlico_switch
tcm
smartwares_switch
silvercrest
selectremote
secudo_smoke_sensor
sc2262
rsl366
rc101
quigg_screen
quigg_gt9000
quigg_gt7000
quigg_gt1000
pollin
ninjablocks_weather
nexus
mumbi
logilink_switch
kerui_D026
iwds07
impuls
heitech
ev1527
eurodomest_switch
elro_800_switch
elro_800_contact
elro_400_switch
elro_300_switch
ehome
daycom
conrad_rsl_switch
conrad_rsl_contact
cleverwatts
clarus_switch
beamish_switch
auriol
arctech_switch_old
arctech_switch
arctech_screen_old
arctech_screen
arctech_motion
arctech_dusk
arctech_dimmer
arctech_contact
alecto_wx500
alecto_wsd17
alecto_ws1700

I got this list by adding Debug serial.print to this function:

static protocols_t *find_protocol_node(const char *name) {
  protocols_t *pnode = get_protocols();

  while (pnode != nullptr) {
    DebugLn(pnode->listener->id);
    if (strcmp(name, pnode->listener->id) == 0) {
      return pnode;
    }
    pnode = pnode->next;
  }
  return nullptr;
}