{"id":188,"date":"2026-05-01T14:13:04","date_gmt":"2026-05-01T14:13:04","guid":{"rendered":"https:\/\/unen.nl\/?p=188"},"modified":"2026-05-01T14:16:08","modified_gmt":"2026-05-01T14:16:08","slug":"vun-tuya-hassio","status":"publish","type":"post","link":"https:\/\/unen.nl\/?p=188","title":{"rendered":"VUN-Tuya-Hassio"},"content":{"rendered":"\n<p><strong>Tuya-apparaten lokaal besturen via Home Assistant \u2014 zonder cloudgedoe<\/strong><\/p>\n\n\n\n<p>Er zijn van die momenten waarop je denkt: <em>dit kan slimmer<\/em>.<br>Dat had ik dus met Tuya.<\/p>\n\n\n\n<p>Tuya is groot. Heel groot. Van lampen en stopcontacten tot kachels en ventilatoren \u2014 de kans is groot dat er bij jou thuis ook iets van draait. En eerlijk is eerlijk: het werkt. Tot je erachter komt <em>hoe<\/em> het werkt.<\/p>\n\n\n\n<p>Elke actie die je uitvoert, gaat via de cloud.<br>Jouw knop \u2192 internet \u2192 Tuya servers \u2192 terug naar jouw apparaat.<\/p>\n\n\n\n<p>Dat betekent:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>vertraging<\/li>\n\n\n\n<li>afhankelijkheid van internet<\/li>\n\n\n\n<li>en een derde partij die n\u00e9t iets te veel weet over jouw huis<\/li>\n<\/ul>\n\n\n\n<p>Dat voelde\u2026 onnodig.<\/p>\n\n\n\n<p>Dus heb ik het anders gedaan.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Maar wacht\u2026 er is toch LocalTuya?<\/h2>\n\n\n\n<p>Klopt. En laten we eerlijk zijn: <strong>LocalTuya is goed<\/strong>.<br>Sterker nog, dat was mijn eerste route.<\/p>\n\n\n\n<p>Ik heb daar serieus naar gekeken en ook mee gewerkt.<br>Alleen liep ik tegen iets aan waar je pas achter komt als je n\u00e9t wat verder gaat dan \u201clamp aan\/uit\u201d.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd25 De heater-case (waar het mis ging)<\/h3>\n\n\n\n<p>Mijn infraroodkachel heeft:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>9 vermogensstanden<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Maar:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>LocalTuya \u2192 ondersteunde er <strong>7<\/strong><\/li>\n\n\n\n<li>Offici\u00eble Tuya integratie \u2192 zelfde verhaal<\/li>\n<\/ul>\n\n\n\n<p>Gevolg:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>standen klopten niet<\/li>\n\n\n\n<li>mapping was beperkt<\/li>\n\n\n\n<li>gedrag was\u2026 laten we het \u201ccreatief\u201d noemen<\/li>\n<\/ul>\n\n\n\n<p>En dat is precies het punt waar standaard oplossingen stoppen.<\/p>\n\n\n\n<p>Niet omdat ze slecht zijn \u2014 maar omdat ze generiek moeten blijven.<\/p>\n\n\n\n<p>Ik wilde:<br>\ud83d\udc49 volledige controle<br>\ud83d\udc49 alle standen gebruiken<br>\ud83d\udc49 exact weten wat er gebeurt<\/p>\n\n\n\n<p>En daar begon VUN-Tuya-Hassio.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">De oplossing: VUN-Tuya-Hassio<\/h2>\n\n\n\n<p>VUN-Tuya-Hassio is mijn eigen brug tussen Tuya en Home Assistant.<br>Geen cloud, geen omwegen. Gewoon lokaal.<\/p>\n\n\n\n<p>Alles draait op een Ubuntu Server als native service (dus geen Docker-circus), en stuurt apparaten direct aan via het lokale netwerk. Home Assistant krijgt updates via MQTT en denkt: <em>dit ziet er verrassend netjes uit<\/em>.<\/p>\n\n\n\n<p>En dat is precies de bedoeling.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hoe het werkt (zonder magie, gewoon logisch)<\/h2>\n\n\n\n<p>De applicatie bestaat uit drie lagen die samen \u00e9\u00e9n ding doen: controle terugpakken.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Tuya Cloud synchronisatie (eenmalig nodig)<\/h3>\n\n\n\n<p>Bij de eerste setup haalt VUN-Tuya-Hassio alles op uit jouw Tuya IoT project:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Device ID\u2019s<\/li>\n\n\n\n<li>Productinformatie<\/li>\n\n\n\n<li>Datapoints (DP codes)<\/li>\n\n\n\n<li>En vooral: <strong>local keys<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Die local key is de sleutel. Letterlijk.<br>Daarmee kun je een apparaat direct aanspreken op je eigen netwerk.<\/p>\n\n\n\n<p>Na deze stap? Cloud optioneel. Rustig ademhalen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"606\" src=\"https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161202-1024x606.png\" alt=\"\" class=\"wp-image-191\" srcset=\"https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161202-1024x606.png 1024w, https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161202-300x178.png 300w, https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161202-768x455.png 768w, https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161202.png 1238w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2. Lokale besturing via tinytuya<\/h3>\n\n\n\n<p>Alle commando\u2019s gaan direct via het LAN naar je devices.<\/p>\n\n\n\n<p>Geen vertraging. Geen internet nodig. Gewoon:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>klik \u2192 reactie<\/p>\n<\/blockquote>\n\n\n\n<p>Hiervoor gebruik ik <code>tinytuya<\/code>, een Python library die het Tuya-protocol spreekt alsof het er zelf onderdeel van is.<\/p>\n\n\n\n<p>En ja \u2014 als een functie \u00e9cht alleen via de cloud werkt, dan valt het systeem netjes terug. Maar dat is de uitzondering, niet de regel.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. MQTT Discovery voor Home Assistant<\/h3>\n\n\n\n<p>Hier wordt het leuk.<\/p>\n\n\n\n<p>De applicatie publiceert automatisch MQTT discovery berichten.<br>Dat betekent:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>apparaten verschijnen vanzelf in Home Assistant<\/li>\n\n\n\n<li>met de juiste entiteiten (light, fan, climate, sensor)<\/li>\n\n\n\n<li>zonder YAML-ellende<\/li>\n<\/ul>\n\n\n\n<p>En dankzij retained topics weet Home Assistant altijd de laatste stand. Ook na een herstart.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"332\" src=\"https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161432-1024x332.png\" alt=\"\" class=\"wp-image-193\" srcset=\"https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161432-1024x332.png 1024w, https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161432-300x97.png 300w, https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161432-768x249.png 768w, https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161432.png 1027w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Multi-function devices (oftewel: Tuya houdt van verrassingen)<\/h2>\n\n\n\n<p>Een Tuya-device is zelden \u201cgewoon een lamp\u201d.<\/p>\n\n\n\n<p>Vaak is het:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>lamp + ventilator<\/li>\n\n\n\n<li>heater + fan<\/li>\n\n\n\n<li>stekker + energiemeter<\/li>\n<\/ul>\n\n\n\n<p>Dus VUN-Tuya-Hassio doet niet aan aannames.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>1 device \u2192 meerdere entities<\/p>\n<\/blockquote>\n\n\n\n<p>Voorbeeld:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>light.slaapkamer_lamp<\/li>\n\n\n\n<li>fan.slaapkamer_ventilator<\/li>\n<\/ul>\n\n\n\n<p>Alles netjes opgesplitst. Geen creatieve interpretaties meer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">De echte uitdaging (en waar het interessant werd)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd25 Protocol 3.5 en dp_id drama<\/h3>\n\n\n\n<p>Mijn favoriete moment: een infraroodkachel.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tuya protocol 3.5<\/li>\n\n\n\n<li>9 vermogensstanden<\/li>\n\n\n\n<li>lokaal bereikbaar<\/li>\n\n\n\n<li>maar\u2026 deed precies niks<\/li>\n<\/ul>\n\n\n\n<p>Na wat detectivewerk bleek het probleem simpel:<\/p>\n\n\n\n<p>De Tuya Cloud API geeft je mooie namen zoals <code>level<\/code>,<br>maar verzwijgt de bijbehorende <strong>dp_id\u2019s<\/strong>.<\/p>\n\n\n\n<p>En die heb je lokaal dus keihard nodig.<\/p>\n\n\n\n<p>Dus dan ga je praten met het apparaat zelf:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>d.status()<br># {'dps': {'1': False, '5': '6', '19': 'cancel', '20': 0, '102': '6'}}<\/code><\/pre>\n\n\n\n<p>Daar stond het antwoord:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>dp_id <strong>5<\/strong> = vermogensniveau<\/li>\n<\/ul>\n\n\n\n<p>Niet 2. Niet 3. Gewoon 5.<\/p>\n\n\n\n<p>En ineens snap je ook waarom standaard integraties moeite hebben:<br>ze missen gewoon een deel van de waarheid.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"635\" height=\"1012\" src=\"https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161238.png\" alt=\"\" class=\"wp-image-194\" srcset=\"https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161238.png 635w, https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161238-188x300.png 188w\" sizes=\"auto, (max-width: 635px) 100vw, 635px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83e\udd26 Sync die je werk \u201ceven opruimt\u201d<\/h3>\n\n\n\n<p>Na elke cloud sync waren mijn handmatige fixes verdwenen.<\/p>\n\n\n\n<p>Systeem: <em>\u201cik heb dit voor je opgelost\u201d<\/em><br>Ik: <em>\u201cnee, je hebt het kapot gemaakt\u201d<\/em><\/p>\n\n\n\n<p>Oplossing:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>bestaande mappings bewaren<\/li>\n\n\n\n<li>na sync terugzetten<\/li>\n\n\n\n<li>slimme regels:\n<ul class=\"wp-block-list\">\n<li>bekende dp_id wint<\/li>\n\n\n\n<li>grotere range wint<\/li>\n\n\n\n<li>lege data? negeren<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>Sindsdien blijft alles netjes staan waar het hoort.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd01 MQTT en oneindig veel apparaten<\/h3>\n\n\n\n<p>Elke sync gaf een nieuwe <code>unique_id<\/code>.<\/p>\n\n\n\n<p>Home Assistant dacht:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u201cOh, nog een apparaat! Leuk!\u201d<\/p>\n<\/blockquote>\n\n\n\n<p>Spoiler: dat was niet leuk.<\/p>\n\n\n\n<p>Fix:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>unique_id gebaseerd op entity_id<\/li>\n\n\n\n<li>bijvoorbeeld: <code>climate.badkamer_heater<\/code><\/li>\n<\/ul>\n\n\n\n<p>En ineens bleef alles stabiel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">De stack (kort en krachtig)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Backend: Python 3.11 + FastAPI<\/li>\n\n\n\n<li>Database: SQLite<\/li>\n\n\n\n<li>Lokale communicatie: tinytuya<\/li>\n\n\n\n<li>MQTT: Mosquitto<\/li>\n\n\n\n<li>Deployment: systemd op Ubuntu Server<\/li>\n\n\n\n<li>Frontend: eigen dashboard (vanilla JS + CSS)<\/li>\n\n\n\n<li>Styling: strak, donker en functioneel<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Resultaat<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>61 apparaten volledig lokaal<\/li>\n\n\n\n<li>geen cloud latency<\/li>\n\n\n\n<li>heaters schakelen soepel tussen <strong>alle 9 standen<\/strong><\/li>\n\n\n\n<li>verlichting dimt zonder vertraging<\/li>\n\n\n\n<li>energieverbruik inzichtelijk<\/li>\n\n\n\n<li>alles via Home Assistant<\/li>\n<\/ul>\n\n\n\n<p>En vooral:<\/p>\n\n\n\n<p>\ud83d\udc49 alles onder controle<br>\ud83d\udc49 alles lokaal<br>\ud83d\udc49 alles snel<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83d\udee0\ufe0f Zelf bouwen: waar je \u00e9cht aan begint<\/h1>\n\n\n\n<p>Nu komt het eerlijke stuk.<\/p>\n\n\n\n<p>Dit project bouw je niet \u201ceven snel\u201d.<br>Maar het is ook geen hogere wiskunde.<\/p>\n\n\n\n<p>Het is vooral:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>structuur aanbrengen in iets wat daar totaal geen zin in heeft<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\udde0 De juiste mindset<\/h2>\n\n\n\n<p>Als je denkt:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u201cik bouw een tool\u201d<\/p>\n<\/blockquote>\n\n\n\n<p>dan wordt het lastig.<\/p>\n\n\n\n<p>Zie het zo:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>jij bouwt een vertaler tussen drie werelden<\/p>\n<\/blockquote>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Tuya (chaos)<\/li>\n\n\n\n<li>jouw netwerk (logisch)<\/li>\n\n\n\n<li>Home Assistant (strak)<\/li>\n<\/ol>\n\n\n\n<p>Jij zit ertussen en zorgt dat het klopt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\uddf1 Bouw het in lagen (anders krijg je spaghetti)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. \ud83d\udd0c Begin met data ophalen<\/h3>\n\n\n\n<p>Zonder dit heb je niks.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>devices<\/li>\n\n\n\n<li>local keys<\/li>\n\n\n\n<li>dp codes<\/li>\n<\/ul>\n\n\n\n<p>Log alles. Echt alles.<br>Later ga je jezelf bedanken.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. \ud83e\udde0 DP-analyse (hier begint het echte werk)<\/h3>\n\n\n\n<p>DP codes zijn\u2026 creatief.<\/p>\n\n\n\n<p>Voorbeeld:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>dp_2 = 0<\/li>\n\n\n\n<li>dp_5 = &#8220;6&#8221;<\/li>\n<\/ul>\n\n\n\n<p>Succes ermee.<\/p>\n\n\n\n<p>Wat je moet doen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>live status uitlezen<\/li>\n\n\n\n<li>veranderingen volgen<\/li>\n\n\n\n<li>verbanden leggen<\/li>\n<\/ul>\n\n\n\n<p>Cloud = hint<br>Device = waarheid<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. \ud83d\udd0d Mapping (van chaos naar logica)<\/h3>\n\n\n\n<p>Hier maak je er iets bruikbaars van.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>device \u2192 light \/ fan \/ climate<\/li>\n\n\n\n<li>of gewoon alles tegelijk<\/li>\n<\/ul>\n\n\n\n<p>Ja, dat gebeurt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. \ud83d\udce1 MQTT (niet te vroeg!)<\/h3>\n\n\n\n<p>Eerst begrijpen, dan publiceren.<\/p>\n\n\n\n<p>Anders debug je jezelf gek.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. \ud83d\udda5\ufe0f Dashboard (je controlepaneel)<\/h3>\n\n\n\n<p>Niet om mooi te zijn.<br>Wel om te zien wat er gebeurt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\ude05 Wat je sowieso tegenkomt<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u201cWaarom doet dit niks?\u201d \u2192 verkeerde dp_id<\/li>\n\n\n\n<li>\u201cWaarom werkt dit half?\u201d \u2192 deels cloud-only<\/li>\n\n\n\n<li>\u201cWaarom is 100 ineens 1000?\u201d \u2192 Tuya-logica<\/li>\n\n\n\n<li>\u201cWaarom is alles weg?\u201d \u2192 sync<\/li>\n<\/ul>\n\n\n\n<p>Welkom bij het spel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\udde9 Slimme keuzes (scheelt je uren frustratie)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2714 templates<\/li>\n\n\n\n<li>\u2714 confidence score<\/li>\n\n\n\n<li>\u2714 entity preview<\/li>\n\n\n\n<li>\u2714 handmatige override<\/li>\n\n\n\n<li>\u2714 logging<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u2699\ufe0f Praktische setup (Ubuntu)<\/h2>\n\n\n\n<p>Hou het simpel:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>\/opt\/vun-tuya-hassio\/<\/code><\/li>\n\n\n\n<li><code>.env<\/code> voor config<\/li>\n\n\n\n<li>Python venv<\/li>\n\n\n\n<li>systemd service<\/li>\n<\/ul>\n\n\n\n<p>Geen Docker. Geen magie. Gewoon controle.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\ude80 Wat je uiteindelijk bouwt<\/h2>\n\n\n\n<p>Als je dit goed doet:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>een eigen Tuya backend<\/li>\n\n\n\n<li>volledige controle<\/li>\n\n\n\n<li>automatische HA integratie<\/li>\n\n\n\n<li>en iets dat sneller werkt dan de offici\u00eble oplossing<\/li>\n<\/ul>\n\n\n\n<p>Niet slecht voor een \u201cbijproject\u201d.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udca1 Laatste tip<\/h2>\n\n\n\n<p>Bouw dit iteratief.<\/p>\n\n\n\n<p>Niet:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u201cik wil alles tegelijk\u201d<\/p>\n<\/blockquote>\n\n\n\n<p>Maar:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>1 device werkend<\/li>\n\n\n\n<li>mapping klopt<\/li>\n\n\n\n<li>MQTT zichtbaar<\/li>\n\n\n\n<li>uitbreiden<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">En eerlijk\u2026<\/h2>\n\n\n\n<p>De eerste keer dat je een Tuya-device:<\/p>\n\n\n\n<p>\ud83d\udc49 lokaal bestuurt<br>\ud83d\udc49 zonder cloud<br>\ud83d\udc49 direct reageert<\/p>\n\n\n\n<p>\u2026dan weet je:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u201cok\u00e9, dit was het waard\u201d<\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"646\" height=\"637\" src=\"https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161211.png\" alt=\"\" class=\"wp-image-195\" srcset=\"https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161211.png 646w, https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161211-300x296.png 300w\" sizes=\"auto, (max-width: 646px) 100vw, 646px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1006\" height=\"396\" src=\"https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161244.png\" alt=\"\" class=\"wp-image-196\" srcset=\"https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161244.png 1006w, https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161244-300x118.png 300w, https:\/\/unen.nl\/wp-content\/uploads\/2026\/05\/Screenshot-2026-05-01-161244-768x302.png 768w\" sizes=\"auto, (max-width: 1006px) 100vw, 1006px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Tuya-apparaten lokaal besturen via Home Assistant \u2014 zonder cloudgedoe Er zijn van die momenten waarop je denkt: dit<\/p>\n","protected":false},"author":2,"featured_media":189,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,7],"tags":[],"class_list":["post-188","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-automations","category-home-assistant"],"_links":{"self":[{"href":"https:\/\/unen.nl\/index.php?rest_route=\/wp\/v2\/posts\/188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unen.nl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unen.nl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unen.nl\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/unen.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=188"}],"version-history":[{"count":3,"href":"https:\/\/unen.nl\/index.php?rest_route=\/wp\/v2\/posts\/188\/revisions"}],"predecessor-version":[{"id":198,"href":"https:\/\/unen.nl\/index.php?rest_route=\/wp\/v2\/posts\/188\/revisions\/198"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/unen.nl\/index.php?rest_route=\/wp\/v2\/media\/189"}],"wp:attachment":[{"href":"https:\/\/unen.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unen.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unen.nl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}