{"id":16493203,"url":"https://github.com/teraskull/gramcontrol","last_synced_at":"2026-05-13T06:35:13.781Z","repository":{"id":121879937,"uuid":"228611890","full_name":"Teraskull/GramControl","owner":"Teraskull","description":"IoT device based on the Telegram API, hosted on Raspberry Pi.","archived":false,"fork":false,"pushed_at":"2020-08-17T10:26:21.000Z","size":77,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2025-01-11T20:44:01.099Z","etag":null,"topics":["gpio-pins","iot-device","pyqt5","python","python3","raspberry-pi","socket","tcp-server"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Teraskull.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-17T12:28:50.000Z","updated_at":"2020-08-17T10:34:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"99ed3d77-bf88-4d1d-9708-33651415a896","html_url":"https://github.com/Teraskull/GramControl","commit_stats":{"total_commits":25,"total_committers":1,"mean_commits":25.0,"dds":0.0,"last_synced_commit":"997492c2a29863ecc9f211e39be57bf4c66bbfb2"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Teraskull%2FGramControl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Teraskull%2FGramControl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Teraskull%2FGramControl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Teraskull%2FGramControl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Teraskull","download_url":"https://codeload.github.com/Teraskull/GramControl/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241329392,"owners_count":19944984,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gpio-pins","iot-device","pyqt5","python","python3","raspberry-pi","socket","tcp-server"],"created_at":"2024-10-11T14:08:50.028Z","updated_at":"2026-05-13T06:35:13.718Z","avatar_url":"https://github.com/Teraskull.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\r\n  \u003ca href=\"https://github.com/Teraskull/GramControl\"\u003e\u003cimg src=\"GramControl/icon.ico\"\u003e\u003c/a\u003e\r\n\u003c/p\u003e\r\n\u003ch1 align=\"center\"\u003e\r\n  GramControl\r\n\u003c/h1\u003e\r\n\r\n\u003cp align=\"center\"\u003e\r\n  IoT device based on the Python Socket module.\r\n\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003ca style=\"text-decoration:none\" href=\"https://github.com/Teraskull/GramControl\"\u003e\r\n    \u003cimg src=\"https://img.shields.io/badge/Version-v4.0.0-brightgreen.svg?style=flat-square\" alt=\"Version\" /\u003e\r\n  \u003c/a\u003e\r\n  \u003ca style=\"text-decoration:none\" href=\"https://github.com/Teraskull/GramControl\"\u003e\r\n    \u003cimg src=\"https://img.shields.io/badge/stability-unstable-yellow.svg?style=flat-square\" alt=\"Stability\" /\u003e\r\n  \u003c/a\u003e\r\n  \u003ca style=\"text-decoration:none\" href=\"https://github.com/Teraskull/GramControl/blob/master/LICENSE\"\u003e\r\n    \u003cimg src=\"https://img.shields.io/github/license/Teraskull/GramControl?style=flat-square\" alt=\"License\" /\u003e\r\n  \u003c/a\u003e\r\n\u003c/p\u003e\r\n\r\n**GramControl** is a Windows GUI client application for communicating with the GramBase server.\\\r\n**GramBase** is a [TCP/IP](https://docs.python.org/3/library/socket.html) Python server, that controls 3 separate outputs via the GPIO pins of a Raspberry Pi.\r\n\r\n### Hardware:\r\n- Raspberry Pi to run the server (Tested on Model 3B+)\r\n* Broadcom (BCM) pins used:\r\n  * gpio_1 - BCM(17)\r\n  * gpio_2 - BCM(27)\r\n  * gpio_3 - BCM(22)\r\n- SD Card with preinstalled [Raspberry Pi OS](https://www.raspberrypi.org/downloads/raspberry-pi-os/) (Desktop or Lite)\r\n- A Windows machine to run the application\r\n\r\n\r\n## Requirements for Windows:\r\n\r\n* Python 3.6+\r\n\r\n* [Environs](https://pypi.org/project/environs/) library\r\n    ```bash\r\n    \u003e pip install environs\r\n    ```\r\n* [PyQt5](https://pypi.org/project/PyQt5/) GUI framework\r\n    ```bash\r\n    \u003e pip install pyqt5\r\n    ```\r\n\r\n\r\n### Requirements for Raspberry Pi OS:\r\n\r\n* Python 3.6+\r\n\r\n* [Environs](https://pypi.org/project/environs/) library\r\n    ```bash\r\n    $ pip install environs\r\n    ```\r\n* [GPIO Zero](https://pypi.org/project/gpiozero/) library (Preinstalled on Raspberry Pi OS)\r\n    ```bash\r\n    $ pip install gpiozero\r\n    ```\r\n\r\n## Getting started\r\n\r\n\r\n```bash\r\n    $ git clone https://github.com/Teraskull/GramControl\r\n\r\n    $ cd GramControl\r\n```\r\n\r\nCreate an `.env` file in the root of both `GramBase` and `GramControl` directories, paste the following properties, and replace the `HOST` and `PORT` with your own values.\r\n\r\n```python\r\nHOST = 'Your Raspberry Pi IP address'\r\nPORT = 'Any port \u003e1024'\r\n```\r\n\r\n\r\nGenerally, you don't need to configure anything in the scripts, everything should work after you setup your `.env` files.\r\n\r\n\r\n## User manual\r\n\r\nOnce everything is set up, navigate to the directories and run the scripts.\r\nFirst, run the server:\r\n#### On Raspberry Pi OS:\r\n  ```bash\r\n$ cd /path/to/script/GramBase/\r\n$ python server.py\r\n  ```\r\nNext, run the client application:\r\n#### On Windows:\r\n  ```bash\r\n\u003e cd /path/to/script/GramControl/\r\n\u003e python client.py\r\n  ```\r\n\r\n### Windows Application description\r\n\r\nFunctions of each button in the Windows application.\r\n\r\n| Label | Switch |\r\n| ------ | ------ |\r\n| Light One | Toggle first pin. |\r\n| Light Two | Toggle second pin. |\r\n| Light Three | Toggle third pin. |\r\n| Default Names | Use predefined names. |\r\n\r\n## Functions\r\n  - The preinstalled Python [JSON](https://docs.python.org/3/library/json.html) library is used to store variables. If the Client/Server is shut down while some GPIO pins are active, their state will be saved and will be restored next time you run the scripts.\r\n  - Bottom left bulb icon lights up if there is connection with the server.\r\n  - Switch light and dark themes with the bottom left moon icon.\r\n\r\n### To-dos\r\n - ✔ Switch to JSON serialization\r\n - Add more GPIO outputs(If needed)\r\n - Make GPIO pin state restoring optional\r\n - ✔ Add Settings menu\r\n - ✔ Add ability to edit button labels\r\n\r\n## License\r\n\r\nThis software is available under the following licenses:\r\n\r\n  * GPL-3.0\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteraskull%2Fgramcontrol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fteraskull%2Fgramcontrol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteraskull%2Fgramcontrol/lists"}