TapHome

Xiaomi 1T (Valetudo)

Packet Parser → HTTP
Přidal
Poslední aktualizace: 03. 2026
Xiaomi 1T (Valetudo)

Xiaomi Mijia 1T (STYTJ02ZHM) je robotický vysavač s mopem vyráběný společností Dreame a prodávaný pod značkou Xiaomi. Tato šablona vyžaduje Valetudo — open-source firmware, který nahrazuje závislost na cloudu výrobce lokálním HTTP API. Po nainstalování Valetudo na robota TapHome komunikuje přímo s Valetudo REST API v2 v lokální síti. Není potřeba žádné cloudové připojení ani autentizace.

Šablona poskytuje monitorování baterie, vícehodnotový indikátor stavu a tlačítka pro spuštění, pozastavení, zastavení a dokování vysavače. Funkce lokalizace spustí zvukový signál pro nalezení robota.

Valetudo musí být nainstalováno na robotu před použitím této šablony. Šablona komunikuje s Valetudo HTTP API, ne s cloudovými službami Xiaomi. Rootování Xiaomi 1T vyžaduje 3,3 V USB-to-UART adaptér a Dreame Breakout PCB — podrobné instrukce najdeš na stránce podporovaných robotů Valetudo.

Konfigurace

Během importu šablony zadej IP adresu robota v lokální síti (výchozí hodnota je 192.168.0.1). Valetudo REST API naslouchá na portu 80 bez autentizace.

Protože Valetudo nevystavuje mDNS hostname, přiřaď robotu statickou IP adresu nebo DHCP rezervaci, aby se adresa nezměnila po restartu sítě.

Otevři http://<robot-ip>/swagger/ v prohlížeči pro interaktivní prozkoumání všech dostupných Valetudo API endpointů. Je to užitečné pro ověření konektivity a kontrolu aktuálního stavu robota.

Schopnosti zařízení

Stav baterie

Šablona čte stav nabití baterie z odpovědi /api/v2/robot/state/attributes. Parsuje BatteryStateAttribute.level (reportovaný jako 0–100) a dělí 100 pro vytvoření rozsahu 0,0–1,0 pro TapHome. Hodnota se aktualizuje každé 2,5 sekundy.

Stav vysavače

Vícehodnotový přepínač zobrazuje aktuální provozní stav robota. Šablona parsuje StatusStateAttribute.value z odpovědi atributů stavu a mapuje ho na celočíselný index:

StavHodnotaPopis
Docked0Robot je na nabíjecí stanici
Cleaning1Aktivní cyklus vysávání
Returning2Návrat ke stanici
Paused3Vysávání pozastaveno
Idle4Nevysává, není na stanici
Unknown9Nerozpoznaný stav

Valetudo API může reportovat i stavy error, manual_control a moving — tyto nejsou individuálně mapovány a zobrazí se jako „Unknown" (hodnota 9).

Ovládání vysavače

Čtyři tlačítka ovládají vysavač přes endpoint BasicControlCapability:

  • Start — spustí kompletní cyklus vysávání
  • Pause — pozastaví aktuální operaci vysávání
  • Stop — zastaví aktuální operaci vysávání
  • Home — pošle robota zpět na nabíjecí stanici

Každé tlačítko odešle PUT požadavek na /api/v2/robot/capabilities/BasicControlCapability s odpovídající akcí.

Lokalizace

Tlačítko Locate spustí zvukový signál na robotu přes endpoint LocateCapability. Je to užitečné pro nalezení robota, když uvázl nebo je na neočekávaném místě.

Další schopnosti

Valetudo API vystavuje několik schopností, které nejsou v šabloně implementovány: ovládání rychlosti ventilátoru (předvolby sacího výkonu), ovládání spotřeby vody (intenzita mopování), zónové vysávání, navigace na konkrétní místo, snímky mapy, monitorování spotřebního materiálu (filtr, kartáče, senzory), hlasitost reproduktoru, plánování režimu nerušit, stav nabíjení a síla Wi-Fi signálu. Tyto mohou být přidány v budoucí aktualizaci šablony.

Řešení problémů

Zařízení neodpovídá
  1. Ověř, že robot je zapnutý, připojený k Wi-Fi a má platnou IP adresu
  2. Otevři http://<robot-ip>/ v prohlížeči — pokud se načte webové rozhraní Valetudo, API je dostupné
  3. Zkontroluj, že TapHome a robot jsou ve stejné síti nebo VLANu
  4. Potvrď, že Valetudo běží — pokud byl robot obnoven do továrního nastavení, Valetudo může být potřeba přeinstalovat
