Snapshot op je mobiel als de bel gaat (pimatic deel 4)

Door K-Jay op donderdag 1 december 2016 15:24 - Reacties (16)
CategorieŽn: Geknutsel, Home automation, Raspberry pi, Views: 6.779

Belofte maakt schuld
In mijn laatste blogpost over domotica kondigde ik aan om wat te schrijven over het meesturen van een snapshot als er wordt aangebeld. Inmiddels zijn we bijna een jaar verder. Tijd om de belofte in te lossen.

Camera
Om een plaatje te maken heb je een camera nodig. En een beetje tweaker laat die uit China komen. Ik hoorde goede verhalen over de TOP-201 camera, dus die werd het. Het kostte een middag prutsen om hem aan de praat te krijgen, maar uiteindelijk had ik beeld via de meegeleverde web-interface. Tijd voor de volgende stap: zorgen dat het ding een snapshot maakt.

Snapshot maken en versturen
Kort samengevat moet het volgende gebeuren als er wordt aangebeld:
  • De camera maakt een foto en slaat die lokaal op
  • De gemaakte foto wordt ge-upload naar een plaats waar mijn telefoon ook toegang heeft
  • Er wordt een notificatie naar mijn telefoon gestuurd met daarin de locatie van de foto
Mijn camera levert een rtsp-stream aan. Daar kun je een snapshot van maken met het commando "avconv". Om daarvan gebruik te kunnen maken moet je eerst het commando

sudo apt-get install libav-tools 

uitvoeren op je raspberry pi.

Nu moet je een .sh-bestandje maken waarin we alle stappen gaan uitvoeren. Met de volgende regel maak je de snapshot en sla je het op in de map "snapshot/images":

code:
1
/usr/bin/avconv -rtsp_transport tcp -i 'rtsp://'ip-van-je-camera'/user=user-van-je-camera&password=paswword-van-je-camera&channel=1&stream=1.sdp' -f image2 -vframes 1 -aspect 16:9 /home/pi/snapshot/images/filename-van-je-plaatje.jpeg



En met dit commando upload je de afbeelding naar een plekje in de cloud:

code:
1
curl -T /home/pi/snapshot/images/filename-van-je-plaatje.jpeg ftp://$USERNAME:$PASSWORD@$SERVER/$DIR


Je zou hier ook Dropbox of iets anders voor kunnen gebruken, zie de reactie van i-chat onder deze blogpost.

Nu heb je alle informatie die in het pushbericht moet. Versturen doe ik met Pushalot:

code:
1
curl -F "AuthorizationToken=XXX" -F "Body=Er staat iemand voor de deur..." -F "Title=De bel gaat!" -F "LinkTitle=Afbeelding" -F  "Link=http://url-van-je-plaatje/"$today.jpeg -F "Image=http://url-van-je-plaatje/"$today.jpeg -F "Source=Voordeur" https://pushalot.com/api/sendmessage



Zorg dat je .sh-bestand in ieder geval bovenstaande commando's bevat. Desgewenst kun je het uitbreiden door alle variabelen netjes te definieren, de datumtijd in de bestandsnaam te verwerken, eerst te controleren of de camera wel online is, enzovoort. Ik heb het bestand opgeslagen als debelgaat.sh op mijn raspberry pi.

De laatste stap
Nu nog even aan pimatic vertellen dat debelgaat.sh uitgevoerd moet worden als er op de bel gedrukt wordt. Ik heb een device "deurbelsnapshot" gedefinieerd:

code:
1
2
3
4
5
6
7
8
9
10
{
      "id": "deurbelsnapshot",
      "name": "Snapshot deurbel",
      "class": "ShellSwitch",
      "onCommand": "sudo /home/pi/snapshot/snapshot.sh >/dev/null 2>&1 || true",
      "offCommand": "echo off",
      "getStateCommand": "echo false",
      "interval": 0,
      "forceExecution": true
    },


