Skip to main content

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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

project_rigor-0.3-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file project_rigor-0.3-py3-none-any.whl.

File metadata

  • Download URL: project_rigor-0.3-py3-none-any.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for project_rigor-0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 fed7a9e2fde367bbc3bd99e0688a55988463616837c75fbc159fc63b618e9213
MD5 a11a60e925c4ab0b422fe4ce5dc2e366
BLAKE2b-256 ee358f2972c9e4e7d36543ba55afedc7a75db9807aad9acb1fdaada6c562b798

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page