# ESPMega Light Show
This is a program made for the ESPMega PLCs for easily programming light show and running light show script
## Features
- User Interface for configuring controller<br/>
![](/images/setup_window.png)
- Light Grid Generator<br/>
![](/images/generate_map.png)
- Easy Clickable Light Programming<br/>
![](/images/mainwindow.png)
- Dynamic Physical Light Configuration<br/>
![](/images/light_config.png)
- Custom Script using Python<br/>
![](/images/run_script.png)
- BPM Counter<br/>
![](/images/bpm_counter.png)
- Quick Load Preset<br/>
![](/images/quickload.png)
## Installation
- For Windows, run the following command in a powershell windows with admin rights
```powershell
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/SiwatINC/espmega-lightshow/main/installer_win.ps1'))
```
- Ubuntu Linux
```bash
bash <(curl -s https://raw.githubusercontent.com/SiwatINC/espmega-lightshow/main/installer_ubuntu.sh)
```
## Running
- The program can be run from the CLI using the command:
```bash
python -m espmega_lightshow
```
- The program can also be run from the desktop/startmenu shortcut after installation.
## Scripting
This template script can be used to program custom lightshow
```python
from espmega_lightshow.scripting import UserScript
class CustomUserScript (UserScript):
def draw_frame(self, current_time: float):
# This function is called every frame
# You can use self.rows and self.columns to get the number of rows and columns
# You can use self.set_tile_state(row, column, state) to set the state of a light at row, column
# You can use self.get_tile_state(row, column) to get the state of a light at row, column
# You can use current_time to get the current time elapsed in seconds
# You can use self.frame_count to get the number of frames that have passed
pass
```
The script can be run by going to **File** → **Run Script**
Raw data
{
"_id": null,
"home_page": "https://github.com/SiwatINC/espmega-lightshow",
"name": "espmega-lightshow",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "light mqtt espmega",
"author": "Siwat Sirichai",
"author_email": "siwat@siwatinc.com",
"download_url": "https://files.pythonhosted.org/packages/59/41/1c0e42904f6d6261dcabe14d07debac2e7aacac7687c5529ff1ffcc7c5c1/espmega_lightshow-4.11.tar.gz",
"platform": null,
"description": "# ESPMega Light Show\r\nThis is a program made for the ESPMega PLCs for easily programming light show and running light show script\r\n\r\n## Features\r\n- User Interface for configuring controller<br/>\r\n![](/images/setup_window.png)\r\n- Light Grid Generator<br/>\r\n![](/images/generate_map.png)\r\n- Easy Clickable Light Programming<br/>\r\n![](/images/mainwindow.png)\r\n- Dynamic Physical Light Configuration<br/>\r\n![](/images/light_config.png)\r\n- Custom Script using Python<br/>\r\n![](/images/run_script.png)\r\n- BPM Counter<br/>\r\n![](/images/bpm_counter.png)\r\n- Quick Load Preset<br/>\r\n![](/images/quickload.png)\r\n\r\n## Installation\r\n- For Windows, run the following command in a powershell windows with admin rights\r\n ```powershell\r\n Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/SiwatINC/espmega-lightshow/main/installer_win.ps1'))\r\n ```\r\n- Ubuntu Linux\r\n ```bash\r\n bash <(curl -s https://raw.githubusercontent.com/SiwatINC/espmega-lightshow/main/installer_ubuntu.sh)\r\n ```\r\n\r\n## Running\r\n- The program can be run from the CLI using the command:\r\n```bash\r\npython -m espmega_lightshow\r\n```\r\n- The program can also be run from the desktop/startmenu shortcut after installation.\r\n\r\n## Scripting\r\nThis template script can be used to program custom lightshow\r\n```python\r\nfrom espmega_lightshow.scripting import UserScript\r\nclass CustomUserScript (UserScript):\r\n def draw_frame(self, current_time: float):\r\n # This function is called every frame\r\n # You can use self.rows and self.columns to get the number of rows and columns\r\n # You can use self.set_tile_state(row, column, state) to set the state of a light at row, column\r\n # You can use self.get_tile_state(row, column) to get the state of a light at row, column\r\n # You can use current_time to get the current time elapsed in seconds\r\n # You can use self.frame_count to get the number of frames that have passed\r\n pass\r\n```\r\n\r\nThe script can be run by going to **File** → **Run Script**\r\n",
"bugtrack_url": null,
"license": "Apache 2.0",
"summary": "",
"version": "4.11",
"project_urls": {
"Homepage": "https://github.com/SiwatINC/espmega-lightshow"
},
"split_keywords": [
"light",
"mqtt",
"espmega"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "59411c0e42904f6d6261dcabe14d07debac2e7aacac7687c5529ff1ffcc7c5c1",
"md5": "0bb4c49f74b811bab3b45f2ae9e4de33",
"sha256": "18f1e64fb174e1af5d28d68d49e604e735170f0f71ec35e99cc210a45fb0a37f"
},
"downloads": -1,
"filename": "espmega_lightshow-4.11.tar.gz",
"has_sig": false,
"md5_digest": "0bb4c49f74b811bab3b45f2ae9e4de33",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 44026,
"upload_time": "2023-12-14T19:30:14",
"upload_time_iso_8601": "2023-12-14T19:30:14.653610Z",
"url": "https://files.pythonhosted.org/packages/59/41/1c0e42904f6d6261dcabe14d07debac2e7aacac7687c5529ff1ffcc7c5c1/espmega_lightshow-4.11.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-12-14 19:30:14",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "SiwatINC",
"github_project": "espmega-lightshow",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "espmega-lightshow"
}