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
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
-
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.
- 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.
- 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:
- 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 UART adapter at 921600bps.
- In the shell, type
su
to get root access.
- 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
- Obtain your IP address by typing
ifconfig
.
- On your computer, navigate to the platform tools directory and connect using:
./adb connect <your ip>:5555
- Disable the Shelly app with:
./adb root
./adb shell pm disable cloud.shelly.stargate
- 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
- 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!
- To return to the home screen, use:
./adb shell input keyevent 3
- 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
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