Zelf een Homekit (Homebridge) bewegingssensor maken

Met behulp van Homebridge op de Raspberry Pi kun je allerlei apparaten die nog geen Homekit ondersteuning hebben toch aansturen met behulp van Homekit de Woning app en Siri onder iOS. Naast lampen en thermostaten kun je in Homekit ook een bewegingssensor toevoegen, dit laatste kan heel erg handig zijn om bijvoorbeeld automatisch verlichting in te schakelen bij beweging in een ruimte.

Om dit te realiseren heb je een device nodig voorzien van een bewegingssensor, deze hoeft alleen maar te melden naar Homekit of er beweging is gedetecteerd. Overige zaken zoals tijdschema’s, zonsopkomst en ondergang kun je standaard al via de Woning app instellen. Wil je zelf een Homekit bewegingsmelder maken dan is dat vrij eenvoudig te maken en voor de kosten hoef je het niet te laten, je bent voor dit project ongeveer €6 tot €8 kwijt.

Wat hebben we nodig?

Raspberry Pi voorzien van Homebridge

Voor het maken van de bewegingsmelder:
Wemos D1 uno (€3,00)
HC-SR501 Infrarood PIR bewegingssensor (€2,00)
3 xDupont verbindingskabel male/female (€0,10)
5V Micro USB stroom adapter (€ 1,50)
Standaard Micro USB kabel (€ 1,50)

Door gebruik te maken van de bovenstaande links steun je raspberrytips, bedankt!

We gaan gebruik maken van een Wemos D1 (een alternatief voor de Arduino UNO), dit is een zeer goedkope microcontroller die is voorzien van wifi. Eventueel zou je ook een Raspberry PI zero kunnen gebruiken, echter de Wemos oplossing is stukken goedkoper en omdat we alleen beweging willen detecteren is een microcontroller voldoende en is geen microcomputer nodig.

Voor de stroomvoorziening van de Wemos kan een micro USB kabel en een USB adapter worden gebruikt of een 5V adapter. Je kunt de Wemos ook zonder problemen aansluiten op een elektrisch apparaat met een USB aansluiting.

Aansluitschema bewegingssensor

bewegingssensor homekit homebridge

Het aansluiten van de HC-SR501 Infrarood PIR bewegingssensor is vrij eenvoudig. We verbinden GND en 5V, daarnaast gebruiken we aansluiting D12 om het data-signaal van de bewegingssensor uit te lezen.

Wemos D1 installeren

Als je al bekend bent met Arduino, ESP8266 en de Arduino IDE software dan kun je deze stappen overslaan.

Omdat de Wemos D1 een microcontroller is hoeft er geen besturingssysteem te worden geïnstalleerd alleen het script dat we willen gebruiken moeten we natuurlijk wel uploaden. Dit doen we via een seriële verbinding, op de Wemos is hiervoor een controller aanwezig. Hiervoor moeten we eerst de juiste drivers installeren.

De CH340G drivers voor macOS en Windows kun je op onderstaande pagina downloaden:

Nadat de drivers zijn geïnstalleerd sluit je de Wemos D1 met behulp van een micro USB-kabel aan je Mac of PC.

Om de Wemos D1 te kunnen configureren kun je gebruik maken van de standaard Arduino IDE software. Deze kun je met en zonder een donatie downloaden met behulp van de onderstaande link:

bewegingssensor homekit arduino ide

Nadat Arduino IDE is geïnstalleerd moeten we de ondersteuning voor de Wemos toevoegen aan de applicatie. Ga hiervoor naar File ▸ Preferences, in het nieuwe venster dat opent zie je een veld met de naam ‘Additionele Board Beheer URLs’. Vul in dit veld de onderstaande URL in:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Klik hierna op ‘OK’

Als laatste stap moeten we de Wemos bordjes zichtbaar maken onder de menu optie ‘Hulpmiddelen ▸ Board’, dit doen we door ESP8266 ondersteuning te installeren. Ga naar Hulpmiddelen ▸ Board ▸ Board beheer. Zoek naar ‘ESP8266’ en installeer het board package.

bewegingssensor homekit arduino  esp8266

De Wemos boards zijn nu zichtbaar onder de menu-optie ‘Hulpmiddelen ▸ Board’. Selecteer bij de optie Board ▸ Wemos D1 R1. Bij de Hulpmiddelen ▸ Poort selecteer de seriële poort onder macOS ▸ /dev/cu.wchusbserial1440, gebruik je Windows selecteer dan de COMx: poort.

Alle overige instellingen hoeven niet aangepast te worden.

Motion detection script

Op de Wemos gaan we een script gebruiken dat via http een bericht stuurt naar de Raspberry Pi HomeBridge wanneer er beweging is gedetecteerd.

// Homekit motions sensor voor HomeBridge
// raspberrytips.nl
#include <ESP8266WiFi.h>
const char* ssid = "naamnetwerk"; // SSID Wifi (naam)
const char* password = "watchwoord"; // Wachtwoord wifi
IPAddress ip(192, 168, 2, 99); // IP address
IPAddress dns(192, 168, 2, 254); // IP address DNS server
IPAddress gateway(192, 168, 2, 254); // IP adres gateway/router.
IPAddress subnet(255, 255, 255, 0); // Subnetmask
WiFiClient client;
IPAddress motionServer(192, 168, 2, 60); // IP adres Homebridge server
#define REMOTE_PORT_NUMBER 18089
#define TIMESPAN_MOTION 10000
#define hcsr501pin 12
unsigned long lastMotionDetected = -1;
void setup() {
Serial.begin(9600);
while (!Serial); // wait for serial attach
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
WiFi.config(ip, dns, gateway, subnet);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("WiFi Connect Failed! Rebooting...");
delay(1000);
ESP.restart();
}
pinMode(hcsr501pin, INPUT);
}
void loop() {
int buttonState = digitalRead(hcsr501pin);
unsigned long now = millis();
if (buttonState == 1 && (now - lastMotionDetected) > TIMESPAN_MOTION){
lastMotionDetected = now;
Serial.println("Motion detected");
if (client.connect(motionServer, REMOTE_PORT_NUMBER)) {
Serial.println("connected");
// Make a HTTP request:
client.println("GET /motion HTTP/1.1");
client.println();
}
}
}

In het script maken we gebruik van wifi en een vast IP adres voor de Wemos. De gegevens voor je eigen netwerk moet je dus aanpassen in het script.

const char* ssid = "naamnetwerk"; // SSID Wifi (naam)
const char* password = "wachtwoord"; // Wachtwoord wifi

IPAddress ip(192, 168, 2, 99); // IP address 
IPAddress dns(192, 168, 2, 254); // IP address DNS server
IPAddress gateway(192, 168, 2, 254); // IP adres gateway/router.
IPAddress subnet(255, 255, 255, 0); // Subnetmask

Wijzig ook het IP adres van de Raspberry Pi met daarop Homebridge geïnstalleerd:

IPAddress motionServer(192, 168, 2, 60);

Nadat de gegevens zijn aangepast kunnen we het script uploaden naar de Wemos, dit kun je doen door op de pijl-knop te klikken. Met behulp van de knop met het ‘vinkje’ kun je eventueel eerst nog het script controleren op syntax fouten.

Na het compileren wordt het script naar de Wemos geupload, deze zal herstarten en het script activeren.

Via Hulpmiddelen ▸ Seriële monitor kun je controleren of de bewegingssensor werkt. Als er beweging is gedetecteerd zal er ‘Motion detected’ worden weergegeven in het monitor venster. Wordt er niets weergegeven controleer dan of de baudrate van de Seriële monitor is ingesteld op 9600 (rechtsonder in het venster).

motion script raspberrytips homekit homebridge

Homebridge plugin installeren

Als laatste moeten we in HomeBridge nog de plugin voor bewegingssensor installeren, de naam van deze plugin is: homebridge-http-motion-sensor. Klik op plugins en zoek naar http-motion-sensor, installeer de de onderstaande plugin:

Homebridge plugin for a remote motion sensor based on http
homebridge-http-motion-sensor v1.0.0

GitHub link: homebridge-http-motion-sensor

homebridge motion plugin

Na dat de installatie is voltooid voegen we het volgende toe aan de accessoires sectie:

        {
            "accessory": "http-motion-sensor",
            "name": "MotionSensor",
            "port": 18089,
            "manufacturer": "raspberry tips",
            "serial": "DEF001",
            "model": "Arduino"
        },

Sla de wijzigingen in de config op en herstart homebridge.

homebridge motion plugin config

Bewegingssensor gebruiken in de iOS Woning app

Nadat de homebridge is herstart zal de bewegingssensor verschijnen in de Woning app. Wordt beweging gedetecteerd dan zal de rode tekst “Afgegaan” worden weergegeven bij het symbool. Via de instellingen kan je scenes of apparaten koppelen aan de sensor, hierbij kun je gebruik maken van tijdschakelingen.

Alle mogelijkheden van een bewegingssensor in combinatie met de iOS Woning app kun je terugvinden op appletips.nl.

De bewegingssensor afstellen

De HC-SR501 bewegingsmelder heeft de mogelijkheid om enkele hardware-matige instellingen aan te passen.

HC-SR501 bewegingssensor pins

Gevoeligheid: Je kunt de afstand waarover de sensor werkt aanpassen (3m tot 7m).

Output timing: Deze instelling regelt hoe lang de uitgang hoog wordt gehouden na de sensor wordt geactiveerd (5 seconden tot 300 seconden).

Jumper Auto reset: De sensor blijft geactiveerd totdat de beweging stopt.

Jumper Geen reset: De sensor blijft de ingestelde ‘Output timing’ periode geactiveerd bij de detectie van een beweging.

Plaats een reactie

%d bloggers liken dit: