base64 发表于 2022-5-18 16:30

使用ESP8266-01S+点灯科技 将KVM切换器开关 改造为可远程控制

通过 智能插座 + 控控A2 + KVM切换器 基本实现了多台服务器的远程控制,
唯一存在问题是KVM切换器是按键进行切换不同机器,无法远程控制,

通过使用ESP8266-01S+点灯科技 将KVM切换器开关 改造为可远程控制





界面配置
{¨version¨¨2.0.0¨¨config¨{¨headerColor¨¨transparent¨¨headerStyle¨¨dark¨¨background¨{¨img¨¨assets/img/headerbg.jpg¨¨isFull¨«}}¨dashboard¨|{¨type¨¨tex¨¨t0¨¨KVM¨¨t1¨¨文本2¨¨bg¨Ë¨ico¨´´¨cols¨Í¨rows¨Ê¨key¨¨tex_1¨´x´É´y´É¨speech¨|÷¨lstyle¨Ê¨clr¨¨#FFF¨}{ßC¨num¨ßE¨当前设备号¨ßJ¨fad fa-server¨ßQ¨#389BEE¨¨min¨É¨max¨¢1c¨uni¨´´ßIÉßKÍßLËßM¨num_index¨´x´É´y´ÊßO|÷ßPʨrt¨«}{ßC¨btn¨ßJ¨fad fa-circle¨¨mode¨ÉßE¨设备一¨ßGßHßIÉßKËßLËßM¨btn_1st¨´x´É´y´ÍßPÉ}{ßCßbßJßcßdÉßE¨设备二¨ßGßHßIÉßKËßLËßM¨btn_2nd¨´x´Ë´y´Í}{ßCßbßJßcßdÉßE¨设备三¨ßGßHßIÉßKËßLËßM¨btn_3rd¨´x´Í´y´ÍßPÉ}{ßCßbßJßcßdÉßE¨设备四¨ßGßHßIÉßKËßLËßM¨btn_4th¨´x´É´y´Ï}{ßCßbßJßcßdÉßE¨设备五¨ßGßHßIÉßKËßLËßM¨btn_5th¨´x´Ë´y´Ï}{ßCßbßJßcßdÉßE¨设备六¨ßGßHßIÉßKËßLËßM¨btn_6th¨´x´Í´y´Ï}{ßCßbßJ¨fad fa-repeat-alt¨ßdÉßE¨切换¨ßGßHßIÉßKÊßLÊßM¨btn_sw¨´x´Í´y´ËßPÍßQ¨#FBA613¨}{ßC¨deb¨ßdÊßIÉßKÑßLÌßM¨debug¨´x´É´y´Ò}÷¨actions¨|¦¨cmd¨¦¨switch¨‡¨text¨‡´on´¨打开?name¨¨off¨¨关闭?name¨—÷¨triggers¨|{¨source¨ßz¨source_zh¨¨开关状态¨¨state¨|´on´ß12÷¨state_zh¨|´打开´´关闭´÷}÷ßa|÷}
代码
#define BLINKER_PRINT Serial
#define BLINKER_WIFI

#include <Blinker.h>

char auth[] = "******";
char ssid[] = "******";
char pswd[] = "******";

BlinkerNumber Number1("num_index");
BlinkerButton Button10("btn_sw");
BlinkerButton Button1("btn_1st");
BlinkerButton Button2("btn_2nd");
BlinkerButton Button3("btn_3rd");
BlinkerButton Button4("btn_4th");
BlinkerButton Button5("btn_5th");
BlinkerButton Button6("btn_6th");

// 可切换的设备数
int maxIndex = 6;
// 当前工作中的设备编号
int deviceIndex = 1;
// 当前选择的设备编号
int selectedIndex = 1;
// 定义GPIO口用于控制继电器
int GPIO = 0;

void switchButton(int index) {
    int step;
    index = ( index > 6) ? 1 : index;

    BLINKER_LOG("index: ", index);
    BLINKER_LOG("deviceIndex: ", deviceIndex);
    BLINKER_LOG("button ", index, " tap!");

    if ( index > deviceIndex ) {
      step = index - deviceIndex;
    } else if ( index < deviceIndex ) {
      step = (maxIndex - deviceIndex) + index;
    } else {
      step = 0;
    }

    deviceIndex = selectedIndex = index;
    Number1.print(deviceIndex);

    for ( ; step > 0; step-- ) {
      BLINKER_LOG("step: ", step);

      delay(500);
      digitalWrite(GPIO, HIGH);
      delay(200);
      digitalWrite(GPIO, LOW);
    }

}

void button10_callback(const String & state) {
    if (state == BLINKER_CMD_BUTTON_TAP) {
      switchButton(selectedIndex+1);
    }
}

void button1_callback(const String & state) {
    if (state == BLINKER_CMD_BUTTON_TAP) {
      switchButton(1);
    }
}

void button2_callback(const String & state) {
    if (state == BLINKER_CMD_BUTTON_TAP) {
      switchButton(2);
    }
}

void button3_callback(const String & state) {
    if (state == BLINKER_CMD_BUTTON_TAP) {
      switchButton(3);
    }
}

void button4_callback(const String & state) {
    if (state == BLINKER_CMD_BUTTON_TAP) {
      switchButton(4);
    }
}

void button5_callback(const String & state) {
    if (state == BLINKER_CMD_BUTTON_TAP) {
      switchButton(5);
    }
}

void button6_callback(const String & state) {
    if (state == BLINKER_CMD_BUTTON_TAP) {
      switchButton(6);
    }
}

void setup() {   
    Serial.begin(115200);
    BLINKER_DEBUG.stream(BLINKER_PRINT);

    pinMode(GPIO, OUTPUT);

    Blinker.begin(auth, ssid, pswd);
   
    Button10.attach(button10_callback);
    Button1.attach(button1_callback);
    Button2.attach(button2_callback);
    Button3.attach(button3_callback);
    Button4.attach(button4_callback);
    Button5.attach(button5_callback);
    Button6.attach(button6_callback);

    Number1.print(deviceIndex);
}

void loop() {
    Blinker.run();
}


页: [1]
查看完整版本: 使用ESP8266-01S+点灯科技 将KVM切换器开关 改造为可远程控制