-
Notifications
You must be signed in to change notification settings - Fork 18
Description
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.