Stav zobrazuje „Unknown" (???)

Šablona mapuje pět stavů (docked, cleaning, returning, paused, idle). Pokud robot reportuje error, manual_control nebo moving, stav se zobrazí jako „Unknown" (hodnota 9). Toto je očekávané chování — nemapované stavy se vyskytují při okrajových situacích jako manuální RC ovládání nebo obnova po chybě.

Stav baterie ukazuje nulu
  1. Potvrď, že Valetudo běží a API odpovídá na /api/v2/robot/state/attributes
  2. Zkontroluj, že odpověď obsahuje záznam BatteryStateAttribute s nenulovou hodnotou level
  3. Pokud byl robot nedávno restartován, počkej na dokončení prvního pollingu stavu

Dostupná zařízení

Xiaomi 1T (Valetudo) Modul
Vlastní proměnné

Xiaomi 1T (Valetudo)

Čtení (modul)
VAR response := SENDHTTPREQUEST("/api/v2/robot/state/attributes");
IF response.IsSuccess
 state := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
END
Stav baterie Analogový vstup Pouze ke čtení

Stav nabití baterie — procento zbývající energie (0–100 %)

numeric Jednotka: %

Stav baterie

Čtení vstupní úrovně
PARSEJSON(state, "$[?(@.__class == 'BatteryStateAttribute')].level") / 100
Domů Tlačítko
action

Domů

Zápis stavu tlačítka
VAR response := SENDHTTPREQUEST("/api/v2/robot/capabilities/BasicControlCapability", "PUT", "{\"action\": \"home\"}", "accept: */*", "Content-Type: application/json");
IF response.IsSuccess
 var res := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
END
Najít Tlačítko

Spustí zvukový signál na robotu pro pomoc s jeho nalezením

action

Najít

Zápis stavu tlačítka
VAR response := SENDHTTPREQUEST("/api/v2/robot/capabilities/LocateCapability", "PUT", "{\"action\": \"locate\"}", "accept: */*", "Content-Type: application/json");
IF response.IsSuccess
 var res := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
END
Pauza Tlačítko
action

Pauza

Zápis stavu tlačítka
VAR response := SENDHTTPREQUEST("/api/v2/robot/capabilities/BasicControlCapability", "PUT", "{\"action\": \"pause\"}", "accept: */*", "Content-Type: application/json");
IF response.IsSuccess
 var res := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
END
Start Tlačítko
action

Start

Zápis stavu tlačítka
VAR response := SENDHTTPREQUEST("/api/v2/robot/capabilities/BasicControlCapability", "PUT", "{\"action\": \"start\"}", "accept: */*", "Content-Type: application/json");
IF response.IsSuccess
 var res := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
END
Stav vysavače Vícestavový přepínač Pouze ke čtení

Aktuální provozní stav — Docked, Cleaning, Returning, Paused, Idle nebo Unknown

enum mapped
Hodnoty / Stavy: Docked · Cleaning · Returning · Paused · Idle · ???

Stav vysavače

Čtení stavu přepínače
var status := PARSEJSON(state, "$[?(@.__class == 'StatusStateAttribute')].value");

switch(status,
"docked", 0,
"cleaning", 1,
"returning", 2,
"paused", 3,
"idle", 4,
9);
Stop Tlačítko
action

Stop

Zápis stavu tlačítka
VAR response := SENDHTTPREQUEST("/api/v2/robot/capabilities/BasicControlCapability", "PUT", "{\"action\": \"stop\"}", "accept: */*", "Content-Type: application/json");
IF response.IsSuccess
 var res := response.Content;
ELSE
 ADDERROR(response.StatusCode + " (" + response.ReasonPhrase + ")");
END
Připojení: Packet Parser → HTTP
Možná vylepšení (10)
  • Fan speed control — Set suction power level (low, medium, high, max). Available via PUT with preset value.
  • Water usage control — Set mopping water flow level (low, medium, high). Available on models with mopping support.
  • Map snapshot — Retrieve current map as PNG image. Available via GET.
  • Zone cleaning — Start cleaning of specific zones defined by coordinates.
  • Go to location — Send robot to specific coordinates on the map.
  • Consumable monitoring — Read remaining life of filter, main brush, side brush, and sensor. Percentage or hours remaining.
  • Charging status — Battery charging state (charging, discharging, charged). Available in state attributes alongside battery level.
  • Speaker volume — Set robot speaker volume level (0-100).
  • Do not disturb — Enable/disable DND mode with start/end time.
  • WiFi signal strength — WiFi RSSI and signal quality. Available in state attributes response.

Zdroje