PawVision is a Raspberry Pi-based "Pet TV" system that plays random videos for your pet on an HDMI monitor with a pet-friendly interface and a modern web based control interface.
curl -sSL https://raw.githubusercontent.com/mkroemer/pawvision/main/install.sh | bashThen open http://<pi-ip>:5001 in your browser.
Complete documentation is available at: PawVision Docs
- 🏠 Home - Overview and quick start
- ⚙️ Configuration Guide - Complete setup and configuration
- � API Reference - REST API documentation
- 🔧 Hardware Setup - Hardware connection and configuration
- � Development - Development and testing guide
- 🚀 Release Notes - Latest updates and changes
- Smart Video Playback: Local video library with random selection and timing
- Night Mode: Automatic volume control during sleeping hours
- Physical Controls: GPIO button with configurable behavior
- Motion Detection: Optional motion sensor integration
- Web Interface: Modern, human-friendly control panel
- Scheduling: Automated playback at set times
- Statistics: Track viewing patterns and usage
- API Integration: REST endpoints for Home Assistant and other systems
- Dogs and cats who enjoy visual entertainment
- Pet owners who want to keep pets engaged while away
- Home automation enthusiasts
- Raspberry Pi hobbyists
This project is licensed under the GNU AGPL v3 - see the LICENSE file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
If you find PawVision helpful, please star the repository and share it with other pet owners!
PawVision uses pytest for all unit and integration tests. All test files are located in the tests/ directory and are organized by domain (e.g., config, statistics, web interface).
To run all tests:
python run_tests.py --allTo run a specific test file:
python run_tests.py --file tests/test_config.pyTo run a specific test class:
python run_tests.py --class TestConfigManagerTo run a specific test class in a file:
python run_tests.py --file tests/test_config.py --class TestConfigManagerAll tests should pass before submitting changes. Logging errors during test shutdown are harmless and only occur in test environments.
- Place new tests in the appropriate domain file in
tests/ - Use the
unittestframework (pytest will auto-discover) - Test files should be named
test_*.py - Use temporary files and directories for isolation
- Mock hardware and external dependencies for reliability
See docs/configuration.md for setup, and docs/api.md for API details. For test development, see the section above and the developer notes in each test file.
