├── LICENSE
├── .gitignore
├── hello_flask
├── requirements.txt
├── run.sh
├── app.py
├── build.json
├── config.json
└── Dockerfile
├── streamlit_basic
├── requirements.txt
├── Dockerfile
├── build.json
└── config.json
├── assets
├── motion.jpg
└── streamlit.jpg
├── tesseract
├── requirements.txt
├── build.json
├── config.json
├── Dockerfile
└── app.py
├── repository.json
├── motion
├── Dockerfile
├── config.json
├── run.sh
├── README.md
└── motion.conf
└── README.md
/LICENSE:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | venv*
--------------------------------------------------------------------------------
/hello_flask/requirements.txt:
--------------------------------------------------------------------------------
1 | flask==2.3.2
--------------------------------------------------------------------------------
/streamlit_basic/requirements.txt:
--------------------------------------------------------------------------------
1 | streamlit==0.60.0
--------------------------------------------------------------------------------
/assets/motion.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robmarkcole/hassio-addons/HEAD/assets/motion.jpg
--------------------------------------------------------------------------------
/assets/streamlit.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robmarkcole/hassio-addons/HEAD/assets/streamlit.jpg
--------------------------------------------------------------------------------
/tesseract/requirements.txt:
--------------------------------------------------------------------------------
1 | Flask==2.3.2
2 | numpy==1.22.0
3 | pillow>=6.2.0
4 | pytesseract==0.2.6
5 |
--------------------------------------------------------------------------------
/hello_flask/run.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/with-contenv bashio
2 |
3 | echo Running flask hello world
4 | python3 app.py
5 |
6 |
--------------------------------------------------------------------------------
/repository.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Hass.IO add-on repository",
3 | "url": "https://github.com/robmarkcole/hassio-addons",
4 | "maintainer": "robmarkcole"
5 | }
6 |
--------------------------------------------------------------------------------
/hello_flask/app.py:
--------------------------------------------------------------------------------
1 | from flask import Flask
2 |
3 | app = Flask(__name__)
4 |
5 |
6 | @app.route("/")
7 | def hello_world():
8 | return "Hey, we have Flask in a Docker container!"
9 |
10 |
11 | if __name__ == "__main__":
12 | app.run(debug=True, host="0.0.0.0")
13 |
--------------------------------------------------------------------------------
/motion/Dockerfile:
--------------------------------------------------------------------------------
1 |
2 | FROM debian:buster
3 |
4 | RUN apt-get update && apt-get install -q -y --no-install-recommends \
5 | motion \
6 | jq
7 |
8 | # Copy data
9 | COPY run.sh /
10 | COPY motion.conf /etc/
11 |
12 | RUN chmod a+x /run.sh
13 |
14 | CMD [ "/run.sh" ]
15 |
--------------------------------------------------------------------------------
/streamlit_basic/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM python:3.8
2 | LABEL maintainer="Robin Cole @robmarkcole"
3 |
4 | EXPOSE 8501
5 |
6 | RUN mkdir -p /home/streamlit
7 | WORKDIR /home/streamlit
8 |
9 | COPY requirements.txt .
10 | RUN pip install --upgrade pip
11 | RUN pip install -r requirements.txt
12 |
13 | COPY . /home/streamlit
14 |
15 | CMD ["streamlit","hello"]
--------------------------------------------------------------------------------
/tesseract/build.json:
--------------------------------------------------------------------------------
1 | {
2 | "args": {},
3 | "build_from": {
4 | "aarch64": "hassioaddons/base-python-aarch64:5.2.0",
5 | "amd64": "hassioaddons/base-python-amd64:5.2.0",
6 | "armhf": "hassioaddons/base-python-armhf:5.2.0",
7 | "armv7": "hassioaddons/base-python-armv7:5.2.0",
8 | "i386": "hassioaddons/base-python-i386:5.2.0"
9 | }
10 | }
--------------------------------------------------------------------------------
/hello_flask/build.json:
--------------------------------------------------------------------------------
1 | {
2 | "args": {},
3 | "build_from": {
4 | "aarch64": "hassioaddons/base-python-aarch64:5.2.0",
5 | "amd64": "hassioaddons/base-python-amd64:5.2.0",
6 | "armhf": "hassioaddons/base-python-armhf:5.2.0",
7 | "armv7": "hassioaddons/base-python-armv7:5.2.0",
8 | "i386": "hassioaddons/base-python-i386:5.2.0"
9 | }
10 | }
--------------------------------------------------------------------------------
/streamlit_basic/build.json:
--------------------------------------------------------------------------------
1 | {
2 | "args": {},
3 | "build_from": {
4 | "aarch64": "hassioaddons/base-python-aarch64:5.2.0",
5 | "amd64": "hassioaddons/base-python-amd64:5.2.0",
6 | "armhf": "hassioaddons/base-python-armhf:5.2.0",
7 | "armv7": "hassioaddons/base-python-armv7:5.2.0",
8 | "i386": "hassioaddons/base-python-i386:5.2.0"
9 | }
10 | }
--------------------------------------------------------------------------------
/tesseract/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Tesseract",
3 | "version": "0.3",
4 | "slug": "tesseract",
5 | "description": "Tesseract",
6 | "arch": [
7 | "armhf",
8 | "armv7",
9 | "aarch64",
10 | "amd64",
11 | "i386"
12 | ],
13 | "startup": "before",
14 | "boot": "auto",
15 | "options": {},
16 | "schema": {},
17 | "ports": {
18 | "5000/tcp": 5000
19 | }
20 | }
--------------------------------------------------------------------------------
/hello_flask/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Hello flask",
3 | "version": "0.23",
4 | "slug": "hello_flask",
5 | "description": "Hello world flask add-on!",
6 | "arch": [
7 | "armhf",
8 | "armv7",
9 | "aarch64",
10 | "amd64",
11 | "i386"
12 | ],
13 | "startup": "before",
14 | "boot": "auto",
15 | "options": {},
16 | "schema": {},
17 | "ports": {
18 | "5000/tcp": 5000
19 | }
20 | }
--------------------------------------------------------------------------------
/streamlit_basic/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Hello streamlit",
3 | "version": "0.2",
4 | "slug": "hello_streamlit",
5 | "description": "Hello streamlit",
6 | "arch": [
7 | "armhf",
8 | "armv7",
9 | "aarch64",
10 | "amd64",
11 | "i386"
12 | ],
13 | "startup": "before",
14 | "boot": "auto",
15 | "options": {},
16 | "schema": {},
17 | "ports": {
18 | "8501/tcp": 8501
19 | }
20 | }
--------------------------------------------------------------------------------
/tesseract/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM ubuntu:18.04
2 | RUN apt-get update \
3 | && apt-get install tesseract-ocr -y \
4 | python3 \
5 | #python-setuptools \
6 | python3-pip \
7 | && apt-get clean \
8 | && apt-get autoremove
9 |
10 |
11 | ADD . /home/App
12 | WORKDIR /home/App
13 | COPY requirements.txt ./
14 | COPY . .
15 |
16 | RUN pip install -r requirements.txt
17 |
18 | VOLUME ["/data"]
19 | EXPOSE 5000 5000
20 | CMD ["python" ,"app.py"]
--------------------------------------------------------------------------------
/tesseract/app.py:
--------------------------------------------------------------------------------
1 | import io
2 | import flask
3 | from PIL import Image
4 | import pytesseract
5 |
6 | app = flask.Flask(__name__)
7 |
8 |
9 | @app.route("/")
10 | def info():
11 | return """Flask app exposing tesseract OCR"""
12 |
13 |
14 | @app.route("/process", methods=["POST"])
15 | def process_file():
16 | data = {"success": "false"}
17 | if not flask.request.method == "POST":
18 | return
19 |
20 | if flask.request.files.get("image"):
21 | image_file = flask.request.files["image"]
22 | image_bytes = image_file.read()
23 | pil_image = Image.open(io.BytesIO(image_bytes))
24 | text = pytesseract.image_to_string(pil_image)
25 | data["text"] = text
26 | data["success"] = "true"
27 | return flask.jsonify(data)
28 |
29 |
30 | if __name__ == "__main__":
31 | app.run(host="0.0.0.0", port=5000, debug=True)
32 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Hass.io Addons repository
2 |
3 | ## Hello flask
4 | Hello world flask addon that simply returns a string. Navigate to [http://homeassistant.local:5000/](http://homeassistant.local:5000/)
5 |
6 | ## Motion
7 | [A usb camera motion detector addon.](./motion) This fork allows viewing the live stream and by default does not save any images to disk. Note that if you are on a public network be careful as authentification of the stream and webcontrol are not enabled.
8 |
9 |
10 |
11 |
12 |
13 | ## Streamlit
14 | Run the [streamlit demo](https://docs.streamlit.io/en/latest/getting_started.html). The build takes a long time, but succeeds in the end :-)
15 |
16 |
17 |
18 |
19 |
20 | ## Tesseract - WIP
21 | Build failing, unsure why: `Can't build local/aarch64-addon-tesseract:0.3: The command '/bin/sh -c pip install -r requirements.txt' returned a non-zero code: 127`
22 |
23 | # Development
24 | * Setup samba server and use local vscode
25 | * debug the docker image locally on my dev machine, first build `docker build -t $yourimage .` then run `docker run -it --entrypoint=/bin/bash $yourimage`
--------------------------------------------------------------------------------
/hello_flask/Dockerfile:
--------------------------------------------------------------------------------
1 | ARG BUILD_FROM=hassioaddons/base-python:5.2.0
2 | # hadolint ignore=DL3006
3 | FROM ${BUILD_FROM}
4 |
5 | # Set shell
6 | SHELL ["/bin/bash", "-o", "pipefail", "-c"]
7 |
8 | # Copy Python requirements file
9 | COPY requirements.txt /tmp/
10 | COPY app.py /
11 |
12 | # Setup base
13 | ARG BUILD_ARCH=amd64
14 | RUN \
15 | apk add --no-cache --virtual .build-dependencies \
16 | g++=9.2.0-r4 \
17 | gcc=9.2.0-r4 \
18 | make=4.2.1-r2 \
19 | \
20 | && apk add --no-cache \
21 | nginx-mod-http-lua=1.16.1-r6 \
22 | lua-resty-http=0.15-r0 \
23 | nginx=1.16.1-r6 \
24 | cython=0.29.14-r0 \
25 | \
26 | && pip3 install \
27 | --no-cache-dir \
28 | --prefer-binary \
29 | --find-links "https://wheels.hass.io/alpine-3.11/${BUILD_ARCH}/" \
30 | -r /tmp/requirements.txt \
31 | \
32 | && find /usr/local \
33 | \( -type d -a -name test -o -name tests -o -name '__pycache__' \) \
34 | -o \( -type f -a -name '*.pyc' -o -name '*.pyo' \) \
35 | -exec rm -rf '{}' + \
36 | \
37 | && apk del --purge .build-dependencies \
38 | && rm -f -r \
39 | /etc/nginx \
40 | /tmp/*
41 |
42 | # Copy data for add-on
43 | COPY run.sh /
44 | COPY requirements.txt /tmp/
45 | # Install requirements for add-on
46 | RUN pip install -r /tmp/requirements.txt
47 |
48 | RUN chmod a+x /run.sh
49 | CMD [ "/run.sh" ]
--------------------------------------------------------------------------------
/motion/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Motion_mjpeg",
3 | "version": "3.0",
4 | "slug": "motion_mjpeg",
5 | "description": "A software motion detector that integrates a usb webcam into hass.io",
6 | "startup": "system",
7 | "boot": "auto",
8 | "ports": {
9 | "8080/tcp": 8080,
10 | "8081/tcp": 8081
11 | },
12 | "arch": [
13 | "aarch64",
14 | "amd64",
15 | "armhf",
16 | "armv7",
17 | "i386"
18 | ],
19 | "map": [
20 | "share:rw"
21 | ],
22 | "devices": [
23 | "/dev/video0:/dev/video0:rwm"
24 | ],
25 | "options": {
26 | "config": "",
27 | "videodevice": "/dev/video0",
28 | "input": 0,
29 | "width": 1280,
30 | "height": 720,
31 | "framerate": 2,
32 | "text_right": "%Y-%m-%d %T-%q",
33 | "target_dir": "/share/motion",
34 | "snapshot_interval": 0,
35 | "snapshot_name": "%v-%Y%m%d%H%M%S-snapshot",
36 | "picture_output": "off",
37 | "picture_name": "%v-%Y%m%d%H%M%S-%q",
38 | "webcontrol_local": "off",
39 | "webcontrol_html": "off"
40 | },
41 | "schema": {
42 | "config": "str",
43 | "videodevice": "str",
44 | "input": "int",
45 | "width": "int",
46 | "height": "int",
47 | "framerate": "int",
48 | "text_right": "str",
49 | "target_dir": "str",
50 | "snapshot_interval": "int",
51 | "snapshot_name": "str",
52 | "picture_output": "str",
53 | "picture_name": "str",
54 | "webcontrol_local": "str",
55 | "webcontrol_html": "str"
56 | }
57 | }
--------------------------------------------------------------------------------
/motion/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | set -e
3 |
4 | CONFIG_PATH=/data/options.json
5 |
6 | CONFIG=$(jq --raw-output ".config" $CONFIG_PATH)
7 | VIDEODEVICE=$(jq --raw-output ".videodevice" $CONFIG_PATH)
8 | INPUT=$(jq --raw-output ".input" $CONFIG_PATH)
9 | WIDTH=$(jq --raw-output ".width" $CONFIG_PATH)
10 | HEIGHT=$(jq --raw-output ".height" $CONFIG_PATH)
11 | FRAMERATE=$(jq --raw-output ".framerate" $CONFIG_PATH)
12 | TEXTRIGHT=$(jq --raw-output ".text_right" $CONFIG_PATH)
13 | TARGETDIR=$(jq --raw-output ".target_dir" $CONFIG_PATH)
14 | SNAPSHOTINTERVAL=$(jq --raw-output ".snapshot_interval" $CONFIG_PATH)
15 | SNAPSHOTNAME=$(jq --raw-output ".snapshot_name" $CONFIG_PATH)
16 | PICTUREOUTPUT=$(jq --raw-output ".picture_output" $CONFIG_PATH)
17 | PICTURENAME=$(jq --raw-output ".picture_name" $CONFIG_PATH)
18 | WEBCONTROLLOCAL=$(jq --raw-output ".webcontrol_local" $CONFIG_PATH)
19 | WEBCONTROLHTML=$(jq --raw-output ".webcontrol_html" $CONFIG_PATH)
20 |
21 |
22 | echo "[Info] Show connected usb devices"
23 | ls -al /dev/video*
24 |
25 | if [ ! -f "$CONFIG" ]; then
26 | sed -i "s|%%VIDEODEVICE%%|$VIDEODEVICE|g" /etc/motion.conf
27 | sed -i "s|%%INPUT%%|$INPUT|g" /etc/motion.conf
28 | sed -i "s|%%WIDTH%%|$WIDTH|g" /etc/motion.conf
29 | sed -i "s|%%HEIGHT%%|$HEIGHT|g" /etc/motion.conf
30 | sed -i "s|%%FRAMERATE%%|$FRAMERATE|g" /etc/motion.conf
31 | sed -i "s|%%TEXTRIGHT%%|$TEXTRIGHT|g" /etc/motion.conf
32 | sed -i "s|%%TARGETDIR%%|$TARGETDIR|g" /etc/motion.conf
33 | sed -i "s|%%SNAPSHOTINTERVAL%%|$SNAPSHOTINTERVAL|g" /etc/motion.conf
34 | sed -i "s|%%SNAPSHOTNAME%%|$SNAPSHOTNAME|g" /etc/motion.conf
35 | sed -i "s|%%PICTUREOUTPUT%%|$PICTUREOUTPUT|g" /etc/motion.conf
36 | sed -i "s|%%PICTURENAME%%|$PICTURENAME|g" /etc/motion.conf
37 | sed -i "s|%%WEBCONTROLLOCAL%%|$WEBCONTROLLOCAL|g" /etc/motion.conf
38 | sed -i "s|%%WEBCONTROLHTML%%|$WEBCONTROLHTML|g" /etc/motion.conf
39 | CONFIG=/etc/motion.conf
40 | fi
41 | # start server
42 | motion -c $CONFIG
43 |
--------------------------------------------------------------------------------
/motion/README.md:
--------------------------------------------------------------------------------
1 | ## Motion Addon
2 | * Addon to use a usb camera, exposing an unsecured MJPEG feed on [http://homeassistant.local:8081](http://homeassistant.local:8081), and *no* images are saved to disk using the default settings. The code is [hosted on Github here](https://github.com/robmarkcole/hassio-addons)
3 | * This addon was forked from: https://github.com/lovejoy777/hassio-addons
4 |
5 |
6 | ### Home Assistant integration
7 | USE IFRAME - You can view the live MJPEG stream using:
8 | ```
9 | camera:
10 | - platform: mjpeg
11 | mjpeg_url: http://homeassistant.local:8081
12 | name: motioncam
13 | ```
14 |
15 | If you have configured a periodic snapshot you can display the last snapped image with:
16 | ```
17 | camera:
18 | - platform: local_file
19 | name: motion_lastsnap
20 | file_path: /share/motion/lastsnap.jpg
21 | ```
22 |
23 | You can view the camera images on the HA front-end using a `Picture-entity` lovelace card with config:
24 |
25 | ```
26 | camera_view: live
27 | entity: camera.motioncam
28 | type: picture-entity
29 | ```
30 |
31 | Be sure to [add](https://www.home-assistant.io/components/stream/) the `stream` integration to your HA config.
32 |
33 | **Note** that you may encounter an annoying issue whereby the camera stream doesn't display in the card and you see a grey box with `camera idle`. In this case you can use a [panel_iframe](https://www.home-assistant.io/components/panel_iframe/):
34 |
35 | ```
36 | panel_iframe:
37 | motion:
38 | title: motion
39 | icon: mdi:camera
40 | url: http://homeassistant.local:8081
41 | ```
42 |
43 | ### Settings
44 | ##### config
45 | *Optional*
46 |
47 | Path to a predefined motion.conf settings file
48 |
49 | ##### videodevice
50 | */dev/video0*
51 |
52 | ##### width
53 | *1280*
54 |
55 | Image width (pixels). Valid range: Camera dependent
56 |
57 | ##### height
58 | *720*
59 |
60 | Image height (pixels). Valid range: Camera dependent
61 |
62 | ##### framerate
63 | *2*
64 |
65 | Maximum number of frames to be captured per second.
66 | Valid range: 2-100. Default: 100 (almost no limit).
67 |
68 | ##### text_right
69 | *%Y-%m-%d %T-%q*
70 |
71 |
72 | Draws the timestamp using same options as C function strftime(3)
73 | Text is placed in lower right corner
74 |
75 | ```
76 | %Y = year, %m = month, %d = date,
77 | %H = hour, %M = minute, %S = second, %T = HH:MM:SS,
78 | %v = event, %q = frame number, %t = camera id number,
79 | %D = changed pixels, %N = noise level, \n = new line,
80 | %i and %J = width and height of motion area,
81 | %K and %L = X and Y coordinates of motion center
82 | %C = value defined by text_event - do not use with text_event!
83 | You can put quotation marks around the text to allow leading spaces
84 | ```
85 |
86 | ##### target_dir
87 | */share/motion*
88 |
89 | Target base directory for pictures and films
90 | Use absolute path.
91 |
92 | ##### snapshot_interval
93 | *0*
94 |
95 | Make automated snapshot every N seconds (0 = disabled). Note that this must be > 0 to save any photos.
96 |
97 | ##### snapshot_name
98 | *%v-%Y%m%d%H%M%S-snapshot*
99 |
100 | File path for snapshots (jpeg or ppm) relative to target_dir
101 | Default value is equivalent to legacy oldlayout option
102 | For Motion 3.0 compatible mode choose: %Y/%m/%d/%H/%M/%S-snapshot
103 | File extension .jpg or .ppm is automatically added so do not include this.
104 | Note: A symbolic link called lastsnap.jpg created in the target_dir will always point to the latest snapshot, unless snapshot_filename is exactly 'lastsnap'
105 |
106 | ```
107 | %Y = year, %m = month, %d = date,
108 | %H = hour, %M = minute, %S = second, %T = HH:MM:SS,
109 | %v = event, %q = frame number, %t = camera id number,
110 | %D = changed pixels, %N = noise level, \n = new line,
111 | %i and %J = width and height of motion area,
112 | %K and %L = X and Y coordinates of motion center
113 | %C = value defined by text_event - do not use with text_event!
114 | You can put quotation marks around the text to allow leading spaces
115 | ```
116 |
117 | ##### picture_output
118 | *off*
119 |
120 | Output 'normal' pictures when motion is detected
121 | Valid values: on, off, first, best, center
122 | When set to 'first', only the first picture of an event is saved.
123 | Picture with most motion of an event is saved when set to 'best'.
124 | Picture with motion nearest center of picture is saved when set to 'center'.
125 | `on` appears to continually capture.
126 |
127 | ##### picture_name
128 | *%v-%Y%m%d%H%M%S-%q*
129 |
130 | File path for motion triggered images (jpeg or ppm) relative to target_dir
131 | Default value is equivalent to legacy oldlayout option
132 | For Motion 3.0 compatible mode choose: %Y/%m/%d/%H/%M/%S-%q
133 | File extension .jpg or .ppm is automatically added so do not include this
134 | Set to 'preview' together with best-preview feature enables special naming convention for preview shots. See motion guide for details
135 |
136 | ```
137 | %Y = year, %m = month, %d = date,
138 | %H = hour, %M = minute, %S = second, %T = HH:MM:SS,
139 | %v = event, %q = frame number, %t = camera id number,
140 | %D = changed pixels, %N = noise level, \n = new line,
141 | %i and %J = width and height of motion area,
142 | %K and %L = X and Y coordinates of motion center
143 | %C = value defined by text_event - do not use with text_event!
144 | You can put quotation marks around the text to allow leading spaces
145 | ```
146 |
147 | ##### webcontrol_local
148 | *off*
149 |
150 | Restrict control connections to localhost only
151 |
152 | ##### webcontrol_html
153 | *off*
154 |
155 | Output for http server, select off to choose raw text plain
156 |
--------------------------------------------------------------------------------
/motion/motion.conf:
--------------------------------------------------------------------------------
1 | # Rename this distribution example file to motion.conf
2 | #
3 | # This config file was generated by motion 4.0
4 |
5 |
6 | ############################################################
7 | # Daemon
8 | ############################################################
9 |
10 | # Start in daemon (background) mode and release terminal (default: off)
11 | daemon off
12 |
13 | # File to store the process ID, also called pid file. (default: not defined)
14 | process_id_file /var/run/motion/motion.pid
15 |
16 | ############################################################
17 | # Basic Setup Mode
18 | ############################################################
19 |
20 | # Start in Setup-Mode, daemon disabled. (default: off)
21 | setup_mode off
22 |
23 |
24 | # Use a file to save logs messages, if not defined stderr and syslog is used. (default: not defined)
25 | # logfile /share/motion/motion.log
26 |
27 | # Level of log messages [1..9] (EMG, ALR, CRT, ERR, WRN, NTC, INF, DBG, ALL). (default: 6 / NTC)
28 | log_level 6
29 |
30 | # Filter to log messages by type (COR, STR, ENC, NET, DBL, EVT, TRK, VID, ALL). (default: ALL)
31 | log_type all
32 |
33 | ###########################################################
34 | # Capture device options
35 | ############################################################
36 |
37 | # Videodevice to be used for capturing (default /dev/video0)
38 | # for FreeBSD default is /dev/bktr0
39 | videodevice %%VIDEODEVICE%%
40 |
41 | # v4l2_palette allows one to choose preferable palette to be use by motion
42 | # to capture from those supported by your videodevice. (default: 17)
43 | # E.g. if your videodevice supports both V4L2_PIX_FMT_SBGGR8 and
44 | # V4L2_PIX_FMT_MJPEG then motion will by default use V4L2_PIX_FMT_MJPEG.
45 | # Setting v4l2_palette to 2 forces motion to use V4L2_PIX_FMT_SBGGR8
46 | # instead.
47 | #
48 | # Values :
49 | # V4L2_PIX_FMT_SN9C10X : 0 'S910'
50 | # V4L2_PIX_FMT_SBGGR16 : 1 'BYR2'
51 | # V4L2_PIX_FMT_SBGGR8 : 2 'BA81'
52 | # V4L2_PIX_FMT_SPCA561 : 3 'S561'
53 | # V4L2_PIX_FMT_SGBRG8 : 4 'GBRG'
54 | # V4L2_PIX_FMT_SGRBG8 : 5 'GRBG'
55 | # V4L2_PIX_FMT_PAC207 : 6 'P207'
56 | # V4L2_PIX_FMT_PJPG : 7 'PJPG'
57 | # V4L2_PIX_FMT_MJPEG : 8 'MJPEG'
58 | # V4L2_PIX_FMT_JPEG : 9 'JPEG'
59 | # V4L2_PIX_FMT_RGB24 : 10 'RGB3'
60 | # V4L2_PIX_FMT_SPCA501 : 11 'S501'
61 | # V4L2_PIX_FMT_SPCA505 : 12 'S505'
62 | # V4L2_PIX_FMT_SPCA508 : 13 'S508'
63 | # V4L2_PIX_FMT_UYVY : 14 'UYVY'
64 | # V4L2_PIX_FMT_YUYV : 15 'YUYV'
65 | # V4L2_PIX_FMT_YUV422P : 16 '422P'
66 | # V4L2_PIX_FMT_YUV420 : 17 'YU12'
67 | #
68 | v4l2_palette 17
69 |
70 | # Tuner device to be used for capturing using tuner as source (default /dev/tuner0)
71 | # This is ONLY used for FreeBSD. Leave it commented out for Linux
72 | ; tunerdevice /dev/tuner0
73 |
74 | # The video input to be used (default: -1)
75 | # Should normally be set to 0 or 1 for video/TV cards, and -1 for USB cameras
76 | # Set to 0 for uvideo(4) on OpenBSD
77 | input %%INPUT%%
78 |
79 | # The video norm to use (only for video capture and TV tuner cards)
80 | # Values: 0 (PAL), 1 (NTSC), 2 (SECAM), 3 (PAL NC no colour). Default: 0 (PAL)
81 | norm 0
82 |
83 | # The frequency to set the tuner to (kHz) (only for TV tuner cards) (default: 0)
84 | frequency 0
85 |
86 | # Override the power line frequency for the webcam. (normally not necessary)
87 | # Values:
88 | # -1 : Do not modify device setting
89 | # 0 : Power line frequency Disabled
90 | # 1 : 50hz
91 | # 2 : 60hz
92 | # 3 : Auto
93 | power_line_frequency -1
94 |
95 | # Rotate image this number of degrees. The rotation affects all saved images as
96 | # well as movies. Valid values: 0 (default = no rotation), 90, 180 and 270.
97 | rotate 0
98 |
99 | # Image width (pixels). Valid range: Camera dependent, default: 352
100 | width %%WIDTH%%
101 |
102 | # Image height (pixels). Valid range: Camera dependent, default: 288
103 | height %%HEIGHT%%
104 |
105 | # Maximum number of frames to be captured per second.
106 | # Valid range: 2-100. Default: 100 (almost no limit).
107 | framerate %%FRAMERATE%%
108 |
109 | # Minimum time in seconds between capturing picture frames from the camera.
110 | # Default: 0 = disabled - the capture rate is given by the camera framerate.
111 | # This option is used when you want to capture images at a rate lower than 2 per second.
112 | minimum_frame_time 0
113 |
114 | # URL to use if you are using a network camera, size will be autodetected (incl http:// ftp:// mjpg:// rtsp:// mjpeg:// or file:///)
115 | # Must be a URL that returns single jpeg pictures or a raw mjpeg stream. A trailing slash may be required for some cameras.
116 | # Default: Not defined
117 | ; netcam_url value
118 |
119 | # Username and password for network camera (only if required). Default: not defined
120 | # Syntax is user:password
121 | ; netcam_userpass value
122 |
123 | # The setting for keep-alive of network socket, should improve performance on compatible net cameras.
124 | # off: The historical implementation using HTTP/1.0, closing the socket after each http request.
125 | # force: Use HTTP/1.0 requests with keep alive header to reuse the same connection.
126 | # on: Use HTTP/1.1 requests that support keep alive as default.
127 | # Default: off
128 | netcam_keepalive off
129 |
130 | # URL to use for a netcam proxy server, if required, e.g. "http://myproxy".
131 | # If a port number other than 80 is needed, use "http://myproxy:1234".
132 | # Default: not defined
133 | ; netcam_proxy value
134 |
135 | # Set less strict jpeg checks for network cameras with a poor/buggy firmware.
136 | # Default: off
137 | netcam_tolerant_check off
138 |
139 | # RTSP connection uses TCP to communicate to the camera. Can prevent image corruption.
140 | # Default: on
141 | rtsp_uses_tcp on
142 |
143 | # Name of camera to use if you are using a camera accessed through OpenMax/MMAL
144 | # Default: Not defined
145 | ; mmalcam_name vc.ril.camera
146 |
147 | # Camera control parameters (see raspivid/raspistill tool documentation)
148 | # Default: Not defined
149 | ; mmalcam_control_params -hf
150 |
151 | # Let motion regulate the brightness of a video device (default: off).
152 | # The auto_brightness feature uses the brightness option as its target value.
153 | # If brightness is zero auto_brightness will adjust to average brightness value 128.
154 | # Only recommended for cameras without auto brightness
155 | auto_brightness off
156 |
157 | # Set the initial brightness of a video device.
158 | # If auto_brightness is enabled, this value defines the average brightness level
159 | # which Motion will try and adjust to.
160 | # Valid range 0-255, default 0 = disabled
161 | brightness 0
162 |
163 | # Set the contrast of a video device.
164 | # Valid range 0-255, default 0 = disabled
165 | contrast 0
166 |
167 | # Set the saturation of a video device.
168 | # Valid range 0-255, default 0 = disabled
169 | saturation 0
170 |
171 | # Set the hue of a video device (NTSC feature).
172 | # Valid range 0-255, default 0 = disabled
173 | hue 0
174 |
175 |
176 | ############################################################
177 | # Round Robin (multiple inputs on same video device name)
178 | ############################################################
179 |
180 | # Number of frames to capture in each roundrobin step (default: 1)
181 | roundrobin_frames 1
182 |
183 | # Number of frames to skip before each roundrobin step (default: 1)
184 | roundrobin_skip 1
185 |
186 | # Try to filter out noise generated by roundrobin (default: off)
187 | switchfilter off
188 |
189 |
190 | ############################################################
191 | # Motion Detection Settings:
192 | ############################################################
193 |
194 | # Threshold for number of changed pixels in an image that
195 | # triggers motion detection (default: 1500)
196 | threshold 1500
197 |
198 | # Automatically tune the threshold down if possible (default: off)
199 | threshold_tune off
200 |
201 | # Noise threshold for the motion detection (default: 32)
202 | noise_level 32
203 |
204 | # Automatically tune the noise threshold (default: on)
205 | noise_tune on
206 |
207 | # Despeckle motion image using (e)rode or (d)ilate or (l)abel (Default: not defined)
208 | # Recommended value is EedDl. Any combination (and number of) of E, e, d, and D is valid.
209 | # (l)abeling must only be used once and the 'l' must be the last letter.
210 | # Comment out to disable
211 | despeckle_filter EedDl
212 |
213 | # Detect motion in predefined areas (1 - 9). Areas are numbered like that: 1 2 3
214 | # A script (on_area_detected) is started immediately when motion is 4 5 6
215 | # detected in one of the given areas, but only once during an event. 7 8 9
216 | # One or more areas can be specified with this option. Take care: This option
217 | # does NOT restrict detection to these areas! (Default: not defined)
218 | ; area_detect value
219 |
220 | # PGM file to use as a sensitivity mask.
221 | # Full path name to. (Default: not defined)
222 | ; mask_file value
223 |
224 | # Dynamically create a mask file during operation (default: 0)
225 | # Adjust speed of mask changes from 0 (off) to 10 (fast)
226 | smart_mask_speed 0
227 |
228 | # Ignore sudden massive light intensity changes given as a percentage of the picture
229 | # area that changed intensity. Valid range: 0 - 100 , default: 0 = disabled
230 | lightswitch 0
231 |
232 | # Picture frames must contain motion at least the specified number of frames
233 | # in a row before they are detected as true motion. At the default of 1, all
234 | # motion is detected. Valid range: 1 to thousands, recommended 1-5
235 | minimum_motion_frames 1
236 |
237 | # Specifies the number of pre-captured (buffered) pictures from before motion
238 | # was detected that will be output at motion detection.
239 | # Recommended range: 0 to 5 (default: 0)
240 | # Do not use large values! Large values will cause Motion to skip video frames and
241 | # cause unsmooth movies. To smooth movies use larger values of post_capture instead.
242 | pre_capture 0
243 |
244 | # Number of frames to capture after motion is no longer detected (default: 0)
245 | post_capture 0
246 |
247 | # Event Gap is the seconds of no motion detection that triggers the end of an event.
248 | # An event is defined as a series of motion images taken within a short timeframe.
249 | # Recommended value is 60 seconds (Default). The value -1 is allowed and disables
250 | # events causing all Motion to be written to one single movie file and no pre_capture.
251 | # If set to 0, motion is running in gapless mode. Movies don't have gaps anymore. An
252 | # event ends right after no more motion is detected and post_capture is over.
253 | event_gap 60
254 |
255 | # Maximum length in seconds of a movie
256 | # When value is exceeded a new movie file is created. (Default: 0 = infinite)
257 | max_movie_time 0
258 |
259 | # Always save images even if there was no motion (default: off)
260 | emulate_motion off
261 |
262 |
263 | ############################################################
264 | # Image File Output
265 | ############################################################
266 |
267 | # Output 'normal' pictures when motion is detected (default: on)
268 | # Valid values: on, off, first, best, center
269 | # When set to 'first', only the first picture of an event is saved.
270 | # Picture with most motion of an event is saved when set to 'best'.
271 | # Picture with motion nearest center of picture is saved when set to 'center'.
272 | # Can be used as preview shot for the corresponding movie.
273 | output_pictures %%PICTUREOUTPUT%%
274 |
275 | # Output pictures with only the pixels moving object (ghost images) (default: off)
276 | output_debug_pictures off
277 |
278 | # The quality (in percent) to be used by the jpeg compression (default: 75)
279 | quality 75
280 |
281 | # Type of output images
282 | # Valid values: jpeg, ppm (default: jpeg)
283 | picture_type jpeg
284 |
285 | ############################################################
286 | # FFMPEG related options
287 | # Film (movies) file output, and deinterlacing of the video input
288 | # The options movie_filename and timelapse_filename are also used
289 | # by the ffmpeg feature
290 | ############################################################
291 |
292 | # Use ffmpeg to encode movies in realtime (default: off)
293 | ffmpeg_output_movies off
294 |
295 | # Use ffmpeg to make movies with only the pixels moving
296 | # object (ghost images) (default: off)
297 | ffmpeg_output_debug_movies off
298 |
299 | # Use ffmpeg to encode a timelapse movie
300 | # Default value 0 = off - else save frame every Nth second
301 | ffmpeg_timelapse 0
302 |
303 | # The file rollover mode of the timelapse video
304 | # Valid values: hourly, daily (default), weekly-sunday, weekly-monday, monthly, manual
305 | ffmpeg_timelapse_mode daily
306 |
307 | # Bitrate to be used by the ffmpeg encoder (default: 400000)
308 | # This option is ignored if ffmpeg_variable_bitrate is not 0 (disabled)
309 | ffmpeg_bps 400000
310 |
311 | # Enables and defines variable bitrate for the ffmpeg encoder.
312 | # ffmpeg_bps is ignored if variable bitrate is enabled.
313 | # Valid values: 0 (default) = fixed bitrate defined by ffmpeg_bps,
314 | # or the range 1 - 100 where 1 means worst quality and 100 is best.
315 | ffmpeg_variable_bitrate 0
316 |
317 | # Codec to used by ffmpeg for the video compression.
318 | # Timelapse videos have two options.
319 | # mpg - Creates mpg file with mpeg-2 encoding.
320 | # If motion is shutdown and restarted, new pics will be appended
321 | # to any previously created file with name indicated for timelapse.
322 | # mpeg4 - Creates avi file with the default encoding.
323 | # If motion is shutdown and restarted, new pics will create a
324 | # new file with the name indicated for timelapse.
325 | # Supported formats are:
326 | # mpeg4 or msmpeg4 - gives you files with extension .avi
327 | # msmpeg4 is recommended for use with Windows Media Player because
328 | # it requires no installation of codec on the Windows client.
329 | # swf - gives you a flash film with extension .swf
330 | # flv - gives you a flash video with extension .flv
331 | # ffv1 - FF video codec 1 for Lossless Encoding
332 | # mov - QuickTime
333 | # mp4 - MPEG-4 Part 14 H264 encoding
334 | # mkv - Matroska H264 encoding
335 | # hevc - H.265 / HEVC (High Efficiency Video Coding)
336 | ffmpeg_video_codec mpeg4
337 |
338 | # When creating videos, should frames be duplicated in order
339 | # to keep up with the requested frames per second
340 | # (default: true)
341 | ffmpeg_duplicate_frames true
342 |
343 | ############################################################
344 | # SDL Window
345 | ############################################################
346 |
347 | # Number of motion thread to show in SDL Window (default: 0 = disabled)
348 | #sdl_threadnr 0
349 |
350 | ############################################################
351 | # External pipe to video encoder
352 | # Replacement for FFMPEG builtin encoder for ffmpeg_output_movies only.
353 | # The options movie_filename and timelapse_filename are also used
354 | # by the ffmpeg feature
355 | #############################################################
356 |
357 | # Bool to enable or disable extpipe (default: off)
358 | use_extpipe off
359 |
360 | # External program (full path and opts) to pipe raw video to
361 | # Generally, use '-' for STDIN...
362 | ;extpipe mencoder -demuxer rawvideo -rawvideo w=%w:h=%h:i420 -ovc x264 -x264encopts bframes=4:frameref=1:subq=1:scenecut=-1:nob_adapt:threads=1:keyint=1000:8x8dct:vbv_bufsize=4000:crf=24:partitions=i8x8,i4x4:vbv_maxrate=800:no-chroma-me -vf denoise3d=16:12:48:4,pp=lb -of avi -o %f.avi - -fps %fps
363 | ;extpipe x264 - --input-res %wx%h --fps %fps --bitrate 2000 --preset ultrafast --quiet -o %f.mp4
364 | ;extpipe mencoder -demuxer rawvideo -rawvideo w=%w:h=%h:fps=%fps -ovc x264 -x264encopts preset=ultrafast -of lavf -o %f.mp4 - -fps %fps
365 | ;extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx%h -framerate %fps -i pipe:0 -vcodec libx264 -preset ultrafast -f mp4 %f.mp4
366 |
367 |
368 | ############################################################
369 | # Snapshots (Traditional Periodic Webcam File Output)
370 | ############################################################
371 |
372 | # Make automated snapshot every N seconds (default: 0 = disabled)
373 | snapshot_interval %%SNAPSHOTINTERVAL%%
374 |
375 |
376 | ############################################################
377 | # Text Display
378 | # %Y = year, %m = month, %d = date,
379 | # %H = hour, %M = minute, %S = second, %T = HH:MM:SS,
380 | # %v = event, %q = frame number, %t = camera id number,
381 | # %D = changed pixels, %N = noise level, \n = new line,
382 | # %i and %J = width and height of motion area,
383 | # %K and %L = X and Y coordinates of motion center
384 | # %C = value defined by text_event - do not use with text_event!
385 | # You can put quotation marks around the text to allow
386 | # leading spaces
387 | ############################################################
388 |
389 | # Locate and draw a box around the moving object.
390 | # Valid values: on, off, preview (default: off)
391 | # Set to 'preview' will only draw a box in preview_shot pictures.
392 | locate_motion_mode off
393 |
394 | # Set the look and style of the locate box if enabled.
395 | # Valid values: box, redbox, cross, redcross (default: box)
396 | # Set to 'box' will draw the traditional box.
397 | # Set to 'redbox' will draw a red box.
398 | # Set to 'cross' will draw a little cross to mark center.
399 | # Set to 'redcross' will draw a little red cross to mark center.
400 | locate_motion_style box
401 |
402 | # Draws the timestamp using same options as C function strftime(3)
403 | # Default: %Y-%m-%d\n%T = date in ISO format and time in 24 hour clock
404 | # Text is placed in lower right corner
405 | text_right %%TEXTRIGHT%%
406 |
407 | # Draw a user defined text on the images using same options as C function strftime(3)
408 | # Default: Not defined = no text
409 | # Text is placed in lower left corner
410 | ; text_left CAMERA %t
411 |
412 | # Draw the number of changed pixed on the images (default: off)
413 | # Will normally be set to off except when you setup and adjust the motion settings
414 | # Text is placed in upper right corner
415 | text_changes off
416 |
417 | # This option defines the value of the special event conversion specifier %C
418 | # You can use any conversion specifier in this option except %C. Date and time
419 | # values are from the timestamp of the first image in the current event.
420 | # Default: %Y%m%d%H%M%S
421 | # The idea is that %C can be used filenames and text_left/right for creating
422 | # a unique identifier for each event.
423 | text_event %Y%m%d%H%M%S
424 |
425 | # Draw characters at twice normal size on images. (default: off)
426 | text_double off
427 |
428 |
429 | # Text to include in a JPEG EXIF comment
430 | # May be any text, including conversion specifiers.
431 | # The EXIF timestamp is included independent of this text.
432 | ;exif_text %i%J/%K%L
433 |
434 | ############################################################
435 | # Target Directories and filenames For Images And Films
436 | # For the options snapshot_, picture_, movie_ and timelapse_filename
437 | # you can use conversion specifiers
438 | # %Y = year, %m = month, %d = date,
439 | # %H = hour, %M = minute, %S = second,
440 | # %v = event, %q = frame number, %t = camera id number,
441 | # %D = changed pixels, %N = noise level,
442 | # %i and %J = width and height of motion area,
443 | # %K and %L = X and Y coordinates of motion center
444 | # %C = value defined by text_event
445 | # Quotation marks round string are allowed.
446 | ############################################################
447 |
448 | # Target base directory for pictures and films
449 | # Recommended to use absolute path. (Default: current working directory)
450 | target_dir %%TARGETDIR%%
451 |
452 | # File path for snapshots (jpeg or ppm) relative to target_dir
453 | # Default: %v-%Y%m%d%H%M%S-snapshot
454 | # Default value is equivalent to legacy oldlayout option
455 | # For Motion 3.0 compatible mode choose: %Y/%m/%d/%H/%M/%S-snapshot
456 | # File extension .jpg or .ppm is automatically added so do not include this.
457 | # Note: A symbolic link called lastsnap.jpg created in the target_dir will always
458 | # point to the latest snapshot, unless snapshot_filename is exactly 'lastsnap'
459 | snapshot_filename %%SNAPSHOTNAME%%
460 |
461 | # File path for motion triggered images (jpeg or ppm) relative to target_dir
462 | # Default: %v-%Y%m%d%H%M%S-%q
463 | # Default value is equivalent to legacy oldlayout option
464 | # For Motion 3.0 compatible mode choose: %Y/%m/%d/%H/%M/%S-%q
465 | # File extension .jpg or .ppm is automatically added so do not include this
466 | # Set to 'preview' together with best-preview feature enables special naming
467 | # convention for preview shots. See motion guide for details
468 | picture_filename %%PICTURENAME%%
469 |
470 | # File path for motion triggered ffmpeg films (movies) relative to target_dir
471 | # Default: %v-%Y%m%d%H%M%S
472 | # File extensions(.mpg .avi) are automatically added so do not include them
473 | movie_filename %v-%Y%m%d%H%M%S
474 |
475 | # File path for timelapse movies relative to target_dir
476 | # Default: %Y%m%d-timelapse
477 | # File extensions(.mpg .avi) are automatically added so do not include them
478 | timelapse_filename %Y%m%d-timelapse
479 |
480 | ############################################################
481 | # Global Network Options
482 | ############################################################
483 | # Enable IPv6 (default: off)
484 | ipv6_enabled off
485 |
486 | ############################################################
487 | # Live Stream Server
488 | ############################################################
489 |
490 | # The mini-http server listens to this port for requests (default: 0 = disabled)
491 | stream_port 8081
492 |
493 | # Quality of the jpeg (in percent) images produced (default: 50)
494 | stream_quality 50
495 |
496 | # Output frames at 1 fps when no motion is detected and increase to the
497 | # rate given by stream_maxrate when motion is detected (default: off)
498 | stream_motion off
499 |
500 | # Maximum framerate for stream streams (default: 1)
501 | stream_maxrate 1
502 |
503 | # Restrict stream connections to localhost only (default: on)
504 | stream_localhost off
505 |
506 | # Limits the number of images per connection (default: 0 = unlimited)
507 | # Number can be defined by multiplying actual stream rate by desired number of seconds
508 | # Actual stream rate is the smallest of the numbers framerate and stream_maxrate
509 | stream_limit 0
510 |
511 | # Set the authentication method (default: 0)
512 | # 0 = disabled
513 | # 1 = Basic authentication
514 | # 2 = MD5 digest (the safer authentication)
515 | stream_auth_method 0
516 |
517 | # Authentication for the stream. Syntax username:password
518 | # Default: not defined (Disabled)
519 | ; stream_authentication username:password
520 |
521 | # Percentage to scale the stream image for preview
522 | # Default: 25
523 | ; stream_preview_scale 25
524 |
525 | # Have stream preview image start on a new line
526 | # Default: no
527 | ; stream_preview_newline no
528 |
529 | ############################################################
530 | # HTTP Based Control
531 | ############################################################
532 |
533 | # TCP/IP port for the http server to listen on (default: 0 = disabled)
534 | webcontrol_port 8080
535 |
536 | # Restrict control connections to localhost only (default: on)
537 | webcontrol_localhost %%WEBCONTROLLOCAL%%
538 |
539 | # Output for http server, select off to choose raw text plain (default: on)
540 | webcontrol_html_output %%WEBCONTROLHTML%%
541 |
542 | # Authentication for the http based control. Syntax username:password
543 | # Default: not defined (Disabled)
544 | ; webcontrol_authentication username:password
545 |
546 |
547 | ############################################################
548 | # Tracking (Pan/Tilt)
549 | #############################################################
550 |
551 | # Type of tracker (0=none (default), 1=stepper, 2=iomojo, 3=pwc, 4=generic, 5=uvcvideo, 6=servo)
552 | # The generic type enables the definition of motion center and motion size to
553 | # be used with the conversion specifiers for options like on_motion_detected
554 | track_type 0
555 |
556 | # Enable auto tracking (default: off)
557 | track_auto off
558 |
559 | # Serial port of motor (default: none)
560 | ;track_port /dev/ttyS0
561 |
562 | # Motor number for x-axis (default: 0)
563 | ;track_motorx 0
564 |
565 | # Set motorx reverse (default: 0)
566 | ;track_motorx_reverse 0
567 |
568 | # Motor number for y-axis (default: 0)
569 | ;track_motory 1
570 |
571 | # Set motory reverse (default: 0)
572 | ;track_motory_reverse 0
573 |
574 | # Maximum value on x-axis (default: 0)
575 | ;track_maxx 200
576 |
577 | # Minimum value on x-axis (default: 0)
578 | ;track_minx 50
579 |
580 | # Maximum value on y-axis (default: 0)
581 | ;track_maxy 200
582 |
583 | # Minimum value on y-axis (default: 0)
584 | ;track_miny 50
585 |
586 | # Center value on x-axis (default: 0)
587 | ;track_homex 128
588 |
589 | # Center value on y-axis (default: 0)
590 | ;track_homey 128
591 |
592 | # ID of an iomojo camera if used (default: 0)
593 | track_iomojo_id 0
594 |
595 | # Angle in degrees the camera moves per step on the X-axis
596 | # with auto-track (default: 10)
597 | # Currently only used with pwc type cameras
598 | track_step_angle_x 10
599 |
600 | # Angle in degrees the camera moves per step on the Y-axis
601 | # with auto-track (default: 10)
602 | # Currently only used with pwc type cameras
603 | track_step_angle_y 10
604 |
605 | # Delay to wait for after tracking movement as number
606 | # of picture frames (default: 10)
607 | track_move_wait 10
608 |
609 | # Speed to set the motor to (stepper motor option) (default: 255)
610 | track_speed 255
611 |
612 | # Number of steps to make (stepper motor option) (default: 40)
613 | track_stepsize 40
614 |
615 |
616 | ############################################################
617 | # External Commands, Warnings and Logging:
618 | # You can use conversion specifiers for the on_xxxx commands
619 | # %Y = year, %m = month, %d = date,
620 | # %H = hour, %M = minute, %S = second,
621 | # %v = event, %q = frame number, %t = camera id number,
622 | # %D = changed pixels, %N = noise level,
623 | # %i and %J = width and height of motion area,
624 | # %K and %L = X and Y coordinates of motion center
625 | # %C = value defined by text_event
626 | # %f = filename with full path
627 | # %n = number indicating filetype
628 | # Both %f and %n are only defined for on_picture_save,
629 | # on_movie_start and on_movie_end
630 | # Quotation marks round string are allowed.
631 | ############################################################
632 |
633 | # Do not sound beeps when detecting motion (default: on)
634 | # Note: Motion never beeps when running in daemon mode.
635 | quiet on
636 |
637 | # Command to be executed when an event starts. (default: none)
638 | # An event starts at first motion detected after a period of no motion defined by event_gap
639 | ; on_event_start value
640 |
641 | # Command to be executed when an event ends after a period of no motion
642 | # (default: none). The period of no motion is defined by option event_gap.
643 | ; on_event_end value
644 |
645 | # Command to be executed when a picture (.ppm|.jpg) is saved (default: none)
646 | # To give the filename as an argument to a command append it with %f
647 | ; on_picture_save value
648 |
649 | # Command to be executed when a motion frame is detected (default: none)
650 | ; on_motion_detected value
651 |
652 | # Command to be executed when motion in a predefined area is detected
653 | # Check option 'area_detect'. (default: none)
654 | ; on_area_detected value
655 |
656 | # Command to be executed when a movie file (.mpg|.avi) is created. (default: none)
657 | # To give the filename as an argument to a command append it with %f
658 | ; on_movie_start value
659 |
660 | # Command to be executed when a movie file (.mpg|.avi) is closed. (default: none)
661 | # To give the filename as an argument to a command append it with %f
662 | ; on_movie_end value
663 |
664 | # Command to be executed when a camera can't be opened or if it is lost
665 | # NOTE: There is situations when motion don't detect a lost camera!
666 | # It depends on the driver, some drivers dosn't detect a lost camera at all
667 | # Some hangs the motion thread. Some even hangs the PC! (default: none)
668 | ; on_camera_lost value
669 |
670 | #####################################################################
671 | # Common Options for database features.
672 | # Options require database options to be active also.
673 | #####################################################################
674 |
675 | # Log to the database when creating motion triggered picture file (default: on)
676 | ; sql_log_picture on
677 |
678 | # Log to the database when creating a snapshot image file (default: on)
679 | ; sql_log_snapshot on
680 |
681 | # Log to the database when creating motion triggered movie file (default: off)
682 | ; sql_log_movie off
683 |
684 | # Log to the database when creating timelapse movies file (default: off)
685 | ; sql_log_timelapse off
686 |
687 | # SQL query string that is sent to the database
688 | # Use same conversion specifiers has for text features
689 | # Additional special conversion specifiers are
690 | # %n = the number representing the file_type
691 | # %f = filename with full path
692 | # Default value:
693 | # Create tables :
694 | ##
695 | # Mysql
696 | # CREATE TABLE security (camera int, filename char(80) not null, frame int, file_type int, time_stamp timestamp(14), event_time_stamp timestamp(14));
697 | #
698 | # Postgresql
699 | # CREATE TABLE security (camera int, filename char(80) not null, frame int, file_type int, time_stamp timestamp without time zone, event_time_stamp timestamp without time zone);
700 | #
701 | # insert into security(camera, filename, frame, file_type, time_stamp, text_event) values('%t', '%f', '%q', '%n', '%Y-%m-%d %T', '%C')
702 | ; sql_query insert into security(camera, filename, frame, file_type, time_stamp, event_time_stamp) values('%t', '%f', '%q', '%n', '%Y-%m-%d %T', '%C')
703 |
704 |
705 | ############################################################
706 | # Database Options
707 | ############################################################
708 |
709 | # database type : mysql, postgresql, sqlite3 (default : not defined)
710 | ; database_type value
711 |
712 | # database to log to (default: not defined)
713 | # for sqlite3, the full path and name for the database.
714 | ; database_dbname value
715 |
716 | # The host on which the database is located (default: localhost)
717 | ; database_host value
718 |
719 | # User account name for database (default: not defined)
720 | ; database_user value
721 |
722 | # User password for database (default: not defined)
723 | ; database_password value
724 |
725 | # Port on which the database is located
726 | # mysql 3306 , postgresql 5432 (default: not defined)
727 | ; database_port value
728 |
729 | # Database wait time in milliseconds for locked database to
730 | # be unlocked before returning database locked error (default 0)
731 | ; database_busy_timeout 0
732 |
733 |
734 |
735 | ############################################################
736 | # Video Loopback Device (vloopback project)
737 | ############################################################
738 |
739 | # Output images to a video4linux loopback device
740 | # The value '-' means next available (default: not defined)
741 | ; video_pipe value
742 |
743 | # Output motion images to a video4linux loopback device
744 | # The value '-' means next available (default: not defined)
745 | ; motion_video_pipe value
746 |
747 |
748 | ##############################################################
749 | # camera config files - One for each camera.
750 | # Except if only one camera - You only need this config file.
751 | # If you have more than one camera you MUST define one camera
752 | # config file for each camera in addition to this config file.
753 | ##############################################################
754 |
755 | # Remember: If you have more than one camera you must have one
756 | # camera file for each camera. E.g. 2 cameras requires 3 files:
757 | # This motion.conf file AND camera1.conf and camera2.conf.
758 | # Only put the options that are unique to each camera in the
759 | # camera config files.
760 | ; camera /etc/motion/camera1.conf
761 | ; camera /etc/motion/camera2.conf
762 | ; camera /etc/motion/camera3.conf
763 | ; camera /etc/motion/camera4.conf
764 |
765 |
766 | ##############################################################
767 | # Camera config directory - One for each camera.
768 | ##############################################################
769 | #
770 | ; camera_dir /etc/motion/conf.d
771 |
--------------------------------------------------------------------------------