Skip to main content

Network camera as motion sensor for lights


Here's a guide to use an old network cctv feed as a motion sensor for lights.

https://motion-project.github.io/


Here's what we need

1. URL for jpg feed from the network camera

The URL varies for different brands and models.

Example URL: http:///cgi-bin/net_jpeg.cgi?ch=0 


2. Raspberry pi with domoticz (already integrated with lights, e.g. hue) 

On the raspberry pi, download Motion

$ sudo apt-get motion

Modify the /etc/motion/motion.conf file (Refer to the motion documentation)

I removed the following from the motion.conf create a new thread file for each video source

comment out in /etc/motion/motion.conf

; videodevice /dev/video0
; target_dir /var/lib/motion
; stream_port 8081

I also changed the webcontrol_port to 8000 as 8080 conflicts with the default domoticz port.

;webcontrol_port 8080
webcontrol_port 8000


I added a thread file for each video source

thread /etc/motion/camera.conf


The following is an example of a tread file called camera.conf. You need to create a new thread file for each camera

netcam_userpass : user:password
text_left Camera
netcam_url http://netcam_ip/cgi-bin/net_jpeg.cgi?ch=0
target_dir /mnt/nas/camera
stream_port 8001
on_event_start /usr/bin/curl -s "http://domoticz_ip:8080/json.htm?type=command&param=switchlight&idxswitch_id=&switchcmd=On"
on_event_end /usr/bin/curl -s "http://domoticz_ip:8080/json.htm?type=command&param=switchlight&idx=switch_id&switchcmd=Off"


The variables you need to replace are:

user:password: if needed
netcam_ip and URL
domoticz_ip: IP address of the rasberry pi running domoticz
switch_id is the switch id of your light that you want.
Make sure that the steam_port is not already used on the pi and for each camera, to change the stream port.


Optional

If you want to have a bit more smarts for the motion sensor rather than having to keep turning on and off the motion process at night, create a Motion detection dummy virtual device on domoticz and replace that lightswitch id with the motion sensor.

It is possible to use the apple homekit/homebridge to add the virtual motion sensor to apple home and created an automation to set it for only turn on the light at night and when someone is home.



Comments

Popular posts from this blog

Multiple Broadlink RM mini 3 integration using MQTT

Broadlink now has quite a lot of integration options almost out of the box. If you enable Broadlink IHC, you can directly link it to Alexa by giving the device a unique name.

There is a homebridge plug in for homekit integration but I haven't tried or tested this. https://lprhodes.github.io/slate/

I wanted to put the device in domoticz so I can have more control over what can trigger my broadlink. I decided to use broadlink-mqtt for this, which is a fairly easy method to trigger from any source.

Setup Instructions for broadlink-mqtt

1. git clone https://github.com/eschava/broadlink-mqtt

2. vi /home/pi/broadlink-mqtt/mqtt.conf

3. Update the mqtt.conf file with the device type set as multiple_lookup

device_type = 'multiple_lookup'
mqtt_multiple_subprefix_format = '{type}_{mac_nic}/'
4. Start the python script and check that it started and detected all the RM devices.
Check the log file to see what the IP / MAC addresses are. DEBUG Connected to RM2 Broadlink device at …

Fibaro HCL Virtual Device Slider

How to setup Fibaro home center lite (HCL) slider for virtual devices.

As the Fibaro HCL does not support LUA. The question was how to update the number value of the slider to send to the HTTP string. Thanks to this site which is a really good reference https://www.vesternet.com/resources/application-notes/apnt-88/

The 2 use cases here are;

Sonos HTTP API Volume

To allow for volume control for all Sonos devices, add a virtual device with the IP address for SONOS HTTP API and specify the default port to 5005. Create Slider and put the following text into the string.

GET /volume/_sliderValue_ HTTP/1.10x0D0x0A0x0D0x0A


Domotiz Virtual Devices

GET /json.htm?type=command&param=switchlight&idx=XX&switchcmd=Set%20Level&level=_sliderValue_ HTTP/1.10x0D0x0A0x0D0x0A

Replace XX with the device ID.

Restart Fibaro HCL when it stops working automatically

It seems that the Fibaro HCL seems to hang every now and then. Instead of trying to restart it regularly, which doesn't really work, as it's almost impossible to predict when this will happen.

This method checks that the HCL is actually running and in the event it stops working, trigger a script that will restart it.


1. Get a non Fibaro controlled power plug and scripts to control it.

I used a wifi smart plug, TP-link HS100 and downloaded the scripts from

https://blog.georgovassilis.com/2016/05/07/controlling-the-tp-link-hs100-wi-fi-smart-plug/

2. Create a bash script to restart the Fibaro, e.g. restart_fibaro.sh

#!/bin/bash

ip_addr=
scripts=

$scripts/tplink-smartplug.py -t $ip_addr -c off
sleep 10
$scripts/tplink-smartplug.py -t $ip_addr -c on


3. Create a test global variable in the Fibaro HCL

Go to the variables panel and create a test variable, e.g. Test


4. Add a cron entry to test that the Fibaro API is still working and restart if it's not.

The cron script is scheduled ev…