Home Assistant seriál s Jakubem: Díl 16: Chytrý LED strom (WLED)
Úvod
V dnešním článku navážeme na předchozí článek, v kterém jsme si vysvětlili, co je integrace WLED a integrovali jsme Athom controller do HA. Také jsme poměrně dost vyčerpali téma o vodičích, zdrojích, LEDkách a controllerech. S nově nabytými znalostmi se můžeme vrhnout do vytvoření svého vlastního LED stromu. Strom si nejprve vytiskneme na 3D tiskárně, sestavíme, osadíme LED pásky a nakonec použijeme controller, který jsme si již integrovali.
LED strom je krásná dekorace, která nejen ozdobí interiér, ale díky integraci do Home Assistantu může sloužit i jako chytrý indikátor. Ke konci článku ho využijeme na zobrazování stavu CO₂.
Výsledek bude vypadat nějak takhle:

Co budeme potřebovat
- 3D tiskárnu nebo kamaráda s 3D tiskárnou
- zdroj 12V/3A
- 6m WS2815 LED pásek (12V, 30 LED/m, IP30) -> 5 m + 1 m
- 3m 4-pin kabelu + budeme potřebovat další kus pro připojení controlleru (délka se bude lišit dle toho kam controller umístíte)
- páječku, cín a flux
- tavná pistole nebo izolační páska
- integrovaný controller z předchozího článku
- 4-pin krimpovací konektor (volitelně)
- krimpovací kleště (volitelně)
Tisk LED Stromu
Kompletně připravený projekt na tisk naleznete na MakerWorldu. Strom se skládá z 87 částí, takže tisk zabere cca 25 hodin čistého času a budeme potřebovat přibližně 700g filamentu (černý a bílý). Mně tisk trval cca 4 dny, jelikož na podložku se vejdou maximálně dva hexagony a občas si taky musíte dopřát spánek 😉. Doporučuji tisk nezrychlovat, ale naopak lehce zpomalit, při rychlém tisku se mi stávalo, že západky pro LEDky nebyly pevné, ale lámaly se.
Projekt původně pochází od uživatele ElHeisa z printables.com. Ovšem postrádal podrobnou dokumentaci a sestavení stromu bylo utrpení. Dále jsem chtěl použít jiný controller (uživatel použil Wemos D1 Mini) a jeho řešení kmenu stromu to nedovolovalo.
Navrhnul jsem tedy nový kmen stromu, který je možno osadit LEDkami a svítí tak celý strom a controller může být umístěn kdekoliv jinde. V mém případě ho mám v racku v pracovně, ale umístit ho můžete kamkoliv. Kmen je navržen tak, že tam controller můžete umístit, ale přes poloprůhledný diffusor prosvítá a výsledek není tak dobrý a hezký.
Tisk základních hexagonů
Základna stromu je tvořena 14 hexagony a jedním kvádrem, který představuje kmen stromu.
Doporučuji si nejdříve vytisknout těchto 14 hexagonů + kmen. Na MakerWorldu najdete tento Print profile pojmenovaný jako „LED Tree Hexagons“. Během čekání na vytisknutí diffusorů a listů (vzorů) stromu si již můžete pájet LED pásky a vkládat je do jednotlivých hexagonů.
Doporučuji si části hned po tisku označit číslem, výrazně vám to usnadní skládání jednotlivých dílů. Možností jak je sestavit je totiž několik a jen jedna možnost je správná 😉.
Níže najdete očíslované jednotlivé části stromu. Čísla odpovídají označení, které naleznete přímo v projektu na podložkách v MakerWorldu.
Hexagony budeme tisknout bíle. Můžeme použít jak PLA, tak PETG. Obecně je PETG lepší z hlediska tepelné výdrže a odolnosti. Já použil různé zbytky, takže strom mám mix. PLA a PETG, testoval jsem teplotu jednotlivých LEDek a nezahřívají se nijak výrazně, takže i PLA by mělo být bez problémů.



Tisk diffusorů
V druhém Print profile na MakerWorldu najdete diffusory a jak nápis nad podložkou napovídá, budeme je tisknout celkem 7x. Na druhé podložce najdete diffusor pro kmen stromu. Opět použijeme bílé PLA nebo PETG. Nedoporučuji translucent filament, protože by byly vidět LEDky i kabeláž.
Doporučuji si spustit tisk prvních diffusorů a mezitím začít pracovat na pájení LED pásku, ať ušetříte čas a nemáte prostoj 😉. Po zadání tisku tedy můžete rovnou přeskočit sem.

