Bluetooth Gateway for Phantom Remote Control based on ESP32

Overview

魅族遥控器蓝牙网关

Stable

一个ESP3232固件,用于魅族遥控器的网关,可以将魅族遥控器的温湿度数据通过局域网进行推送,同时还支持通过局域网控制魅族遥控器发送和接收红外数据。

魅族遥控器如下图:

remoter

特点

  • 零代码/零配置文件/零命令行操作
  • 手机App配网,并支持重新配置,修改Wi-Fi不需要重新烧录固件
  • 与遥控器智能绑定,可以随时向网关添加遥控器绑定或者移除遥控器,增减遥控器不需要烧录固件
  • 通过通讯传送需要发送的红外码,改变红外码不需要烧录固件
  • 可以绑定多个遥控器,轮询查询各遥控器的温湿度数据并通过网络推送
  • 网络中可以存在多个蓝牙网关,每个绑定不同遥控器,实现全屋覆盖
  • 固件基于ESP-IDF编写,TTL日志输出,方便定位问题

下载和烧录

克隆本仓库,或者下载最新的Release,在build目录下有一个esp32_meizu_remoter_gateway.bin文件,这就是ESP32的固件,请下载并使用esphome-flasher烧录进ESP32中。

由于烧录过程中,esphome-flasher可能会访问网络获取分区表和bootloder,如果是中国国内网络,可能会显示网络超时错误,关掉esphome-flasher并重开,多尝试几次即可。

基本概念定义

图中是比较常见的ESP32开发板NodeMCU-32S。 esp32

功能键

上方红圈是GPIO0的下拉微动开关,按住可以下拉GPIO0的电平,我们在下文中称为功能键,用于网关的操作。

状态灯

下方红圈的蓝色LED接在GPIO2,我们在下文中称为状态灯,用来表示网关的状态。状态灯有以下状态。

  • 常亮, 状态灯一直亮的状态,表示此时无线网络连接正常。
  • 常灭, 如果电源指示灯(红色LED)正常点亮,而状态灯一直为灭的状态,表示此时无线网无法连接,可以检查无线路由器或者重启网关。
  • 慢闪, 此时状态灯2秒钟闪烁一次,我们在下文中称为慢闪,具体含义下文会提及。
  • 快闪, 此时状态灯每秒钟闪烁5次,我们在下文中称为快闪,具体含义下文会提及。

注意:使用非NodeMCU-32S的其它ESP32模块,也许需自行处理GPIO0/GPIO2的输入输出

配网

魅族遥控器网关需要Espressif官方的无线网络配网工具,iOS手机请在App Store中搜索ESP SoftAP Provisioning,Android手机请搜索ESP SoftAP Provisioning并下载安装。

初次配网

  • 刚烧录好固件并启动后,状态灯为慢闪状态,此时用手机搜索ESP_XXXXXX的无线网并加入,密码为"ESP32xAP"。
  • 打开ESP SoftAP Provisioning手机App,点按"Provision Device"按钮。
  • 在二维码配网步骤,直接点按"I don't have a QR code"
  • PIN码输入界面,输入PIN码"p1d32a94"
  • 在选择无线网界面,直接选择无线网,并输入密码。如果无法搜索无线网,点击"Join Other Network",并在弹出的窗口输入需要连接的无线网SSID及密码,并点击"Connect"
  • 如果前述步骤没有错误,网关状态灯进入快闪状态,此时网关设备将重启,重新启动后,状态灯如果成功连接上无线网,会显示为常亮状态。

重新配网

在任意状态下,按住功能键10秒钟,状态灯进入快闪状态,网关的配网信息将被清除,重启后又将进入配网状态,配置的步骤与初次配网操作相同。

注意:按住功能键10秒,是初始化所有设置,除无线网配置信息被清除以外,绑定的全部遥控器也将都被移除。

绑定遥控器

在网关工作时,需要知道采集哪些遥控器的信息,可以通过绑定与解绑操作,告知网关需要采集的遥控器的蓝牙地址集合。

绑定

  • 在网关进入正常工作模式(非配网模式)时,按住功能键2秒钟,网关进入绑定模式,此时状态灯为慢闪状态。
  • 拿起一个遥控器并尽量靠近网关,网关如果发现这个设备,状态灯会快闪2秒,并退出绑定模式,该遥控器绑定成功。

或 在魅族遥控器网关集成中调用bind服务指定进入绑定状态

解绑单个遥控器

此部分操作需要在魅族遥控器网关集成中进行操作,见解除绑定部分的描述。

解绑全部遥控器

与重新配网相同,按住功能键10秒钟,状态灯进入快闪状态,所有绑定的遥控器均会被清除。

注意:按住功能键10秒,是初始化所有设置,除绑定的全部遥控器会被移除外,无线网配置信息也将被清除。 注意:原则上不推荐不同网关绑定同一个遥控器

数据轮询与更新

网关开始工作后,按照设定的时间间隔轮询所有绑定的遥控器设备,并将轮询的结果数据推送到连接的所有客户端。默认的轮询时间为5分钟,这一间隔可以在魅族遥控器网关集成中进行修改,见选项部分的描述。

如果一个遥控器在轮询时失败,将会向客户端推送其不可用状态。如果连续5次轮询失败,该设备将会被移除出轮询列表(不会解除绑定关系),在下次重新启动网关之前,不再更新该设备的数据。这种情况可能是遥控器设别故障或电池耗尽。在排除故障后,将设备与网关重新绑定,可恢复数据的更新。

红外发送与接收

发送

支持按照传送的key与ircode,让遥控器发送指定红外信号,当遥控器发送完成后,网关会快闪1秒

接收(Beta)

可以使网关进入20秒的红外接收状态,收到的红外数据将以蓝牙Notify的形式输出在TTL。据观察,遥控器似乎并不能准确接收红外数据,时灵时不灵,接收到的数据也奇形怪状,有待验证。

网络服务与通讯

mDNS

魅族遥控器网关支持mDNS服务,服务名称为_meizu_remoter_gateway._tcp.local.,使用zeroconf可获得以下格式信息

type='_meizu_remoter_gateway._tcp.local.', name='1C4BD9._meizu_remoter_gateway._tcp.local.', addresses=[b'\xc0\xa8\x01\x87'], port=8266, weight=0, priority=0, server='1C4BD9.local.', properties={b'version': b'0.1.0', b'serialno': b'1C4BD9'}

TCP

魅族遥控器网关开放并监听8266端口,支持多用户连接,payload形式为JSON。

网关接收消息

  • 获取网关配置信息
{
  "type": "config_info"
}
  • 订阅消息推送,只有向网关发送该消息,才会收到消息推送
{
  "type": "subscribe"
}
  • 使网关进入遥控器绑定状态(最长30秒)
{
  "type": "bind"
}
  • 调整绑定操作信号阈值
{
  "type": "bindthrld",
  "data":{
    "threshold":-35
  }
}
  • 移除已经绑定的遥控器
{
  "type":"removebind",
  "data":{
    "device":"ab:6d:12:34:56:ef"
  }
}
  • 心跳, 如3分钟内无心跳或其它消息,客户端将被断开
{
  "type":"heartbeat"
}
  • 设置更新间隔(分钟)
{
  "type":"setinterval",
  "data":{
    "update_interval":10
  }
}
  • 发射红外
{
  "type":"irsend",
  "data":{
    "device":"ab:2d:12:34:56:ef",
    "key":"65001C63C68D8000C8",
    "ircode":"0123456789abcdef..."
  }
}
  • 接收红外
{
  "type":"irrecv",
  "data":{
    "device":"ab:2d:12:34:56:ef"
  }
}

网关回应消息

  • 获取网关配置信息回应
{
  "type":"config_info",
  "data":{
    "version":"0.3.0",
    "serialno":"1B923A",
    "update_interval":5
  }
}
  • 绑定状态回应
{
  "type": "bind",
  "data":{
    "status":1
  }
}
  • 心跳回应
{
  "type":"heartbeat"
}

网关推送消息

  • 设备状态更新
{
  "type":"update",
  "data":{
    "device":"12:62:33:b5:9f",
    "available":1,
    "status":{
      "manufacturer":"Meizu",
      "model":"R16",
      "fireware":"v_3.0.10.23",
      "temperature":32.62,
      "humidity":75.33,
      "battery":90,
      "voltage":2.9,
      "rssi":-47
    }
  }
}
  • 更新间隔变化推送
{
  "type":"setinterval",
  "data":{
    "update_interval":10
  }
}
  • 设备移除推送
{
  "type":"removebind",
  "data":{
    "device":"ab:6d:12:34:56:ef"
  }
}

关于网关与网关集成的更多操作,请参阅魅族遥控器网关集成的说明。

Releases(v0.3.2)
  • v0.3.2(Sep 9, 2021)

  • v0.3.1(Sep 6, 2021)

  • v0.3.0(Sep 3, 2021)

    • 蓝牙底层全部改成同步操作方式
    • 增加了RSSI传感器
    • 增加了远程绑定指令
    • 修改了红外发送接口,参数分别为key和ir_code
    • 增加了红外接收Beta版,没有消息回应,目前可以在TTL看到接收到的红外码
    • 发送红外信号时,状态灯会快闪1秒
    • 接收红外信号的20秒内,状态灯会快闪
    Source code(tar.gz)
    Source code(zip)
Owner
George Zhao
George Zhao
Exploits the Wii U's bluetooth stack to gain IOSU kernel access via bluetooth.

BluuBomb Exploits the Wii U's bluetooth stack to gain IOSU kernel access via bluetooth. For a more detailed write-up see WRITEUP.md. Not to be confuse

