Skip to content

Repository files navigation

AGPL v3

PawVision Logo

🐾 PawVision

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.

🚀 Quick Start

curl -sSL https://raw.githubusercontent.com/mkroemer/pawvision/main/install.sh | bash

Then open http://<pi-ip>:5001 in your browser.

📚 Documentation

Complete documentation is available at: PawVision Docs

✨ Key Features

  • 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

🎯 Perfect For

  • Dogs and cats who enjoy visual entertainment
  • Pet owners who want to keep pets engaged while away
  • Home automation enthusiasts
  • Raspberry Pi hobbyists

📄 License

This project is licensed under the GNU AGPL v3 - see the LICENSE file for details.

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

⭐ Support

If you find PawVision helpful, please star the repository and share it with other pet owners!

ko-fi

🧪 Running Tests

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 --all

To run a specific test file:

python run_tests.py --file tests/test_config.py

To run a specific test class:

python run_tests.py --class TestConfigManager

To run a specific test class in a file:

python run_tests.py --file tests/test_config.py --class TestConfigManager

All tests should pass before submitting changes. Logging errors during test shutdown are harmless and only occur in test environments.

🛠️ Writing Tests

  • Place new tests in the appropriate domain file in tests/
  • Use the unittest framework (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

🧑‍💻 Developer Documentation

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.

About

Pet TV, Powered by Paws

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages