# senko
**Repository Path**: fly2022/senko
## Basic Information
- **Project Name**: senko
- **Description**: No description available
- **Primary Language**: Python
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-02-28
- **Last Updated**: 2022-02-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
---
[](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 senko
OTA = 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 senko
GITHUB_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 network
OTA = 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/) .