Project RIGOR - The Remote IGOR
Project description
Project RIGOR - The 'Remote' IGOR
This is the next evolution of the .
Project RIGOR is an evolution of the original Project IGOR by UrbanCircles, with a focus on remote control and server-client architecture. The R in RIGOR stands for Remote, marking a shift from the on-chip processing of the original project to a more flexible and scalable system.
Evolution from Igor
- Original Igor: Processed everything on the chip, with WiFi capabilities never utilized for remote interaction.
- Project RIGOR: Introduces a server-client architecture to decouple logic from the device.
- The server (written in Python) handles all complex logic and decision-making.
- The device receives display instructions from the server and sends user inputs back to it.
- This separation enables easier updates, scalability, and integration with the full Python ecosystem.
- The server was written with a strong focus on modularity which makes it easy to pick and choose what functionality you want in your Project RIGOR
Installation
Install via pip:
pip install project-rigor
Getting Started
Here is an example of how you can create and combine different screens and modules to build your very own Project RIGOR.
Note that we're using the pomodoro module which you need to install with pip install project-rigor-pomodoro.
If you want to create your own modules, I recommend checking it out here Pomodoro.
from dataclasses import dataclass
from rigor import Content, Module, App, MqttClient
from rigor.screens import MenuScreen, TimedScreen
from pomodoro import Pomodoro()
class Submenu(MenuScreen):
def __init__(self):
super().__init__("Submenu", ["Save", "Option2", "Option3", "Go Back"])
def on_enter(self):
if self.selection == "Save":
# TimedScreen will be shown for the specified time and then pop itself automatically
# replace will pop the current screen before pushing a new screen.
# So this is basically 'Save and Exit' with a success message
self.replace(TimedScreen(1, "Success", "Saved"))
if self.selection == "Go Back":
# pop the current screen to go back
self.pop()
@dataclass
class MyAppState:
# Pomodoro is a RIGOR module
pomodoro = Pomodoro()
class MyProjectRigor(MenuScreen[AppState]):
def __init__(self):
super().__init__("Home", ["Submenu", "Pomodoro"])
def on_enter(self):
if self.selection == "Submenu":
self.push(Submenu())
elif self.selection == "Pomodoro":
self.push(self.state.pomodoro)
mqtt_client = MqttClient("192.168.1.2", 1883)
app = App(mqtt_client, mqtt_client)
app.run(MyAppState(), MyProjectRigor())
Docker example
TODO
License
This project is licensed under the MIT License. See the LICENSE file for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file project_rigor-0.5.tar.gz.
File metadata
- Download URL: project_rigor-0.5.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6ecf6a061a9952405bc791b6afa6310da5e675796c823a88d4f372fd08332c2
|
|
| MD5 |
5b56ececaf1427e031be4259f51c0524
|
|
| BLAKE2b-256 |
ef45bb84289518d3f09efdf35a6eb15443023b06c831f19aa2699ca0af97db41
|
File details
Details for the file project_rigor-0.5-py3-none-any.whl.
File metadata
- Download URL: project_rigor-0.5-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49293b80569cc72414808c8969f91de4304d44f3f1c7a7689cce8899ecdcd73a
|
|
| MD5 |
dc4cfded9173fe799c4700b49953aa62
|
|
| BLAKE2b-256 |
21f262f4f6c5e4310bab33cec3980d3001343b16fcdf6de8c2bd85126363e3f9
|