Raspberry Pi – Camera Module + Motion

In deze tutorial leg ik uit hoe je de Raspberry Pi kunt opzetten / configureren met de Camera Module. Deze module is niet standaard inbegrepen bij aanschaf van de Raspberry Pi.

Ik leg ook uit welke software je het beste kunt gebruiken voor het detecteren van beweging. Verder bespreek ik stap voor stap hoe je het beste je netwerk kunt configureren. Ik sluit af met een lijstje met handige commando’s die je zeker gaan helpen tijdens het project.

Kortom een mooi projectje voor in het weekend! ūüôā

Raspberry Pi - Camera Module

Raspberry Pi – Camera Module

De Raspberry Pi

De Raspberry Pi

 

Notitie:
In deze tutorial ga ik er vanuit dat er basis Linux kennis aanwezig is en je al beschikt over de nodige hardware (zie Raspberry Pi op de foto rechts). Plus het aansluiten van deze hardware. Mocht je daarover echter toch nog vragen hebben, laat dan gewoon een reactie achter en ik help je graag verder!

 

Raspbian Installeren

We beginnen met het downloaden van de Raspbian image (Torrent is het snelste): Ga naar Download site.

Kies voor ‘Raspbian’ onderaan de webpagina (NOOBS mag ook, maar die keuze laat ik bij jou liggen). In deze tutorial ga ik de Debian versie voor Raspberry Pi gebruiken (ook wel Raspbian).

Raspberry Pi + Debian = RaspbianPak de gedownloade .zip bestand uit, hierin zit een .img bestand.

Optie #1 – Handmatig installatie

Open Gparted (sudo apt-get install gparted). En controleer welke harde schrijven er allemaal zijn. Doe nu de SD kaart in je computer en start Gparted opnieuw op, als het goed is, is er nu een extra sdxxx erbij gekomen  (deze kan echter ook anders beginnen qua naamgeving). Verwijder eventuele partities van de SD kaart via Gparted. Je moet er zeker van zijn dat er geen partities aangekoppeld/gemount zijn.

Ga naar de map waar je .img bestand is. En open hier een Terminal. Voer daarna het volgende opdracht uit om de image (.img) te schrijven naar je SD kaart:

sudo dd bs=4M if=201x-xx-xx-wheezy-raspbian.img of=/dev/sdxxx

Veranderd sdxxx naar het apparaat wat je SD kaart moet zijn. Zet er geen getal achter, want dat verwijst naar een partitie, in dit geval moet de image naar z’n volledige opslag geschreven worden. Mocht dit nu niet werken, kun je altijd een kleine block size (bs) gebruiken, echter dit zorgt er wel voor dat het langer duurt voordat de image op je SD kaart staat.

Optie #2 – Automatisch via script

Een alternatief is door gebruik te maken van mijn eigen installatie script, zie: install_raspbian.sh. Dit script is onderdeel van de Linux Script repo op Gihub.com, onderdeel van MelroysBlog account.

Sla dit bestand op dezelfde locatie op als waar je download staat. En maakt deze uitvoerbaar via:

sudo chmod +x install_raspbian.sh

En voer het uit:

./install_raspbian.sh

Eerste keer opstarten

Steek je SD kaart vervolgens in je Raspberry Pi en zet de stroom erop. Als je eenmaal door de installatie bent gelopen log dan in met de gebruiker ‘pi’ en jouw gekozen wachtwoord.

Om te beginnen gaan we het netwerk aanpassen, zodat je een statisch IP adres toegewezen krijgt. Dit kan door het volgende bestand aan te passen:

sudo nano /etc/network/interfaces

Verander eth0 interface naar:

allow-hotplug eth0
iface eth0 inet static
address 192.168.0.80
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

Sla het bestand op (via ctrl+x), type daarna: ‘y’ en druk op enter. Zoals beschreven staat in de Debian handleiding zorgt de allow-hotplug regel ervoor, dat ifup de eth0 interface opbrengt, en iface regel zorgt ervoor dat ifup het statische IP adres gebruikt bij het configureren van de interface.

We gaan hier vanuit dat de resolvconf pakket ge√Įnstalleerd is, dit zorgt ervoor dat DNS instellingen automatisch doorgevoerd wordt (anders zou je het bestand /etc/revolv.conf moeten aanpassen; enkel ‘nameserver’ is verplicht). Zie DNS hoofdstuk later in het artikel.

Herstart eth0 interface via:

sudo ifdown eth0
sudo ifup eth0

Controleren van de netwerk instellingen kan met ifconfig commando (zonder parameters).

Vanwege het feit dat je enkel 1 ethernet connector heb op de Raspberry Pi hoeft ook enkel die gecontrolleerd te worden door de ifplugd service als er een kabel ingeplugged wordt. Vandaar dat we auto veranderen naar eth0. Dit veranderen in verband met eventuele toekomstige  problemen als je ooit bijvoorbeeld een wifi dongle wilt aansluiten (wlan0 interface).

sudo nano /etc/default/ifplugd