Tisk větví
V posledním Print profile na MakerWorldu najdete poslední část stromu – listy/větve a rámeček pro kmen. S větvemi jsem se natrápil nejvíce, protože původní autor pro ně neměl žádnou dokumentaci. Vytvořil jsem tedy (stejně jako pro hexagony) diagram, který naleznete níže. Opět doporučuji si části postupně číslovat nebo rovnou „cvakat“ na strom, ať pak nemusíte jako já hledat dle fotek stromu co kam patří 😉.
Větve vytiskneme černým PLA nebo PETG filamentem. Černá barva tvoří největší kontrast s bílými diffusory, takže strom pak působí nejlépe. Doporučuji použít PEI texturovanou podložku, ať strom co nejvíce vynikne.


Pájení LED pásku
Existují dvě varianty instalace LED pásku do LED stromu. Teoreticky stačí pásek jen protáhnout po obvodu hexagonů. Tuto variantu ale nemám vyzkoušenou, testoval jsem pouze prvních pár hexagonů a pásek by měl pasovat správně. Může se ovšem stát, že v některém z dalších hexagonů vyjde LEDka na západku nebo do průchozího okénka. Při výběru této varianty pak tedy budete muset spočítat počet LEDek v jednotlivých okénkách a ručně zadat jejich počet ve WLEDu, výsledkem totiž bude, že každý hexagon bude mít různý počet LEDek.
Nejefektivnější, avšak pracnější metoda, je nastříhat si pásky po 12 LEDkách a spájet je dohromady. Díky tomu bude v každém hexagonu přesně 12 LEDek (v kmeni jich bude 10) a výrazně se nám usnadní pozdější nastavování presetů ve WLEDu.
V kompletně složeném stromu včetně kmene začneme provlékat pásek právě od něj. Ujistíme se, že pásek začínáme nasazovat od female (samice, tedy část, kam se zapojuje kabel) konektoru (tedy ve směru šipky). Výchozí bod pro nás bude levý horní roh, kam za první západku zasadíme začátek LED pásku a LEDkami obkroužíme celý obvod kmene až k hornímu propojovacímu okénku.


Pásek zatím nestříháme, jen obkroužíme první obvod hexagonu, odpočítáme 12 LEDek a až potom pásek ustřihneme například nůžkami. Pásek by nám měl skončit u okénka vpravo. Pásek zatím nevkládejte do zarážek, ale jen si ho „naměřte“. Nejlépe se pájí na rovné podložce a ze zarážek je pak obtížné ho vyndat.
Na pájecí plošky na konci pásku naneste trochu fluxu nebo kalafuny (flux je výrazně lepší) a na každou plošku si páječkou naneste dostatečné množství cínu. Poté si naměřte 4pin kabel, aby byl dostatečně dlouhý pro propojku do začátku dalšího okénka. Na každé žíle odholte cca 2-3 mm bužírky a postupně připájejte všechny žíly na pásek. Jakou zvolíte barevnou kombinaci je na vás, jen je nutné ji dodržet i na druhé straně propojky 😉. Ideální postup je napájet si dva celé pásky včetně propojky na konci, otestovat je, zda svítí a vše funguje, a poté spoje na obou stranách pásku zatavit tavnou pistolí. V okénkách se pásky mohou dotýkat a mohlo by kvůli tomu dojít ke zkratu. Poté jedním páskem vyplnit hexagon, naměřit si další a takto pokračovat až do konce stromu.
Před protažením propojek skrz okénka si v místě průchodu vyštípněte tenké plošky na spodku hexagonu, ty sloužily jako podpora při tisku.
Pro otestování si můžete controller zapojit bokem přes krátkou male propojku, která je dodávána spolu s controllerem, zapojení je následující:
- 12V → VCC (červená)
- GND → GND (bílá)
- DAT → DI (data) (modrá)
- CLK → nezapojujte, pásek WS2815 nepotřebuje CLK
Správné nastavení WLEDu (LED pásku, počtu LEDek apod.) najdete zde.
Někdo by se teď mohl divit, že jsem na LED pásku propojoval všechny čtyři plošky a máte pravdu, nebylo to nutné. Jedná se pouze o přípravu, kdybych v budoucnu chtěl používat jiný controller a využít záložní linku na pásku – k tomu slouží ta poslední nevyužitá ploška.
Pro ilustraci naleznete níže fotku celého stromu včetně propojek. Na fotce uvidíte, že controller lze vložit i do kmene stromu, dále si ukážeme rozdíl jak LEDky svítí s controllerem uvnitř a s controllerem mimo kmen – s controllerem mimo kmen svítí výrazně lépe.





