Lux threshold berekenen tijdens de dag voor bediening screens

Ik heb twee Hue bewegingssensoren met lux meting. Een voor de voorkant van het huis en een voor de achterkant. Om te bepalen of de screen dicht moeten vanwege te veel zon heb ik flows aangemaakt. Daarbij wordt naast de lux-waarde ook gekeken naar het seizoen en de buitentemperatuur. Als het buiten relatief koud is dan mogen de screen open blijven om gebruik te maken van zonnewarmte ipv de CV ketel. Er zitten al een paar timers in om te zorgen dat ze niet elke paar minuten open en dicht gaan bij wisselende bewolking (check per 30 min vind ik acceptabel).

De sterkte van de zon is uiteraard veel krachtiger tussen 11 en 15 uur dan vroeg in de ochtend of later in de middag. In de loop van de ochtend moet ik bepalen of de screens naar beneden moeten, maar dat kan niet met één vaste waarde. Ik heb de afgelopen weken metingen gedaan en kom voor de zonnige ochtend op het oosten uit op: 8 uur, 450 lux - 9 uur, 1300 lux - 10 uur, 3200 lux - 11 uur, 3600 lux - 12 uur 2800 lux - 13 uur, 2300 lux (een parabool dus). Ik kan natuurlijk elke 30 min een aparte flow opstarten om te bepalen of een bepaalde threshold is bereikt, maar zou dat liever in een formule zetten met een aantal variabelen waar ik aan kan ‘draaien’ om het te fine tunen. Kan ik bijvoorbeeld een array aanmaken waarin ik mijn metingen kan gebruiken? Heeft iemand een mooie oplossing of een verwijzing naar een post waar dit al eens is behandeld.

1 Like

Allereerst:
Zelf heb ik het gedaan op basis van een temperatuursensor die binnen, achter een raam, in de zon staat.
En als de temperatuur binnen een 15 minuten te snel omhoog gaat (en het is warm in huis en de cv uit etc.) dan gaan de gordijnen dicht (i.i.g. degene die op dat moment in de zon staan).

Dit geeft echter geen antwoord op je vraag, een antwoord komt eraan… één moment.

Met de Better Logic Library app kun je het als volgt doen:
Plaats een conditie-kaart met BLL Expression en plaats daar het volgende in:

[[LUX]]>{'08':450, '09':1300, '10':3200, '11':3600,
'12':2800, '13':2300, '14':1500}[date('HH')]

Vervang de [[LUX]] met de tag waar de lux-waarde in zit.
Wat je hier doet is een Object opbouwen met uren en de daarbij behorende waardes.
Vervolgens wordt de waarde van het uur vergeleken met de [[LUX]].
Om de juiste waarde te pakken gebruik je de date('HH'), die zal het uur opgeven in 24-uursformaat (met eventuele 0 ervoor).
Omdat het een conditie kaart is, heb je verder niks nodig, deze éne kaart zal doorgaan (true) als de [[lux]] groter is dan de opgegeven lux van dat uur.

Voorbeeld met vaste waarde (geen tag):

Overigens: als het huidige uur niet het Object zit, dan zal de evaluatie onwaar/false zijn.

2 Likes

Hoi Arie,
Top hier kan ik zeker mee verder.
Better Logic heb ik inderdaad al geïnstalleerd maar mijn programmeer kennis blijkt niet voldoende.

Leuk dat het uiteindelijk zo eenvoudig is te maken!

Groet, Jeroen

1 Like