homebridge-tasmota-tv-mount
v1.1.3
Published
Homebridge plugin that exposes a Tasmota-controlled motorized TV mount as a Window Covering accessory
Maintainers
Readme
homebridge-tasmota-tv-mount
Homebridge plugin that exposes a motorized TV mount running on Tasmota as a HomeKit Window Covering accessory.
Designed specifically for Tasmota HTTP APIs controlling single-relay motor boards, eliminating the need for an MQTT broker.
How it works
The physical mount operates on a binary on/off relay without native position feedback. To solve this, the plugin uses time-based position simulation.
- Issues
Power ONto move down (100% open) andPower OFFto move up (0% closed). - Tracks realtime position by calculating elapsed time against the configured
travelDuration. - Safely handles mid-travel interruptions by recalculating the trajectory dynamically.
Interruption & Hardware Sync
Since standard Tasmota setups only provide hardware end-stop limits in one direction (usually fully closed):
- Closing (Target 100): Position is calculated entirely by the timer.
- Opening (Target 0): The plugin polls
Status 10during travel. When the physical limit switch triggers (matchingtuyaHomeKeyandtuyaHomeValue), the plugin instantly halts the timer and snaps HomeKit state to0.
If coordinates desync due to manual button presses, simply command the mount fully to 0% to reset its internal calibration.
Installation
This plugin requires Node.js 20+ and Homebridge 1.6.0+.
npm install -g homebridge-tasmota-tv-mountConfiguration
Use Homebridge Config UI X for GUI setup, or manually append to your config.json:
{
"accessories": [
{
"accessory": "TasmotaTVMount",
"name": "Living Room TV Mount",
"ip": "192.168.1.150",
"openCommand": "TuyaSend4 101,1",
"closeCommand": "TuyaSend4 101,0",
"timeout": 5000,
"travelDuration": 54
}
]
}Configuration Options
name(string): Accessory name in the Home app.ip(string) Required: Exact Tasmota IP address (e.g.,192.168.1.150).binaryMode(boolean): Iftrue, the UI instantly snaps between 0/100 instead of simulating analog travel. Useful for immediate tactile feedback. Defaults tofalse.travelDuration(integer): Seconds required to travel from 0% to 100%. Defaults to57.timeout(integer): Milliseconds to wait before an HTTP request fails. Defaults to5000.tuyaHomeKey(string): TheStatusSNS.TuyaSNSkey polled to detect home/closed state. Defaults toDpType4Id101.tuyaHomeValue(integer): The home/closed integer value expected fortuyaHomeKey. Defaults to5.
TuyaSend Integration & Interruption Safety
If driving the relay via TuyaSend instead of basic Power commands, configure:
openCommand(string): e.g.,TuyaSend4 101,1. Defaults toPower ON.closeCommand(string): e.g.,TuyaSend4 101,0. Defaults toPower OFF.
Because Tuya MCU modules require the motor to be physically stopped before safely reversing direction, this plugin dynamically intercepts mid-travel TuyaSend reversals.
If stopped mid-flight, it will automatically wrap the new vector in a Tasmota Backlog <cmd>; <cmd> string, piping a double-fire to the ESP chip to safely halt and then re-engage the chassis natively.
