# Screen Sync
## About
Screen Sync is a Python application designed to synchronize the colors of your computer screen with various smart light bulbs, including Tuya WiFi bulbs. It captures the dominant colors from your screen and sets your smart bulbs to match these colors in real-time, enhancing your entertainment and work environment with ambient lighting.
[Video of ScreenSync v2 in action
](https://youtu.be/yRZ50QbaHPo)
[![Upload Python Package](https://github.com/dewgenenny/ScreenSync_v2/actions/workflows/python-publish.yml/badge.svg)](https://github.com/dewgenenny/ScreenSync_v2/actions/workflows/python-publish.yml)
![Photo of ScreenSync in action](/screensync/assets/IMG_0877.JPG)
![Main ScreenSync window](screensync/assets/img.png)
![img.png](screensync/assets/settings_screenshot.png)
## Features
- Real-time screen color synchronization.
- Support for multiple bulb types (Currently for Tuya WiFi bulbs and bulbs via Zigbee2MQTT).
- Customizable settings for color processing and bulb control.
- Per-bulb type refresh rate settings
- Multiple zone sampling
- User-friendly GUI for easy interaction.
## Installing
There are two ways to install ScreenSync - either via pypi / pip3 or via downloading a standalone executable for windows.
### Downloading Standalone
Go to the [releases](https://github.com/dewgenenny/ScreenSync_v2/releases/) page, there you can find a Windows executable that has been created using pyinstaller. Hopefully soon I'll also have time to share pre-built binaries for Mac.
If you'd like to create the executable yourself, you can clone this repository then run the following command to create the executable:
`pyinstaller --onefile --windowed --icon=screensync/assets/ScreenSync.ico --name=ScreenSync --add-data="screensync/assets;screensync/assets" screensync/ui.py
`
### Installation via pip
For installing via pip, you can use the following command:
`pip3 install ScreenSync`
Once installed via pip, you can simply run with `ScreenSync` on the command line
### First Run
On the first run, ScreenSync will create a config.ini in an appropriate directory (using the awesome platformdirs to figure out the right place).
Once open you can add bulbs via the settings page.
#### Tuya Bulbs
To add your Tuya bulbs, you'll need a 'Device_ID' as well as a 'LocalKey' and an IP address of each bulb.
If you don't already know the DeviceID and LocalKey, you can use the very awesome 'tinytuya' python module to discover bulbs and get their associated information.
You can find out more information and instructions here: [https://github.com/jasonacox/tinytuya](https://github.com/jasonacox/tinytuya)
ScreenSync v2 uses the tinytuya library for communicating with Tuya bulbs, it's awesome!
#### Zigbee2MQTT based bulbs
For Zigbee2MQTT based bulbs, you just need to ensure that the MQTT server information is filled out completely as well as the information on a per bulb basis.
To add a Zigbee2MQTT based bulb, you just need to add the topic that the bulb is accessible via. Typically this would be something like `zigbee2mqtt/<friendly name>/set`. For example for my Garden Lights, it's `zigbee2mqtt/Garden_Lights/set`
#### MagicHome based bulbs
These bulbs just require knowing the IP address of the bulb / LED strip that you'd like to connect to.
## To-Dos
- Optimise MSS code to use multiprocessing // speed up sampling. We need to get to 50+ samples/sec as this seems to be what Tuya bulbs can handle
- Optimise latency Sample->Update
- Add ability to customise sampling
- Improve UI
- Add additional common bulb types
[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/dewgenenny)
Raw data
{
"_id": null,
"home_page": "https://github.com/dewgenenny/ScreenSync",
"name": "ScreenSync",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "",
"keywords": "",
"author": "Tom George",
"author_email": "tom@penberth.com",
"download_url": "https://files.pythonhosted.org/packages/13/58/cc741c8a4eb790914c48ea037334bc8e2fa62e3a3901155fb2ae4521de4d/ScreenSync-0.0.6.tar.gz",
"platform": null,
"description": "# Screen Sync\n\n## About\nScreen Sync is a Python application designed to synchronize the colors of your computer screen with various smart light bulbs, including Tuya WiFi bulbs. It captures the dominant colors from your screen and sets your smart bulbs to match these colors in real-time, enhancing your entertainment and work environment with ambient lighting.\n\n[Video of ScreenSync v2 in action\n](https://youtu.be/yRZ50QbaHPo)\n\n\n\n[![Upload Python Package](https://github.com/dewgenenny/ScreenSync_v2/actions/workflows/python-publish.yml/badge.svg)](https://github.com/dewgenenny/ScreenSync_v2/actions/workflows/python-publish.yml)\n\n![Photo of ScreenSync in action](/screensync/assets/IMG_0877.JPG)\n\n\n\n![Main ScreenSync window](screensync/assets/img.png)\n\n![img.png](screensync/assets/settings_screenshot.png)\n\n\n\n## Features\n- Real-time screen color synchronization.\n- Support for multiple bulb types (Currently for Tuya WiFi bulbs and bulbs via Zigbee2MQTT).\n- Customizable settings for color processing and bulb control.\n- Per-bulb type refresh rate settings\n- Multiple zone sampling\n- User-friendly GUI for easy interaction.\n\n## Installing\n\nThere are two ways to install ScreenSync - either via pypi / pip3 or via downloading a standalone executable for windows.\n\n### Downloading Standalone\n\nGo to the [releases](https://github.com/dewgenenny/ScreenSync_v2/releases/) page, there you can find a Windows executable that has been created using pyinstaller. Hopefully soon I'll also have time to share pre-built binaries for Mac. \n\nIf you'd like to create the executable yourself, you can clone this repository then run the following command to create the executable:\n\n`pyinstaller --onefile --windowed --icon=screensync/assets/ScreenSync.ico --name=ScreenSync --add-data=\"screensync/assets;screensync/assets\" screensync/ui.py\n`\n\n### Installation via pip\n\nFor installing via pip, you can use the following command:\n\n`pip3 install ScreenSync`\n\nOnce installed via pip, you can simply run with `ScreenSync` on the command line\n\n\n### First Run \n\nOn the first run, ScreenSync will create a config.ini in an appropriate directory (using the awesome platformdirs to figure out the right place).\n\nOnce open you can add bulbs via the settings page. \n\n#### Tuya Bulbs\n\nTo add your Tuya bulbs, you'll need a 'Device_ID' as well as a 'LocalKey' and an IP address of each bulb. \n\nIf you don't already know the DeviceID and LocalKey, you can use the very awesome 'tinytuya' python module to discover bulbs and get their associated information.\n\nYou can find out more information and instructions here: [https://github.com/jasonacox/tinytuya](https://github.com/jasonacox/tinytuya) \n\nScreenSync v2 uses the tinytuya library for communicating with Tuya bulbs, it's awesome!\n\n#### Zigbee2MQTT based bulbs\n\nFor Zigbee2MQTT based bulbs, you just need to ensure that the MQTT server information is filled out completely as well as the information on a per bulb basis.\n\nTo add a Zigbee2MQTT based bulb, you just need to add the topic that the bulb is accessible via. Typically this would be something like `zigbee2mqtt/<friendly name>/set`. For example for my Garden Lights, it's `zigbee2mqtt/Garden_Lights/set`\n\n#### MagicHome based bulbs\n\nThese bulbs just require knowing the IP address of the bulb / LED strip that you'd like to connect to.\n\n\n## To-Dos\n\n- Optimise MSS code to use multiprocessing // speed up sampling. We need to get to 50+ samples/sec as this seems to be what Tuya bulbs can handle\n- Optimise latency Sample->Update\n- Add ability to customise sampling\n- Improve UI\n- Add additional common bulb types \n\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/dewgenenny)\n",
"bugtrack_url": null,
"license": "",
"summary": "A Python tool for synchronizing screen colors with smart bulbs.",
"version": "0.0.6",
"project_urls": {
"Homepage": "https://github.com/dewgenenny/ScreenSync"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "174da9e10b7ac082e83399f6a631f87c8a5e219edb5cbbfee9289d9cdf9b7b4d",
"md5": "d24dc75a6fa522132e01248c81f729b7",
"sha256": "80db9bd25592dddc077a8c1f6180b1626595909194460b1762bdff5f7770f8bc"
},
"downloads": -1,
"filename": "ScreenSync-0.0.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d24dc75a6fa522132e01248c81f729b7",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 1060562,
"upload_time": "2023-12-11T21:27:14",
"upload_time_iso_8601": "2023-12-11T21:27:14.589962Z",
"url": "https://files.pythonhosted.org/packages/17/4d/a9e10b7ac082e83399f6a631f87c8a5e219edb5cbbfee9289d9cdf9b7b4d/ScreenSync-0.0.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1358cc741c8a4eb790914c48ea037334bc8e2fa62e3a3901155fb2ae4521de4d",
"md5": "ad9d9512ac18f96cf721f86c8bfc8883",
"sha256": "e7ba839fa07e22e6b0821c4334dd5fdc8211aa37e674975c9f79eb44f3e98c5d"
},
"downloads": -1,
"filename": "ScreenSync-0.0.6.tar.gz",
"has_sig": false,
"md5_digest": "ad9d9512ac18f96cf721f86c8bfc8883",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 1055002,
"upload_time": "2023-12-11T21:27:16",
"upload_time_iso_8601": "2023-12-11T21:27:16.024158Z",
"url": "https://files.pythonhosted.org/packages/13/58/cc741c8a4eb790914c48ea037334bc8e2fa62e3a3901155fb2ae4521de4d/ScreenSync-0.0.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-12-11 21:27:16",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "dewgenenny",
"github_project": "ScreenSync",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "screensync"
}