ubuntu 上 ESP8266 HomeKit 实战(五)2路继电器

基于 ESP8266 HomeKit ,我们能够实现对多路继电器的控制。

根据不同的硬件电路,软件实现可能会有些不同,但基本原理不会相差太大。

下面我们用在淘宝上购买的 ESP8266 2路继电器模块,讲述其控制方法。

一、硬件

硬件除2路继电器外,其余与《ubuntu 上 ESP8266 HomeKit 实战(二)1路继电器》所述的硬件相同。

下图是在陶宝上购的双继电器模块。

二、软件  

软件与《ubuntu 上 ESP8266 HomeKit 实战(二)1路继电器 》中的基本相同,只是根据双继电器模块的电路不同对代码进行了相应的调整。主要修改了 main.c 中的代码:

/*
 * Example of using esp-homekit library to control
 * a simple $5 Sonoff Basic using HomeKit.
 * The esp-wifi-config library is also used in this
 * example. This means you don't have to specify
 * your network's SSID and password before building.
 *
 * In order to flash the sonoff basic you will have to
 * have a 3,3v (logic level) FTDI adapter.
 *
 * To flash this example connect 3,3v, TX, RX, GND
 * in this order, beginning in the (square) pin header
 * next to the button.
 * Next hold down the button and connect the FTDI adapter
 * to your computer. The sonoff is now in flash mode and
 * you can flash the custom firmware.
 *
 * WARNING: Do not connect the sonoff to AC while it's
 * connected to the FTDI adapter! This may fry your
 * computer and sonoff.
 *
 */

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 
#include 

#include "button.h"
#include "poweronstate.h"

#define NO_CONNECTION_WATCHDOG_TIMEOUT 600000
const int relay_number = 2;
// The GPIO pin that is connected to last pin of the programming strip of the Sonoff Basic.
const int pin_gpio = 14;
// The GPIO pin that is connected to the relay on the Sonoff Basic.
const int relay_gpio = 12;
// The GPIO pin that is connected to the LED on the Sonoff Basic.
const int led_gpio = 13;
// The GPIO pin that is oconnected to the button on the Sonoff Basic.
const int button_gpio = 0;

const char* relay_coms[][2] = {
    {"\xa0\x01\x01\xa2","\xa0\x01\x00\xa1"},
    {"\xa0\x02\x01\xa3","\xa0\x02\x00\xa2"}
};

bool is_connected_to_wifi = false;
void switch_on_callback(homekit_characteristic_t *_ch, homekit_value_t on, void *context);
void button_callback(uint8_t gpio, button_event_t event);

void led_write(bool on) {
    gpio_write(led_gpio, on ? 0 : 1);
}

void relay_write( int index,bool on) {
    const  char *data = relay_coms[index][on ? 1 : 0];
    for(int i=0;i<4;i++)
     uart_putc(0,data[i]);
  }

bool led_read() {
    return gpio_read(led_gpio);
}

void led_blink(int times) {
    bool led_value = led_read();
    for (int i=0; i

编译和烧写与《ubuntu 上 ESP8266 HomeKit 实战(二)1路继电器 》一致。

只是手机家庭APP中的操作界面有所不同(基于ios13)。

ubuntu 上 ESP8266 HomeKit 实战(五)2路继电器_第1张图片

我们有编译好的烧写包,有需要的可以到 https://download.csdn.net/download/cppphp/11243477 下载,该软件包是针对我们所述硬件的完整软件烧写包,下载后按说明直接刷机即可。

测试效果图

《ubuntu 上 ESP8266 HomeKit 实战(一)用 esp-homekit-devices 搭建开发环境》 

《ubuntu 上 ESP8266 HomeKit 实战(二)1路继电器》 

《ubuntu 上 ESP8266 HomeKit 实战(三)设置 iPad 为家居中枢使 ios 设备具备远程控制能力》

《ubuntu 上 ESP8266 HomeKit 实战(四)1路继电器 + 1个触摸开关》

 

你可能感兴趣的:(ESP:8266,Homekit,物联网,ESP8266,Homekit,2路继电器)