In deze blog leg ik uit hoe je je garagedeur kunt openen door gebruik te maken van Domoticz in combinatie met een ESP8266 met een aangesloten Relais.

Zoals je wellicht al gemerkt hebt in mijn vorige blogs ben ik langzaam aan al mijn KAKU devices aan het vervangen door alternatieven gebasseerd op Wifi en/of Zigbee. de reden hiervoor is dat dit betrouwbaarder werkt en ook veiliger is.

In een vorige blog heb ik uitgelegd hoe ik mijn garagedeur met een KAKU Asun-650 kon openen. Dit werkt op het principe dat je op je garagedeur-opener een extern pulse-contact kunt aansluiten.

Ik heb nu een Hormann Garagedeur Aandrijving. Als je de handleiding van de betreffende Promatic Garagedeur Aandrijving erbij pakt dan zul je zien dat je een externe pulsschakelaar kunt aansluiten.





Volgens de handleiding kunnen er één of meerdere schakelaars met sluitercontact (zoals drukknop- of sleutelschakelaars) parallel aangesloten worden (afbeelding 11).

Benodigheden

Ik zocht nu dus naar een vervanging van de Asun-650 en besloot om zelf maar wat in elkaar te zetten. Dit is erg eenvoudig te realiseren met een ESP8266 met een aangesloten relais. Je hebt hiervoor nodig:

1 x NodeMcu ESP8266 (CH340/CP2102)
1 x SYB-170 Mini Breadboard
1 x 1 Channel Relay Module interface Board

Uiteindelijk ben je dus ongeveer Euro 4,70 kwijt aan materialen.

Aansluiten

Het aansluiten is heel eenvoudig als je de pin-aansluitingen van je ESP8266 module weet:




Plaats de ESP8266 op het breadboard en sluit deze als volgt aan:

  • VCC pin van het relais op 3V3 van ESP8266 module
  • GND pin van het relais op GND van ESP8266 module
  • IN pin van het relais op D5 van ESP8266 module.

De ESP8266 zelf kun je eenvoudig met een USB stekker van stroom voorzien.




Als je de Promatic Garagedeur Aandrijving opent dan zie je dat je het relais op de rood omcircelde connectors hieronder moet aansluiten.



Als je alles hebt aangesloten dan ziet het er als volgt uit:



Zoals je ziet gaan er 2 draden (vanaf relais) naar je Garagedeur aandrijving en 1 kabel (vanaf ESP8266) naar je USB stekker (die je op 220V aansluit).

Programmeren

Het aansturen van het relais is heel eenvoudig. We gebruiken hiervoor de Arduino IDE software die je hier kunt downloaden. Voordat we aan de slag gaan moet we nog wat instellingen in de Arduino IDE veranderen. Vul bij ‘File > Preferences’ voor ‘Additional Boards Manager URLs’ de volgende waarde in:

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




Ga naar Open Boards Manager vanaf ‘Tools > Board’. Scroll naar beneden en selecteer ‘esp8266 by ESP8266 Community’. Kies nu ‘install’.



We zijn nu klaar om eindelijk te gaan programmeren. Om het relais aan te sturen kun je onderstaande code-snippet gebruiken

