src.nth.io/

summaryrefslogtreecommitdiff
path: root/homebridge
diff options
context:
space:
mode:
Diffstat (limited to 'homebridge')
-rw-r--r--homebridge/defaults/main.yaml24
-rw-r--r--homebridge/handlers/main.yaml5
-rw-r--r--homebridge/meta/main.yaml4
-rw-r--r--homebridge/tasks/main.yaml56
-rw-r--r--homebridge/templates/config.json.j248
-rw-r--r--homebridge/templates/homebridge.service.j216
6 files changed, 153 insertions, 0 deletions
diff --git a/homebridge/defaults/main.yaml b/homebridge/defaults/main.yaml
new file mode 100644
index 0000000..d7f9b05
--- /dev/null
+++ b/homebridge/defaults/main.yaml
@@ -0,0 +1,24 @@
+---
+
+homebridge_user: "homebridge"
+homebridge_dir: "/home/{{homebridge_user}}"
+homebridge_restart_sec: "10"
+
+homebridge_pin: "031-45-154"
+homebridge_port: "51900"
+
+homebridge_apt_packages:
+ - "libavahi-compat-libdnssd-dev"
+ - "ffmpeg"
+
+homebridge_npm_packages:
+ - "homebridge-camera-ffmpeg"
+ - "homebridge-roomba-stv"
+
+homebridge_rtsp_vcodec: "h264_omx"
+homebridge_rtsp_debug: "false"
+homebridge_rtsp_max_streams: 5
+
+homebridge_roomba_auto_refresh: "true"
+homebridge_roomba_keep_alive: "true"
+homebridge_roomba_cache_TTL: "30"
diff --git a/homebridge/handlers/main.yaml b/homebridge/handlers/main.yaml
new file mode 100644
index 0000000..e711d82
--- /dev/null
+++ b/homebridge/handlers/main.yaml
@@ -0,0 +1,5 @@
+---
+
+- name: restart homebridge service
+ systemd: name="homebridge" state="restarted" daemon_reload="yes"
+ become: yes
diff --git a/homebridge/meta/main.yaml b/homebridge/meta/main.yaml
new file mode 100644
index 0000000..6116998
--- /dev/null
+++ b/homebridge/meta/main.yaml
@@ -0,0 +1,4 @@
+---
+
+dependencies:
+ - nodejs
diff --git a/homebridge/tasks/main.yaml b/homebridge/tasks/main.yaml
new file mode 100644
index 0000000..dff49e7
--- /dev/null
+++ b/homebridge/tasks/main.yaml
@@ -0,0 +1,56 @@
+---
+
+- name: create homebridge user
+ become: yes
+ user:
+ name: "{{homebridge_user}}"
+ comment: "Homebridge"
+ shell: "/bin/false"
+ home: "{{homebridge_dir}}"
+ groups: "video,spi,i2c,gpio"
+ move_home: yes
+ notify: restart homebridge service
+
+- name: create homebridge directory
+ become: yes
+ file:
+ path: "{{homebridge_dir}}"
+ state: "directory"
+ owner: "{{homebridge_user}}"
+ group: "{{homebridge_user}}"
+ mode: "0755"
+
+- name: install homebridge apt deps
+ become: yes
+ apt: name="{{homebridge_apt_packages}}"
+
+- name: install homebridge
+ become: yes
+ become_user: "{{homebridge_user}}"
+ npm: name="homebridge" global="yes"
+ notify: restart homebridge service
+
+- name: install platform accessories
+ become: yes
+ become_user: "{{homebridge_user}}"
+ npm: name="{{item}}" global="yes"
+ notify: restart homebridge service
+ with_items: "{{homebridge_npm_packages}}"
+
+- name: configure homebridge
+ become: yes
+ template:
+ src: "config.json.j2"
+ dest: "{{homebridge_dir}}/config.json"
+ notify: restart homebridge service
+
+- name: configure systemd service
+ become: yes
+ template:
+ src: "homebridge.service.j2"
+ dest: "/lib/systemd/system/homebridge.service"
+ notify: restart homebridge service
+
+- name: ensure homebridge is started
+ become: yes
+ systemd: name="homebridge.service" enabled="yes" state="started"
diff --git a/homebridge/templates/config.json.j2 b/homebridge/templates/config.json.j2
new file mode 100644
index 0000000..5d0a61a
--- /dev/null
+++ b/homebridge/templates/config.json.j2
@@ -0,0 +1,48 @@
+{
+ "bridge": {
+ "name": "Homebridge",
+ "username": "{{ansible_default_ipv4.macaddress | upper}}",
+ "port": {{homebridge_port}},
+ "pin": "{{homebridge_pin}}"
+ },
+
+ "description": "Homebridge",
+
+ "platforms": [
+
+ {"platform": "Camera-ffmpeg",
+ "cameras": [
+
+ {% for cam in homebridge_rtsp_cams %}
+ {"name": "{{cam.name}}", "videoConfig": {
+ "source": "-i {{cam.rtsp_url}}",
+ "stillImageSource": "-i {{cam.rtsp_url}} -vframes 1 -r 1",
+ "vcodec": "{{homebridge_rtsp_vcodec}}",
+ "maxStreams": {{homebridge_rtsp_max_streams}},
+ "debug": {{homebridge_rtsp_debug}}
+ }
+ {% if not loop.last %}
+ },
+ {% else %}
+ }
+ {% endif %}
+ {% endfor %}
+ ]}
+
+ ],
+
+ "accessories": [
+ {
+ "accessory": "Roomba",
+ "name": "Roomba",
+ "model": "{{homebridge_roomba_model}}",
+ "blid": "{{homebridge_roomba_blid}}",
+ "robotpwd": "{{homebridge_roomba_passwd}}",
+ "ipaddress": "{{homebridge_roomba_ip}}",
+ "autoRefreshEnabled": {{homebridge_roomba_auto_refresh}},
+ "keepAliveEnabled": {{homebridge_roomba_keep_alive}},
+ "cacheTTL": {{homebridge_roomba_cache_TTL}}
+ }
+ ]
+
+}
diff --git a/homebridge/templates/homebridge.service.j2 b/homebridge/templates/homebridge.service.j2
new file mode 100644
index 0000000..a20ff99
--- /dev/null
+++ b/homebridge/templates/homebridge.service.j2
@@ -0,0 +1,16 @@
+# {{ansible_managed}}
+
+[Unit]
+Description=Homebridge
+
+[Service]
+User={{homebridge_user}}
+Group={{homebridge_user}}
+Restart=always
+RestartSec={{homebridge_restart_sec}}
+
+WorkingDirectory={{homebridge_dir}}
+ExecStart=/usr/bin/node /opt/{{nodejs_dir}}/bin/homebridge -U {{homebridge_dir}}
+
+[Install]
+WantedBy=default.target