Sestavení LED stromu
Nyní můžeme na každý hexagon umístit vytištěný diffusor a odpovídající listy/větve dle diagramu výše. Listy/větve jsou navrženy natěsno – takže je potřeba je lehce zatlačit.
Pokud jste zvolili umístění controlleru mimo kmen, máte dvě možnosti:
- použít krimpovací 4pin konektor a do něj nakrimpovat dostatečně dlouhý kabel ke controlleru,
- nebo využít přiložený 4pin male konektor a na jeho konec připájet kabel ke controlleru.
Při pájení doporučuji na jednotlivé žíly navléknout zatavovací bužírky a následně je zatavit horkovzdušnou pistolí nebo zapalovačem. Tím zajistíte pevné a bezpečné spojení bez rizika zkratu.
Nastavení WLEDu
Strom máme sestavený a nyní zbývá správně nastavit WLED. Otevřete si v prohlížeči IP adresu controlleru a klikněte na Config → LED Preferences. Zde nastavíme následující parametry:
- Enable automatic brightness limiter – zapnout
- Maximum PSU Current – 3000 mA (pokud máte jiný zdroj, nastavte hodnotu podle něj)
- LED outputs 1: – WS281x
- mA/LED – 12 mA (WS2815)
- Color Order – RGB (může se lišit podle vašeho LED pásku)
- Start – 0
- Length – 179 (podle počtu LED na vašem pásku)
- Data GPIO – 1
- Button 0 GPIO – 0 (Pushbutton)
- Button 1 GPIO – unused (Disabled)
- Relay GPIO – 12
- Invert – zapnout
- Use Gamma correction for color – zapnout
K základnímu nastavení nám položky výše stačí. Změnu Wi-Fi připojení najdete v menu WiFi Setup. V User Interface si můžete controller pojmenovat a měnit vzhled rozhraní WLEDu. Sync Interface slouží k synchronizaci více pásků – můžete mít například více stromů a pokud zapnete hlavní, automaticky se zapnou i ostatní se stejným efektem. V Security & Updates lze provést aktualizaci firmware a také zálohovat presety a konfiguraci.
Po nastavení nezapomeňte kliknout na Save a poté provést Reboot controlleru, aby se všechny změny správně uložily a aktivovaly. Důležité je také správně zadat počet LED – pokud nastavíte menší číslo, část pásku nebude svítit, a pokud větší, můžete zbytečně zatěžovat zdroj.


