-
Notifications
You must be signed in to change notification settings - Fork 129
Flashing
-
Watch a 2 minute video.
-
Use the following URLs depending on the device model:
- Shelly 1:
http://A.B.C.D/ota?url=http://rojer.me/files/shelly/shelly-homekit-Shelly1.zip
- Shelly 1L:
http://A.B.C.D/ota?url=http://rojer.me/files/shelly/shelly-homekit-Shelly1L.zip
- Shelly 1PM:
http://A.B.C.D/ota?url=http://rojer.me/files/shelly/shelly-homekit-Shelly1PM.zip
- Shelly 2:
http://A.B.C.D/ota?url=http://rojer.me/files/shelly/shelly-homekit-Shelly2.zip
- Shelly 2.5:
http://A.B.C.D/ota?url=http://rojer.me/files/shelly/shelly-homekit-Shelly25.zip
- Shelly I3:
http://A.B.C.D/ota?url=http://rojer.me/files/shelly/shelly-homekit-ShellyI3.zip
- Shelly Plug:
http://A.B.C.D/ota?url=http://rojer.me/files/shelly/shelly-homekit-ShellyPlug.zip
- Shelly Plug S:
http://A.B.C.D/ota?url=http://rojer.me/files/shelly/shelly-homekit-ShellyPlugS.zip
- Shelly 1:
-
If everything goes well, after 30 seconds or so you will see LED blinking (see LED indication section here) and a different web interface at the same device address.
-
Script for an automated way to update your devices (see below).
- ./flash_shelly.py hostname (for single device)
- ./flash_shelly.py -a (for all devices on the network)
It is possible to revert back to stock firmware.
-
You can revert to stock firmware via the device webUI by clicking the "Revert" button, see here
-
Stock firmware for can be downloaded from the official URL's below, and upload via web interface.:
-
Script for an automated way to revert your devices to stock firmware (see below).
- ./flash_shelly.py -m revert hostname
There is a Python script works with macOS / Linux / Windows. It can be downloaded here, simply download the zip, unpack and in terminal navigate to the tools folder and run the command.
- i.e
./flash_script.py -a
will scan your network for all available devices and ask you if you wish to flash the found device(s) to homekit firmware.
Requirements: Python 3.6 or later, Firmware version 2.1
You can do various things with the script see bellow:
usage: flash-shelly.py [-h] [-m {homekit,keep,revert}] [-a] [-l] [-e [EXCLUDE ...]] [-n] [-y] [-V VERSION] [-c HAP_SETUP_CODE] [--variant VARIANT] [-v {0,1}] [hosts ...]
Shelly HomeKit flashing script utility
positional arguments:
hosts
optional arguments:
-h, --help show this help message and exit
-m {homekit,keep,revert}, --mode {homekit,keep,revert}
Script mode.
-a, --all Run against all the devices on the network.
-l, --list List info of shelly device.
-e [EXCLUDE ...], --exclude [EXCLUDE ...]
Exclude hosts from found devices.
-n, --assume-no Do a dummy run through.
-y, --assume-yes Do not ask any confirmation to perform the flash.
-V VERSION, --version VERSION
Force a particular version.
-c HAP_SETUP_CODE, --hap-setup-code HAP_SETUP_CODE
Configure HomeKit setup code, after flashing.
--variant VARIANT Prerelease variant name.
-v {0,1}, --verbose {0,1}
Enable verbose logging level.
macOS / Linux example:
-
./flash_shelly.py -la
this will list all available shelly devices and report the current firmware version that is available. -
./flash_shelly.py -am keep
this will update all available shelly devices on the current firmware type (Stock or HomeKit) to latest version. -
./flash_shelly.py hostname
this will update the device hostname to current firmware version that is available. -
./flash_shelly.py -m revert hostname
this will revert the device hostname to latest stock firmware version that is available (this can also be used with -a./flash_shelly.py -am revert
to revert all devices on the network).
Windows example:
-
python3 flash_shelly.py -la
this will list all available shelly devices and report the current firmware version that is available. -
python3 flash_shelly.py -am keep
this will update all available shelly devices on the current firmware type (Stock or HomeKit) to latest version. -
python3 flash_shelly.py hostname
this will update the device hostname to current firmware version that is available. -
python3 flash_shelly.py -m revert hostname
this will revert the device hostname to latest stock firmware version that is available (this can also be used with -apython3 flash_shelly.py -am revert
to revert all devices on the network).
If the script fails to run becasue of 'Failed to lookup version information' try running following commands in a Terminal session to fix the issue.
python3 -c 'import ssl; print(ssl.get_default_verify_paths())'
ls -l /etc/ssl/