This is an old revision of the document!
Table of Contents
Surveillance Camera with RaspberryPi Zero W]]
Hardware
- Raspberry PI Zero W
- Raspberry PI Camera V2.1 NOIR
- Raspberry PI Camera Cable for Zero
- Solar Panel (25Watt, 12V (nominal), 17.8V Max
- Solar Charge Controller (10Amp) (12/24V)
- Two LED lights (IR 8W +Visible 18W)
- 2x MOSFET switches
- 1x AHT21 Temp/Humidity sensor
- 1x ADS1115 ADC
- 1x microusb cable (RPI Zero power)
- Fake Camera body
- Outdoor project box
- Cable connectors
- 12V 4AH battery
https://www.amazon.com/dp/B01M9B6RQI?psc=1&ref=ppx_yo2ov_dt_b_product_details
https://www.amazon.com/dp/B07NPDWZJ7?psc=1&ref=ppx_yo2ov_dt_b_product_details
https://www.amazon.com/dp/B00IY3YLCI?psc=1&ref=ppx_yo2ov_dt_b_product_details
https://www.amazon.com/dp/B0771GQMPT?psc=1&ref=ppx_yo2ov_dt_b_product_details
https://www.amazon.com/dp/B09KGDDS37?psc=1&ref=ppx_yo2ov_dt_b_product_details
https://www.amazon.com/dp/B0BZH7CTGX?psc=1&ref=ppx_yo2ov_dt_b_product_details
https://www.amazon.com/gp/product/B08HLYKXC6/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1
https://www.amazon.com/dp/B079GNVSTL?psc=1&ref=ppx_yo2ov_dt_b_product_details
https://www.amazon.com/dp/B09B5DXTLS?psc=1&ref=ppx_yo2ov_dt_b_product_details
https://www.amazon.com/dp/B085NVDC3K?psc=1&ref=ppx_yo2ov_dt_b_product_details
Software
- MotionEyeOS version: 20200606
- MotionEye 4.2.2
- Motion 0.42.1
- Motionpush
Configuration
MotionEye
- File Storage:
- Upload Service: SFTP server
- We setup a user in my server for this. User: motioneye
- location: /home/user/camera1
- Include Subfolders: yes
- Video Device
- Video Resolution: 800×600 (fast), 2592×1944 (max, very slow)
- Automatic Brightness: yes
- Motion detection
- Auto Noise Detection: yes
- Motion Gap 30
- Mininum motion Frames: 20 frames
- Use mask
- Motion Notifications
- Run a command: yes
- Command: /data/usr/bin/motionpush %H:%M
- Motionpush
- Has to be downloaded to the dev computer
- Edit example.conf and motionpush executable:
- motionpush:
- CONFIG_FILE=“/data/etc/motionpush.conf”
- Follow Telegram instructions to create a bot
- Create a Telegram Channel
- Configure (with BotFather) the bot to be able to “post in the channel” “manage channel”
- Add the bot to the channel administrators
- Edit Telegram stuff in example.conf
- Copy example.conf to /data/etc/motionpush.conf with scp to raspberry pi
- Copy motionpush to /data/usr/bin/
Test bot with :
curl -X POST "https://api.telegram.org/bot<Token>/sendMessage" -d "chat_id=-<channelid>&text=my sample text"
Edit example.conf with:
TELEGRAM_BODY="Tap <a href=\"http://cam.memelabs.net:9000\">here</a> to view live stream
Tap <a href=\“<nextcloud share weburl here>\”>here</a> for event videos“
Project:
https://github.com/motioneye-project/motioneyeos
Download image:
wiki:
https://github.com/motioneye-project/motioneyeos/wiki
Telegram Push notifications:
ssh remote forwarding
- On the PI you must run:
ssh -R *:9000:localhost:80 memeruiz@192.168.2.22 -N
- Now you can access from 2.22 with localhost:9000 the PI web server with motioneye
- Configure your modem to forward port 9000 to internal computer 192.168.2.22 to port 9000
nextcloud
- Install nextcloud on debian. Follow these instructions:
https://www.linuxtuto.com/how-to-install-nextcloud-on-debian-12/
- For configuring apache:
- In nextcloud config.php file add this:
‘filesystem_check_changes’ => 1,
- This will instruct nextcloud to update new available files to its webfront end
- Add motioneye debian user to group www-data (to be able to put files inside nextcloud data directory)
- Inside motioneye home directory do a symlink to nextcloud directory:
mkdir /var/www/nextcloud/data/motioneye/files/camera1 chown -R www-data:www-data /var/www/nextcloud/data/motioneye/files/camera1 chmod g+w /var/www/nextcloud/data/motioneye/files/camera1 cd /home/motioneye ln -s camera1 /var/www/nextcloud/data/motioneye/files/camera1 chown -R www-data:www-data camera1
UART + Wanderer
In motioneyeOS things are a bit different:
For activating the UART raspberry pi zero w port:
Edit /boot/config.txt
Add this:
dtoverlay = miniuart-bt
/dev/ttyAMA0 existed before but it doesn't work by default. After activiting miniuart-bt it starts working
Test with a loopback cable between tx and rx and with this test program:
import serial test_string = "Test serial port ...".encode('utf-8') port_list = ["/dev/ttyAMA0","/dev/ttyAMA0","/dev/ttyS0","/dev/ttyS"] for port in port_list: try: serialPort = serial.Serial(port, 9600, timeout = 2) print ("Serial port", port, " ready for test :") bytes_sent = serialPort.write(test_string) print ("Sended", bytes_sent, "byte") loopback = serialPort.read(bytes_sent) if loopback == test_string: print ("Received ",len(loopback), "bytes. Port", port,"is OK ! \n") else: print ("Received incorrect data:", loopback, "on serial part", port, "loopback \n") serialPort.close() except IOError: print ("Error on", port,"\n")