Skip to content

dodanie obsługi przekaźników LC Tech (UART controlled) #135

@gmx168

Description

@gmx168

Na rynku jest kilka urządzeń mających sterowanie przez UART dla 2 i 4 przekaźników.

W rozwiazaniu autora Elmaya: Sekwencje wysyłane na konsolę UART 19200 dla 4 przekaźników.
byte relay_1_on[] = {0xA0, 0x01, 0x01, 0xA2};
byte relay_1_off[] = {0xA0, 0x01, 0x00, 0xA1};
byte relay_2_on[] = {0xA0, 0x02, 0x01, 0xA3};
byte relay_2_off[] = {0xA0, 0x02, 0x00, 0xA2};
byte relay_3_on[] = {0xA0, 0x03, 0x01, 0xA4};
byte relay_3_off[] = {0xA0, 0x03, 0x00, 0xA3};
byte relay_4_on[] = {0xA0, 0x04, 0x01, 0xA5};
byte relay_4_off[] = {0xA0, 0x04, 0x00, 0xA4};

Sterowanie wirtualnymi PINami (za Elmaya):
const uint8_t RELAY_1_PIN = 100;
const uint8_t RELAY_2_PIN = 101;
const uint8_t RELAY_3_PIN = 102;
const uint8_t RELAY_4_PIN = 103;
Elmaya zdefiniowal klasę dziedziczącą za Supla::IO

class LC_4x : public Supla::Io {
public:
void customDigitalWrite(int channelNumber, uint8_t pin, uint8_t val) {
if ((pin == 100)) {
if (val == 1) {
Serial.write(relay_1_on, sizeof(relay_1_on));
delay(20);
state_rele_1 = true;
} else {
Serial.write(relay_1_off, sizeof(relay_1_off));
delay(20);
state_rele_1 = false;
}
return;
}
if ((pin == 101)) {
if (val == 1) {
Serial.write(relay_2_on, sizeof(relay_2_on));
delay(20);
state_rele_2 = true;
} else {
Serial.write(relay_2_off, sizeof(relay_2_off));
delay(20);
state_rele_2 = false;
}
return;
}
if ((pin == 102)) {
if (val == 1) {
Serial.write(relay_3_on, sizeof(relay_3_on));
delay(20);
state_rele_3 = true;
} else {
Serial.write(relay_3_off, sizeof(relay_3_off));
delay(20);
state_rele_3 = false;
}
return;
}
if ((pin == 103)) {
if (val == 1) {
Serial.write(relay_4_on, sizeof(relay_4_on));
delay(20);
state_rele_4 = true;
} else {
Serial.write(relay_4_off, sizeof(relay_4_off));
delay(20);
state_rele_4 = false;
}
return;
}
if (pin <= 99) {
return ::digitalWrite(pin, val);
}
}

int customDigitalRead(int channelNumber, uint8_t pin) {

  switch (pin) {
    case 100:
      return state_rele_1;
    case 101:
      return state_rele_2;
    case 102:
      return state_rele_3;
    case 103:
      return state_rele_4;
    default:
      return ::digitalRead(pin); 
  }
}

} LC_4x;

Wg mnie zgodność wsteczna (LC już nie są popularne jak kiedyś w SONOFF Basic ale tez w rozwiązaniach 4 przekaźników nadal są tanie na Aliexpress.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions