Giter Site home page Giter Site logo

smartyfi / rainmaker-ble-wifi-bridge Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dhrishi/rainmaker-ble-wifi-bridge

0.0 0.0 0.0 28 KB

A fully-functional BLE - Wi-Fi bridge including reset-to-factory, Wi-Fi provisioning and remote control using ESP RainMaker

CMake 1.23% C 98.77%

rainmaker-ble-wifi-bridge's Introduction

Easy-to-extend BLE - Wi-Fi Bridge

A fully-functional BLE - Wi-Fi Bridge. Control/Access the BLE accessories in your home remotely using phone apps. If you have any BLE devices you own, simply add their BLE protocol, and any ESP32 DevKit will start acting as a BLE - Wi-Fi Bridge.

Requirements

  • Hardware
    • ESP32
  • Software
    • ESP-RainMaker: Follow the ESP RainMaker Documentation Get Started section
    • Download the ESP RainMaker iOS/Android phone app

Build and Flash

$ git clone https://github.com/dhrishi/rainmaker-ble-wifi-bridge
$ cd rainmaker-ble-wifi-bridge
$ RAINMAKER_PATH=/path/to/where/esp-rainmaker/exists idf.py build flash monitor

Functionality

  • This is a BLE - Wi-Fi bridge that facilitates access to registered BLE accessories remotely using phone apps.
  • BLE devices in the vicinity are discovered by the bridge and are represented as RainMaker devices which can be seen and controlled through the iOS/Android app.
  • When a parameter update is received to ESP32 over Wi-Fi (from the iOS/Android app), it is mapped to the format accepted by the corresponding device and a characteristic write over BLE for is executed. This results into the actual action on the BLE device.

Supported BLE Accessories

Currently supported accessories:

  • Syska Light Bulb
  • PLAYBULB CANDLE

Adding New Accessory

  • Copy files main/accessories/sample_accessory.[ch] and rename as per your accessory name. You may consider replacing the occurrences of sample_accessory in the code with your accessory-name_type.
  • Update the functions in the C source file as per the documentation and guidelines.
  • Include the C header file accessories/accessory-name_type.h in main/app_main.c and add a call to the register function accessory-name_type_register() before app_ble_start()
  • Add the entry of the source file acessory-name_type.c in main/CMakeLists.txt

Notes:

  1. Files main/accessories/sample_accessory.[ch] are only for reference and are not compiled.
  2. The total number of registered accessories you want to use at a time should not exceed MAX_DEV in main/app_ble.h. If required, you can change the default value using menuconfig Component config -> Bluetooth -> Bluetooth controller -> BLE Max Connections.

Limitations

  • The added BLE accessory should be discoverable before starting the RainMaker framework.
  • For now, the BLE service and characteristic UUIDs of the parameters to be controlled should be 16 bit.
  • Getting the parameter values (BLE read) from the accessory is not yet supported

Reset to Factory

Press and hold the BOOT button for more than 3 seconds to reset the board to factory defaults. You will have to provision the board again to use it.

rainmaker-ble-wifi-bridge's People

Contributors

dhrishi avatar kedars avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.