Slimme belgong

Last Updated on 1 maart 2022 by Syds

Natuurlijk kun je voor een paar tientjes een WiFi belgong kopen. Maar wat is er leuker dan voor een paar euro zelf je belgong slim te maken. Dit met een Wemos D1 mini en relay shield. In deze tutorial gaan we een stokoude belgong de 21ste eeuw in helpen.

In de huidige situatie zit de belgong aangesloten op een 24v AC transformator welke ingebouwd zit in m’n groepenkast. De beldrukker fungeert als een schakelaar. Als de beldrukker ingedrukt wordt dan krijgt de belgong voeding en zegt hij zeer welluidend “ding”, en “dong” zodra je de beldrukker weer loslaat. Dit gedrag gaan we simuleren met wat slimme elektronica en programmatuur conform onderstaand schema:

Noot: de beldrukker heb ik intussen ook slim gemaakt en uitgerust met een camera, zie de tutorial hier

Onderdelen

ArtikelAantalPrijsBesteld bij
Wemos D1 mini11,70www.aliexpress.com
1 Kanaals Relais Shield10,64www.aliexpress.com

Links

https://www.letscontrolit.com/wiki/index.php/Relais

Benodigdheden

  • Voeding: Telefoonoplader met USB kabel
  • Soldeerbout met tin
  • Schroevendraaier

Up-and-running

  • Domoticz
  • MQTT

Pinout

Wemos D1 miniGPIORelayBeldrukker (Optioneel bij klassieke beldrukker)Gong/Trafo
3,3VVCC
GndGndin-pool
D15D1
D42out-pool
NOGND
INGND

Stap 1. Soldeer headers op Wemos D1 en Relay shield, plaats beide op elkaar

Pin on WeMos D1 mini

Stap 2. Wemos D1 mini geflashed met ESP Easy conform https://www.twoenter.nl/blog/domotica/hoe-flash-espeasy-op-wemos-d1-mini/

Stap 3. Wemos D1 mini als volgt geconfigureerd:

Toelichting op non-default waarden

LabelWaardeToelichting
NamebelZinvolle naam
SSIDH369ABF8AF9Vul hier het SSID van je 2.4Ghz WiFi in
WPA Key******Password van je WiFi
Unit nr4Uniek nummer over al je ESP Easy devices
ProtocolDomoticz MQTTDomoticz MQTT protocol
Controller IP192.168.2.29Vul hier het IP-address van jou MQTT broker in

Optioneel indien je een klassieke beldrukker gebruikt:

Toelichting op non default waarden

LabelWaardeToelichting
DeviceSwitch inputDe klassieke beldrukker gedraagt zich als een schakelaar
NameBeldrukkerZinvolle naam
IDX/Var123Vervang dit door de IDX van jou beldrukker in Domoticz, zie ook volgende stap
1ste GPIOGPIO-2D4
InversedAangevinktZend correcte waarde naar Domoticz

Stap 4. Basis Domoticz configuratie, 2 virtuele switches aangemaakt. 1 voor de (optionele) beldrukker, en 1 voor het relay wat de gong in werking stelt:

Optioneel bij toepassing klassieke Beldrukker

Belgong

ActieCommando
Aanhttp://bel.sydspost.nl/control?cmd=GPIO,5,1
Uithttp://bel.sydspost.nl/control?cmd=GPIO,5,0
Pas bel.sydspost.nl aan naar de FQDN of IP Address van jou Wemos D1 mini

In het menu “Instellingen”, “Gebruikersvariabelen” de Variable Beldrukker_actief toegevoegd:

Stap 5. Use case 1 geconfigureerd in Domoticz met Blocky script

Use case: Als bel drukker ingedrukt wordt, laat dan de belgong afgaan. 

Toelichting: Als beldrukker ingedrukt wordt en de beldrukker is niet actief (0) activeer dan het relais voor 1/100ste minuut. Zodra het relais geactiveerd wordt klink de “ding”, zodra het relais weer vrijgegeven wordt klinkt de “dong”.

Stap 6. Use case 2 toegevoegd aan Blocky script

Use case: Als de belgong afgegaan is, kan de beldrukker gedurende 10 seconden niet opnieuw ingedrukt worden

Blocky script uitgebreid met:

Script: /home/pi/domoticz/scripts/Beldrukker.sh zorgt ervoor dat na 10 seconden de Beldrukker opnieuw actief wordt

$ cat Beldrukker.sh
#!/bin/bash
# Auteur: Syds Post
# script zet Beldrukker na 10 seconden weer op actief
#

verbose=1 # 0=nodebug, 1=debug
log_message=""
debug=""

# Wacht 10 seconden
sleep 10

