![]() | |
![]() | |
Aanleiding Ik had in het "Show je setup" topic van Home Assistant een teaser geplaatst van deze kaart om te kijken wat anderen ervan vinden. Daar werd door Koepert voorgesteld om een apart topic aan te maken zodat een beperkt aantal mensen de kaart kan testen en uitproberen. En zo geschiedde. Het DOEL Het doel van dit topic is letterlijk feedback te krijgen met het gebruik van deze kaart zodat ik deze kaart met een gerust(er) hart kan vrijgeven op het Home Assistant Forum en kan verspreiden via HACS. Punten in willekeurige volgorde waar ik zo aan denk zijn:
Het is van belang om te begrijpen dat dit topic mij moet helpen. Vanwege het overlijden van mijn zusje dit jaar heb ik af en toe wat tijd voor mezelf nodig. Er wordt dus de nodige zelfwerkzaamheid verwacht. Nu zitten we op Tweakers waar we gewend zijn om eigen inzet te tonen, dus ik maak me daar niet echt zorgen over. De beta testers zijn voor mij dus erg belangrijk om de kaart tzt vrij te geven. Eeuwige roem dus ![]() Dus voor wie?
| |
![]() | |
| |
![]() | |
| |
![]() | |
Aanleiding Ik gebruik Home Assistant al heel wat jaren. Ik ben visueel ingesteld. Het enorme aantal mogelijke cards & custom cards was één van de dingen die mij daarom altijd erg aanspraken: zoveel keus! Ondanks deze keus zat ik vaak bestaande kaarten aan te passen, zodat ze net wat meer overeenkwamen met de visualisatie zoals ik die zou willen. En zo leerde ik beetje bij beetje hoe een custom card in elkaar zat. Tegelijkertijd kwam de vraag "Wat als ik de mogelijkheid zou hebben om een willekeurige visualisatie te maken? Dat ik zelf componenten kan samenstellen? Dan kan ik veel meer leuke dingen maken!" steeds vaker terug. En toen kwam het bericht dat mijn zusje dood zou gaan en had ik iets nodig om in balans te blijven en ben ik begonnen om mijn eigen vraag te realiseren: een kaart die mij een grote vrijheid geeft qua visualisaties, qua werk complex en uitdagend is en een perfecte afleiding is van alle ellende. Achteraf gezien ben ik veel, maar dan ook veel verder gekomen dan ik aan het begin had durven hopen. Dus zo zie je maar wat je als mens kunt leren als je ergens gemotiveerd aan begint ![]() Wat statistieken
Als ik software ontwikkelaar zou zijn, dan zou het bijna op werk lijken ![]() | |
![]() | |
Intro...De naam van de kaart "Swiss Army Knife" was al snel bepaald door de veelzijdige tools die ik aan het bouwen was. Dus een eigen logo was ook snel geboren!De basis van SAKSAK is opgebouwd uit een aantal basis elementen die belangrijk zijn om te begrijpen hoe de kaart werkt, en hoe je visualisaties moet maken.SAK is volledig gebouwd met SVG: SAK is volledig gebouwd op de SVG (Scalable Vector Graphics) 'standaard'. Standaard tussen aanhalingstekens, want de implementatie door verschillende browsers is allesbehalve standaard. Het woord schaalbaar is hier het toverwoord: hoe groot de visualisatie ook wordt weergegeven, het is altijd scherp. Verder schaalt ook tekst perfect mee, dus ook daar heb je geen omkijken naar! Animaties (SMIL of CSS) behoren tot de mogelijkheden, naast de uitgebreide ondersteuning voor filters om bijv. schaduwen te kunnen maken. SAK gebruikt een eigen coördinaten stelsel om alle objecten te plaatsen: SVG is grafisch, en dus heb je coördinaten (x,y) nodig om objecten te kunnen plaatsen op een canvas. De grootte van dat canvas is de SAK Card die een configureerbare grootte heeft. Binnen SAK heten de grafische objecten 'tools', en een verzameling van 'tools' een 'toolset'. Beiden maken gebruik van een coördinaten stelsel dat SVG details netjes afschermt voor de gebruiker. Een toolset zorgt ervoor dat je een verzameling aan tools in één keer kunt plaatsen op de gewenste positie ipv dat je alle tools afzonderlijk van de juiste coördinaten moet voorzien: een toolset is daarmee dus een herbruikbare component! De card, tools en toolsets en de x,y coordinaten werken als volgt samen:
De toolset staat met (50,50) in het midden. Zou deze op (45,50) worden gezet, dan zouden alle tools naar links schuiven, tegen de rand van de card aan. En wat wordt door SAK aan tools ondersteund?
Elke tool can via de style: definitie worden gestyled. Hierbij kan gebruik worden gemaakt van CSS definities. Er vind geen vertaling plaats binnen SAK. Dat betekent dat als je bijv. via de Chrome Inspector tools handmatig bent wezen stylen, je deze kunt overnemen in je YAML definitie. Om de styles beter beheersbaar te maken is er - experimentele - ondersteuning voor CSS classes binnen SAK: zo kun je een class definieren, en deze vervolgens hergebruiken. Dat scheelt natuurlijk enorm veel style regels YAML. Sommige tools ondersteunen daarnaast colorstops en varianten daarop zodat je afhankelijk van de state de kleur bijv. kunt wijzigen. Last but not least: animaties! Animaties maken het mogelijk om de style te wijzigen van tools aan de hand van een state wijziging van een state of attribute. Als voorbeeld een stukje (template) uit de lamp weergave (zie voorbeeld 2 en voorbeeld 8, waarbij de activatie ring om de lamp van kleur wijzigt als de lamp aan of uit is:
Tot zover... Tot zover de basis. Elke tool kent nog de nodige eigenschappen die je voorlopig uit de YAML voorbeelden zult moeten halen. | |
![]() | |
Intro...Hoe kwamen de voorbeelden tot stand?Tsja. Ik heb het afgelopen jaar zo'n 50 schetsen gemaakt in Procreate op mijn iPad. Veel schetsen hebben het nooit gehaald om te maken. Dat kon zijn omdat ze niks toevoegen, te lastig waren, of gewoon lelijk achteraf. Onderstaand zo'n ruwe schets met daarin een voorversie van het server voorbeeld en van een lamp. Nog niet echt Leonardo da Vinci niveau ![]() Vanuit een schets werken is soms wat veel werk om die in productie te krijgen. En dan gaat het voornamelijk om alle coördinaten, oftewel de posities van de diverse tools. Maar ook dat went: ff wat in YAML wijzigen, en dan op ctrl-F5 rammen in de browser en je ziet de laatste stand van je creatie ![]() In het geval van voorbeeld #6 heb ik dat anders gedaan: door in Affinity Designer alles op schaal te maken (een 100x100 matrix) kon ik alle coördinaten en groottes letterlijk uit AD overnemen. Rechtsonder zie je de coördinaten (77, 59) en grootte (22) van de geselecteerde cirkel: die heb ik letterlijk in YAML overgenomen om de cirkel met de tool erop te plaatsen: En in YAML ziet het er dan zo uit voor de cirkel die hierop wordt geplaatst. Je ziet de definitie van een toolset (verzameling/groepering van tools) en een deel van de tools definities, in dit geval de cirkel waar het weertype uiteindelijk op komt. De toolset coordinaten (50,50) zorgen ervoor dat alles netjes in het midden staat: als we alles net waar naar links hadden willen zetten, dan had dit bijv. (45,50) kunnen zijn en had de cirkel tegen de rand van de card aangezeten. Het Design: Zo ongeveer alle voorbeelden zijn gebaseerd op een Neumorphic Design. Dat vond ik leuk omdat het weer eens wat anders is. Bij dit ontwerp komen objecten uit de achtergrond omhoog, of liggen ze erin. Afhankelijk van de achtergrondkleur is het noodzakelijk dat de lichte en donkere kleuren passen bij de achtergrondkleur. Een site om de kleuren te bepalen die je nodig hebt in je thema is hier te vinden! Het gebruik van Neumorphic Design is vanzelfsprekend niet verplicht: je kunt elk plat design, of een material design met schaduwen maken. Kwestie van het toepassen van de juiste SVG filters die zijn voorgedefinieerd! De voorbeelden: De voorbeelden zijn echte screenshots van mijn iPhone, ik doe aan een "Mobile First Approach", dus al mijn views zijn passend en bedienbaar gemaakt op een iPhone. 3 kaarten naast elkaar in een rij zijn dus het maximum wat nog te bedienen is. 2 kaarten zou nog beter zijn volgens UX experts, maar voor mij is dit net goed. Deze screenshots zijn vervolgens in een mockup van een iPhone in Affinity Designer gevoegd om het totaal plaatje te krijgen. | |
Voorbeeld #1 - Mijn MOAC (Mother of All Cards)Dit is de grootste visualisatie die ik heb gemaakt als het gaat om aantallen entiteiten/attributen en zeker qua omvang in YAML. Geen hergebruik van onderdelen, gewoon lekker copy/paste en dan zit je rond de 1.500 regels!Databronnen:
De documentatie voor dit voorbeeld staat hier. | |
Voorbeeld #2 - Weergave en bediening van lampenDe visualisatie en bediening van lampen. Mag natuurlijk ook iets anders zijn.De eerste rij bevat verschillende variaties met een slider die semi-realtime de brightness bediend. Semi-realtime betekent dat als je de slider schuift, de verlichting in stapjes meegaat. Databronnen:
| |
Voorbeeld #3 - Weergave van sensorenWeergave van de toestand van diverse sensoren.Databronnen:
| |
Voorbeeld #4 - Weergave van sensoren - Neumorphic en Flat designWederom een aantal weergaves van sensoren, maar nu op een geheel andere manier dan de vorige weergave.De eerste rij is een Neumorphic Design, en de tweede rij is een zeer eenvoudig Flat Design: enkel wat rectangles met kleuren over elkaar heen, en daarop de sensor gegevens. het kan dus erg simpel! Databronnen:
De documentatie voor het sensor voorbeeld staat hier. | |
Voorbeeld #5 - Het weer op een soort auto dashboardWeergave van het weer buiten geïnspireerd door de klokken in het dashboard van een auto.De eerste weergave is een Flat Design met een beetje schaduw. De tweede weergave weer een Neumorphic Design. Databronnen:
| |
Voorbeeld #6 - Het weer en airvisual op een achtergrond van cirkelsHet weer verveelt nooit, en is makkelijk door iedereen te gebruiken als voorbeeld. Ditmaal is in Affinity Designer een leuke achtergrond gemaakt bestaande uit wat cirkels met een kleurverloop.Daarboven op zijn de 5 cirkels geplaatst met de data van de nodige entities. Databronnen:
De documentatie voor het auto dashboard voorbeeld staat hier. | |
Voorbeeld #7 - Servers weergaveWeergave van de basis gegevens van twee servers. Mijn nucje waar oa Home Assistant op draait in containers en een server die als frontend dient voor het grote boze internet. Ook hier alles in docker containers.Beide systemen zijn ff flink belast om de weergave wat aantrekkelijker te maken: de colorstops zijn nu tenminste goed zichtbaar bij de system load. Databronnen:
| |
Voorbeeld #8 - Het beweegt! 2x GifjeWow! Bewegende beelden![]() De gifjes zijn niet van top kwaliteit, maar laten een aantal animaties zien. Noot: Het kort knipperende vierkant wat je ziet bij de lampen is iets van iOS schijnt het bij het bedienen van de lamp: ik krijg dat niet gedisabled. Dit zit overigens niet bij bediening van de sliders en is ook niet in Chrome te zien op de PC. Ik zie het dus als een "known feature" | |
![]() | |
Deze TS was al een hoop werk, dus dit laatste deel wordt nog ingevuld met instructies. Ik wil bijv. alle voorbeelden in aparte views ter beschikking stellen, zodat het uitproberen eenvoudiger wordt. Daar heb ik denk ik nog wat dagen voor nodig. Wil je meedoen en heb je het doel van het topic en voor wie deel goed gelezen, dan mag je me een DM sturen. Als ik alles gereed heb krijg je daarna vanzelf een antwoord met daarin een download link, en zal ik de instructies hier ook aanvullen! Alvast bedankt! Marco aka Mars Warrior aka AmoebeLabs. Handleidingen: | |
Ter compleetheid de huidige lijst van open issues die ik nog voor een public release wil oplossen. Deels bugs, en deels zaken die een refactoring nodig maken, en dus mogelijk wijzigingen in YAML. Die wil ik niet doen als alles al is vrijgegeven! |
[Voor 5% gewijzigd door Mars Warrior op 15-06-2022 11:55]
Material 3 Thema's voor HA | Swiss Army Knife custom card voor HA | AmoebeLabs