Lua-sheriffen, del 8- Fibaro Home Center 2

Oj då, vad är nu detta? 😮

Lua-sheriffen

Nu har vi gått igenom grunderna i Lua, så vad passar väl bättre än att börja tillämpa det praktiskt? Flera Z-wave-kontrollers har stöd för Lua, däribland Fibaros flaggskepp Home Center 2.
I detta inlägg ska vi kort gå igenom vad man kan göra med Lua, och framöver kanske lägga upp lite exempel! 🙂

Scener

Skapa Lua-scen i HC2Till att börja med finns det i Home Center 2 två olika användningsområden för Lua. Det första är att skapa scener, ungefär som man också kan göra med ”blockeditorn”.
För att skapa en scen med Lua går man in på Scener -> Lägg till Scen och klickar på Add under ”Lägg till scen i Lua”.

 

 

Device PropertiesDetta öppnar ett nytt fönster där man kan skriva kod. På vänster sida har man också två menyer, ”Variabellista” och ”Enhetslista”, under vilka man kan se vilka variabler och enheter som finns inlagda. Man kan också få information om vilka attribut och kommandon för en enhet man kan anropa, som på bildexemplet visar hur det kan se ut för ett dörrlås.

 

Högst upp, under ”%% properties”, kan man ange triggers. De triggers man lägger in kör sedan skriptet:

Värt att nämna först är också att den översta raden, %% autostart, gör att skriptet automatiskt körs när HC2:an startas (denna rad är valfri).

Här ovan har vi angett enhet med ID 152 och dess utlösande faktor är value. Det betyder att om enhetens status ändras så körs skriptet.

För enhet med ID 202 däremot, anger vi att den kan skicka ett scenkommando. I och med att scen-anrop skickar olika heltal beroende på knapptryckning (brukar finnas specificerat i manualen), kan man i koden hämta heltalet och, baserat på vilket det är, köra olika kommandon.

”globiabel” i detta fall, är en global variabel och även förändringar till denna anropar scenen.

Nu kan man låta skriptet vara så det anropas automatiskt, eller så kan man anropa det från en annan scen eller varför inte från en ”Virtual Device”, vilket vi ska titta på nu.

Virtuella enheter

Virtual deviceI de fall scener och de enheter man har inte räcker till, kan man istället skapa en virtuell enhet med hjälp av Lua. Virtuella enheter går att konfigurera grafiskt, med knappar, sliders och labels, och vad som sker under huven bestämmer man programmatiskt, med Lua. Att lägga till en virtuell enhet fungerar likadant som att lägga till vilken enhet som helst. Man kan också importera färdigkodade enheter, bland annat går det att ladda ner en del från Fibaro.

Själva programmeringen ser ungefär likadan ut som när man skapar scener, även om programmeringsläget ser lite annorlunda ut eftersom det är separata kodfönster för alla elementen.

Virtuell enhetHär har jag skapat en virtuell enhet. I mitten finns ett exempel på hur enheten ser ut för närvarande, och under den finns en ”widget-väljare” där man kan välja element man vill lägga till i sin enhet. De element man lägger till dyker sedan upp i en lista längst ner, där man kan ändra text de ska innehålla, samt ikoner.

 

 

 

Lua-kod i virtuell enhet

Beroende på vilket typ av element man lagt till kan man göra olika saker med dem. Knappar kan man skriva LUA-kod för, och allra längst ner kan man skriva kod för ”main loop”. Denna kod körs om och om igen.

Koden jag skrivit i main-loopen sätter texten i min Label1 till ”HEJ!” och därefter ”sover” (pausar) loopen 2 sekunder. Sen har jag definierat att Button24 ska sätta labeln till ”Knapp 4!”. Detta gör att varannan sekund sätts texten till ”HEJ!” så om man trycker på knappen märkt ”4” sätts den till ”Knapp 4!” tills dess att loopen slutat sova.

Så vad kan man använda detta till? Ptja, med scener kan man automatisera hemmet med hjälp av mer avancerad funktionalitet än i det blockbaserade scenprogrammeringsläget. Men virtuella enheter är också riktigt häftiga. Man kan utöka funktionaliteten väldigt mycket. Exempelvis kan man ansluta till REST-baserade servrar och hämta information i JSON-format för att sedan presentera denna i en enhet. Man kan också, som en av våra användare demonstrerat, ansluta billiga MySensors-enheter genom att kommunicera med en Arduino-baserad gateway över nätverket. Sannolikt kan man på samma sätt kommunicera med vilka enheter man vill som går att komma åt över TCP/IP.

 

 

Så vad har vi lärt oss idag?

  • Att man kan programmera i Lua på Home Center 2
  • Hur man skapar scener och virtuella enheter, och vad som är skillnaden på dessa
  • Vilka möjligheter detta ger på Home Center 2

Mer om Home Center 2, och framför allt det inbyggda Lua-biblioteket som finns i den, kommer vi gå igenom nästa gång! 🙂

Kommentera