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 Distribution

project_rigor-0.1.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

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

project_rigor-0.1-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file project_rigor-0.1.tar.gz.

File metadata

  • Download URL: project_rigor-0.1.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for project_rigor-0.1.tar.gz
Algorithm Hash digest
SHA256 97fe048999a9a99882a3d6daa04d3c46bb3b71c1eb5430f2802feff40379b841
MD5 d45cbb860dd95697489b71ffedface69
BLAKE2b-256 8e1b5aff097c07e2e676f4ae3d8ce347d6953ce422c2100de82476ca987532d1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: project_rigor-0.1-py3-none-any.whl
  • Upload date:
  • Size: 11.5 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 416f69e8ccadcb70386a893746e8291967c4e7a03375b5b69d6251ea9519ae27
MD5 c6c526b291b71840fbb4648573cdfcf1
BLAKE2b-256 e9b25c22baa22dce0c1d6f119fd15a6205b24cbff86c8e5c3d27722f1230611c

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