Alle mogelijkheden, beslissingen en resultaten van de bouw van onze passieve energie-plus woning

Maand: oktober 2020

Het frame van het kippenhok

Het bouwplan bestaat uit op de millimeter nauwkeurige tekeningen van de opbouw. En dat begint met het frame; zowel van het  kippenhok als van de overdekte ren er naast. Waar ik dan weer mijn eigen berekeningen op los kon laten voor specifieke balkmaten.

Tekening frame

 

Dus alle zeven delen werden in “de werkplaats” – lees in het prieel en op het gras – opgesteld. Met goede torx schroeven van Dynaplus en zo veel mogelijk op de millimeter weer nauwkeurig.

Frame in opbouw bij prieelFrame samengesteld op het grasFrame gereed staand tegen muur

 

Uiteindelijk worden alle frames op de plek gezet en aan elkaar vastgemaakt.

Frames aan elkaar op de plek frames aan elkaar - legkasten kant Frames aan elkaar - vanuit de ren genomen

Flic2 buttons koppelen aan HomeAssistant

Start

In 2019 heb ik meegedaan aan een kickstarter project; Flic2-buttons . Kleine en heel simpele knopjes met een langhoudbare knoopcel-batterij. De bedoeling is dat je zo’n knopje ergens onopvallend kan plaatsen en met indrukken iets kan laten starten.

FlicHub

De flic-button werkt met Bluetooth. De eerste versies konden alleen verbinding maken met een telefoon. Dat is wel lastig als je iets wil doen en de persoon met de telefoon is er niet. Met dit project hebben ze er nog iets aan toegevoegd; een hub. De FlicHub maakt via bluetooth verbinding met de flic-buttons en via WiFi (of een kabel) met het netwerk in het huis. Op deze manier heeft de button dus 24u/dag verbinding met het netwerk.

HomeAssistant

De knoppen zouden via Bluetooth verbinding kunnen maken met een ontvanger in de RaspberryPi (RPI) met HomeAssistant. In HomeAssistant is er een integratie  en er moet dan op de RPI een service “flicd” worden geïnstalleerd zodat er kan worden geluisterd naar binnenkomende signalen. Ondanks uitzoekwerk en pogingen is me dat niet gelukt. Het kan liggen aan de beperkte WiFi/USB/Bluetooth combinatiemogelijkheden van de Raspberry.

FlicHub-component

Daarom wilde ik graag een poging doen om met HomeAssistant de FlicHub te benaderen. Er is nog geen functionaliteit gemaakt door de community. Ook navraag bij de makers van Flic (ShotcutLabs) leverde in eerste instantie niet veel op. In september wilde ik weer heel graag de Flic-buttons gaan gebruiken voor sturing van de domotica, dus nieuwe moed verzameld om zowel bij ShortcutLabs als bij de HomeAssistant-community na te vragen wat de mogelijkheden zijn en hoe het aan te pakken. Ik begon me al voorzichtig in te lezen in Gitlab, pull-requests, forken van andere source etc. Behoorlijk complex om als nieuweling in te duiken.

FlicHub SDK Firmware

Van ShortcutLabs kreeg ik het bericht dat ik speciale firmware moest hebben om de FlicHub te benaderen. Terwijl ik me via een google-formulier inschreef en wachtte op automatische update van de firmware dook ik in JavaScript, waarmee de SDK te benaderen moest zijn. Online allemaal trainingen volgen en meteen ook Visual Source Code leren en installeren want dat is het meest gebruikelijk bij JavaScipt.

Toen ik de update kreeg, was er ook een beschrijving van hoe de SDK te benaderen, met voorbeelden in JavaScript hoe een en ander aan te pakken.

Wat bleek het geval; je kan via een speciale url de FlicHub benaderen en op het device JavaScript schrijven en draaien. Als de FlicHub een signaal van een button ontvangt kan je code laten uitvoeren. Na wat testscripts had ik snel een werkende code; bij een ‘click’, een ‘double-click’ en een ‘hold’ stuurt het script een http-bericht.

console.log("JavaScript started");
var buttonManager = require("buttons");
var http = require("http");
var baseurl = "http://192.168.xxx.xxx:8123/api/webhook/";