Verander auto naar eth0. Sla wederom het bestand op.
We updaten het huidige systeem, zodat alles up-to-date is:

sudo apt-get update
sudo apt-get upgrade

Als je dat nog niet gedaan heb, gaan we de camera module ‘activeren’ via de Raspberry Pi commando:

sudo raspi-config

Kies ‘Enable Camera’. Selecteer ‘Enable’ en druk daarna op enter. Selecteer vervolgens Finish. Nu reboot de Raspberry Pi zichzelf als het goed is. En anders type je om te herstarten:

sudo reboot

TIP!
SSH (Secure Shell) is standaard actief, via SSH kun je de Raspberry Pi  over afstand overnemen. Dit kan op je computer via het commando:

ssh pi@192.168.0.80

En vervolgens voer je je wachtwoord in. Nu zit je ‘remote’ in je Raspberry Pi terminal!

Camera check

Als je de Raspberry Pi camera nog niet aangesloten heb, doe dat nu.

UPDATE: We gaan het volgende bestand uitbreiden met een kernel module, hierdoor wordt de camera gezien als een ‘normale’ camera onder Linux (net als een webcam):

sudo nano /etc/modules

Voeg deze regel toe aan het einde:

bcm2835-v4l2

Dit zorgt ervoor dat GNU/Linux voortaan deze module automatisch start bij het opstarten. Voor nu starten we het eenmaal handmatig op:

sudo modprobe bcm2835-v4l2

We kunnen nu controleren op de camera¬†√ľberhaupt werkt via:

raspistill -o test.jpg

Dit zou een foto moeten maken en opslaan onder de naam test.jpg.

ls /dev/

Dit commando moet nu een lijst geven, waaronder video0, je kunt nu doorgaan met het artikel. Als je geen video0 ziet, controleer dan a.u.b. opnieuw de camera aansluiting en/of je de module wel goed hebt ingeladen.

Installeer het volgende pakket voordat je avconv commando kunt gebruiken.

sudo apt-get install libav-tools

Neem een video op om te testen:

avconv -f video4linux2 -r 25 -i /dev/video0 -vcodec mpeg4 -y webcam.mp4
Output van Motion software (diff)

Output van Motion software (diff)

Motion Software

Nu gaan we Motion software installeren, deze software gaat straks beweging detecteren door middel van de camera beelden, installeren doen we via:

sudo apt-get install motion

Klaar ūüôā

Motion Web-interface

Nu kun je schermopnames of een video maken wanneer motion beweging detecteert en deze naar een bepaalde map plaatsen. Maar het kan ook handig zijn om live het beeld te zien en een online configuratie interface, dat kan met MotionEye. Sinds versie 0.27 is MotionEye voortaan op github te vinden.

We beginnen met de multimedia repository toe te voegen aan APT. Log eerst in als ‘root’ gebruiker:

su -

En dan:

echo "deb http://www.deb-multimedia.org jessie main non-free" >> /etc/apt/sources.list
apt-get update
apt-get install deb-multimedia-keyring

En uiteindelijk nogmaals een update na de keyring installatie:

apt-get update

Voordat we verder gaan, installeren we eerst de afhankelijkheden voor MotionEye:

sudo apt-get install python-pip python-dev libssl-dev libcurl4-openssl-dev libjpeg-dev ffmpeg v4l-utils

Nu we Python-pip hebben, wordt de installatie eenvoudiger. Python pip helpt je met installeren van python pakketten. We gaan nu motioneye installeren:

sudo pip install motioneye

De laatste versie is nu v0.28.3. MotionEye is aanwezig in de Python pip repository. In mijn tutorial ga ik er vanuit MotionEye ge√Įnstalleerd wordt via python pip.

Mocht je echt de laatste ‘unstable’ versie willen hebben, dan kun je de github repo clonen:

git clone https://github.com/ccrisan/motioneye.git

Configureren

MotionEye maakt gebruik van een motioneye.conf file. Cre√ęert de correcte map:

sudo mkdir -p /etc/motioneye

Zet het voorbeeld configuratie bestand naar de nieuwe map:

sudo cp /usr/local/share/motioneye/extra/motioneye.conf.sample /etc/motioneye/motioneye.conf

Mocht je niet over dit motioneye.conf.sample bestand beschikken, probeer deze versie direct van github.com. Het configuratie bestand bewerken kan via:

sudo nano /etc/motioneye/motioneye.conf

Optioneel kun je de poort veranderen naar poort ’80’. Ik vind het gewoon fijn om het IP-adres in te vullen in de webbrowser zonder na te denken welke poort het ook alweer was:

port 80

Maak de standaard media map aan (waar de foto’s/video’s terecht komen):

sudo mkdir -p /var/lib/motioneye

Tot slot maken we gebruik van het meegeleverde systemd opstart-script, die het opstarten vereenvoudigd. Systemd is de nieuwste opstartbeheerder van Debian 8 Jessie.

cp /usr/local/share/motioneye/extra/motioneye.systemd-unit-local /etc/systemd/system/motioneye.service