# Zet Beldrukker actief
debug=$(curl -s --url http://192.168.2.29:8080/json.htm\?type=command\&param=updateuservariable\&vname=Beldrukker_actief\&vtype=0\&vvalue=0)
if [ $verbose -gt 0 ]; then echo $debug; fi

# Log acties
log_message="Beldrukker%20actief%20gezet"
debug=$(curl -s --url http://192.168.2.29:8080/json.htm\?type=command\&param=addlogmessage\&message=$log_message)
if [ $verbose -gt 0 ]; then echo $debug; fi

Pas het IP-address 192.168.2.29 aan naar het IP-address van jou Domoticz server (op twee plekken !)

Stap 6. Use case 3 toegevoegd aan Blocky script

Use case: Als bel ingedrukt wordt, zet Entree aan gedurende 5 minuten tussen zonsondergang en zonsopgang

Tevens de aan actie van Beldrukker aangepast naar:

ActieCommando
Aanscript:///home/pi/domoticz/scripts/Entree.sh &
Uit

Script /home/pi/domoticz/scripts/Entree.sh zorgt ervoor dat Entree na 5 minuten uitgaat

$ cat Entree.sh
#!/bin/bash
# Auteur: Syds Post
# script zet Entree uit na 5 minuten als de bel ingedrukt is
#

verbose=0 # 0=nodebug, 1=debug
log_message=""
debug=""

# Als Entree.sh reeds loopt, exit script
num=$(ps -ef | grep Entree.sh | grep -v grep | wc -l)
if [ $verbose -gt 0 ]; then echo $num; fi

if [[ $num -le 2 ]];
then

  # Wacht 5 minuten
  sleep 5m

  # Zet Entree uit
  debug=$(curl -s --url http://192.168.2.29:8080/json.htm\?type=command\&param=switchlight\&idx=110\&switchcmd=Off)
  if [ $verbose -gt 0 ]; then echo $debug; fi

  # Log acties
  log_message="Entree%20uitgezet"
  debug=$(curl -s --url http://192.168.2.29:8080/json.htm\?type=command\&param=addlogmessage\&message=$log_message)
  if [ $verbose -gt 0 ]; then echo $debug; fi

fi

Pas het IP-address 192.168.2.29 aan naar het IP-address van jou Domoticz server (op twee plekken !)

Stap 7. Use case 4 toegevoegd aan Blocky script

Use case: Stuur via Domoticz app een bericht dat er iemand voor de deur staat

Totale Blocky script:

En in XML vorm

<xml xmlns="http://www.w3.org/1999/xhtml"><block type="domoticzcontrols_if" id="r6:2Z9Y+)JQK/WXN(9J:" x="31" y="15"><value name="IF0"><block type="logic_operation" id="q7RK%ywG.eKkNR]YeKvX"><field name="OP">AND</field><value name="A"><block type="logic_compare" id="RE6_n|]_ROqIN^7D9qK3"><field name="OP">EQ</field><value name="A"><block type="switchvariablesAF" id="mSot5?:k}|/(18Ex6@7b"><field name="Switch">123</field></block></value><value name="B"><block type="logic_states" id="/9cH3!_$Ko+jgGZIl[7d"><field name="State">On</field></block></value></block></value><value name="B"><block type="logic_compare" id="MMWiAr;QZ$1*_kUOJYO="><field name="OP">EQ</field><value name="A"><block type="uservariablesAF" id="g^(ukYsDn[DGUGy`n*vZ"><field name="Variable">42</field></block></value><value name="B"><block type="math_number" id="w#-2F!o/3,Lf=w#XrzAr"><field name="NUM">0</field></block></value></block></value></block></value><statement name="DO0"><block type="logic_setdelayed" id="=qkpn2-utRk?tHX6uHwv"><value name="A"><block type="switchvariablesAF" id="*35WgzO#W_sckQ/IA!|_"><field name="Switch">124</field></block></value><value name="B"><block type="logic_states" id="m,d;R6U$vq*19Ax_$2y}"><field name="State">On</field></block></value><value name="C"><block type="math_number" id="5_Cv3ezilvIIu!(=CwgT"><field name="NUM">0.01</field></block></value><next><block type="writetolog" id="Qvsc:JSyD`S~1J#WRSoW"><value name="writeToLog"><block type="text" id="xRjDX/%U4(?t^FdgBeH`"><field name="TEXT">Bel gaat: Zet belgong aan</field></block></value><next><block type="domoticzcontrols_ifelseif" id="v?8:Pd3puat:J!rQ?g+,"><value name="IF0"><block type="logic_operation" id="x:)XWso_rD#5A^x9HxIr"><field name="OP">AND</field><value name="A"><block type="logic_timeofday" id="c]%DWF;E+,E?l[w0w=rZ"><field name="OP">GTE</field><value name="Time"><block type="logic_sunrisesunset" id="k;V8m0#Po|_*d^_8Uv/["><field name="SunriseSunset">Sunset</field></block></value></block></value><value name="B"><block type="logic_timeofday" id="wQ}a8rS:DmTB;kRPpXLh"><field name="OP">LTE</field><value name="Time"><block type="logic_sunrisesunset" id="lWM,sg@9$chQvA#)FF5."><field name="SunriseSunset">Sunrise</field></block></value></block></value></block></value><statement name="DO0"><block type="logic_set" id="d]P[=EK:X3gh2ISe`yD."><value name="A"><block type="switchvariablesAF" id="[/.5~*g=n63F^x-RcJXG"><field name="Switch">110</field></block></value><value name="B"><block type="logic_states" id="jB_A.u^/D?V_kurR*[kz"><field name="State">On</field></block></value><next><block type="writetolog" id="`upe)9twZ]YD5|v1G*MZ"><value name="writeToLog"><block type="text" id="Z/HCaNDLQ:;R!r$[j|A:"><field name="TEXT">Bel gaat en het is donker: Zet licht Entree aan voor 5 minuten</field></block></value></block></next></block></statement><next><block type="logic_set" id="hC+s50,o{m;FVvU*qJdI"><value name="A"><block type="uservariablesAF" id="/%;OdEaHEpK)}4R4c;Jp"><field name="Variable">42</field></block></value><value name="B"><block type="math_number" id="M~Ft40T[HE.q9qR`/]Vs"><field name="NUM">1</field></block></value><next><block type="start_script" id="yUJ^B!sz9kTm_-:zE6(."><field name="TextPath">/home/pi/domoticz/scripts/Beldrukker.sh &amp; #</field><field name="TextParam"></field></block></next></block></next></block></next></block></next></block></statement></block></xml>

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *