Arduino – Dörrlås / nyckelskåp till Vera

Håller nu på att skapa en ny sorts sensor till mitt hemautomationssystem, jag baserar detta på en nätverkskopplad Arduino som drivs med POE, Arduinon kommer bland annat styra ett servo och lysdioder. Vera kontrollerar servot som en vanlig ON/OFF enhet.

Senast uppdaterat: 2015-12-28

Komponenter

Några av komponenterna i projektet, servot kommer att bytas mot ett större senare.

 

Vad är POE?

Power over ethernet (POE) är ett sätt att nyttja en vanlig nätverkskabel för att transportera både data och ström. Detta gör att det räcker med en nätverkskabel för att strömförsörja olika projekt, dvs om du har en POE splitter och POE switch. Orsaken till att jag använder POE är att jag redan idag har en POE swich till övervakningskameror och lediga portar.

 

Hur fungerar det?

Det här projektet har som mål att styra ett servo över nätverket, Vera kommer att få en ny enhet som styr servot med ON / Off. Arduinon kan styras utan Vera, men om den gör det så rapporterar den status till Veran. Jag har valt att styra servot med 90 graders skillnad. i mitt fall valde jag 10 grader (ON) eller 100 graders (OFF) som vinkel på servot (dvs en 90 graders skillnad), jag valde att inte köra servot i botten utan stanna en bit ovanför eftersom vredet går att montera i valfri vinkel.

Arduinon är konfigureras att både aggera webserver och webklient, dvs allt den utför skickar jag även information om till mitt loggnings program, detta ger bra spårbarhet och underlättade medans jag byggde koden. När Arduinon startar så ”låser” den automatiskt och skickar loggning till både Vera och till loggningsprogrammet.

 

Arduinon har en webklient som gör det möjligt att direkt surfa in på Arduinons IP och välja LOCK eller OPEN för att styra servot. dvs det krävs inte någon Vera för att nyttja detta projekt om man inte vill.

WebControl1

Exempel på hur Arduinons webbgrässnitt ser ut för tillfället

 

   httpLoggservern-1

Datat som arduinon skickar även till min loggserver.

 

Detta är helt webbaserat vilket gör att jag även kan skicka kommandon från Powershell enligt exemplet nedan (Jag har även skrivit en funktion i min hemautomations modul för att kunna scripta direkt mot Arduinon)

set-mj-ArduinohttpServo

Genom att skicka set-mj-arduinohttp -mode ON eller OFF -IP ”10.20.30.40” så returneras TRUE om Arduinon svarar med http 204, dvs ok ingen data att returnera.

Kommandot som skickas när Lock eller Open trycks ner när är följande ”?3on” eller ”?3off”,  där ”?” är en avgränsare och ”3” motsvarar porten jag vill styra samt ”on / off” är kommandot Arduinon ska utföra. Arduinon kontrollerar sedan att dessa världen är korrekta innan servot vrids.

 

Första delmålet uppnått 2015-12-26!

Efter en del korrigering i koden på Arduinon så fungerar allt korrekt, vid uppstart så ”låser” Arduinon dörren och tänder den röda dioden, vid upplåsning så byts färgen på dioden från röd till grön och servot vrids 90 grader.

POC-Servo

Allt är nu inkopplat och drivs av min POE switch, enheten svarar på kommandon via HTTP och rapporterar till loggservern konsekvent!.

 

All kod finns på våran Github sida för hemautomation.

Nästa steg (2015-12-27)

Nu ska jag montera detta i ett plåtskåp jag har tidigare fått. För tillfället är jag lite osäker på placering av servot, om det ska sitta på dörren eller om det ska sitta monterat i skåpet och sedan placeras låsbygeln på dörren. Kommer att återkomma med bilder på detta så fort jag är klar.

Nykelskap2 Nykelskap3

Skåpet i sitt original skick (till vänster)              Skåpet urplockat och redo.

Mitt mål är att enbart en TP kabel och eventuellt en USB kabel ska sticka ur skåpet när allt är klart. En lysdiod kommer att visa om skåpet är låst eller öppet.

Kod:

Powershell koden som behövs finns nu i funktionen Automatiserar.psm1 på GITHUB. Spara filen under ”C:\Program Files\WindowsPowerShell\Modules\Automatiserar\” (mappen Automatiserar måste skapas manuellt). Kör sedan Powershell.exe som administratör och skriv ”set-executionpolicy unrestricted” (eller remotesigned).