Mocht je op een of andere manier niet over dit systemd init script beschrikken, ook dit bestand kun je vinden op Github. Dit init script maakt standaard gebruik van /etc/motioneye/motioneye.conf configuratie bestand.

Voeg motioneye toe aan system control:

sudo systemctl daemon-reload 
sudo systemctl enable motioneye

Zonder reboot kun je MotionEye starten via:

sudo systemctl start motioneye

Stoppen kan weer via:

sudo systemctl stop motioneye

Als alles goed is gedaan, kun je nu verbinden met de MotionEye webserver via: http://localhost:80.
Of remote, via je eigen PC bijvoorbeeld, ga dan naar (verander eventueel het IP adres naar de gene die jij gebruikt hebt):
http://192.168.0.80

Hij zou vragen om een nieuwe camera te configureren, druk op de link voor het toevoegen van een camera. En selecteer de camera, waarschijnlijk iets met ‘mmal’. Als het goed is heb je nu live beeld!

WiFi Dongle

Je kunt je Raspberry Pi uiteraard aansluiten op het netwerk, handig om je opnames op te slaan op een netwerk schrijf. De Raspberry Pi Model B beschikt over een LAN ethernet poort, waardoor je het op een bekabelt netwerk kunt aansluiten. Echter in deze situatie is het verstandiger om gebruik te maken van draadloze netwerk verbinding door gebruik te maken van een WiFi Dongle.

Het is verstandig om te kiezen voor een WiFi Dongle die ‘out-of-the-box’ werkt, kortom dat je hier geen extra handelingen voor moet doen. Op deze pagina kun je een overzicht vinden van alle dongles die al dan wel of niet goed ondersteund worden door Raspberry Pi (Raspbian).

Ik heb een losstaand artikel geschreven waarin ik stap voor stap uitleg hoe je je eigen WiFi driver kunt compileren en gebruiken voor Raspberry Pi. Dit behandel ik daarom verder niet meer in dit artikel.

WiFi Configureren

In Linux kunnen we WPA supplicant gebruiken voor het opgeven van de wifi instellingen.
Wijzig hiervoor het volgende configuratie bestand:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Met als inhoudt nu:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
ap_scan=1
network={
ssid="JOUW_WIFI"
psk="WACHTWOORD"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
auth_alg=OPEN
}

Ps. Je kunt MotionEye configuratie aanpassen, zodat je de WiFi instellingen ook via MotionEye kan veranderen.

sudo nano /etc/motioneye/motioneye.conf

