src.nth.io/

summaryrefslogtreecommitdiff
path: root/unifi-protect-viewport/tasks/main.yaml
blob: 9a51e0b66113be3067d721a8d33f008b4d5d6abb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
---

- name: add unifi-protect-viewport user
  become: yes
  user:
    name: "{{unifi_protect_viewport_user}}"
    shell: "/bin/false"
    system: "yes"
    create_home: "no"
    groups: "video,input,render,tty"
    append: "yes"

- name: allow unifi-protect-viewport user to control sysfs backlight
  become: yes
  copy:
    dest: "/etc/udev/rules.d/99-unifi-protect-viewport-backlight.rules"
    owner: "root"
    group: "root"
    mode: "0644"
    content: |
      SUBSYSTEM=="backlight", ACTION=="add", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"

- name: set backlight brightness writable by video group
  become: yes
  file:
    path: "/sys/class/backlight/rpi_backlight/brightness"
    group: "video"
    mode: "0664"

- name: apt install unifi-protect-viewport dependencies
  become: yes
  apt: name="{{item}}"
  notify: restart unifi-protect-viewport
  loop:
    - "mpv"
    - "python3-evdev"
    - "python3-requests"
    - "python3-websockets"

- name: create unifi-protect-viewport config dir
  become: yes
  file:
    path: "/etc/unifi-protect-viewport"
    owner: "root"
    group: "{{unifi_protect_viewport_user}}"
    mode: "0750"
    state: "directory"

- name: install unifi-protect-viewport daemon
  become: yes
  copy:
    src: "unifi-protect-viewport.py"
    dest: "/usr/local/bin/unifi-protect-viewport"
    owner: "root"
    group: "root"
    mode: "0755"
  notify: restart unifi-protect-viewport

- name: install unifi-protect-viewport debug tool
  become: yes
  copy:
    src: "unifi-protect-viewport-debug"
    dest: "/usr/local/bin/unifi-protect-viewport-debug"
    owner: "root"
    group: "root"
    mode: "0755"

- name: configure unifi-protect-viewport environment
  become: yes
  template:
    src: "unifi-protect-viewport.env.j2"
    dest: "/etc/unifi-protect-viewport/unifi-protect-viewport.env"
    owner: "root"
    group: "{{unifi_protect_viewport_user}}"
    mode: "0640"
  notify: restart unifi-protect-viewport
  no_log: true

- name: install unifi-protect-viewport systemd service
  become: yes
  template:
    src: "unifi-protect-viewport.service.j2"
    dest: "/lib/systemd/system/unifi-protect-viewport.service"
    mode: "0644"
  notify: restart unifi-protect-viewport

- name: configure PoE HAT fan temperature thresholds
  become: yes
  blockinfile:
    path: "/boot/firmware/config.txt"
    marker: "# {mark} unifi-protect-viewport poe fan"
    block: |
      dtoverlay=rpi-poe
      dtparam=poe_fan_temp0={{unifi_protect_viewport_poe_fan_temp0}},poe_fan_temp0_hyst=5000
      dtparam=poe_fan_temp1={{unifi_protect_viewport_poe_fan_temp1}},poe_fan_temp1_hyst=5000
      dtparam=poe_fan_temp2={{unifi_protect_viewport_poe_fan_temp2}},poe_fan_temp2_hyst=5000
      dtparam=poe_fan_temp3={{unifi_protect_viewport_poe_fan_temp3}},poe_fan_temp3_hyst=5000
  when: unifi_protect_viewport_poe_fan
  register: fan_result

- name: remind to reboot for PoE fan config to take effect
  debug:
    msg: "config.txt updated  reboot {{inventory_hostname}} for PoE HAT fan thresholds to take effect"
  when: fan_result is not skipped and fan_result.changed

- name: enable vc4 KMS DRM driver
  become: yes
  lineinfile:
    path: "/boot/firmware/config.txt"
    line: "dtoverlay=vc4-fkms-v3d"
    regexp: "^dtoverlay=vc4-(f?)kms-v3d"
  register: vc4_result

- name: remind to reboot for vc4 DRM driver to take effect
  debug:
    msg: "config.txt updated  reboot {{inventory_hostname}} for dtoverlay=vc4-fkms-v3d to take effect"
  when: vc4_result.changed

- name: disable fbcon to free DRM device for mpv
  become: yes
  lineinfile:
    path: "/boot/firmware/cmdline.txt"
    backrefs: yes
    regexp: "^((?!.*fbcon=map:99).*)$"
    line: "\\1 fbcon=map:99"
  register: cmdline_result

- name: remind to reboot for cmdline.txt change to take effect
  debug:
    msg: "cmdline.txt updated  reboot {{inventory_hostname}} for fbcon=map:99 to take effect"
  when: cmdline_result.changed

- name: ensure unifi-protect-viewport is started
  become: yes
  systemd: name="unifi-protect-viewport.service" enabled="yes" state="started" daemon_reload="yes"