Deze maakt gebruik van de shell-execute-plugin.

Als er wordt aangebeld, treedt de volgende regel in werking:

code:
1
if deurbel is opened then switch on deurbelsnapshot after 1 second


en binnen een paar tellen wordt de foto gemaakt, opgeslagen, ge-upload, wordt de pushmessage verzonden en ontvangen op mijn telefoon.

Pushberichten

Niet alleen als de bel gaat...
Ik laat mijn camera niet alleen een foto maken als de bel gaat, maar ook als de voordeur open gaat of als er beweging gedetecteerd wordt. In deze gevallen gaat er echter geen pushbericht naar mijn telefoon. Om alle foto's wel inzichtelijk te hebben, heb ik een iframe in pimatic draaien waar een php-script achter zit dat de meest recente foto's toont. Met de knoppen kun je navigeren en door te swipen krijg je de vorige/volgende foto.

pakketje uit China?

DIY head tracking, deel 2: IR-camera en software

Door K-Jay op woensdag 27 januari 2016 14:33 - Reacties (1)
Categorie: Geknutsel, Views: 2.392

Headtracking voor een paar tientjes, welke gamer wil dat nou niet? In mijn vorige blogpost over dit onderwerp heb ik beschreven hoe ik een IR-clip heb gemaakt.
In deze post vertel ik hoe ik een webcam heb aangepast om IR-licht op te vangen en doe ik mijn best-practice met de bijbehorende software uit de doeken.

Lees verder »

Notificatie deurbel op je smartphone (pimatic deel 3)

Door K-Jay op donderdag 21 januari 2016 20:38 - Reacties (28)
CategorieŽn: Home automation, Raspberry pi, Views: 8.651

Wil jij ook je collega's verbazen (of irriteren) met een dingdonggeluid op je telefoon als bij je thuis wordt aangebeld? Zoals beloofd in de laatste alinea van mijn vorige post, nu een verhaaltje over het ontvangen van een notificatie op je telefoon als bij jou de bel gaat.

Lees verder »

Domotica met pimatic, deel 2: temperatuur meten met een DS18B20

Door K-Jay op woensdag 6 januari 2016 14:41 - Reacties (14)
CategorieŽn: Home automation, Raspberry pi, Views: 6.349

In mijn vorige blogpost over pimatic heb ik uitgelegd hoe je pimatic installeert op de Raspberry pi en hoe je vervolgens KlikAanKlikUit kunt schakelen. Ook heb ik verteld dat er nog veel meer mogelijk is met pimatic, waaronder het meten en loggen van temperatuur. Hoe je dat doet, leg ik uit in deze blogpost.

Lees verder »

DIY head tracking, deel 1: IR-clip

Door K-Jay op vrijdag 1 januari 2016 20:55 - Reacties (4)
Categorie: Geknutsel, Views: 2.514

Als je een beetje bekend bent in de wereld van (race)simulatiespellen moet je het kennen: head tracking. Simpel gezegd: als jij je hoofd draait, beweegt het beeld op het scherm mee. Zelf mag ik graag wat virtuele kilometers maken met Euro Truck Simulator 2 en dan is head tracking erg handig bij het spiegelen en het rondkijken op kruispunten.

Hoe werkt dat? Laat ik het zo uitleggen: de meest voor de hand liggende methode koop je voor ongeveer §150 en heet TrackIR. Je krijgt dan een clip met 3 infraroodledjes, een soort webcam en de bijbehorende software. De clip bevestig je aan je headset, de camera registreert de bewegingen van de clip (en dus ook van je hoofd) en de software vertaalt dit naar bewegingen in de game.

Allemaal leuk en aardig, maar 150 piek voor een paar IR-ledjes, een halve webcam en wat software die ook open-source verkrijgbaar is lijkt me wat veel. Je voelt hem al aankomen: dat maken we zelf.

Lees verder »