Skip to content

Software needed to run Home Assistant on the Shelly Wall Display while still keeping all the functions.

License

Notifications You must be signed in to change notification settings

RapierXbox/ShellyElevate

Repository files navigation

ShellyElevate

Caution

All content in this repository is provided "as is" and may render your device unusable. Always exercise caution when working with your device. No warranty or guarantee is provided.

Shelly Elevate is an app designed for the Shelly Wall Display, codenamed Stargate, that hosts a NanoHTTPD REST server as a background service upon booting. It automatically launches Chrome with Home Assistant, if available. The README provides a detailed tutorial on hacking your device, installing a launcher, setting up Chrome, configuring Shelly Elevate, and integrating it with Home Assistant.
Video: https://github.com/user-attachments/assets/d6095593-97f1-4036-b6d5-d9b3466c385f

Hacking your Wall Display

There are two different methods to jailbreak your wall display, and you'll need to choose one:

  • UART: This method is highly reliable, with nearly a 100% success rate. However, it requires soldering cables to your device and purchasing an inexpensive USB2UART adapter.
  • MTKClient: Although this method didn't work for me, it has been successful for others in the community. But it can work for you. It also doesnt require soldering.TODO

Using UART

Install the required Software

  • To interact with the UART2USB adapter, download a software like PuTTY.

  • Obtain the Anroid plattform tools for necessary interactions with your device.

  • From the release tab, download the latest versions of the ShellyElevate APK, Chrome APK, and the ultra-small launcher APK.

Disassembly and Soldering

1. Remove Backplate:
  • Remove the four screws holding the backplate in place and store them safely.
  • Lift the backplate cautiously and disconnect the FPC cable from the motherboard.
2. Remove Daughterboard:
  • Remove the three screws securing the small daughterboard.
3. Soldering:
  • Prepare your soldering iron and two small wires.
  • Prepare your soldering iron and two small wires. rip two wall displays
  • Your setup should look like this this:
4. Reconnect Power and Connect Adapter
  • Connect power to the daughterboard and connect it to the motherboard
    picture by luka177
  • Connect the UART-to-USB adapter. Your setup should look like this:
    (NOTE: I accidentally switched up 3v3 and rx in this picture but you should get the idea.)

Connect to your Display

1. Connect to UART Adapter:
  • Connect to your UART adapter at 921600bps.
2. Get root access:
  • In the shell, type su to get root access.
3. Enable ADB:
  • Execute the following commands to enable ADB permanently:
    settings put global development_settings_enabled 1
    settings put global adb_enabled 1
    setprop persist.adb.tcp.port 5555
    setprop service.adb.tcp.port 5555
    stop adbd
    start adbd
4. Get IP Address:
  • Obtain your IP address by typing ifconfig.
5. Connect via ADB:
  • On your computer, navigate to the platform tools directory and connect using: ./adb connect <your ip>:5555
6. Disable Shelly App:
  • Disable the Shelly app with: ./adb root
    ./adb shell pm disable cloud.shelly.stargate
7. Install Launchers and Apps:
  • Install the ultra-small launcher: ./adb install ultra-small-launcher.apk
  • Install Chrome and the ShellyElevate app:
    ./adb install Chrome.apk
    ./adb install -g ShellyElevate.apk
8. Reboot and Launch
  • Reboot the device with: ./adb shell reboot
  • After rebooting, Chrome should open with your Home Assistant instance. It can take up to one minute if your wifi doesnt connect!
9. Troublshooting:
  • To return to the home screen, use: ./adb shell input keyevent 3

Configuration in Home Assistant

  • In your configuration.yaml file add this:
switch:
  - platform: rest
    name: Relay Shelly Walldisplay
    resource: http://<your ip>:8080/relay
    body_on: "true"
    body_off: "false"
    is_on_template: "{{ value_json.state }}"
    headers:
      Content-Type: application/json
    scan_interval: 10

sensor:
  - platform: rest
    name: Temperature Shelly Walldisplay
    resource: http://<your ip>:8080/getTemp
    value_template: "{{ value_json.temperature }}"
    unit_of_measurement: "°C"
    scan_interval: 120

  - platform: rest
    name: Humidity Shelly Walldisplay
    resource: http://<your ip>:8080/getHumidity
    value_template: "{{ value_json.humidity }}"
    unit_of_measurement: "%"
    scan_interval: 120

Using the Wall Display as a Thermostat

To use the Wall Display as a thermostat, add the following code to your configuration.yaml file. You can also replace the target heater with another entity if needed.

climate:
  - platform: generic_thermostat
    name: Thermostat Shelly Wall Display
    heater: switch.relay_shelly_walldisplay
    target_sensor: sensor.temperature_shelly_walldisplay

About

Software needed to run Home Assistant on the Shelly Wall Display while still keeping all the functions.

Resources

License

Stars

Watchers

Forks

Packages

No packages published