Script
Hoe het Script-component van Ilevia Manager te gebruiken om aangepaste logica in JavaScript te schrijven: beschikbare commando’s en voorbeelden met downloadbare projecten.
Inleiding
Dankzij het Script-component is het mogelijk om in het systeem nieuwe en aangepaste logica te implementeren, van eenvoudig tot complex, door coderegels te schrijven in de programmeertaal JavaScript.
Toepassingsgevallen
De gebruiker wil een extern script maken om een kleurcyclus voor RGB-verlichting te realiseren.
De gebruiker wil een JavaScript-script maken om een aangepaste voorwaarde te creëren.
De gebruiker wil een JavaScript-script maken om op een specifiek tijdstip de temperatuur van een WTW-unit (Ventilatie met Warmteterugwinning) te kunnen controleren en instellen. Klik op deze link voor meer informatie.
De gebruiker wil een logica met JavaScript maken om de setpointtemperatuur te wijzigen op basis van het geselecteerde seizoen in een optieslijst, als de energie op een acceptabel niveau is. Klik op deze link voor meer informatie over dit script.

Componenteigenschappen
Titel en pictogram van het component zijn aanpasbaar. Raadpleeg de handleiding over de “Algemene eigenschappen“.
Script Editor: door hier te klikken wordt het editorvenster geopend, waarin je je script kunt schrijven.
Scriptcommando’s (getValue)
getValueAsString(IDComponente): geeft de waarde van het component, geïdentificeerd door de ID die zichtbaar is in Ilevia Manager, terug als tekststring.
getValueAsInt(IDComponente): geeft de waarde van het component, geïdentificeerd door de ID die zichtbaar is in Ilevia Manager, terug als geheel getal (1, 2, 3, 4, 5 enz.).
getValueAsDouble(IDComponente): geeft de waarde van het component, geïdentificeerd door de ID die zichtbaar is in Ilevia Manager, terug als decimaal getal (1,5; 2,4; 3,7 enz.).
getValueAsBoolean(IDComponente): geeft de waarde van het component, geïdentificeerd door de ID die zichtbaar is in Ilevia Manager, terug als booleaanse waarde, dus true of false.
Scriptcommando’s (setValue)
setValue(IDComponente, WaardeVanHetComponent): stelt de waarde in van het opgegeven component (bijvoorbeeld die van een schakelaar, met waarden 0/1).
setTrigger(IDComponente, “functie”): koppelt een functie aan een component, die wordt uitgevoerd wanneer het component wordt geactiveerd. Voor werking zijn zowel de ID van het component als de naam van de functie nodig.
removeTrigger(IDComponente): verwijdert de trigger die is ingesteld voor het component met de opgegeven ID.
setInterval(seconden, “functie”): roept de opgegeven functie elke “X” seconden aan, waarbij X door de gebruiker is ingesteld.
setTimeout(functie, milliseconden): past een wachttijd (timeout), uitgedrukt in milliseconden, toe op de opgegeven functie.
removeInterval(“functie”): verwijdert de opgegeven functie die eerder met setInterval was ingesteld en stopt de periodieke uitvoering ervan.
setTriggerEdge(IDComponente, “waardeVanDeWijziging”, “functie”): start een functie wanneer het component Schakelaar de opgegeven waarde aanneemt (stijgende of dalende flank) in het veld “Waarde van de wijziging”. Dit is handig wanneer de functie moet worden uitgevoerd bij de omgekeerde triggerwaarde van het component.
Aanvullende scriptfuncties
log: hiermee kun je bijhouden wat er binnen het script gebeurt.
HTTPRequest: deze methode kan worden gebruikt om gegevens op te vragen van een webserver. Een voorbeeld kan zijn:
var x =HTTPRequest(“URL”);
HTTPPost: de methode POST wordt gebruikt om informatie en verzoeken naar een server te verzenden.
var x = HTTPPost(“URL”, data);
Opmerking: neem voor elke vraag of suggestie contact op met de technische ondersteuning.
Herinnering voordat je verdergaat:
Download en installeer de Ilevia Logic-plugin om plugins in te schakelen (link);
Nadat je het Ilevia-project op de server hebt geladen, wacht een paar minuten totdat de logica's zijn opgestart.
If…Else-instructie
VOORBEELD NR. 1


In dit voorbeeld gebruiken we een schakelaar met ID “12” en een “Instelbare waarde” met ID “14”. Met een if statement kun je Ilevia Manager laten de schakelaar activeren wanneer de Instelbare waarde 10 of hoger bereikt. Een typisch gebruik van dit script is een gebeurtenis laten plaatsvinden wanneer een bepaalde waarde wordt bereikt.
DOWNLOAD VOORBEELDPROJECT NR. 1
Download hier het voorbeeldproject en probeer het zelf!
VOORBEELD NR. 2



