Code Monkey home page Code Monkey logo

addon-bluetooth-webgui's Introduction

FABI & FLipMouse Configurator

You can configure your FLipMouse or FABI device via this page.

โš ๏ธ You need a Chromium based browser! (Chromium, Chrome, Edge, Vivaldi,...)

To adjust settings on your assistive device, please:

  1. Connect your device to the PC
  2. Select your device from below to go to the configuration page

Please select your device

Run WebGUI locally

To run the WebGUIs locally you need to download this repository and start a local webserver to serve the data. Do the following steps:

  1. Clone the repository with git clone https://github.com/asterics/Addon-Bluetooth-WebGUI.git
  2. Install any local webserver, e.g. http-server from npm with npm install --global http-server (or Python: python3 -m http.server 8080)
  3. Start the local webserver to serve documents from the webgui folder e.g. with cd Addon-Bluetooth-WebGUI/webgui and starting http-server in this directory
  4. Open http://localhost:8080/index_fm.htm or http://localhost:8080/index_fabi.htm in your browser

Test suites

There are automatic test suites for testing correct function of the AT command API for a device:

Developer information

This project here has two purposes:

  • We will use it as landing page for this site (GitHub pages)
  • All build files for building the ESP32 based Bluetooth and WebGUI addon are located here

If you are interested in flashing/updating your ESP32 addon for FABI/FLipMouse, please go to this repository's page: Addon-Bluetooth-WebGUI

addon-bluetooth-webgui's People

Contributors

benjaminaigner avatar klues avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

addon-bluetooth-webgui's Issues

problem with .md preview for settings files

In the slots tab, a pop-up window displays the content of an .md file for a particular settings file (if the .md file exists).

This does only work for the first settings file which is selected from the combo box - for all subsequent selections only the title is changed in the pop-up window, the explaination text remains the same.

(BTW: changing the tab enables a new selection - but only once).

Add support for Web Bluetooth connection to device

Web Bluetooth is implemented for many browsers and OSs including iOS and Android.
So adding support for Web Bluetooth would enable to configure the devices (FABI, FlipMouse,...) from within a smart phone without having to connect it via a cable.

There is a library developed by Espruino which supports both Web Serial and Web Bluetooth connections. So this way we could consistently support both.

So on the client side it is probably not a big change, but I guess we would have to implement a Serial connection over Bluetooth in the firmware of our devices.

See more at:

update of release data

is there a way to get data from a new release (firmware files, settings files, setting descriptions) into the WebGUI without clearing the whole browser cache/cookies in the browser settings (which might be complicated for users) ?

multiple page reloads did not work.

it would be nice to have a button (e.g. in the genereal tab) like "get latest firmware and settings".

Safe experimental mode with auto revert

For users who are depending on FABI/FLipMouse as primary input device there should be a safe experimental mode where they can adjust settings without the risk of lock themselves out. This is how it could work:

  1. users can activate "safe mode" in general settings
  2. if activated after each change of settings a timer starts counting down on the bottom edge, e.g. 2 minutes
  3. if another setting is made, the timer restarts
  4. if the timer reaches zero, the configuration is resetted to the initial config
  5. if the config is fine, the user can stop the timer in order to keep the settings

FABI3

Dear all,

we have finished FABI3 hardware & case (v3.1, with RJ25 as extension connector; v3.0 is with a jack plug, but is testing only).

As this version uses a RPi PicoW with an RP2040 core, this hardware is more similar to the FLipMouse instead of FABI2.

Following changes are necessary in the webgui:

  • Change number of external buttons, using 5pcs now.
  • We have strongsip / strongpuff now
  • Infrared is included
  • Joystick actions are possible
  • I decided (for now, maybe room for discussion) to use StrongSip/Puff + Button 2/3/4/5 as action (instead of StrongSip/Puff + Up/Down/Left/right as in the FM3).
  • As the Bluetooth firmware is included in the FABI3 firmware, no update is possible/necessary without updating the RP2040
  • FABI3 updates are with .UF2 files like FM3

AT BM assignment can be seen here:
https://github.com/asterics/FABI/blob/SRC_v3.0/FabiWare/modes.h

These points need further discussion (for WebGUI AND the firmware itself):

  • How to handle the longpress, which is not included in FM firmware?
  • The same for anti-tremor settings
  • How should we transfer FABI2 presets to FABI3? AT BM mapping is changed because of various things (button count, ...).
  • @klues suggested the possibility to change the configuration of this device similar to AsTeRICS Grid, where you first select something to do (press key, click, Joystick,...) and then assign an action to it (single button press, double/triple press, sip / puff, ...)

BT addon upgrade - timeout too short?

On some of the ~25 upgraded FABI modules with the ESP32 addon, the update didn't work as expected from the WebGUI:

BT addon update failed because: OTA:$FIN not received.

I think the problem might be a too tight timeout for receiving "OTA:$FIN". Normally, this wouldn't be the problem, but
AT SR is sent immediately after the timeout, which might break the ESP32 update procedure.

@klues I will give you that exact FABI next time.

FABI - Updating the Arduino Pro Micro

Hi @ all,

I've experimented with WebSerial and the AVR109 bootloader protocol for the Arduino Micro (ProMicro) updater.
With my limited JS skills, I've implemented a proof-of-concept:
https://github.com/benjaminaigner/avr109-webserial
It would be really cool if we could implement an updater for the ProMicro as it is for the ESP32 ๐Ÿ‘

@klues Hopefully it doesn't hurt your eyes to see all of the functionality squeezed in the index.html :-)

Updating BT firmware - beginning of upgrade process on Arduino RP2040

On the FM3 board with the Arduino RP2040 Connect, the Bluetooth update process fails sometimes,
because the receiving of "OTA:ready" is mixed up with esp-idf console output.

Because we are limited to the pins connected by the Arduino board, we are using UART0
for transmitting our data (HID, commands,...) as well as the esp-idf logging output.

Especially when using the OTA firmware to write a new BT firmware, the outputs get mixed up.
Not really mixed up, but there is a newline missing after the logging output.

And if the "OTA:ready" is not at the beginning of a line, the detection fails in the webgui.

Suggestion:

Change the waitForReceiving function from a complete comparison to a "contains" like check.
Or an additional function just for "OTA:ready" which checks if this string is contained in the received string.

"Upload & replace all slots" -> slots are renamed unintentionally

Dear @klues
when I use the upload and replace all slots functionality to reset the FABI to a known state. following problem occurs:

If there is an existing slot with the name from the selected file, the slot name is changed by adding a trailing "(1)".
The old slot is deleted though, so there is only one slot as intended, but with a different name.

Reproduce:
download all your current slots and upload the same file. If you do that once, slots are with a different name, if you do it twice, original names are restored.

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.