WiZio Light Screen Sync is a C++ application that dynamically synchronizes the colors of your WiZ smart lights with the dominant colors of your computer screen. This project is designed for users who want an immersive lighting experience that matches their screen's content in real-time.
- Dynamic Color Sync: Automatically calculates the dominant colors of your screen and updates the WiZ lights accordingly.
- Screen Region Selection: Allows users to select specific regions of the screen to monitor for color changes.
- Multi-Light Support: Assign different WiZ lights to specific halves of the screen (left and right) or use a single light for the entire screen.
- Brightness and Color Adjustment: Includes options for dynamic brightness and color boost to enhance the visual effect.
- Settings Persistence: Save and load light configurations and user preferences to/from a settings file.
- Customizable Controls: Adjust brightness, color boost, and darkness threshold directly from the GUI.
- Presets: Save, load, rename and delete custom preset settings easily.
- Multi-Monitor Support: Select which monitor to capture from.
- WiZ Smart Lights: Compatible with WiZ smart bulbs.
- C++ Development Environment: Requires a compiler that supports C++17 or later.
- Libraries:
- OpenCV: For screen capture and image processing.
- Boost.Asio: For network communication.
- Qt: For the GUI.
- nlohmann/json: For settings management.
-
Download the Installer
-
Follow the on-screen instructions to install
-
Launch the program
-
Clone the repository:
git clone https://github.com/CmdrAvegan/wiz-light-screen-sync.git cd wiz-light-screen-sync
-
Install the required libraries:
- Follow the installation instructions for OpenCV.
- Install Boost libraries.
- Install Qt and configure your environment.
-
Build the project:
mkdir build && cd build cmake .. make
-
Run the application:
./WiZLightScreenSync
- Launch the application.
- Add your WiZ lights by using the discover button or by entering their name and IP address.
- Remove any light you do not wish to use from the list.
- (Optional) Use the Select Region button to define a specific area of the screen to monitor.
- (Optional) Use the dropdown menus to assign lights to the left and right halves of the screen.
- Click Start to begin syncing.
- Adjust brightness, color boost, and other settings using the provided sliders and checkboxes.
Settings are saved in a JSON file named settings.json
in the application's directory. This file includes:
- Light names and IP addresses.
- Brightness, color boost, and darkness threshold values.
You can modify this file manually or reset settings to defaults using the Reset to Defaults button in the GUI.
Presets are saved in the 'presets' directory as .json files and can be modified manually if needed.
- GUI Updates: Slider value labels appear blank before adjusting the slider.
- Maximum Brightness Value: Currently does not override the maximum brightness of the light.
- Performance: May exhibit slight delays on lower-spec systems during real-time processing.
- Enhanced pattern and motion analysis for improved light effects.
- Improved brightness and darkness options.
- Additional region-selection options.
This project is licensed under the MIT License.
Contributions are welcome! Please open an issue or submit a pull request if you have ideas for improvements or bug fixes.
For questions or feedback, feel free to reach out in the discussions.