In dit voorbeeld gebruiken we een schakelaar met ID “14” en een “Optieslijst” met ID “13”. Met een if statement kun je Ilevia Manager laten de schakelaar activeren wanneer de Optieslijst op index 0 staat; als hij echter de waarde 1 aanneemt, wordt de airco uitgeschakeld. Een typisch gebruik van dit script is een gebeurtenis laten plaatsvinden wanneer een bepaalde waarde in de optieslijst wordt gekozen.
DOWNLOAD VOORBEELDPROJECT NR. 2
Download hier het voorbeeldproject en probeer het zelf!
JavaScript-functies
VOORBEELD NR. 3


In dit voorbeeld gebruiken we setInterval(2,”executeAdd”): zoals te zien is, geeft het eerste argument tussen haakjes aan om de hoeveel seconden de waarde van de variabele a met 1 (++) wordt verhoogd; in het tweede argument wordt eenvoudigweg de aan te roepen functie opgegeven.
DOWNLOAD HET VOORBEELDPROJECT NR. 3
Download hier het voorbeeldproject en probeer het zelf!
VOORBEELD NR. 4


In dit voorbeeld gebruiken we twee verschillende componenten met ID “11” en “12”. Via een functie verhogen we de waarde van de eerste info-component elke 2 seconden met 1 en die van de tweede info-component elke 10 seconden met 1. Om de functie aan te roepen, plaatsen we deze in de methode setInterval(2,”executeAddEvery2S”) en in setInterval(10,”executeAddEvery10S”). Zoals te zien is, geeft het eerste argument tussen haakjes aan om de hoeveel seconden de waarde van de variabele a met 1 (++) wordt verhoogd; in het tweede argument wordt eenvoudigweg de aan te roepen functie opgegeven, die, zoals gezegd, 1 toevoegt aan de variabele a.
DOWNLOAD HET VOORBEELDPROJECT NR. 4
Download hier het voorbeeldproject en probeer het zelf!
VOORBEELD NR. 5


In dit voorbeeld gebruiken we 2 schakelcomponenten met ID “12” en “13” en twee info-componenten met ID “14” en “15”. Via een functie wordt de waarde van de eerste info-component bij elke klik op de eerste schakelaar met 1 verhoogd; hetzelfde gebeurt bij het klikken op de tweede schakelaar met de andere info-component. Een typisch gebruik van deze functie is code uitvoeren wanneer er iets gebeurt. Om de functie aan te roepen, plaatsen we deze in de methode setTrigger(12,”executeWhen12Clicked”) en in setTrigger(13,”executeWhen13Clicked”). Zoals te zien is, is het eerste argument tussen haakjes het component dat de functie activeert; in het tweede argument wordt de aan te roepen functie opgegeven, die, zoals gezegd, 1 toevoegt aan de variabele a na de klik op component 12 of 13.
DOWNLOAD HET VOORBEELDPROJECT NR. 5
Download hier het voorbeeldproject en probeer het zelf!
VOORBEELD NR. 6


In dit voorbeeld worden een Schakelaar-component met component-ID “26” en een Info-component met component-ID “12” gebruikt. De functie toont een waarde binnen de Info-component wanneer de Schakelaar-component naar de stand On gaat. De methode setTriggerEdge bepaalt de uitvoeringsvoorwaarden van de functie number_counter.
DOWNLOAD HET VOORBEELDPROJECT NR. 6
Download hier het voorbeeldproject en probeer het zelf!
VOORBEELD NR. 7


In dit voorbeeld wordt uitgelegd hoe je een tijdsinterval instelt dat opnieuw wordt gestart, met de gekozen duur, telkens wanneer een bewegingssensor beweging detecteert om een licht in te schakelen. De eerste Schakelaar-component, met ID “12”, wordt gebruikt als bewegingssensor. De tweede Schakelaar-component, met ID “15”, wordt gebruikt om het licht in te schakelen. De Instelbare waarde-component dient om de duur van de aftelling in te stellen, waarna het licht uitschakelt.
Voor meer informatie over dit script, raadpleeg de handleiding met volledige uitleg.
DOWNLOAD HET VOORBEELDPROJECT NR. 7
Het voorbeeldproject kan worden gedownload uit de handleiding met volledige uitleg: probeer het zelf!
VOORBEELD NR. 8


In dit voorbeeld wordt uitgelegd hoe je online het tijdstip van zonsopgang, zonsondergang en de actuele tijd voor specifieke coördinaten ophaalt via online API's met behulp van de methode HTTPRequest; het script verwerkt vervolgens de actuele tijd, zet deze om van 24-uursformaat naar 12-uursformaat en controleert ten slotte of het AM of PM is.
Voor meer informatie over dit script, raadpleeg de handleiding met volledige uitleg.
DOWNLOAD HET VOORBEELDPROJECT NR. 8
Download hier het voorbeeldproject en probeer het zelf!
VOORBEELD NR. 9


In dit voorbeeld wordt uitgelegd hoe je een script maakt dat de door de gebruiker ingevoerde tekens in een Tekstinvoer-component verwerkt, ze omzet van decimale naar hexadecimale getallen en vervolgens een Scenariocomponent aanstuurt die de waarde op de KNX-bus verstuurt.
Voor meer informatie over dit script, raadpleeg de uitleghandleiding hier.
DOWNLOAD HET VOORBEELDPROJECT NR. 9
Download hier het voorbeeldproject en probeer het zelf!