buttonManager.on("buttonSingleOrDoubleClickOrHold", function(obj) {
    var button = buttonManager.getButton(obj.bdaddr);
    var clickType = obj.isSingleClick ? "click" : obj.isDoubleClick ? "double_click" : "hold";
    var url = baseurl + button.name + "_" + clickType;

    http.makeRequest({
        url: url,
        method: "POST",
        headers: {"Content-Type": "application/json"},
        content: JSON.stringify({"serial-number": button.serialNumber, "click-type": clickType}),  }, function(err, res) {
        if (!err) {
          console.log("url send: " + url);
        }
        else {
            console.log("Error sending message over http about " + button.name + ": " + clickType + " - ERROR " + res.statusCode );
        }
    });
});

console.log("JavaScript running")

De Flichub stuurt via het JavaScript een http-POST-request via de url “http://192.168.xxx.xxx:8123/api/webhook/webhook_idnaar HomeAssistant. Het laatste deel, het webhook_id’ bepaald het script zodat HomeAssistant onderscheid kan maken tussen de verschillende knoppen en de manier van indrukken.

Ontvangst bericht door HomeAssistant

HomeAssistant kan het bericht van de FlicHub ontvangen door een ‘Webhook’. Elke combinatie van button en actie heeft een eigen Webhook-ID, bijvoorbeeld “Flic21_click” en “Flic23_hold”. En aangezien elke actie wat anders kan doen, is het nodig elke actie apart op te stellen; als automatisering. In de UI gaat dat tegenwoordig eenvoudig:

  • Naam: “Klik op button 1 doet de woonkamerlampen uit”

  • Modus “in de wachtrij plaatsen” (zodat als je meerdere keren drukt de actie sowieso wordt uitgevoerd)

  • Trigger: type Webhook, ID “FLic21_click”

  • Actie: Activeer scene, ‘scene.woonkamerlampen uit’

De automation ziet er in yaml als volgt uit:

– id: ‘>>automatisch<<‘
alias: Flic21_click is avondlampen uit
description: Onderneem actie als een http POST binnenkomt = webhook flic21_click
trigger:
– platform: webhook
webhook_id: Flic21_click
condition: []
action:
– scene: scene.woonkamerlampen_uit
mode: queued
max: 5

Resultaat

Als nu op een button wordt gedrukt, stuurt deze een bericht naar de FlicHub via Bluetooth.
De FlicHub draait een script en stuurt via Wifi een http-POST met een ID naar HomeAssistant.
HomeAssistant start een automation welke een gewenste actie kan uitvoeren.

Mijn ingestelde functies:

  • Alle woonkamerlampen uitdoen (bij het naar bed gaan)

  • Woonkamerlampen op een stand ideaal voor TV kijken

  • Woonkamerlampen aan als het nog te vroeg voor de automaat is (‘vroeg op’)

  • Toggle (aan of uit) de lamp in de bijkeuken terwijl je niet bij de schakelaar bent

  • Toggle (aan of uit) de keukenspots terwijl je niet bij de schakelaar bent

Kan het ook anders?

Nu ik alles wat meer begin te snappen, zie ik ook wat er nog eenvoudiger kan;

Het maken van het script is niet beslist noodzakelijk. Via de app kan je de FlicHub instellen dat bij een actie er een http-POST bericht wordt verstuurd. Dat moet dan wel voor elke actie en button opnieuw; dus drie per button. Je kan dan wel variëren per actie wat het ID is.

En het nadeel hier is dat je niet heel internet afstruint naar hoe je JavaScript moet schrijven, hoe je Visual Source Code installeert en gebruikt en hoe je changes uitvoert in integraties van HomeAssistant. Ik heb een hoop geleerd dus.

Handleiding van de Flic Hub SDK

Via http://myhub.flic.io/static/tutorial/ kom je bij de ingebakken handleiding van de FlicHub SDK. De beschikbare routines zijn uitgebreid beschreven in een open google-docs-document 

Waar te koop?

De Kickstarter en Indiego-acties zijn voorbij, tegenwoordig zijn ze direct te koop in de flic-shop: https://flic.io/shop

© 2021 Eco Zonnewoning

Thema gemaakt door Anders NorenBoven ↑