Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rangerdigital/senko
🦊 Simplest OTA update solution for your Micropython projects.
https://github.com/rangerdigital/senko
esp32 esp8266 microcontroller micropython ota-update ota-updater over-the-air senko
Last synced: 5 days ago
JSON representation
🦊 Simplest OTA update solution for your Micropython projects.
- Host: GitHub
- URL: https://github.com/rangerdigital/senko
- Owner: RangerDigital
- License: gpl-3.0
- Created: 2019-06-28T15:46:48.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-02-23T12:48:32.000Z (9 months ago)
- Last Synced: 2024-10-31T15:03:58.886Z (20 days ago)
- Topics: esp32, esp8266, microcontroller, micropython, ota-update, ota-updater, over-the-air, senko
- Language: Python
- Homepage:
- Size: 518 KB
- Stars: 95
- Watchers: 8
- Forks: 21
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
---
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
Senko is the simplest **Over The Air** updater solution for your **Micropython** projects based on **ESP8266** and **ESP32**.
Senko synchronizes selected files on your microcontroller with the remote ones from **GitHub** repository.
I used Senko to automatically deploy the latest `master` branch to my ESP8266 sensors fleet.> 🚧 By all means, Senko is not the best implementation, but for my simple IoT projects, It was adequate!
## 🛠Operating Principle
Every time `.fetch()` or `.update()` methods are called Senko compares **SHA1** hashes of local files with remote ones to determine if they are the same.
If they are not, Senko saves remote files from **GitHub** repository to your microcontroller. This means you need to reboot to run the latest code.
> 🚧 You are responsible for implementing a network connection and reboot strategy!
## 🔥 Installation
Senko consists of a single `senko.py` module that you import.
You can use **Ampy** or **WebREPL** to load `/senko/senko.py` module to your microcontroller:
```bash
sudo ampy -p /dev/ttyUSB0 put senko.py
```Or use **uPip** to install Senko from **PyPi**:
```python
import upip
upip.install("micropython-senko")
```
## 🎉 Usage
You should start by importing the module and creating a `Senko` object.
You have to specify **user** with your GitHub username, **repo**, and **files** that you want to keep synchronized.
```python
# boot.py
import senkoOTA = senko.Senko(
user="ocktokit", # Required
repo="octokit-iot", # Required
branch="master", # Optional: Defaults to "master"
working_dir="app", # Optional: Defaults to "app"
files = ["boot.py", "main.py"]
)
```Or You can also specify **URL** to the **GitHub** directory containing your code and **files** that you want to keep synchronized.
```python
# boot.py
import senkoGITHUB_URL = "https://github.com/RangerDigital/senko/blob/master/examples/"
OTA = senko.Senko(url=GITHUB_URL, files=["boot.py", "main.py"])
```To get the **URL** simply click the `RAW` button on the one of the files that you want to track and then strip the name of that file from it.
> 💡 You can even specify what branch Senko will update from!
### Updating
Then after connecting to Wi-Fi network call `OTA.update()`:
```python
# boot.py
import senko
import machine
import networkOTA = senko.Senko(
user="ocktokit", repo="octokit-iot", files = ["boot.py", "main.py"]
)# Connect to Wi-Fi network.
connect_wlan()if OTA.update():
print("Updated to the latest version! Rebooting...")
machine.reset()
```This setup will try to keep `boot.py` and `main.py` updated every time microcontroller boots.
### Fetching
If you only want to check if the newer version of files exists call `OTA.fetch()`:
```python
if OTA.fetch():
print("A newer version is available!")
else:
print("Up to date!")
```> 💡 Check out a simple example of usage from `examples` directory!
## 🚧 Contributing
**You are more than welcome to help me improve Senko!**
Just fork this project from the `master` branch and submit a Pull Request (PR).
## 📃 License
This project is licensed under [GPL-3.0](https://choosealicense.com/licenses/gpl-3.0/) .