null 94 Jun 30, 2022
Bluetooth Joystick : A wireless joystick with ESP-32 microcontroller and Dual Axis Joystick Module using the Bluetooth connectivity.

BluetoothJoystick Bluetooth Joystick : A wireless joystick with ESP-32 microcontroller and Dual Axis Joystick Module using the Bluetooth connectivity.

null 9 Feb 24, 2022
M17 Analog Gateway by ESP32

M17 Analog Hotspot Gateway Project How to Make digital voice radio (M17 Digital Voice) analog gateway yourself over the internet width ESP32 NodeMCU/D

Atten 10 May 10, 2022
AnalogWrite for ESP32 and ESP32-S2 with LEDC PWM. Includes PWM Phase Control, DAC and Smart GPIO resource management.

analogWrite() ESP32 Installation Instructions This library was tested using using the ESP32 Arduino IDE Boards Manager installation method. Stable rel

null 22 Jun 18, 2022
TinyRemoteXL - 12-Button IR Remote Control based on ATtiny13A

TinyRemoteXL is a 12-button IR remote control based on an ATtiny13A powered by a CR2032 or LIR2032 coin cell battery.

Stefan Wagner 32 Jun 11, 2022
Control of 4 DOF robotic arm using Bluetooth HC-05 Sensor

SERV-E -> "At your Service" Problem Statement With the current boom of technology where the whole world is running towards digitisation and automation

Swarup Tripathy 2 Apr 27, 2022
ESP32-Skid-Steer - Bruder Catepillar Skid Steer model converted to RC, controlled by an ESP32 with 2 analog joysticks and a receiver that is an ESP32 on the model.

ESP32-Skid-Steer Bruder Catepillar Skid Steer model converted to RC, controlled by an ESP32 with 2 analog joysticks and a receiver that is an ESP32 on

null 5 Feb 4, 2022
Bluetooth low energy (BLE) tracker for ESP32

BLEcker Bluetooth low energy (BLE) tracker for ESP32 This software is written for ESP32 boards to track BLE devices. It can be used for your smart hom

Vörös Ákos 39 Jun 23, 2022
A handy little system information monitor using and ESP32 + ILI9488 TFT. Receives data over Serial Bluetooth.

Bluetooth-System-Monitor A handy little system information monitor using and ESP32 + ILI9488 TFT. Receives data over Serial Bluetooth and thus giving

Dustin Watts 24 May 28, 2022
Bluetooth Monitor port for the ESP32

ESP32 BT Monitor What is it? This is a (at the moment partial) port of andrewjfreyer/monitor for the popular and super cheap ESP32 boards. For a more

null 33 Jun 11, 2022
Gesture-Detecting-Macro-Keyboard - Glorified Bluetooth macro keyboard with machine learning (TensorFlow Lite for Microcontrollers) running on an ESP32.

Gesture detection tldr; Glorified Bluetooth macro keyboard with machine learning (TensorFlow Lite for Microcontrollers) running on an ESP32. Main feat

Jakob Krantz 63 Jun 19, 2022
Bluetooth LE Keyboard library for the ESP32 (Arduino IDE compatible)

ESP32 BLE Keyboard library This library allows you to make the ESP32 act as a Bluetooth Keyboard and control what it does. You might also be intereste

null 1.2k Jul 5, 2022
Remote control for your QMK-powered keyboard

QMK RC QMK RC is a project that aims to bring the same convenience to controlling your QMK keyboard from your computer, as QMK did to programming keyb

Maciej Małecki 45 May 1, 2022
Use Arduino to realize IR remote control of equipment supporting Onkyo RI

OnkyoIRRemote 使用红外遥控控制支持OnkyoRI的设备 可用ArduinoNano制作 ID列表(这是我自己测试出来的我的安桥收音机的代码) 3072 列表下一个电台(全组切换) 3073 列表上一个电台(全组切换) 3080 SLEEP 90 3081 FM 3082 AM 3088

null 1 Oct 24, 2021
An open source Zstack3 gateway powered by ESP8266 and CC2652 modules

OpenZ3Gateway An open source Zstack3 gateway powered by ESP8266 and CC2652P modules. One costs less than 60 CNY in China. This repository includes Alt

Chen Yijun 27 May 9, 2022
3D printer control board based on ESP32,support 8 Driver motors.

PandaZHU use ESP32 as the mcu for 3D printer motherboard. Zhu is Chinese for bamboo it has larger memory and more powerful than normal 32bit 3D printe

Mark 38 Jun 28, 2022
Control Heidelberg Wallbox Energy Control over WiFi using ESP8266 and configure your own local load management

< scroll down for English version and additional information > wbec WLAN-Anbindung der Heidelberg WallBox Energy Control über ESP8266 Die Heidelberg W

null 69 Jun 21, 2022
Bobby Cooke 266 Jun 20, 2022
Harsh Badwaik 1 Dec 19, 2021