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: 10.493

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?

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: 15.397

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 (15)
Categorieën: Home automation, Raspberry pi, Views: 9.194

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 »

Domotica met pimatic, deel 1: draadloos schakelen

Door K-Jay op woensdag 30 december 2015 13:56 - Reacties (29)
Categorieën: Home automation, Raspberry pi, Views: 16.701

Al langere tijd was ik van plan om mijn Raspberry Pi te gebruiken om mijn KlikAanKlikUit-ontvangers mee te bedienen. Een leuk knutselproject voor donkere avonden dat meteen wat bruikbare home automation oplevert. Wat wil een mens nog meer.
Deze blogpost bevat wat achtergrondinformatie, een stappenplan waarmee je zelf aan de slag kunt en een troubleshooting-lijst.

Lees verder »