Přímo v rozhraní WLEDu najdete základní efekty – od jednobarevného svícení (Solid), přes jednoduché blikání (Blink), až po barevné přechody jako Rainbow. Pokud používáte bílou, můžete si nastavit i barevnou teplotu (Kelvin). Stačí pár minut zkoušení a rychle zjistíte, který styl vám vyhovuje.
Ukázky presetů
Níže najdete několik ukázkových presetů, které stačí jen nahrát přes API a uložit. Vpravo klikněte na + Preset, do první řádky napište název a pokud je zaškrtnuto Use current state, tuto volbu odškrtněte. Do políčka API command vložte kód a klikněte na Save. Na ukázku presetů se můžete podívat ve videu níže. Nezapomeňte si přepnout rozlišení do 4k 😉.
První preset, který se vyplatí mít uložený, je Reset stromu. Občas se může stát, že ve WLEDu zůstanou svítit LEDky z předchozích nastavení. Pomocí reset presetu celý strom vynulujete a nastavíte všechny LED na černou barvu. Presety jsem navrhnul tak, aby se segmenty resetovaly přímo v nich, ale i tak se vám tento preset může hodit.
Resetovací preset
{"on":true,"bri":255,"seg":[{"id":0,"start":0,"stop":179,"fx":0,"col":[[0,0,0],[0,0,0],[0,0,0]]}]}
Ocean Calm preset
{
"on": true,
"bri": 120,
"transition": 12,
"seg": [
{ "start": 0, "stop": 179, "fx": 2, "sx": 40, "ix": 200, "pal": 15,
"col": [[80,100,255],[0,255,180],[180,0,255]] },
{ "stop": 0 }, { "stop": 0 }, { "stop": 0 }, { "stop": 0 }, { "stop": 0 },
{ "stop": 0 }, { "stop": 0 }, { "stop": 0 }, { "stop": 0 }, { "stop": 0 },
{ "stop": 0 }, { "stop": 0 }, { "stop": 0 }, { "stop": 0 }, { "stop": 0 }
]
}
Rainbow Classic preset
{
"on": true,
"bri": 140,
"transition": 8,
"seg": [
{
"id": 0,
"start": 0,
"stop": 179,
"fx": 9,
"sx": 128,
"ix": 128,
"pal": 0,
"col": [[80,100,255],[0,255,180],[180,0,255]]
},
{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},
{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},
{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0}
]
}
Rainbow Runner Party preset
{
"on": true,
"bri": 200,
"transition": 5,
"seg": [
{
"id": 0,
"start": 0,
"stop": 179,
"fx": 74,
"sx": 150,
"ix": 200,
"pal": 0
},
{"stop": 0},{"stop": 0},{"stop": 0},{"stop": 0},{"stop": 0},
{"stop": 0},{"stop": 0},{"stop": 0},{"stop": 0},{"stop": 0},
{"stop": 0},{"stop": 0},{"stop": 0},{"stop": 0},{"stop": 0}
]
}
Rainbow Runner Party (segmenty) preset
{
"on": true,
"bri": 200,
"transition": 5,
"seg": [
{"id":0,"n":"Leg","start":0,"stop":10,"fx":74,"sx":150,"ix":200,"pal":0},
{"id":1,"start":10,"stop":22,"fx":74,"sx":150,"ix":200,"rev":false},
{"id":2,"start":22,"stop":34,"fx":74,"sx":150,"ix":200,"rev":true},
{"id":3,"start":34,"stop":46,"fx":74,"sx":150,"ix":200,"rev":false},
{"id":4,"start":46,"stop":58,"fx":74,"sx":150,"ix":200,"rev":true},
{"id":5,"start":58,"stop":70,"fx":74,"sx":150,"ix":200,"rev":false},
{"id":6,"start":70,"stop":82,"fx":74,"sx":150,"ix":200,"rev":true},
{"id":7,"start":82,"stop":94,"fx":74,"sx":150,"ix":200,"rev":false},
{"id":8,"start":94,"stop":106,"fx":74,"sx":150,"ix":200,"rev":true},
{"id":9,"start":106,"stop":118,"fx":74,"sx":150,"ix":200,"rev":false},
{"id":10,"start":118,"stop":130,"fx":74,"sx":150,"ix":200,"rev":true},
{"id":11,"start":130,"stop":142,"fx":74,"sx":150,"ix":200,"rev":false},
{"id":12,"start":142,"stop":154,"fx":74,"sx":150,"ix":200,"rev":true},
{"id":13,"start":154,"stop":166,"fx":74,"sx":150,"ix":200,"rev":false},
{"id":14,"start":166,"stop":179,"fx":74,"sx":150,"ix":200,"rev":true}
]
}
Rainbow (segmenty) preset
{"on":true,"bri":200,"transition":5,"seg":[{"id":0,"n":"Leg","start":0,"stop":10,"fx":9,"sx":150,"ix":200,"pal":0},{"id":1,"start":10,"stop":22,"fx":9,"sx":150,"ix":200,"pal":0,"rev":false},{"id":2,"start":22,"stop":34,"fx":9,"sx":150,"ix":200,"pal":0,"rev":true},{"id":3,"start":34,"stop":46,"fx":9,"sx":150,"ix":200,"pal":0,"rev":false},{"id":4,"start":46,"stop":58,"fx":9,"sx":150,"ix":200,"pal":0,"rev":true},{"id":5,"start":58,"stop":70,"fx":9,"sx":150,"ix":200,"pal":0,"rev":false},{"id":6,"start":70,"stop":82,"fx":9,"sx":150,"ix":200,"pal":0,"rev":true},{"id":7,"start":82,"stop":94,"fx":9,"sx":150,"ix":200,"pal":0,"rev":false},{"id":8,"start":94,"stop":106,"fx":9,"sx":150,"ix":200,"pal":0,"rev":true},{"id":9,"start":106,"stop":118,"fx":9,"sx":150,"ix":200,"pal":0,"rev":false},{"id":10,"start":118,"stop":130,"fx":9,"sx":150,"ix":200,"pal":0,"rev":true},{"id":11,"start":130,"stop":142,"fx":9,"sx":150,"ix":200,"pal":0,"rev":false},{"id":12,"start":142,"stop":154,"fx":9,"sx":150,"ix":200,"pal":0,"rev":true},{"id":13,"start":154,"stop":166,"fx":9,"sx":150,"ix":200,"pal":0,"rev":false},{"id":14,"start":166,"stop":179,"fx":9,"sx":150,"ix":200,"pal":0,"rev":true},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0}]}
Starfall Sky preset
{
"on": true,
"bri": 170,
"transition": 6,
"mainseg": 0,
"seg": [
{
"id": 0,
"start": 0,
"stop": 179,
"grp": 1,
"spc": 0,
"of": 0,
"on": true,
"frz": false,
"bri": 140,
"cct": 127,
"set": 0,
"n": "",
"col": [
[220, 235, 255],
[140, 190, 255],
[0, 0, 0]
],
"fx": 72,
"sx": 61,
"ix": 128,
"pal": 15,
"c1": 128,
"c2": 128,
"c3": 16,
"sel": true,
"rev": false,
"mi": false,
"o1": false,
"o2": false,
"o3": false,
"si": 0,
"m12": 0
},
{ "stop": 0 },
{ "stop": 0 },
{ "stop": 0 },
{ "stop": 0 },
{ "stop": 0 },
{ "stop": 0 },
{ "stop": 0 },
{ "stop": 0 },
{ "stop": 0 },
{ "stop": 0 },
{ "stop": 0 },
{ "stop": 0 },
{ "stop": 0 },
{ "stop": 0 },
{ "stop": 0 }
]
}
Winter Sparkle preset
{
"on": true,
"bri": 180,
"transition": 8,
"seg": [
{
"id": 0,
"start": 0,
"stop": 179,
"fx": 72,
"sx": 90,
"ix": 200,
"pal": 0,
"col": [[255,0,0],[0,255,0],[255,220,80]]
},
{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},
{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},
{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0}
]
}
Candle Light (segmenty) preset
{
"on": true,
"bri": 130,
"transition": 10,
"seg": [
{"id":0,"n":"Leg","start":0,"stop":10,"fx":2,"sx":50,"ix":200,"pal":0,"col":[[255,160,40],[0,0,0],[0,0,0]]},
{"id":1,"start":10,"stop":22,"fx":2,"sx":45,"ix":180,"pal":0,"of":0, "col":[[255,150,30],[0,0,0],[0,0,0]]},
{"id":2,"start":22,"stop":34,"fx":2,"sx":55,"ix":190,"pal":0,"of":20, "col":[[255,170,50],[0,0,0],[0,0,0]]},
{"id":3,"start":34,"stop":46,"fx":2,"sx":60,"ix":200,"pal":0,"of":40, "col":[[255,140,20],[0,0,0],[0,0,0]]},
{"id":4,"start":46,"stop":58,"fx":2,"sx":50,"ix":170,"pal":0,"of":60, "col":[[255,160,35],[0,0,0],[0,0,0]]},
{"id":5,"start":58,"stop":70,"fx":2,"sx":45,"ix":180,"pal":0,"of":80, "col":[[255,180,60],[0,0,0],[0,0,0]]},
{"id":6,"start":70,"stop":82,"fx":2,"sx":55,"ix":190,"pal":0,"of":100, "col":[[255,150,25],[0,0,0],[0,0,0]]},
{"id":7,"start":82,"stop":94,"fx":2,"sx":65,"ix":200,"pal":0,"of":120, "col":[[255,170,40],[0,0,0],[0,0,0]]},
{"id":8,"start":94,"stop":106,"fx":2,"sx":60,"ix":180,"pal":0,"of":140,"col":[[255,160,35],[0,0,0],[0,0,0]]},
{"id":9,"start":106,"stop":118,"fx":2,"sx":50,"ix":170,"pal":0,"of":160,"col":[[255,150,30],[0,0,0],[0,0,0]]},
{"id":10,"start":118,"stop":130,"fx":2,"sx":55,"ix":180,"pal":0,"of":180,"col":[[255,180,60],[0,0,0],[0,0,0]]},
{"id":11,"start":130,"stop":142,"fx":2,"sx":60,"ix":190,"pal":0,"of":200,"col":[[255,140,20],[0,0,0],[0,0,0]]},
{"id":12,"start":142,"stop":154,"fx":2,"sx":45,"ix":170,"pal":0,"of":220,"col":[[255,170,50],[0,0,0],[0,0,0]]},
{"id":13,"start":154,"stop":166,"fx":2,"sx":55,"ix":180,"pal":0,"of":240,"col":[[255,160,35],[0,0,0],[0,0,0]]},
{"id":14,"start":166,"stop":179,"fx":2,"sx":65,"ix":200,"pal":0,"of":260,"col":[[255,150,30],[0,0,0],[0,0,0]]}
]
}
CO₂ Standard preset
{"on":true,"bri":140,"transition":8,"seg":[{"id":0,"n":"Tree+Leg","start":0,"stop":179,"fx":9,"sx":128,"ix":128,"pal":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0}]}
CO₂ Medium preset
{"on":true,"bri":140,"transition":8,"seg":[{"id":0,"n":"Tree","start":11,"stop":179,"fx":9,"sx":128,"ix":128,"pal":0},{"id":1,"n":"Leg","start":0,"stop":10,"fx":2,"sx":40,"ix":200,"pal":0,"col":[[255,140,30],[0,0,0],[0,0,0]]},{"id":2,"n":"Gap","start":10,"stop":11,"fx":0,"col":[[0,0,0],[0,0,0],[0,0,0]]},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0}]}
CO₂ High preset
{"on":true,"bri":140,"transition":8,"seg":[{"id":0,"n":"Leg","start":0,"stop":11,"fx":2,"sx":40,"ix":200,"pal":0,"col":[[255,0,0],[0,0,0],[0,0,0]]},{"id":1,"n":"Tree","start":11,"stop":179,"fx":9,"sx":128,"ix":128,"pal":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0}]}
DJ Light preset
{"on":false,"bri":140,"transition":8,"mainseg":0,"seg":[{"id":0,"start":0,"stop":11,"grp":1,"spc":0,"of":0,"on":true,"frz":false,"bri":140,"cct":127,"set":0,"n":"Leg","col":[[255,0,0],[0,0,0],[0,0,0]],"fx":159,"sx":128,"ix":128,"pal":1,"c1":128,"c2":128,"c3":16,"sel":true,"rev":false,"mi":false,"o1":false,"o2":false,"o3":false,"si":0,"m12":2},{"id":1,"start":11,"stop":179,"grp":1,"spc":0,"of":0,"on":true,"frz":false,"bri":255,"cct":127,"set":0,"n":"Tree","col":[[255,140,30],[0,0,0],[0,0,0]],"fx":159,"sx":128,"ix":128,"pal":1,"c1":128,"c2":128,"c3":16,"sel":true,"rev":false,"mi":false,"o1":false,"o2":false,"o3":false,"si":0,"m12":2},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0}]}
Theater Rainbow preset
{"on":false,"bri":140,"transition":8,"mainseg":0,"seg":[{"id":0,"start":0,"stop":11,"grp":1,"spc":0,"of":0,"on":true,"frz":false,"bri":140,"cct":127,"set":0,"n":"Leg","col":[[255,0,0],[0,0,0],[0,0,0]],"fx":14,"sx":128,"ix":128,"pal":1,"c1":128,"c2":128,"c3":16,"sel":true,"rev":false,"mi":false,"o1":false,"o2":false,"o3":false,"si":0,"m12":0},{"id":1,"start":11,"stop":179,"grp":1,"spc":0,"of":0,"on":true,"frz":false,"bri":255,"cct":127,"set":0,"n":"Tree","col":[[255,140,30],[0,0,0],[0,0,0]],"fx":14,"sx":128,"ix":128,"pal":1,"c1":128,"c2":128,"c3":16,"sel":true,"rev":false,"mi":false,"o1":false,"o2":false,"o3":false,"si":0,"m12":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0}]}
Sweep Random preset
{"on":false,"bri":140,"transition":8,"mainseg":0,"seg":[{"id":0,"start":0,"stop":11,"grp":1,"spc":0,"of":0,"on":true,"frz":false,"bri":140,"cct":127,"set":0,"n":"Leg","col":[[255,0,0],[0,0,0],[0,0,0]],"fx":36,"sx":128,"ix":128,"pal":1,"c1":128,"c2":128,"c3":16,"sel":true,"rev":false,"mi":false,"o1":false,"o2":false,"o3":false,"si":0,"m12":0},{"id":1,"start":11,"stop":179,"grp":1,"spc":0,"of":0,"on":true,"frz":false,"bri":255,"cct":127,"set":0,"n":"Tree","col":[[255,140,30],[0,0,0],[0,0,0]],"fx":36,"sx":128,"ix":128,"pal":1,"c1":128,"c2":128,"c3":16,"sel":true,"rev":false,"mi":false,"o1":false,"o2":false,"o3":false,"si":0,"m12":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0},{"stop":0}]}
Automatizace pro CO₂ v HA
Poslední věc, kterou si dnes ukážeme je automatizace v HA pro zobrazování stavu CO₂ v kmeni stromu. Pokud by vás zajímalo, jak si vyrobit senzor CO₂, návod najdete v tomto článku. Přesuneme se do Settings->Automations & scenes -> Create automation.
Jako trigger využijeme náš senzor CO₂, klikneme na Add trigger, vyhledáme State a trigger přidáme. V položce Entity vyhledáme senzor. Tímto krokem jsme zajistili, že se automatizace spustí při jakékoliv změně na senzoru.

Dále si přidáme podmínku, která nám bude zajišťovat, že se automatizace spustí, pouze pokud je strom zapnutý. Vyhneme se tím neustálému zapínání stromu. Klikneme na Add condition, opět vyhledáme State a vyhledáme entitu pro zapnutí LED pásku ve stromu (pozor často můžete mít v HA dvě entity a ta správná většinou obsahuje v názvu „Hlavní“).

V posledním kroku přidáme akci. Klikneme na Add building block, vyhledáme Choose a přidáme celkem tři možnosti.
- Pokud CO₂ <= 900 → preset CO₂ Standard, strom je duhový
- Pokud CO₂ 900 – 1200 → preset CO₂ Medium, strom je duhový a kmen dýchá oranžově
- Pokud CO₂ > 1200 → preset CO₂ High, strom je duhový a noha dýchá červeně



Automatizaci uložíme, zapneme strom a můžeme ji hned vyzkoušet 😉.
alias: Bedroom Tree - CO2
description: ""
triggers:
- entity_id:
- sensor.bedroom_co2_mh_z19_co2_value
trigger: state
conditions:
- condition: state
entity_id: light.bedroom_tree_hlavni
state: "on"
actions:
- choose:
- conditions:
- condition: template
value_template: "{{ trigger.to_state.state | int < 900 }}"
sequence:
- device_id: a58277dec0bc792da58edc760a6f93b5
domain: select
entity_id: 572b5fb2db1cd803fe2c7f490e5fa2fc
type: select_option
option: CO2 Standard
- conditions:
- condition: template
value_template: "{{ 900 <= trigger.to_state.state | int <= 1200 }}"
sequence:
- device_id: a58277dec0bc792da58edc760a6f93b5
domain: select
entity_id: 572b5fb2db1cd803fe2c7f490e5fa2fc
type: select_option
option: CO2 Medium
- conditions:
- condition: template
value_template: "{{ trigger.to_state.state | int > 1200 }}"
sequence:
- device_id: a58277dec0bc792da58edc760a6f93b5
domain: select
entity_id: 572b5fb2db1cd803fe2c7f490e5fa2fc
type: select_option
option: CO2 High
mode: single
Závěr
V dnešním díle jsme si sestavili chytrý LED strom, ukázali si jeho možnosti a vyzkoušeli několik efektů. Přidali jsme také automatizaci v Home Assistantu, díky které strom reaguje na úroveň CO₂ a včas upozorní, kdy je potřeba vyvětrat. V příštím díle se podíváme na chytré LED pásky a jejich praktické využití.
Tak chytrým stromům zdar!