från och med nu räcker det att starta Powershell.exe och skriva: Set-mj-arduinohttp -mode ON -IP ”IP till din arduino”   

Arduino koden som behövs återfinns här: Arduino-ServoLock.ino

 

Konfiguration av Vera

Delar av detta utgår från saker jag skrivit om i denna Arduino guide

Jag har tidigare laddar hem och installerar appen ”virtual ON/OFF switches”. Den kommer nu att nyttjas för att skapa en virtuell enhet som sedan knyts upp med två scenes.

Genom att ändra värdet ”status” till 1 eller 0 så kan jag nu knyta scenes och annat.

Vera-Keylock

Enheten är nu skapad och döpt i Vera gränssnittet, i mitt fall fick enheten ID 146.

Efter lite letande hittade jag den URL jag ska nyttja.

http://DittVeraIP:3480/data_request?id=variableset&DeviceNum=146&serviceId=urn:upnp-org:serviceId:VSwitch1&Variable=Status&Value=1

http://DittVeraIP:3480/data_request?id=variableset&DeviceNum=146&serviceId=urn:upnp-org:serviceId:VSwitch1&Variable=Status&Value=0

Byt ut följande om du vill göra detta själv:

  • DittVeraIP – Adressen till din vera
  • 146 – Byt detta till ID:t din virtuall switch fick i vera.

 

Nu byter enheten status i Veran korrekt! Det som nu krävs är två enkela scenes för att trigga http kommandon när status ändras i veran.

Jag skapar nu två scenes i veran som triggar på knapptryckningar på enheten ”nyckelskåp”, den kopplar upp mot Arduinon med följande strängar:

  • luup.inet.wget(”http://ArduinoIP:80/?3off”)  // vid låsning.

samt

  • luup.inet.wget(”http://ArduinoIP:80/?3on”)   // vid upplåsning

 

Resultatet:

POC-ServoLocked

Bilden ovan visar enheten som låst, dvs röd diod lyser och i Vera visas enheten som grön (ON) eftersom den är låst. Servot står nu vertikalt.

POC-ServoOPEN

Bilden ovan visar enheten som öppen, dvs grön diod lyser och i vera visas enheten som rött (off) eftersom den är öppen. servot är nu vriden 90 grader horisontellt

 

Summering

Jag kan nu börja montera Arduinon och servot i nyckelskåpet, allt som krävs är ett hål stort nog för en nätverkskabel in i skåpet. Detta är allt som krävs för att styra skåpet, (dvs om koden skiter sig och låset jag väljer sitter tillräckligt bra så går det inte att öppna skåpet utan att förstöra det).

Nu är det möjligt att nyttja skåpet tillsammans med larmet för att exempelvis alltid låsa skåpet när larmet är aktiverat och låta det förbli öppet när det inte är larmat hemma. Det skulle även gå att inkludera mer funktioner som belysning, temperatur rörelsevakt mm eftersom jag nyttjar några få portar på Arduinon.

Eftersom servot styrs från Vera är det möjligt att nyttja projektet till annat, genom att ändra gradantalet i Arduinon till ett önskat värde mellan 0 – 180 grader. Det skulle vara möjligt att vrida webkameror, blockera webkameror när larmet är avstängt med hjälp av scenes i Vera. Öppna / Stänga en haspel till en dörr. Det finns säkert massor med roliga saker detta skulle gå att nyttjas till.

 

Projektet kräver inte en Vera för att fungera om man inte vill! Arduinon i sig själv har en webklient som direkt kan kontrollera servot med.

WebControl1

Arduinons inbyggda webklient.

 

Kvar (2015-12-28):

  • Montera hyllor i skåpet.
  • Spela in en film på hur det fungerar.
  • Ordna kabelgenomföring till skåpet.
  • Fixa lås till skåpet och montera servot.
  • Montera Arduinon och POE splitten.
  • Lägga upp koden på Github – Check (2015-12-28).
  • beskriva koden.
  • Skapa ett kopplings schema och komponentlista.

 

Bidra gärna med idéer på vad mer man skulle kunna göra samt säg till om du hittar nått fel!

(OBS problem med kommenterar tack vare temat… vi jobbar på att lösa det 2015-12-28)

// Ispep

2 reaktioner på ”Arduino – Dörrlås / nyckelskåp till Vera”

  1. Pingback: Allt om Vera och VeraSecure |

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *