Loading 3D model… large boards can take a moment.
A comprehensive IoT control system for camper vans built with .NET 10 and Blazor WebAssembly. Monitor and control your van's systems including water tanks, LPG, lighting, heating, and more - all from your phone, tablet, or computer.
git clone https://github.com/yourusername/vandaemon.git
cd vandaemon
docker compose up -d
For detailed Docker usage, configuration, and troubleshooting, see DOCKER.md.
./build.sh # Linux/Mac
build.bat # Windows
cd src/Backend/VanDaemon.Api
dotnet run
cd src/Frontend/VanDaemon.Web
dotnet run
VanDaemon/
├── src/
│ ├── Backend/
│ │ ├── VanDaemon.Api/ # REST API and SignalR hubs
│ │ ├── VanDaemon.Core/ # Domain models and interfaces
│ │ ├── VanDaemon.Application/ # Business logic services
│ │ ├── VanDaemon.Infrastructure/ # Data access and external services
│ │ └── VanDaemon.Plugins/ # Hardware integration plugins
│ │ ├── Abstractions/ # Plugin interfaces
│ │ ├── Simulated/ # Simulated hardware (for testing)
│ │ ├── Modbus/ # Modbus integration
│ │ ├── I2C/ # I2C sensor integration
│ │ └── Victron/ # Victron Cerbo integration
│ └── Frontend/
│ └── VanDaemon.Web/ # Blazor WebAssembly application
├── tests/ # Unit and integration tests
├── docs/ # Documentation
├── docker/ # Docker configuration
└── .github/workflows/ # CI/CD pipelines
VanDaemon follows a clean architecture pattern with clear separation of concerns:
See PROJECT_PLAN.md for detailed architecture documentation.
VanDaemon supports multiple hardware integration methods through its plugin system:
See docs/deployment/plugin-development.md for instructions on creating custom hardware plugins.
Configure the system through the web interface Settings page or by editing the configuration files:
appsettings.json - API configurationCustomize the van diagram to match your vehicle:
src/Frontend/VanDaemon.Web/wwwroot/diagrams/VanDaemon supports multiple deployment options:
Deploy VanDaemon to the cloud for remote access as a single combined container:
# Install Fly.io CLI
curl -L https://fly.io/install.sh | sh
# Login and deploy
flyctl auth login
flyctl apps create vandaemon
flyctl deploy
Access your application at:
//api/hubs/healthThe Fly.io deployment uses a single container with:
/health endpointFor detailed instructions including GitHub Actions auto-deployment, see DEPLOYMENT.md
# Update system
sudo apt update && sudo apt upgrade -y
# Install Docker (includes Docker Compose V2)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Add user to docker group
sudo usermod -aG docker $USER
git clone https://github.com/yourusername/vandaemon.git
cd vandaemon
docker compose up -d
For GPIO/I2C access, you may need to:
# Enable I2C
sudo raspi-config
# Select: Interface Options -> I2C -> Enable
# Add user to i2c group
sudo usermod -aG i2c $USER
# Create systemd service
sudo nano /etc/systemd/system/vandaemon.service
Add the following content:
[Unit]
Description=VanDaemon Control System
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/home/pi/vandaemon
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
[Install]
WantedBy=multi-user.target
Enable and start:
sudo systemctl enable vandaemon
sudo systemctl start vandaemon
The API is documented with OpenAPI/Swagger. Access the interactive documentation at:
GET /api/tanks - Get all tanksGET /api/tanks/{id}/level - Get current tank levelPOST /api/tanks/refresh - Refresh all tank levelsPUT /api/tanks/{id} - Update tank configurationGET /health - Health check endpoint (returns status and timestamp)SignalR hub for real-time telemetry updates:
The hub broadcasts tank levels, control states, and alerts to all connected clients.
# Build solution
dotnet build VanDaemon.sln
# Run tests
dotnet test VanDaemon.sln
# Run specific project
cd src/Backend/VanDaemon.Api
dotnet run
# Run all tests
dotnet test
# Run with coverage
dotnet test --collect:"XPlat Code Coverage"
See PROJECT_PLAN.md for the detailed development roadmap.
Issue: Cannot connect to API from web interface
appsettings.jsonIssue: Docker containers won't start
docker compose logs to check logsIssue: Sensors not reading values
Issue: SignalR WebSocket connections failing
curl https://your-app.fly.dev/healthIssue: Fly.io deployment health checks failing
/health endpoint returns 200 OKflyctl logs --app vandaemonflyctl ssh console -C "supervisorctl status"Issue: Frontend making requests to localhost in production
builder.HostEnvironment.BaseAddressThis project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ for the camper van community
No comments yet. Be the first to ask about this board.