// For ESP8266
// -----------------------------------------------------------------------------------------
// setup
// Default setup() method called once by Arduino
// -----------------------------------------------------------------------------------------
void setup() 
{
  // Setup serial port for your Serial Monitor
  Serial.begin( 115200 );

  // Activate Relay
  pinMode(14, OUTPUT);     // pin 14 = D5
  digitalWrite(14, HIGH);

  // Wait configured milli-seconds
  delay(300);             // in milli-seconds

  // De-Activate Relay
  digitalWrite(14, LOW);
 
//
// loop ()
// Here you find the main code which is run repeatedly
//
void loop() 
{
}

Ik ben hiermee verder aan de slag gegaan en heb uitgebreide software geschreven voor mijn ‘eGarageOpener’ project. De software bestaat uit meer dan 1500 regels source-code en hiermee kun je via een Web-Interface of API call het relais aansturen. Om de software op je ESP8266 te krijgen moet je de volgende stappen doorlopen:

  • In de Arduino IDE kies je in ‘File > Open’ menu de file ‘eGarageOpener.ino’ in de directory waar je deze hebt opgeslagen
  • Zet in ‘File > Preferences’ je ‘Sketchbook location’ naar de lokatie waar je ‘eGarageOpener’ hebt opgeslagen
  • Kies nu ‘Sketch > Verify/Compile’
  • Sluit je ESP8266 board via USB aan op je computer
  • Stel je upload poort in bij ‘Tools > Port’ (bijvoorbeeld /dev/ttyUSB0 op Debian of COM4 op Windows)
  • Kies ‘Sketch > Upload’

Als je Port niet juist ingesteld krijgt met Windows dan moet je wellicht nog de FTDI USB Drivers installeren op je computer

eGarageOpener software

Initiëel zal je ESP8266 opstarten als een Access Point (AP Mode). Wacht totdat je ‘eGarageOpener’ ziet verschijnen bij je draadloze netwerken. Maak verbinding met de SSID ‘eGarageOpener‘ en vul voor wachtwoord ‘eGarageOpener’ in. Ga vervolgens met je browser naar 192.168.4.1 en vul de Wifi gegevens van je lokale Wifi netwerk in en druk op [Submit].




Als het goed is gegaan verschijnt er OK op het browser-scherm. Herstart nu de ESP8266 (door reset knopje op ESP8266 te drukken of even de stroom eraf halen). De ESP8266 zal na de herstart automatisch verbinding maken met je Wifi Netwerk. Controleer welk IP adres je ESP8266 heeft gekregen van je DHCP server en ga met je browser naar dit IP-adres. Je krijgt nu een login-scherm te zien.



De standaard gebruikers-naam is ‘admin‘ en hier hoort standaard het wachtwoord ‘notdodo‘ bij. Deze gegevens kun je eventueel later in de Web-Interface van ‘eGarageOpener’ aanpassen bij [Instellingen]. Na het invullen van deze gegevens verschijnt de web-interface.



Wil je het relais activeren dan druk je op de ‘Activeer’ knop. Je kunt met [Instellingen] de taal, hostnaam en hardware instellingen veranderen.


API

Je kunt de ESP8266 ook via een API besturen. Dat is handig om zodoende dit project in Domoticz te integreren.

Het formaat van de API actions is als volgt:

http://ip-address/api?action=xxx&value=yyy&api=zzz

De ‘value’ is afhankelijk van de ‘action’ optioneel. De API moet altijd (vanuit veiligheids oogpunt) meegegeven worden. De default API key waarde is ‘27031969’. Je kunt deze eenmalig met ‘set_api’ veranderen. Op dit moment worden de volgende API actions ondersteund:

reboot, value             (value=false of true)
reset, value              (value=false of true)

set_api, value            (value=nieuwe API key)
set_host, value           (value=nieuwe host-name)
set_language, value       (0=Engels, 1=Nederlands)

relais, value             (value in milli-seconds)

Om bijvoorbeeld de host-name van je ESP8266 te veranderen gebruik je:

http://ip-address/api?action=set_host&value=my_host&api=your_api

Upgraden eGarageOpener

Je kunt tenslotte ook nog ‘eGarageOpener’ via de Web-Interface updaten (dus via Wifi zonder draad). Dat is handig als je alles al ingebouwd hebt. Hiervoor maak je gebruik van de gecompileerde code. Dit doe je door in de Arduino IDE ‘Sketch > Export Compiled Binary’ te kiezen. Er zal dan een ‘bin’ file gegenereerd worden in de directory van je ‘eGarageOpener.ino’ sketch file. Deze kun je dan uploaden via de volgende verborgen URL van de ‘eGarageOpener’ Web-Interface:

http://ip-adres/upgradefw

Uit veiligheids oogpunt moet je wel eerst in de web-interface ingelogd zijn wil je deze URL kunnen gebruiken.




Kies de file-naam van je ‘bin’ en druk op de [Upgrade] knop. Na 1 minuutje zal je ESP8266 van nieuwe software zijn voorzien en automatisch worden herstart. Indien de major versie (getal voor de punt) van ‘eGarageOpener’ is veranderd dan zal de software weer in AP mode opstarten en worden alle instellingen gereset. Je moet dan alles weer opnieuw instellen.

Domoticz

Voor Domoticz maak je een Dummy Switch aan waaraan je een virtuele sensor hangt.



Vervolgens maak je een rule aan waarin je reageert op het drukken van de User-Interface knop door het juiste curl commando aan te roepen.

--------------------------------------------------------------------------------
-- Activeer Garage Roldeur
--------------------------------------------------------------------------------
-- Check if 'Garage Roldeur Knop' is pressed on the UI and if yes then activate
-- the 'Garage Roldeur' and send pushover message.
--------------------------------------------------------------------------------
commandArray = {}

-- Loop through all the changed devices
for deviceName,deviceValue in pairs(devicechanged) do

    if (deviceName=='Garage Roldeur Openen') then

        if deviceValue == "Activeer" then

            -- Activate Garagedeur
            print("Activeer Garage Roldeur Openen")

            -- Send message with Pushover
            os.execute("curl -s --form-string \"token=my_token\" --form-string \"user=my_user\" --form-string \"message=Garage Roldeur Actief gemaakt\" https://api.pushover.net/1/messages.json 2> /dev/null &")

            -- Activate Garage Roldeur
            os.execute("curl -s http://192.168.1.84/api?action=relay'&'value=300'&'api=12345678 2> /dev/null &")

        end
    end
end

return commandArray

Hoe kom ik aan de software?

Ik ben nu bijna 8 jaar met deze blog bezig en heb in die tussentijd alles bij elkaar opgeteld ongeveer 1.200.000 hits gehad en 950.000 bezoekers. In al die tijd hebben tot nu toe 11 mensen de moeite genomen om een kleine bijdrage te leveren omdat de informatie hen geholpen had. Dit terwijl bijvoorbeeld mijn blogs over reparatie van de Humax Receiver, Vaatwas Machine en Combi-Magnetron vele mensen honderden Euro’s hebben bespaard.

Daarom wil ik eens wat anders proberen deze keer. Je kunt de software van dit ‘eGarageOpener’ project bij mij kopen voor een kleine bijdrage van Euro 5,=. Als je deze wilt hebben moet je dit bedrag overmaken naar mijn bankrekeningnummer NL70RABO0145390640 ten name van H.M.M. Matthijssen onder vermelding van je email-adres en de toevoeging ‘eGarageOpener’. Ik stuur je dan de source-code toe zodat je zelf de code kunt compileren en/of aanpassen. Ik hoop dat je begrip hebt voor deze actie.

Als alternatief (indien je de software niet wilt kopen) kun je zelf aan de slag gaan. Dit artikel zou genoeg input moeten bevatten om je op weg te helpen.