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.5.tar.gz (8.7 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.5-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

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

Hashes for project_rigor-0.5.tar.gz
Algorithm Hash digest
SHA256 d6ecf6a061a9952405bc791b6afa6310da5e675796c823a88d4f372fd08332c2
MD5 5b56ececaf1427e031be4259f51c0524
BLAKE2b-256 ef45bb84289518d3f09efdf35a6eb15443023b06c831f19aa2699ca0af97db41

See more details on using hashes here.

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

Hashes for project_rigor-0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 49293b80569cc72414808c8969f91de4304d44f3f1c7a7689cce8899ecdcd73a
MD5 dc4cfded9173fe799c4700b49953aa62
BLAKE2b-256 21f262f4f6c5e4310bab33cec3980d3001343b16fcdf6de8c2bd85126363e3f9

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