Control your RV's Lippert OneControl system directly from Home Assistant!
-
π‘ Light Control: Turn RV lights ON/OFF
- Ceiling lights, porch lights, awning lights, scare lights, and more
- Automatic discovery of installed lights
- Real-time state sync from broadcasts
-
π Tank Sensors: Monitor tank levels
- Fresh Water
- Grey Water
- Black Water
- LP Gas (Propane)
-
π Battery Voltage: Real-time battery monitoring
-
β‘ Generator Control: Start/stop your generator
- Power switch (ON/OFF)
- State monitoring (Off, Priming, Starting, Running, Stopping)
- Hour meter tracking
-
π₯ Water Heaters: Control gas and electric water heaters
- Gas Water Heater (ON/OFF)
- Electric Water Heater (ON/OFF)
- Real-time state sync from broadcasts
-
π§ Water Pump: Control your RV's water pump
- ON/OFF control
- Real-time state sync from broadcasts
-
ποΈ Leveler Control: Auto Level, Retract, and Cancel buttons
- Requires ACC power and parking brake engaged
- One-shot button entities (not toggle switches)
-
π Auto-Discovery: Automatically finds devices installed in your RV
- No manual configuration of device IDs needed
- Device selection UI during setup - choose which devices to add
- Rediscover devices anytime via Configure menu
- Existing devices preserved when rediscovering
-
π‘ Real-Time State Sync: Device states update automatically
- Lights, water heaters, and water pump sync from OneControl broadcasts
- ~7 second polling interval for fast state updates
- Changes from the OneControl app reflect in Home Assistant
- Open HACS in Home Assistant
- Click the three dots in the top right
- Select "Custom repositories"
- Add
https://github.com/manos/HomeAssistant-Lippert-OneControl-Integrationas Integration - Install "Lippert OneControl"
- Restart Home Assistant
- Copy
custom_components/lippert_onecontrolto your Home Assistant'scustom_componentsdirectory - Restart Home Assistant
- Go to Settings β Devices & Services
- Click + Add Integration
- Search for "Lippert OneControl"
- Enter your controller's IP address (default:
192.168.1.1) - The integration will auto-discover your installed devices
- Select which devices you want to add (all are selected by default)
If you add new devices to your RV or update the integration:
- Go to Settings β Devices & Services β Integrations
- Find Lippert OneControl β click Configure
- Select π Rediscover Devices
- New devices will be shown for selection
- Your existing devices and dashboard configurations are preserved
- Go to Settings β Devices & Services β Integrations
- Find Lippert OneControl β click Configure
- Select π View Current Devices
The OneControl controller runs on the RV's internal WiFi network:
- IP:
192.168.1.1 - Port:
6969
Your Home Assistant instance must be able to reach this IP.
The easiest way to integrate OneControl with your home network is using a Raspberry Pi as a network bridge:
βββββββββββββββ WiFi ββββββββββββββββ Ethernet βββββββββββββββ
β OneControl β βββββββββββββΊ β Raspberry Pi β ββββββββββββββΊ β Home β
β Controller β 192.168.1.x β (bridge) β Your LAN β Assistant β
β 192.168.1.1 β ββββββββββββββββ βββββββββββββββ
βββββββββββββββ
Setup:
- Connect Pi's WiFi to your RV's OneControl network
- Connect Pi's Ethernet to your home network (or run HA directly on the Pi)
- Enable IP forwarding on the Pi, and tell your network how to reach 192.168.1.1 (static route to the Ethernet interface IP)
- Home Assistant can now reach
192.168.1.1through the Pi
This approach lets Home Assistant stay on your main network while accessing the RV's isolated OneControl system.
- Run Home Assistant directly on a Pi connected to RV WiFi
- Use a travel router to bridge networks
- Dual-interface setup on your HA host
The integration automatically discovers devices based on their function ID. Common device types include:
| Function ID | Device Name |
|---|---|
| 32 | Kitchen Ceiling Light |
| 33 | Kitchen Sconce Light |
| 41 | Living Room Ceiling Light |
| 48 | Porch Light |
| 49 | Awning Light |
| 50 | Outdoor Light |
| 57 | Bedroom Light |
| 58 | Living Room Light |
| 59 | Kitchen Light |
| 63 | Bed Ceiling Light |
| 122 | Scare Light |
| Function ID | Device Name |
|---|---|
| 67 | Fresh Tank |
| 68 | Grey Tank |
| 69 | Black Tank |
| 70 | LP Tank |
| 176 | LP Tank (alternate) |
| Function ID | Device Name |
|---|---|
| 3 | Gas Water Heater |
| 4 | Electric Water Heater |
| 107 | Water Tank Heater |
| Function ID | Device Name |
|---|---|
| 5 | Water Pump |
| Function ID | Device Name |
|---|---|
| 95 | Generator |
Note: Devices are identified by their firmware function ID (stable across reboots). Internal bus counters (volatile addresses) are resolved dynamically at runtime from live registration broadcasts. This means the integration automatically adapts when the OneControl controller reassigns counters after a reboot or power cycle -- no reconfiguration needed.
This integration uses the reverse-engineered Lippert OneControl protocol:
- COBS-encoded frames over TCP
- CRC-8/MAXIM checksums
- TEA cipher authentication for device control
- RelayBasicLatchingStatus2 broadcasts for state synchronization
For technical details, see the OneControl-RV-C-Protocol repository.
Leveler controls (Auto Level, Retract, Cancel) are exposed as button entities. These trigger one-shot actions identical to pressing buttons on the physical panel or app. Ensure the area around and under the RV is clear before activating leveling commands. The leveling system has its own built-in safety logic (e.g., parking brake and ACC requirements).
The following device types are intentionally NOT exposed:
- Slides - Collision/pinch risk, requires continuous visual confirmation
- Awning motor - Collision risk, requires continuous visual confirmation
These require physical observation during the entire operation and are not suitable for remote control.
- Verify Home Assistant can reach
192.168.1.1(ping test) - If using a Pi bridge, ensure the bridge is running and routing is configured
- Check that the controller IP is correct
- Ensure no firewall is blocking port 6969
- The integration uses automatic retry (2 attempts) for commands
- If commands fail, try again after a few seconds
- The OneControl app should be closed (it may hold the connection)
- If a device consistently fails after a controller reboot, check logs for "No counter mapped" -- the live device map refreshes every 7 seconds and should self-heal
- Device states sync from broadcasts every ~7 seconds
- Toggle the device from OneControl app and wait for HA to update
- If state is stuck, restart Home Assistant
- Tank levels and battery voltage are polled every 7 seconds
- Some sensors require the RV's electrical system to be active
- Ensure your RV's OneControl system is powered on
- Try running rediscovery after a few seconds
- Check HA logs for connection errors
Contributions are welcome! Please see the protocol documentation for technical details.
This project uses semantic versioning. Every push to main must bump the version in custom_components/lippert_onecontrol/manifest.json so that HACS detects the update and offers it to users.
- Patch (
0.2.0β0.2.1): Bug fixes, minor improvements - Minor (
0.2.1β0.3.0): New features, new device support - Major (
0.3.0β1.0.0): Breaking changes
After bumping the version and pushing, create a matching GitHub release (e.g., v0.2.1) so HACS can present it in the update UI.
MIT License - see LICENSE for details.