Verander de regel met wpa_supplicant_conf naar (vergeet niet het ‘#’-teken te verwijderen):
wpa_supplicant_conf /etc/wpa_supplicant/wpa_supplicant.conf

Korte uitleg van mogelijke configuratie items in wpa_supplicant.conf bestand:

  • update_config (optioneel): indien op 1, dan is het mogelijk om de wifi instellingen te veranderen via grafische interface
  • ap_scan:¬† 0 wordt enkel voor bekabelde verbindingen gebruikt. Zoals nu op 1, is het standaard voor wifi. En 2 wordt enkel gebruikt wanneer voor drivers te zetten met SSID, die niet goed raad weten met wpa_supplicant (developer / crappy drivers).
  • ssid: de naam van je WiFi
  • psk: het wachtwoord van je WiFi netwerk
  • scan_ssid (optioneel): zeer waarschijnlijk 1 (voor normale netwerken) of 2 voor verborgen netwerken.
  • proto: kan zijn RSN (Robust Security Network: WPA2) of WPA (WPA1).
  • key_mgmt: kan zijn WPA-PSK (zeer waarschijnlijk) of WPA-EAP (enterprise netwerken).
  • pairwise: kan zijn CCMP (WPA2) of TKIP (WPA1).
  • auth_alg (optioneel): is waarschijnlijk OPEN (nodig voor WPA/WPA2), andere opties zijn LEAP en SHARED.
  • group: kun je zetten op CCMP (WPA2), TKIP (WPA1), WEP104 of WEP40.
  • priority (optioneel): hoe hoger het getal hoe meer wenselijk dit netwerk is om te gebruiken.

Zet de rechten goed, immers wpa_supplicant.conf bevat gevoelige informatie:

sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf

Je zou de Raspberry Pi een statisch (vast) IP-adres kunnen meegeven voor het volgende bestand aan te passen:

sudo nano /etc/network/interfaces

Met als inhoud:

auto lo
auto wlan0
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.0.80
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Let op!
Dat je wpa-config gebruikt en niet wpa-roam.

Als je ook een eth0 interface hebt geconfigureerd als een statisch IP-adres… Dan moet je de gateway regel bij wlan0 verwijderen, anders krijg je een foutmelding.

UPDATE: Om problemen te voorkomen met DHCP, verwijderen we wlan0 uit de ‘link detection daemon’. Daarvoor wijzigen we het volgende bestand:

sudo nano /etc/default/ifplugd

Verander ‘auto‘ en ‘all‘ naar ‘eth0‘:

INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"

Control+X, en sla het bestand wederom op.

Crontab (Optioneel)

NIEUW: Eventueel kun je een zogenaamde ‘crontab’ script schrijven, die elke x minuten controleert of de WiFi verbinding niet verbroken is. En anders opnieuw verbinding probeert te maken (just to be sure). Script genaamd check_wifi.sh:

#!/bin/bash
if iwconfig wlan0 | grep -q "Melroy_Dennis_HQ" ; then
:
else
   echo "Network connection down! Attempting reconnection."
   ifdown --force wlan0
   sleep 5
   ifup wlan0
fi

Uitvoerbaar maken met:

chmod +x check_wifi.sh

En als laatste toevoegen aan crontab (e van edit):

crontab -e

Elke 30 minuten controleren:

*/30 * * * * /home/pi/check_wifi.sh

DNS (Optioneel)

Optioneel kun je OpenDNS gebruiken. Veranderd het resolv.conf bestand:

sudo nano /etc/resolv.conf

En voeg of vervang de volgende regel toe aan dit bestand (voor OpenDNS):

nameserver 208.67.222.222

En sla het bestand op. Op dit moment is OpenDNS altijd geconfigureerde als eerste DNS server, ongeacht welk netwerk interface je gebruikt.

Handige Commando’s

Indien je informatie wilt opvragen over de interface kunt je gebruik maken van (of het achterhaalde commando ifconfig):

ip addr

Zodra je twee interfaces heb gedefinieerd, dan kun je de netwerken herstarten op je Pi zelf via:

sudo service networking stop
sudo service networking start

Gebruik liever geen networking restart, dit kan problemen opleveren met het opbrengen van de interface en is daarom achterhaald. Let er op dat je verbinding verliest mocht je via SSH verzonden zijn.

Je kunt ook per interface ‘opbrengen’ via:

$ sudo ifdown eth0
sudo ifup eth0

Vraag je je af welke WiFi access points er in de buurt zijn, gebruik:

$ sudo iwlist wlan0 scan

Wilt je controleren of je nu echt bent verbonden bent met je WiFi Access Point? Maak handig gebruik van het iwconfig commando:

$ sudo iwconfig 2>&1 | grep ESSID
wlan0     IEEE 802.11bgn  ESSID:"Melroy_Dennis_HQ"  Nickname:"rtl_wifi"

Controleer je IP route table via het route commando. Let er dus op dat je standaard gateway verwijst naar 0.0.0.0 en die verwijst weer naar de router met het IP-adres 192.168.0.1:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 wlan0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0

Wil je testen of je google.com kunt bereiken? Probeer het domeinnaam te pingen:

$ ping google.com
PING google.com (173.194.65.101) 56(84) bytes of data.
64 bytes from ee-in-f101.1e100.net (173.194.65.101): icmp_req=1 ttl=48 time=14.4 ms
64 bytes from ee-in-f101.1e100.net (173.194.65.101): icmp_req=2 ttl=48 time=18.9 ms

Mocht je tegen problemen aanlopen, probeer eens te kijken in het /var/log/syslog bestand, via:

$ tail -f /var/log/syslog
Jul 27 22:21:14 raspcam wpa_supplicant[3626]: wlan0: Trying to associate with c0:3f:0e:be:bb:2c (SSID='Melroy_Dennis_HQ' freq=2437 MHz)
Jul 27 22:21:14 raspcam wpa_supplicant[3626]: wlan0: Association request to the driver failed
Jul 27 22:21:15 raspcam kernel: [ 1844.563776] r8712u 1-1.2:1.0 wlan0: r8712_got_addbareq_event_callback: mac = c0:3f:0e:be:bb:2c, seq = 0, tid = 0
Jul 27 22:21:15 raspcam wpa_supplicant[3626]: wlan0: Associated with c0:3f:0e:be:bb:2c
Jul 27 22:21:15 raspcam wpa_supplicant[3626]: wlan0: WPA: Key negotiation completed with c0:3f:0e:be:bb:2c [PTK=CCMP GTK=TKIP]
Jul 27 22:21:15 raspcam wpa_supplicant[3626]: wlan0: CTRL-EVENT-CONNECTED - Connection to c0:3f:0e:be:bb:2c completed (auth) [id=0 id_str=]
Jul 27 22:21:15 raspcam ifplugd(wlan0)[3606]: Link beat detected.
Jul 27 22:21:15 raspcam ifplugd(wlan0)[3606]: Executing '/etc/ifplugd/ifplugd.action wlan0 up'.
Jul 27 22:21:15 raspcam ifplugd(wlan0)[3606]: client: /sbin/ifup: interface wlan0 already configured
Jul 27 22:21:15 raspcam ifplugd(wlan0)[3606]: Program executed successfully.

 

Did you like the article? Please share!
  • Paul

    Ik loop vast bij het klonen van motioneye.git
    de volgende melding verschijnt na een aantal seconden:
    fatal: https://bitbucket.org/ccrison/motioneye.git/info/refs not found: did you run git update-server-info on the server?
    Wat kan hiervan de oorzaak zijn?

  • Sef

    Dag Melroy,

    Hoe snel is deze live stream? Ik draai nu momenteel ook motion op mijn raspberry als daemon. Is dit wel dezelfde motion? Zo niet, hoe veel sneller is de versie die jij hier hebt uitgelegd?

    • Niet super snel helaas, ik denk dat we het over dezelfde ‘motion’ package hebben.

      Zoals je weet is de Raspberry Pi beperkt in zowel CPU als geheugen, daarbij is het instellen van de framerate, width & height allemaal belangrijk om een fatsoenlijke snelheid te krijgen. Met deze instellingen zou je kunnen spelen.

      Andere zaken zoals: `output_motion`, heb je waarschijnlijk niet nodig en kan daarom uitgeschakeld worden. Dit kan via MotionEye of direct via: /etc/motion/motion.conf bestand:
      output_all off
      output_normal off
      output_motion off

      Je weet dat motion bedoeld is om beweging te detecteren, mocht je nu enkel een live stream willen hebben, raad ik sterk aan om het anders aan te pakken. Als je Raspbian draait, is de uv4l driver standaard aanwezig. En anders kun je dit installeren via:
      sudo apt-get install uv4l-server uv4l-uvc uv4l-xscreen uv4l-mjpegstream

      Je camera wordt aangekoppeld als /dev/video0. Mocht dit het geval zijn, kun je je video stream bereiken via de poort 8080. Probeer deze te open via VLC op de client computer (sudo apt-get install vlc):
      cvlc http://raspberrypi_ip_adres:8080/stream/video.h264 –demux h264

      Werkt dit niet, probeer dan ook de server te draaien ook via VLC:
      uv4l –driver raspicam –auto-video_nr –framerate 10

      cvlc v4l2:///dev/video0 –v4l2-width 352 –v4l2-height 288 –sout
      ‘#transcode{vcodec=MJPG,width=352,height=288,vb=1000}:duplicate{dst=std{access=http{mime=multipart/x-mixed-replace;boundary=–7b3cc56e5f51db803f790dad720ed50a},mux=mpjpeg,dst=:8080/video.mjpg}’

      Nu is de stream bereikbaar via:
      http://raspberrypi_ip_adres:8080/video.mjpg

      Ook hier geldt, probeer te spelen met de resolutie en framerate. Hou je systeem in de gaten via htop commando (sudo apt-get install htop).

      Succes!

  • Mocht het NIET lukken met wpa_supplicant (http://w1.fi/wpa_supplicant/). Kun je proberen of hostapd wel werkt: http://w1.fi/hostapd/.

  • Erik Nieuwenhuis

    Dag, mooi artikel en ik kom een heel eind maar strand op een fout als ik motioneye.pi wil starten. Dit is de fout. Heeft iemand een idee waar dit aan ligt?

    pi@raspberrypi ~ $ ./motioneye/motioneye.py

    Traceback (most recent call last):

    File “./motioneye/motioneye.py”, line 385, in

    if not _test_requirements():

    File “./motioneye/motioneye.py”, line 172, in _test_requirements

    if update.compare_versions(tornado.version, ‘3.1’) < 0:

    File "./motioneye/src/update.py", line 34, in compare_versions

    version1 = [int(n) for n in version1.split('.')]

    ValueError: invalid literal for int() with base 10: '2b1'

    • Hij vindt inderdaad je tornado python lib. Vandaar dat de ‘import’
      goed gaat. Nu probeert het script volgens te controleren of je versie
      wel voldoet aan minimaal v3.1 (of hoger):

      if update.compare_versions(tornado.version, '3.1') < 0:

      Volgens roept hij de volgende functie aan in update.py (regel 34):
      version1 = [int(n) for n in version1.split('.')]

      Hier gaat hij op fout, jouw Tornado versie geeft geen integer (geheel getal) maar een of andere heximaal getal terug als versie nummer (of in ieder geval iets met een letter).

      Wil je eens proberen in een terminal scherm het volgende uit te voeren:
      python

      (Nu krijg je een nieuwe prompt)
      import tornado
      En tot slot:
      tornado.version

      Wat zie je dan verschijnen?

      Gr, Melroy

      • Erik Nieuwenhuis

        Dank voor je reactie.

        Als ik de commando’s intyp, krijg ik dit:

        >>> import tornado

        >>> tornado.version

        ‘4.2b1’

        Groet,
        Erik Nieuwenhuis

        • Ah dat dacht ik al. En zo te zien, de ontwikkelaar ook, zie: https://bitbucket.org/ccrisan/motioneye/commits/27521974b56beef7d7959702521ab88ae1714faf.

          Kortom, het moet nu werken met de laatste versie (2 dagen geleden opgelost)! Gebruik je git? Voer dan het volgende command uit in de motionEye map:
          git pull

          Anders download hier de laatste versie:
          https://bitbucket.org/ccrisan/motioneye/downloads

          • Erik Nieuwenhuis

            Sorry voor de late reactie. Update is gelukt, ik ben een stap verder.

            [edit] Ik heb beeld!

          • Mooi om te horen, veel succes verder met je project. Als er nog wat is, dan hoor ik dat graag!

          • Erik Nieuwenhuis

            Dag, ik ben toch weer vast gelopen, en kom er nog niet verder mee. Het was zo dat motiondetection, dat werkte, ik kreeg keurig filmpjes en foto’s als er beweging gedetecteerd werd. Maar nu krijg ik geen opnames meer, terwijl er wel beweging is. De camera werkt wel en ik heb ‘live’ beeld.

            Ik krijg deze fout als ik ./motioneye/motioneye.py uitvoer in terminal.

            Traceback (most recent call last):

            File “./motioneye/motioneye.py”, line 398, in

            _start_motion()

            File “./motioneye/motioneye.py”, line 354, in _start_motion

            motionctl.start()

            File “./motioneye/src/motionctl.py”, line 116, in start

            log_file = open(motion_log_path, ‘w’)

            IOError: [Errno 13] Permission denied: ‘/home/pi/motioneye/log/motion.log’

            Als je hier tips voor hebt, hoor ik het graag.

          • De eerste fout is een IOError. Die geeft aan dat je geen toegang hebt tot het motion.log bestand. Je moet weten dat Linux een veilige systeem heeft van rechten en gebruikers (permissions). Zo kun je motioneye uitvoeren als ‘pi’ gebruiker, maar ook als ‘root’ gebruiker door sudo voor je commando te zetten:
            sudo ./motioneye/motioneye.py
            Of je kunt de rechten veranderen van je motioneye/log/motion.log bestand (chmod en chown commando). Gebruik het ‘ls -lha ‘ commando in motioneye/log om te zien wat de rechten zijn van je *.log file. Lees de wiki voor meer info over bestandsrechten:
            http://nl.wikibooks.org/wiki/Linux_voor_beginners/De_terminal#Bestandsrechten

            Het andere wat me opvalt is ‘Address already in use‘. Kortom er draait nu al een programma (waarschijnlijk motioneye zelf), die ook al poort 8081 gebruikt. Kijk of het process nog draait via:
            ps -ef | grep motioneye

            Een handig commando vind ik zelf htop: sudo apt-get install htop. Met dit commando kun je eenvoudig een overzicht krijgen van alle draaiende taken/processen. Selecteer het betreffende proces met de pijltjes-toetsen. Druk op ‘F9’ toets om het proces te ‘doden’. Kies bijvoorbeeld voor SIGKILL en druk op enter.

            Succes!

          • Erik Nieuwenhuis

            De fouten zijn weg en motion detection werk. Dank voor de tips. Iets anders: Wat is nodig om dit niet via een poort te doen, maar het in een map te zetten in /var/www/ Ik wil het via een map benaderen. Bijvoorbeeld 192.168.1.12/webcam

          • Wat je vraag is eigenlijk om het via poort 80 (standaard webserver) te doen. /var/www is namelijk ook toegankelijk via deze poort 80, apache2 of ngix helpen je daarbij mee.

            Je kunt proberen de settings.py te veranderen. En deze regel:

            PORT = 8765
            Te wijzigen naar poort 80, je moet dan geen webserver draaien tegelijk. Anders krijg je een vergelijkbaar probleem als eerst, maar dan; Port is already in use.

            Een alternatief is wellicht een proxy, kijk hier voor een nginx oplossing:
            https://bitbucket.org/ccrisan/motioneye/issue/10/nginx-sample-config

  • Jaap van der Veen

    Beste Melroy, net als Erik krijg ik ook een foutmelding bij het uitvoeren van “(sudo) /home/pi/motioneye/motioneye.py”. Ik heb al even gegoogled op de laatst regel en het schijnt iets met een instelling in python te zijn. Misschien heb jij een korte howto voor mij om bij die instellingen te komen? ūüôā :

    Traceback (most recent call last):

    File “/home/pi/motioneye/motioneye.py”, line 390, in

    if not _test_requirements():

    File “/home/pi/motioneye/motioneye.py”, line 198, in _test_requirements

    import mediafiles

    File “/home/pi/motioneye/src/mediafiles.py”, line 37, in

    import config

    File “/home/pi/motioneye/src/config.py”, line 30, in

    import motionctl

    File “/home/pi/motioneye/src/motionctl.py”, line 30, in

    import mjpgclient

    File “/home/pi/motioneye/src/mjpgclient.py”, line 24, in

    from tornado import iostream, ioloop

    File “/usr/local/lib/python2.7/dist-packages/tornado/iostream.py”, line 40, in

    from tornado.netutil import ssl_wrap_socket, ssl_match_hostname, SSLCertificateError, _client_ssl_defaults, _server_ssl_defaults

    File “/usr/local/lib/python2.7/dist-packages/tornado/netutil.py”, line 39, in

    import certifi

    ImportError: No module named certifi

    • Jaap van der Veen

      Ik ben inmiddels een stukje verder. In pip-3.2 was certifi wel geinstalleerd, maar niet in de gewone pip die hij blijkbaar gebruikt. Nu krijg ik echter de volgende foutmelding:
      ImportError: No module named backports.ssl_match_hostname

      • Jaap van der Veen

        Wow! Na “sudo pip install backports.ssl_match_hostname” start motioneye.py nu wel. Ik krijg nu een inlogvenster in de webbrowser. Ik heb vast over het stuk met de default inloginformatie van deze overigens uitstekende tutorial heen gelezen ūüėČ

        • Jaap van der Veen

          Yaay! Standaard inloginformatie is “admin” bij user en bij pass niks invoeren. Bedankt voor deze tutorial!

          • Graag gedaan! Mocht er iets zijn gewijzigd in de loop der tijd, dan hoor
            ik graag welk stuk ik moet verbeteren / uitbreiden in mijn tutorial.

  • Zeker de moeite waard om eens Kerberos.io te bekijken. De setup is veel eenvoudiger!

    • Bedankt, inderdaad een erg goede tip! Ziet er ook nog eens mooi uit…

      • Erik Nieuwenhuis

        Deze had ik ook geprobeerd maar performed slecht op Raspberry Pi (model B). Ik tip MotionEyeOS als beste uit de test.

        • Wellicht beter met de Raspberry Pi 2 Model B. Die heeft een 900MHz quad-core ARM Cortex-A7en 1GB Ram.

  • Erik Nieuwenhuis

    Dag, ik ben vastgelopen. Ik had 0.23 werkende. Ik wilde updaten naar versie 0.27 volgens instructie op https://bitbucket.org/ccrisan/motioneye/wiki/Installation%20Guide en heb in de motioneye-map git pull ingegeven. Dit gaf een serverfoutmelding nadien.

    Toen had ik bedacht weer terug te gaan naar 0.23 met instructies op deze pagina, maar de vlieger gaat niet op. Als je nu met git gaat clonen, krijg je versie 0.27 en daar is onder meer de conf anders geworden.

    Ook de instructies in https://bitbucket.org/ccrisan/motioneye/wiki/Installation%20Guide kloppen niet. Daar staat bijv. cp settings_default.py settings.py alleen die file komt in de map niet voor.

    Kortom, Melroy van den Berg wil je deze pagina misschien aanpassen met instructies om versie 0.27 werkend te krijgen.

    • Bedankt voor je opmerking. Ik heb het blog artikel ge√ľpdatet naar de laatste versie 0.28. Ik hoor graag als je tegen problemen aan loopt, je help je graag verder…

      • Erik

        Melroy, super bedankt. Ik heb hem zo op het oog probleemloos kunnen installeren en volgens “sudo service motioneye status” is de service ‘running’. Ik zie dus geen fouten. Alleen ik kom er niet via de webinterface bij. Zowel met als zonder poort in de URL niet. Ik heb zowel poort 80 als 8765 geprobeerd, zoals in je in /etc/motioneye/motioneye.conf kunt stellen . (in versie 0.23 werkte poort 8765 ook naast webverkeer op poort 80)

        Dus vanaf `binnen` met laptop ipadress in dezelfde 192.168.x.x range kom ik er niet. De browsermelding is “Deze webpagina is niet beschikbaar”. Mijn webservertje draait wel op dezelfde raspberry, zou dat conflict geven? (overigens werkten deze in 0.23 ook keurig naast elkaar, web op poort 80 en de webcam op poort 8765)

        Kortom, heb je tips wat ik kan doen of hoe ik meer foutlogs kan zien?

        • Als je ook al een (apache) webserver heb draaien op je raspberry pi geeft dit inderdaad conflicten met poort 80.
          Probeer eens in de log file te bekijken, deze is hier te vinden:
          /var/log/motioneye.log

          Werkt “raspistill -o test.jpg” nog wel?

          • Erik

            intern benaderbaar probleem is opgelost. En “raspistill -o test.jpg” werkt ook. Probleem is dat ik mijn camera die in 0.23 wel werkte, niet toe kan voegen. Het ledje van de camera werkt ook niet, en dat deed ie met 0.23 wel. Met raspivid kan ik ook wel een filmpje maken.

          • 1. Je heb waarschijnlijk al wel de camera functie aangezet in: raspi-config?
            2. Heb je gecontroleerd of bcm2835-v4l2 driver geladen is? lsmod | grep v4l2
            3. Deze driver kun je laden via: sudo modprobe bcm2835-v4l2 En permanent laten opstarten door ‘bcm2835-v4l2’ toe te voegen aan het bestand: /etc/module.
            4. Controleer of v4l2-ctl ook werkt, door bijvoorbeeld een video te maken:

            # Set de view finder aan/uit
            v4l2-ctl --overlay=1 # enable viewfinder
            v4l2-ctl --overlay=0 # disable viewfinder

            # Neem een video op
            v4l2-ctl --set-fmt-video=width=1920,height=1088,pixelformat=4
            v4l2-ctl --stream-mmap=3 --stream-count=100 --stream-to=video.h264

            5. Als dat allemaal werkt, probeer dan toch eens de /var/log/motioneye.log door te spitten op eventuele foutmeldingen. Deze log file wordt standaard aangemaakt als je hem start via: /etc/init.d/motioneye start
            6. Mocht dat niet werken, kun je motioneye ook direct starten vanaf command-line: /usr/local/bin/meyectl startserver -c /etc/motioneye/motioneye.conf

            Ik hoor het graag..

          • Ps. Er is ook nog een MotionEyeOS: https://github.com/ccrisan/motioneyeos

          • Erik Nieuwenhuis

            Melroy
            dank voor reactie.
            Het werkt nog niet. Puntsgewijs antwoord op je vragen
            1. ja
            2. ja
            3. oke
            4. werkt
            5. Stikt van de errors maar ik weet niet wat de oplossing is:

            2015-11-18 21:40:45: [motioneye] WARNING: Connect error on fd 14: ECONNREFUSED

            2015-11-18 21:40:50: [motioneye] ERROR: motion not running, starting it

            2015-11-18 21:40:50: [motioneye] ERROR: failed to start motion: motion failed to start

            2015-11-18 21:41:05: [motioneye] WARNING: Connect error on fd 14: ECONNREFUSED

            2015-11-18 21:41:09: [motioneye] INFO: interrupt signal received, shutting down…

            2015-11-18 21:41:09: [motioneye] INFO: server stopped

            2015-11-18 21:41:09: [motioneye] INFO: bye!

            6. geeft dit: /usr/local/bin/meyectl startserver -c /etc/motioneye/motioneye.conf

            INFO: hello! this is motionEye server 0.28.3

            CRITICAL: config directory “/etc/motioneye” does not exist or is not writable

          • In je log file staat datum van ‘2015-11-18’, ik verwacht dat dit niet meer relevant is, omdat het nu al 20 november is. Mee eens?

            En wat betreft punt 6. Heb je gecontroleerd of /etc/motioneye map bestaat? Probeer dan dit commando nogmaals uit te voeren, maar dan als ‘root’, door eerst in te loggen als root: “su -“.

            En wat zegt /var/log/syslog?

          • Erik Nieuwenhuis

            Melroy

            fouten van 18 nov zijn idd niet meer relevant.
            ik ben inmiddels van scratch af aan weer begonnen, met een schone image van raspberry. Dan werkt bovenstaande instructie goed.
            Ik had een wheezy versie en nu dan jessie. Misschien dat het daar in zit? ik zeg ook maar wat ….
            stand van zaken is nu dat de service werkt, alleen mijn camera wil ie nog niet zien. Wordt vervolgd.

  • Flanux

    Wat een geweldig fijne TUT !!

    Weten jullie al dat er ook een complete immage beschikbaar is, MotionEyeOS genaamd.

    https://github.com/ccrisan/motioneyeos/wiki/Installation.

    Just my 2 cents
    –=[ Flanux ]=–

  • Sicco Den Otter

    ‚ÄčHi!
    I’ve made an android app for using it with raspberry pi and motion.

    It’s in the play store: https://play.google.com/store/apps/details?id=com.den.otter.remoteAlarm

    Hope some people will like it.

    I use it when i leave home… so i receive notification on motion and can view live whats happening.
    if you need help, please let me know !

    Thnx

  • Sicco Den Otter
  • benotje

    hallo wie kan me helpen ik motioneye draaien maar er gebuurt elke keer wat raars ik weet niet waar het aan ligt

    na +/- 5 min gaat op pi het scherm op een soort screen saver op dat moment valt de verbinding weg op de camera deze komt pas terug als ik de pi restart

    waar kan dat aan liggen

    • Melroy van den Berg

      Hoi. Dat is lastig te zeggen met zo weinig data. Het is dan ook gokken voor mij. Daarom is het verstandig om te kijken in je configuratie bestand van MotionEye:
      /etc/motioneye/motioneye.conf

      Kijk hierin of je “log_path” heb gedefinieerd (standaard: /var/log). MotionEye moet dan wel de rechten hebben om te schrijven naar /var/log map (bijv. root rechten zijn nodig of je veranderd de rechten van de folder chmod/chown). In /var/log moet dan logging komen, die hopelijk meer vertelt wat er allemaal gebeurd op je Pi. Open het bestand: /var/log/motioneye.log En plaatst de inhoud van de log online via bijv. http://pastebin.com/.

      In het zelfde configuratie bestand heb je ook ‘log_level’, die kun je zetten op ‘debug’ als ‘info’ nog niet voldoende is.

      Deel vervolgens de link van pastebin.com.

      Wat ik ook al vertelde in mijn artikel, kijk tevens naar de inhoud van: /var/log/syslog. Ook de inhoud van syslog kun je het beste plaatsen op pastebin.com.

  • Cees

    hallo, ik heb motioneye op mijn raspberry-pi ge√Įnstalleerd en ben gekomen tot na het inloggen met “admin en blank”.
    Nu krijg ik echter de regel: [root@meye-6fb74814 ~]# , en verder kom ik niet.
    Hoe kan ik nu de boel draaiende krijgen ?
    Alvast hartelijk dank voor de antwoorden.