使用ESP8266-01S+点灯科技 将KVM切换器开关 改造为可远程控制-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 643|回复: 0

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

[复制链接]
发表于 2022-5-18 16:30 | 显示全部楼层 |阅读模式
通过 智能插座 + 控控A2 + KVM切换器 基本实现了多台服务器的远程控制,
唯一存在问题是KVM切换器是按键进行切换不同机器,无法远程控制,

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

KVM.jpg

微信图片_20220518162628.jpg

界面配置
  1. {¨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|÷}
复制代码

代码
  1. #define BLINKER_PRINT Serial
  2. #define BLINKER_WIFI

  3. #include <Blinker.h>

  4. char auth[] = "******";
  5. char ssid[] = "******";
  6. char pswd[] = "******";

  7. BlinkerNumber Number1("num_index");
  8. BlinkerButton Button10("btn_sw");
  9. BlinkerButton Button1("btn_1st");
  10. BlinkerButton Button2("btn_2nd");
  11. BlinkerButton Button3("btn_3rd");
  12. BlinkerButton Button4("btn_4th");
  13. BlinkerButton Button5("btn_5th");
  14. BlinkerButton Button6("btn_6th");

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

  23. void switchButton(int index) {
  24.     int step;
  25.     index = ( index > 6) ? 1 : index;

  26.     BLINKER_LOG("index: ", index);
  27.     BLINKER_LOG("deviceIndex: ", deviceIndex);
  28.     BLINKER_LOG("button ", index, " tap!");

  29.     if ( index > deviceIndex ) {
  30.         step = index - deviceIndex;
  31.     } else if ( index < deviceIndex ) {
  32.         step = (maxIndex - deviceIndex) + index;
  33.     } else {
  34.         step = 0;
  35.     }

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

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

  40.         delay(500);
  41.         digitalWrite(GPIO, HIGH);
  42.         delay(200);
  43.         digitalWrite(GPIO, LOW);
  44.     }

  45. }

  46. void button10_callback(const String & state) {
  47.     if (state == BLINKER_CMD_BUTTON_TAP) {
  48.         switchButton(selectedIndex+1);
  49.     }
  50. }

  51. void button1_callback(const String & state) {
  52.     if (state == BLINKER_CMD_BUTTON_TAP) {
  53.         switchButton(1);
  54.     }
  55. }

  56. void button2_callback(const String & state) {
  57.     if (state == BLINKER_CMD_BUTTON_TAP) {
  58.         switchButton(2);
  59.     }
  60. }

  61. void button3_callback(const String & state) {
  62.     if (state == BLINKER_CMD_BUTTON_TAP) {
  63.         switchButton(3);
  64.     }
  65. }

  66. void button4_callback(const String & state) {
  67.     if (state == BLINKER_CMD_BUTTON_TAP) {
  68.         switchButton(4);
  69.     }
  70. }

  71. void button5_callback(const String & state) {
  72.     if (state == BLINKER_CMD_BUTTON_TAP) {
  73.         switchButton(5);
  74.     }
  75. }

  76. void button6_callback(const String & state) {
  77.     if (state == BLINKER_CMD_BUTTON_TAP) {
  78.         switchButton(6);
  79.     }
  80. }

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

  84.     pinMode(GPIO, OUTPUT);

  85.     Blinker.begin(auth, ssid, pswd);
  86.    
  87.     Button10.attach(button10_callback);
  88.     Button1.attach(button1_callback);
  89.     Button2.attach(button2_callback);
  90.     Button3.attach(button3_callback);
  91.     Button4.attach(button4_callback);
  92.     Button5.attach(button5_callback);
  93.     Button6.attach(button6_callback);

  94.     Number1.print(deviceIndex);
  95. }

  96. void loop() {
  97.     Blinker.run();
  98. }
复制代码



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:37 , Processed in 0.206921 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表