Working sound setup for raspis
This commit is contained in:
parent
caf6232dfb
commit
d8c9a491d1
|
@ -7,21 +7,31 @@ all:
|
|||
children:
|
||||
iot:
|
||||
hosts:
|
||||
newrpi:
|
||||
squeezelite_name: MyTestRaspberry
|
||||
shairport_name: MyTestRaspberry
|
||||
alsa_card_name: 0
|
||||
sensor_room_name_ascii: testraum
|
||||
sensor_room_name: Test Raum
|
||||
heatingpi:
|
||||
bedroompi:
|
||||
squeezelite_name: BedroomPi
|
||||
shairport_name: BedroomPi
|
||||
alsa_card_name: Codec
|
||||
sensor_room_name_ascii: schlafzimmer
|
||||
sensor_room_name: Schlafzimmer
|
||||
kitchenpi:
|
||||
squeezelite_name: KitchenPi
|
||||
shairport_name: KitchenPi
|
||||
alsa_card_name: 0
|
||||
sensor_room_name_ascii: kueche
|
||||
sensor_room_name: Küche
|
||||
esszimmerradio: # oben, eltern
|
||||
squeezelite_name: Esszimmer
|
||||
shairport_name: EsszimmerRadio
|
||||
wifi_ssid: BauerWLAN
|
||||
newrpi:
|
||||
squeezelite_name: MyTestRaspberry
|
||||
shairport_name: MyTestRaspberry
|
||||
alsa_card_name: 0
|
||||
sensor_room_name_ascii: testraum
|
||||
sensor_room_name: Test Raum
|
||||
heatingpi:
|
||||
vars:
|
||||
ansible_user: root
|
||||
ansible_python_interpreter: /usr/bin/python3
|
||||
squeezeserver: 192.168.178.80
|
||||
home_assistant_url: https://ha.bauer.tech
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
- hosts: newrpi
|
||||
roles:
|
||||
- pi-standard-setup
|
||||
- pi-squeezelite
|
||||
- pi-shairport
|
||||
- pi-lirc
|
||||
- pi-dhtsensor
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
- name: Sync alsa config
|
||||
template: src=asound.conf dest=/etc/asound.conf
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
dht_pin: "D12"
|
||||
dht_polling_sleep_time_seconds: 20
|
|
@ -0,0 +1,64 @@
|
|||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import requests
|
||||
import json
|
||||
import time
|
||||
import multiprocessing
|
||||
|
||||
|
||||
config = json.load(open("/etc/dht22_sensing.json"))
|
||||
|
||||
|
||||
def send_to_home_assistant(temperature, humidity):
|
||||
# print(f"Sending temperature {temperature}, humidity {humidity}")
|
||||
headers = {
|
||||
'x-ha-access': config['token'],
|
||||
'Authorization': "Bearer {}".format(config['token'])
|
||||
}
|
||||
|
||||
temperature_url = "{}/api/states/sensor.{}".format(
|
||||
config['ha_url'], config['ha_temp_sensor_name'])
|
||||
temperatur_data = {
|
||||
"state": str(temperature),
|
||||
"attributes": {
|
||||
"device_class": "temperature",
|
||||
"friendly_name": config['ha_temp_friendly_name'],
|
||||
"unit_of_measurement": "°C"
|
||||
}
|
||||
}
|
||||
requests.post(temperature_url, json=temperatur_data, headers=headers)
|
||||
|
||||
humidity_url = "{}/api/states/sensor.{}".format(
|
||||
config['ha_url'], config['ha_humidity_sensor_name'])
|
||||
humidity_data = {
|
||||
"state": str(humidity),
|
||||
"attributes": {
|
||||
"device_class": "humidity",
|
||||
"friendly_name": config['ha_humidity_friendly_name'],
|
||||
"unit_of_measurement": "%"
|
||||
}
|
||||
}
|
||||
requests.post(humidity_url, json=humidity_data, headers=headers)
|
||||
|
||||
|
||||
def sense():
|
||||
import adafruit_dht
|
||||
import board
|
||||
|
||||
dht_device = adafruit_dht.DHT22(getattr(board, config['dht_pin']))
|
||||
|
||||
try:
|
||||
send_to_home_assistant(dht_device.temperature, dht_device.humidity)
|
||||
except RuntimeError as error:
|
||||
# Errors happen fairly often, DHT's are hard to read, just keep going
|
||||
print(error.args[0])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
multiprocessing.set_start_method('spawn')
|
||||
while True:
|
||||
process = multiprocessing.Process(target=sense)
|
||||
process.start()
|
||||
process.join()
|
||||
time.sleep(float(config['polling_sleep_time_seconds']))
|
|
@ -0,0 +1,10 @@
|
|||
[Unit]
|
||||
Description=DHT22 Temperature Humidity Sensing
|
||||
After=multi-user.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/python3 /usr/bin/dht22_sensing
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
- name: apt install libgpiod2
|
||||
apt: name=libgpiod2 cache_valid_time=7200 state=present
|
||||
- name: pip install adafruit-circuitpython-dht
|
||||
pip:
|
||||
name: adafruit-circuitpython-dht
|
||||
executable: pip3
|
||||
- name: Install script config
|
||||
template: src=dht22_sensing.json dest=/etc/dht22_sensing.json
|
||||
- name: Install script
|
||||
copy: src=dht22_sensing.py dest=/usr/bin/dht22_sensing owner=root mode=u+rwx
|
||||
- name: Install systemd service file
|
||||
copy: src=dht22_sensing.service dest=/lib/systemd/system/
|
||||
- name: Add script to autostart and start now
|
||||
systemd: name=dht22_sensing state=started enabled=yes daemon_reload=yes
|
||||
- name: Add to sysdweb
|
||||
include_role:
|
||||
name: pi-sysdweb
|
||||
vars:
|
||||
sysdweb_name: dht22_sensing
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"ha_url": "{{home_assistant_url}}",
|
||||
"token": "{{home_assistant_token}}",
|
||||
"dht_pin": "{{dht_pin}}",
|
||||
"polling_sleep_time_seconds": "{{dht_polling_sleep_time_seconds}}",
|
||||
|
||||
"ha_temp_sensor_name": "{{sensor_room_name_ascii|lower}}_dht22_temperatur",
|
||||
"ha_temp_friendly_name": "{{sensor_room_name}} Temperatur",
|
||||
|
||||
"ha_humidity_sensor_name": "{{sensor_room_name_ascii|lower}}_dht22_luftfeuchtigkeit",
|
||||
"ha_humidity_friendly_name": "{{sensor_room_name}} Luftfeuchtigkeit"
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
dht_pin: 12
|
||||
dht_polling_sleep_time_seconds: 20
|
|
@ -4,20 +4,20 @@
|
|||
import requests
|
||||
import json
|
||||
import time
|
||||
import board
|
||||
import adafruit_dht
|
||||
import Adafruit_DHT
|
||||
|
||||
config = json.load(open("/etc/dht22_sensing.json"))
|
||||
dht_device = adafruit_dht.DHT22(getattr(board, config['dht_pin']))
|
||||
|
||||
|
||||
def send_to_home_assistant(temperature, humidity):
|
||||
# print(f"Sending temperature {temperature}, humidity {humidity}")
|
||||
headers = {
|
||||
'x-ha-access': config['token'],
|
||||
'Authorization': "Bearer {}".format(config['token'])
|
||||
}
|
||||
|
||||
temperature_url = "{}/api/states/sensor.{}".format(config['ha_url'], config['ha_temp_sensor_name'])
|
||||
temperature_url = "{}/api/states/sensor.{}".format(
|
||||
config['ha_url'], config['ha_temp_sensor_name'])
|
||||
temperatur_data = {
|
||||
"state": str(temperature),
|
||||
"attributes": {
|
||||
|
@ -28,7 +28,8 @@ def send_to_home_assistant(temperature, humidity):
|
|||
}
|
||||
requests.post(temperature_url, json=temperatur_data, headers=headers)
|
||||
|
||||
humidity_url = "{}/api/states/sensor.{}".format(config['ha_url'], config['ha_humidity_sensor_name'])
|
||||
humidity_url = "{}/api/states/sensor.{}".format(
|
||||
config['ha_url'], config['ha_humidity_sensor_name'])
|
||||
humidity_data = {
|
||||
"state": str(humidity),
|
||||
"attributes": {
|
||||
|
@ -40,14 +41,9 @@ def send_to_home_assistant(temperature, humidity):
|
|||
requests.post(humidity_url, json=humidity_data, headers=headers)
|
||||
|
||||
|
||||
def sense():
|
||||
try:
|
||||
send_to_home_assistant(dht_device.temperature, dht_device.humidity)
|
||||
except RuntimeError as error:
|
||||
# Errors happen fairly often, DHT's are hard to read, just keep going
|
||||
print(error.args[0])
|
||||
time.sleep(config['polling_sleep_time_seconds'])
|
||||
|
||||
|
||||
while True:
|
||||
sense()
|
||||
if __name__ == "__main__":
|
||||
while True:
|
||||
sensor = Adafruit_DHT.DHT22
|
||||
humidity, temperature = Adafruit_DHT.read_retry(sensor, config['dht_pin'])
|
||||
send_to_home_assistant(temperature, humidity)
|
||||
time.sleep(float(config['polling_sleep_time_seconds']))
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
# Use the deprecated version here instead, not the new circuitpython adafruit-circuitpython-dht version
|
||||
# the new version needs a lot of CPU time and doesn't work correctly on old raspi 1
|
||||
# a copy of the deprecated repo is downloaded as zip (if it goes away)
|
||||
|
||||
- name: Uninstall libgpiod2 (circuitpython) if present
|
||||
apt: name=libgpiod2 cache_valid_time=7200 state=absent
|
||||
- name: pip uninstall adafruit-circuitpython-dht
|
||||
pip:
|
||||
name: adafruit-circuitpython-dht
|
||||
executable: pip3
|
||||
state: absent
|
||||
- name: pip install adafruit-dht
|
||||
pip:
|
||||
name: adafruit-dht
|
||||
executable: pip3
|
||||
- name: Install script config
|
||||
template: src=dht22_sensing.json dest=/etc/dht22_sensing.json
|
||||
- name: Install script
|
||||
copy: src=dht22_sensing.py dest=/usr/bin/dht22_sensing owner=root mode=u+rwx
|
||||
- name: Install systemd service file
|
||||
copy: src=dht22_sensing.service dest=/lib/systemd/system/
|
||||
- name: Add script to autostart and start now
|
||||
systemd: name=dht22_sensing state=restarted enabled=yes daemon_reload=yes
|
||||
- name: Add to sysdweb
|
||||
include_role:
|
||||
name: pi-sysdweb
|
||||
vars:
|
||||
sysdweb_name: dht22_sensing
|
|
@ -1,8 +1,8 @@
|
|||
{
|
||||
"ha_url": "https://ha.bauer.tech",
|
||||
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIxNjkxMWIzZmQ4ZWU0NDI0OTg0MjA0ZDllMDhkNGRlMCIsImlhdCI6MTU3ODE3MDU5MSwiZXhwIjoxODkzNTMwNTkxfQ.i7CdXEZy9DV9KPHAl-msK0rOfIUlPYo4zwwJ4UGhXuc",
|
||||
"dht_pin": "D12",
|
||||
"polling_sleep_time_seconds": 5,
|
||||
"ha_url": "{{home_assistant_url}}",
|
||||
"token": "{{home_assistant_token}}",
|
||||
"dht_pin": "{{dht_pin}}",
|
||||
"polling_sleep_time_seconds": "{{dht_polling_sleep_time_seconds}}",
|
||||
|
||||
"ha_temp_sensor_name": "{{sensor_room_name_ascii|lower}}_dht22_temperatur",
|
||||
"ha_temp_friendly_name": "{{sensor_room_name}} Temperatur",
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
- name: restart sshd
|
||||
service:
|
||||
name: sshd
|
||||
state: restarted
|
||||
---
|
||||
- name: reboot
|
||||
reboot:
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
dependencies:
|
||||
- role: pi-alsasetup
|
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
- name: Deactivate normal audio
|
||||
lineinfile:
|
||||
path: /boot/config.txt
|
||||
regexp: "^#?dtparam=audio=on"
|
||||
line: "#dtparam=audio=on"
|
||||
notify: reboot
|
||||
- name: Activate Hifiberry
|
||||
lineinfile:
|
||||
path: /boot/config.txt
|
||||
regexp: "^#?dtoverlay=hifiberry-amp"
|
||||
line: "dtoverlay=hifiberry-amp"
|
||||
notify: reboot
|
|
@ -0,0 +1,32 @@
|
|||
Infos zum Stick
|
||||
http://busware.de/tiki-index.php?page=TUL
|
||||
|
||||
Blog mit Tutorial:
|
||||
https://www.meintechblog.de/2018/07/tul-stick-als-knx-ip-gateway-auf-dem-raspberry-pi-einrichten-mit-knxd/
|
||||
|
||||
|
||||
Programmieren
|
||||
--------------
|
||||
apt-get -y install dfu-programmer
|
||||
|
||||
Beim Einstecken des Sticks programmiertaste auf unterseite gedrueckt halten
|
||||
|
||||
sudo dfu-programmer atmega32u4 erase && sudo dfu-programmer atmega32u4 flash TPUARTtransparent.hex && sudo dfu-programmer atmega32u4 reset && sudo reboot
|
||||
|
||||
|
||||
|
||||
udev-rules
|
||||
----------
|
||||
|
||||
udevadm info -a -n /dev/ttyACM0 | grep '{idProduct}' | head -n1
|
||||
udevadm info -a -n /dev/ttyACM0 | grep '{idVendor}' | head -n1
|
||||
udevadm info -a -n /dev/ttyACM0 | grep '{serial}' | head -n1
|
||||
|
||||
# my KNX stick
|
||||
SUBSYSTEM=="tty", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="204b", ATTRS{serial}=="8543934393935171A0B1", SYMLINK+="ttyKNX"
|
||||
|
||||
# z-wave stick
|
||||
SUBSYSTEM=="tty", ATTRS{idVendor}=="0658", ATTRS{idProduct}=="0200", SYMLINK+="ttyZWave"
|
||||
|
||||
# HomeMatic stick (for fhem)
|
||||
SUBSYSTEM=="tty", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="204b", ATTRS{product}=="CUL868", SYMLINK+="ttyHomeMatic"
|
|
@ -0,0 +1,255 @@
|
|||
:1000000093C00000ACC00000AAC00000A8C000005F
|
||||
:10001000A6C00000A4C00000A2C00000A0C0000054
|
||||
:100020009EC000009CC0000008C40000CBC30000BC
|
||||
:1000300096C0000094C0000092C0000090C0000074
|
||||
:100040008EC000008CC000008AC0000088C0000084
|
||||
:1000500086C0000084C0000082C0000080C0000094
|
||||
:100060007EC0000081C000007AC0000078C000009F
|
||||
:1000700076C0000074C0000072C0000070C00000B4
|
||||
:100080006EC000006CC000006AC0000068C00000C4
|
||||
:1000900066C0000064C0000062C0000060C00000D4
|
||||
:1000A0005EC000005CC000005AC0000012011001D8
|
||||
:1000B00002000008EB034B2001000102DC010902F1
|
||||
:1000C0003E00020100C032090400000102020100EA
|
||||
:1000D000052400100104240206052406000107057A
|
||||
:1000E00082030800FF09040100020A00000007055E
|
||||
:1000F0000402100001070583021000010403090433
|
||||
:1001000018036200750073007700610072006500DB
|
||||
:100110002E006400650000003003540050005500BC
|
||||
:10012000410052005400000011241FBECFEFDAE05E
|
||||
:10013000DEBFCDBF11E0A0E0B1E0E8EBFFE002C020
|
||||
:1001400005900D92AC31B107D9F712E0ACE1B1E006
|
||||
:1001500001C01D92A034B107E1F76FD02BC750CF7B
|
||||
:1001600088980895889808951F920F920FB60F925D
|
||||
:1001700011242F933F938F939F93CF93DF93EF930C
|
||||
:10018000FF939091CE008EB38430D9F4C8EAD1E0C9
|
||||
:10019000E881F98190838881998101969983888388
|
||||
:1001A0002E813F818217930721F48C819D81998351
|
||||
:1001B00088832FB7F8948A859B8501969B878A87C9
|
||||
:1001C0002FBFFF91EF91DF91CF919F918F913F9141
|
||||
:1001D0002F910F900FBE0F901F901895089580E0FB
|
||||
:1001E00091E03CC680E091E012C684B7877F84BF6F
|
||||
:1001F00088E10FB6F89480936000109260000FBE03
|
||||
:1002000080E090E020E80FB6F8942093610080939E
|
||||
:1002100061000FBE809A8898B8D287E690E09093EC
|
||||
:10022000CD008093CC0086E28093CA0082E0809368
|
||||
:10023000C80088E98093C9000895EF92FF920F9358
|
||||
:100240001F93CF93DF93D1DFECE1F1E02FB7F89468
|
||||
:1002500088E291E091838083938382839583848372
|
||||
:1002600088EA91E09783868380E890E09187808791
|
||||
:10027000138612862FBFE8EAF1E02FB7F89484EBDB
|
||||
:1002800091E091838083938382839583848384E345
|
||||
:1002900092E09783868380E890E091878087138639
|
||||
:1002A00012862FBF889878940CE111E088EAE82E36
|
||||
:1002B00081E0F82E8EB391B39E7F20E0843009F464
|
||||
:1002C00021E0922B91BB8FB7F894209126013091B9
|
||||
:1002D00027018FBF809124019091250128173907AC
|
||||
:1002E00001F180E091E0E8D497FD1BC08898E80117
|
||||
:1002F000E881F98180838881998101969983888337
|
||||
:100300002E813F818217930721F48C819D819983EF
|
||||
:1003100088832FB7F8948A859B8501969B878A8767
|
||||
:100320002FBF8FB7F894C091B201D091B3018FBFA6
|
||||
:10033000209721F18898E091AA01F091AB0180E02B
|
||||
:1003400091E060813FD58823C9F4F70182819381D0
|
||||
:10035000019693838283268137818217930721F444
|
||||
:1003600084819581938382832FB7F89482859385C6
|
||||
:100370000197938782872FBF2197E9F62FB7F894CB
|
||||
:1003800080912601909127012FBF892BF1F0889849
|
||||
:10039000E801EA81FB813191FB83EA838E819F81B1
|
||||
:1003A000E817F90721F48C819D819B838A832FB7FD
|
||||
:1003B000F8948A859B8501979B878A872FBF8091B8
|
||||
:1003C000C80085FFFCCF3093CE0080E091E0E3D4FD
|
||||
:1003D0005FD470CFDA01923049F0933061F0913000
|
||||
:1003E000F9F4ECEAF0E022E130E01EC0EEEBF0E0E0
|
||||
:1003F0002EE330E019C0813049F0813018F08230AE
|
||||
:1004000079F408C0ECEFF0E0849107C0E0E0F1E09F
|
||||
:10041000849103C0E8E1F1E08491282F30E004C02A
|
||||
:10042000E0E0F0E020E030E0ED93FC93C9010895B6
|
||||
:100430009C0140913E0250913F024617570718F425
|
||||
:10044000F90190E044C06115710511F0AB01F8CFDE
|
||||
:100450008091E8008E778093E80040E050E0F0CF94
|
||||
:100460008EB3882309F444C0853009F443C08091D9
|
||||
:10047000E80083FF02C081E008958091E80082FDDA
|
||||
:1004800031C08091E80080FF22C08091F3009091FC
|
||||
:10049000F200782F60E0292F30E0262B372B07C0A1
|
||||
:1004A00081918093F100415050402F5F3F4F4115A3
|
||||
:1004B000510519F02830310598F390E028303105C6
|
||||
:1004C00009F491E08091E8008E778093E80041156F
|
||||
:1004D000510531F6992321F605C08EB3882341F0EA
|
||||
:1004E000853041F08091E80082FFF7CF80E00895E9
|
||||
:1004F00082E0089583E008959C0140913E0250916E
|
||||
:100500003F024617570718F4F90190E045C06115FE
|
||||
:10051000710511F0AB01F8CF8091E8008E778093E0
|
||||
:10052000E80040E050E0F0CF8EB3882309F446C0E5
|
||||
:10053000853009F445C08091E80083FF02C081E066
|
||||
:1005400008958091E80082FD33C08091E80080FF2B
|
||||
:1005500023C08091F3009091F200782F60E0292F62
|
||||
:1005600030E0262B372B08C084918093F100319620
|
||||
:10057000415050402F5F3F4F4115510519F0283031
|
||||
:10058000310590F390E02830310509F491E0809135
|
||||
:10059000E8008E778093E8004115510529F69923EC
|
||||
:1005A00009F0C2CF05C08EB3882341F0853041F0F9
|
||||
:1005B0008091E80082FFF7CF80E0089582E00895FF
|
||||
:1005C00083E008958F708093E9008091EB00816053
|
||||
:1005D0008093EB001092ED006093EC004093ED00EF
|
||||
:1005E0008091EE00881F8827881F08950F931F931E
|
||||
:1005F000CF93DF93062FEC0110E02AC09881992356
|
||||
:1006000029F16B81E981FA812C81892F8F708730E4
|
||||
:1006100018F5223010F452E001C056E040E028E026
|
||||
:1006200030E003C04F5F220F331F2E173F07D0F378
|
||||
:100630006295660F660F607C991F9927991F692B39
|
||||
:100640004295407F452BBEDF882331F01F5F259602
|
||||
:100650001017A0F281E001C080E0DF91CF911F91DF
|
||||
:100660000F9108958091380288238CF403C08EB3D3
|
||||
:100670008823B1F08091E80082FFF9CF8091E800F3
|
||||
:100680008B778093E80008958EB3882349F080919A
|
||||
:10069000E80080FFF9CF8091E8008E778093E80032
|
||||
:1006A00008954091E4005091E50024E68091EC002B
|
||||
:1006B00080FF23C08091E80080FD1DC08EB3882399
|
||||
:1006C00011F482E00895853011F483E0089580915B
|
||||
:1006D000EB0085FF02C081E008958091E4009091D5
|
||||
:1006E000E5008417950711F3222311F484E008959F
|
||||
:1006F0002150AC01DBCF80E008958091E80082FFBB
|
||||
:10070000DDCFF9CFEF92FF920F931F934ED055D0CC
|
||||
:1007100008ED10E0F80180818F7780838081806808
|
||||
:10072000808380818F7D808319BC1EBA1092340231
|
||||
:10073000109236021092350280EEE82EF12CF7016D
|
||||
:1007400080818B7F8083F80180818160808380E05D
|
||||
:1007500060E042E037DFE1EEF0E080818E7F808371
|
||||
:10076000E2EEF0E080818160808380818860808318
|
||||
:10077000F70180818E7F8083F80180818061808392
|
||||
:100780001F910F91FF90EF900895E8EDF0E08081C8
|
||||
:100790008F7E8083E7EDF0E080818160808384E05C
|
||||
:1007A00082BF81E080933702ADCFE8EDF0E0808139
|
||||
:1007B0008E7F80831092E20008951092DA001092EA
|
||||
:1007C000E10008951F920F920FB60F9211241F930C
|
||||
:1007D0002F933F934F935F936F937F938F939F9349
|
||||
:1007E000AF93BF93EF93FF931091E9008091EC00DA
|
||||
:1007F0001092E9008091F000877F8093F000789458
|
||||
:10080000E0D01092E9008091F00088608093F000C1
|
||||
:100810001F701093E900FF91EF91BF91AF919F91ED
|
||||
:100820008F917F916F915F914F913F912F911F9188
|
||||
:100830000F900FBE0F901F9018951F920F920FB63A
|
||||
:100840000F9211242F933F934F935F936F937F9356
|
||||
:100850008F939F93AF93BF93EF93FF938091E100AA
|
||||
:1008600082FF0AC08091E20082FF06C08091E10011
|
||||
:100870008B7F8093E1000BD28091DA0080FF1BC058
|
||||
:100880008091D80080FF17C08091DA008E7F80931E
|
||||
:10089000DA008091D90080FF0BC080E189BD82E140
|
||||
:1008A00089BD09B400FEFDCF81E08EBB59DC03C0D9
|
||||
:1008B00019BC1EBA57DC8091E10080FF17C08091FF
|
||||
:1008C000E20080FF13C08091E2008E7F8093E200FF
|
||||
:1008D0008091E20080618093E2008091D800806284
|
||||
:1008E0008093D80019BC85E08EBBD1D18091E10006
|
||||
:1008F00084FF2CC08091E20084FF28C080E189BD84
|
||||
:1009000082E189BD09B400FEFDCF8091D8008F7DC2
|
||||
:100910008093D8008091E1008F7E8093E1008091E8
|
||||
:10092000E2008F7E8093E2008091E20081608093FC
|
||||
:10093000E20080913402882331F48091E30087FD46
|
||||
:1009400002C081E001C084E08EBBA1D18091E100B2
|
||||
:1009500083FF26C08091E20083FF22C08091E100E6
|
||||
:10096000877F8093E10082E08EBB109234028091F9
|
||||
:10097000E1008E7F8093E1008091E2008E7F809382
|
||||
:10098000E2008091E20080618093E20080E060E01C
|
||||
:1009900042E018DE8091F00088608093F00077D10B
|
||||
:1009A000FF91EF91BF91AF919F918F917F916F9147
|
||||
:1009B0005F914F913F912F910F900FBE0F901F901D
|
||||
:1009C00018951F93DF93CF93CDB7DEB7AC970FB6D3
|
||||
:1009D000F894DEBF0FBECDBFE8E3F2E08091F100F6
|
||||
:1009E000819322E0E034F207C9F7F9DB8091E80057
|
||||
:1009F00083FF35C18091380230913902353009F4D6
|
||||
:100A000087C0363040F43130C9F1313070F03330C6
|
||||
:100A100009F025C133C0383009F4F4C0393009F485
|
||||
:100A200003C1363009F01BC195C0803821F08238EF
|
||||
:100A300009F015C108C090913502809136028823D3
|
||||
:100A400099F0926011C080913C028F708093E90010
|
||||
:100A50008091EB0090E025E0969587952A95E1F747
|
||||
:100A6000982F91701092E9008091E800877F809321
|
||||
:100A7000E8009093F1001092F100CFC0882319F0A4
|
||||
:100A8000823009F0ECC090E08F719070009721F0F7
|
||||
:100A9000029709F0E4C00CC080913A02813009F05D
|
||||
:100AA000DEC010923602333069F5809336022AC0D8
|
||||
:100AB00080913A02882331F520913C022F7009F48D
|
||||
:100AC000CEC02093E9008091EB0080FF1BC0333043
|
||||
:100AD00021F48091EB00806213C08091EB00806173
|
||||
:100AE0008093EB0081E090E002C0880F991F2A9567
|
||||
:100AF000E2F78093EA001092EA008091EB008860B0
|
||||
:100B00008093EB001092E9008091E800877F88C015
|
||||
:100B1000882309F0A4C010913A021F778091E30066
|
||||
:100B20008078812B8093E3008091E800877F809319
|
||||
:100B3000E80098DD8091E80080FFFCCF8091E30021
|
||||
:100B400080688093E300112311F482E001C083E008
|
||||
:100B50008EBB85C08058823008F081C080913A02F7
|
||||
:100B600090913B0223E08C3D920709F033C083E073
|
||||
:100B70008C838AE28B837FB7F894DE0115966EE052
|
||||
:100B800040E050E011E2E62FF0E01093570084912E
|
||||
:100B900040FF03C082958F706F5F8F70282F30E009
|
||||
:100BA0008A3018F0C901C79602C0C901C0968D935A
|
||||
:100BB0009D934F5F5F4F4431510529F77FBF80916F
|
||||
:100BC000E800877F8093E800CE0103966AE270E038
|
||||
:100BD0002FDC12C060913C02AE014F5F5F4FFADB29
|
||||
:100BE000BC01009709F43BC08091E800877F8093A7
|
||||
:100BF000E80089819A8180DC8091E8008B7780937E
|
||||
:100C0000E8002DC0803859F58091E800877F8093F7
|
||||
:100C1000E800809134028093F1008091E8008E77A3
|
||||
:100C20008093E8001FDD1BC08823C9F490913A022D
|
||||
:100C30009230A8F48091E800877F8093E800909339
|
||||
:100C4000340210DD80913402882331F48091E30076
|
||||
:100C500087FD02C081E001C084E08EBBC3DA8091D1
|
||||
:100C6000E80083FF0AC08091E800877F8093E80056
|
||||
:100C70008091EB0080628093EB00AC960FB6F89405
|
||||
:100C8000DEBF0FBECDBFCF91DF911F9108950895B4
|
||||
:100C90001F938EB3882371F01091E9008091EC00CE
|
||||
:100CA0001092E9008091E80083FF01C08ADE1F7086
|
||||
:100CB0001093E9001F910895FC018EB3843099F5DB
|
||||
:100CC00084899589A689B7890097A105B10559F14D
|
||||
:100CD00086818F708093E9008091E80082FF23C0B5
|
||||
:100CE0004091F3002091F200942F80E030E0822BBD
|
||||
:100CF000932B892B19F46FEF7FEF04C08091F100E3
|
||||
:100D0000682F70E04091F3002091F200942F80E072
|
||||
:100D100030E0822B932B892B41F48091E8008B7774
|
||||
:100D20008093E80002C06FEF7FEFCB010895089534
|
||||
:100D3000FC018EB3843051F584899589A689B789E1
|
||||
:100D40000097A105B10511F181818F708093E900B1
|
||||
:100D50004091F3002091F200942F80E030E0822B4C
|
||||
:100D6000932B892BA9F09091E8008091E8008E7771
|
||||
:100D70008093E80095FD0CC094DC982F882349F4FB
|
||||
:100D80008091E8008E778093E80003C092E001C074
|
||||
:100D900090E0892F0895FC018EB3843091F484890A
|
||||
:100DA0009589A689B7890097A105B10551F0818180
|
||||
:100DB0008F708093E9008091E80080FF02C0CF012E
|
||||
:100DC000B7CF08951F93FC01162F8EB38430E1F442
|
||||
:100DD00084899589A689B7890097A105B105A1F0F5
|
||||
:100DE00081818F708093E9008091E80085FD08C0C3
|
||||
:100DF0008091E8008E778093E80053DC882329F403
|
||||
:100E00001093F10080E001C082E01F910895CF931C
|
||||
:100E1000DF93EC014096FC018BE0DF011D928A9587
|
||||
:100E2000E9F782E08C83898783E08E87CE01019683
|
||||
:100E300061E0DCDB882371F0CE01069661E0D6DB51
|
||||
:100E4000882341F0CE010B9661E0D0DB882319F0B6
|
||||
:100E500081E001C080E0DF91CF910895CF93DF93CF
|
||||
:100E6000EC018091E80083FFA2C0888190E020918E
|
||||
:100E70003C0230913D022817390709F098C0809153
|
||||
:100E80003902813269F0823220F4803209F08FC059
|
||||
:100E90003CC0823209F46AC0833209F088C079C04C
|
||||
:100EA00080913802813A09F082C08091E800877F02
|
||||
:100EB0008093E8008091E80080FFFCCF8C899D89B9
|
||||
:100EC000AE89BF898093F100292F3A2F4B2F5527E8
|
||||
:100ED0002093F1009D01442755272093F1008B2F8B
|
||||
:100EE0009927AA27BB278093F100888D8093F10072
|
||||
:100EF000898D8093F1008A8D8093F1008091E800C4
|
||||
:100F00008E778093E800AEDB52C080913802813248
|
||||
:100F100009F04DC08091E800877F8093E80004C00D
|
||||
:100F20008EB3882309F443C08091E80082FFF8CF94
|
||||
:100F30008091F1009091F1002091F1003091F10049
|
||||
:100F40008C8B9D8B2E8B3F8B8091F100888F8091B5
|
||||
:100F5000F100898F8091F1008A8F8091E8008B7772
|
||||
:100F60008093E8007FDBCE0139D921C0809138021F
|
||||
:100F70008132E9F48091E800877F8093E80072DB9A
|
||||
:100F800080913A0290913B02998B888BCE01CFDE03
|
||||
:100F90000EC080913802813251F48091E800877F41
|
||||
:100FA0008093E8005FDBCE0160913A02C0DEDF9102
|
||||
:080FB000CF910895F894FFCFE2
|
||||
:100FB80000831000000104100000018208000001F5
|
||||
:0C0FC8000000000000000000000000001D
|
||||
:00000001FF
|
|
@ -0,0 +1,8 @@
|
|||
#!/bin/bash
|
||||
|
||||
apt-get -y install dfu-programmer
|
||||
|
||||
dfu-programmer atmega32u4 erase
|
||||
dfu-programmer atmega32u4 flash TPUARTtransparent.hex
|
||||
dfu-programmer atmega32u4 reset
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
---
|
||||
# Lirc needs a custom build on Raspian Buster, more details here:
|
||||
# https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=235256
|
||||
# https://gist.github.com/billpatrianakos/cb72e984d4730043fe79cbe5fc8f7941
|
||||
- name: Create lirc config dir
|
||||
file: path=/etc/lirc state=directory
|
||||
- name: Install config file lirc_options.conf
|
||||
copy: src=lirc_options.conf dest=/etc/lirc/lirc_options.conf
|
||||
- name: Install config file lircd.conf
|
||||
copy: src=lircd.conf dest=/etc/lirc/lircd.conf
|
||||
- name: Install remote file
|
||||
copy: src=hauppauge.conf dest=/etc/lirc/hauppauge.conf
|
||||
- name: create temporary directory
|
||||
tempfile:
|
||||
state: directory
|
||||
suffix: temp
|
||||
register: tempdir
|
||||
- name: Copy over lirc customly compiled lirc packages
|
||||
copy:
|
||||
src: debs/
|
||||
dest: "{{ tempdir.path }}"
|
||||
when: tempdir.path is defined
|
||||
- name: Install custom lirc package 1
|
||||
apt:
|
||||
deb: "{{ tempdir.path }}/liblirc0_0.10.1-5.2_armhf.deb"
|
||||
when: tempdir.path is defined
|
||||
- name: Install custom lirc package 2
|
||||
apt:
|
||||
deb: "{{ tempdir.path }}/liblircclient0_0.10.1-5.2_armhf.deb"
|
||||
when: tempdir.path is defined
|
||||
- name: Install custom lirc package 3
|
||||
apt:
|
||||
deb: "{{ tempdir.path }}/lirc_0.10.1-5.2_armhf.deb"
|
||||
when: tempdir.path is defined
|
||||
- name: Activate overlay in boot config
|
||||
lineinfile:
|
||||
path: /boot/config.txt
|
||||
regexp: "^#?dtoverlay=gpio-ir"
|
||||
line: "dtoverlay=gpio-ir,gpio_pin=17"
|
||||
register: boot_overlay
|
||||
- name: Restart lircd
|
||||
systemd: name=lircd state=started enabled=yes daemon_reload=yes
|
||||
- name: Reboot if boot overlay changed
|
||||
reboot:
|
||||
when: boot_overlay.changed
|
||||
- name: Add to sysdweb
|
||||
include_role:
|
||||
name: pi-sysdweb
|
||||
vars:
|
||||
sysdweb_name: lircd
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
shairport_sync_version: "3.3.5"
|
||||
shairport_name: Unnamed Raspberry with shairport
|
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
- name: Apt install dependencies
|
||||
apt:
|
||||
cache_valid_time: 7200
|
||||
state: present
|
||||
name:
|
||||
- build-essential
|
||||
- git
|
||||
- xmltoman
|
||||
- autoconf
|
||||
- automake
|
||||
- libtool
|
||||
- libpopt-dev
|
||||
- libconfig-dev
|
||||
- libasound2-dev
|
||||
- avahi-daemon
|
||||
- libavahi-client-dev
|
||||
- libssl-dev
|
||||
- libsoxr-dev
|
||||
- name: Build and Install Shairport sync (may take a while)
|
||||
script: "build-shairport-sync.sh ${shairport_sync_version}"
|
||||
args:
|
||||
creates: /usr/local/bin/shairport-sync
|
||||
- name: Copy config
|
||||
template: src=shairport-sync.conf dest=/etc/shairport-sync.conf
|
||||
- name: Modify service file to run as root
|
||||
lineinfile:
|
||||
path: /lib/systemd/system/shairport-sync.service
|
||||
regexp: "^#?User="
|
||||
line: "User=root"
|
||||
- name: Restart shairport-sync
|
||||
systemd: name=shairport-sync state=restarted enabled=yes daemon_reload=yes
|
||||
- name: Add to sysdweb
|
||||
include_role:
|
||||
name: pi-sysdweb
|
||||
vars:
|
||||
sysdweb_name: shairport-sync
|
||||
|
Binary file not shown.
|
@ -0,0 +1,36 @@
|
|||
[Unit]
|
||||
Description=SiS PM Control for Linux
|
||||
Wants=network-online.target
|
||||
After=network-online.target
|
||||
Wants=systemd-udev-settle.service
|
||||
After=systemd-udev-settle.service
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
[Service]
|
||||
CapabilityBoundingSet=
|
||||
LockPersonality=true
|
||||
MemoryDenyWriteExecute=true
|
||||
NoNewPrivileges=true
|
||||
PrivateTmp=true
|
||||
PrivateUsers=true
|
||||
ProtectClock=true
|
||||
ProtectControlGroups=true
|
||||
ProtectHome=true
|
||||
ProtectKernelModules=true
|
||||
ProtectKernelTunables=true
|
||||
ProtectSystem=strict
|
||||
RemoveIPC=true
|
||||
RestrictAddressFamilies=AF_INET AF_INET6
|
||||
RestrictNamespaces=true
|
||||
RestrictRealtime=true
|
||||
SystemCallFilter=@system-service
|
||||
SystemCallArchitectures=native
|
||||
UMask=177
|
||||
|
||||
Type=forking
|
||||
ExecStart=/usr/local/bin/sispmctl -p 2638 -l
|
||||
SyslogIdentifier=sispmctl
|
||||
Restart=always
|
||||
RestartSec=5
|
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
|
||||
- name: Install dependencies
|
||||
apt: name=libusb-dev cache_valid_time=7200 state=present
|
||||
- name: Copy sispmctl sources
|
||||
unarchive:
|
||||
src: sispmctl-4.7.tar.gz
|
||||
dest: /tmp
|
||||
creates: /usr/local/bin/sispmctl
|
||||
- name: Build and install
|
||||
command: cd /tmp/sispmctl*/ && ./configure && make install
|
||||
creates: /usr/local/bin/sispmctl
|
||||
- name: Install systemd service file
|
||||
copy: src=sispmctl.service dest=/lib/systemd/system/
|
||||
- name: Add script to autostart and start now
|
||||
systemd: name=sispmctl state=started enabled=yes daemon_reload=yes
|
||||
- name: Add to sysdweb
|
||||
include_role:
|
||||
name: pi-sysdweb
|
||||
vars:
|
||||
sysdweb_name: sispmctl
|
|
@ -0,0 +1,24 @@
|
|||
Repository: https://github.com/ralph-irving/squeezelite.git
|
||||
Version: 779fe9035a2dfcaeeb5335497a012d5e7241a409
|
||||
|
||||
Custom Makefile based on Makefile.rpi:
|
||||
|
||||
```Makefile
|
||||
OPTS = -DLINUX -DUSE_SSL -DLINKALL -I./include -I./include/opus -I./include/alac -I/usr/local/include -s -march=armv6 -mfloat-abi=hard -mfpu=vfp
|
||||
|
||||
LDFLAGS=-L./lib -L/usr/local/lib -s -lgomp -lasound
|
||||
|
||||
include Makefile
|
||||
```
|
||||
|
||||
Required packages:
|
||||
```bash
|
||||
apt-get install libasound2 libasound2-dev libflac-dev libmad0-dev libfaad-dev libmpg123-dev libvorbis-dev
|
||||
```
|
||||
|
||||
|
||||
- no RPI switch (this is only when wanting to do switiching based on GPIO headers)
|
||||
- manually added -lasound (don't know why it wasn't in there)
|
||||
|
||||
Then just build with
|
||||
make -f mymakefile (on a raspi)
|
Binary file not shown.
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
|
||||
- name: Uninstall system package of squeezelite
|
||||
apt: name=squeezelite state=absent
|
||||
- name: Remove old config file if present
|
||||
file: path=/etc/default/squeezelite state=absent
|
||||
- name: Copy over custom compile version of squeezelite
|
||||
copy: src=squeezelite dest=/opt/squeezelite mode=700
|
||||
- name: Install systemd service file
|
||||
template: src=squeezelite.service dest=/lib/systemd/system/
|
||||
- name: Enable sysdweb autostart
|
||||
systemd: name=squeezelite state=restarted enabled=yes daemon_reload=yes
|
||||
- name: Add to sysdweb
|
||||
include_role:
|
||||
name: pi-sysdweb
|
||||
vars:
|
||||
sysdweb_name: squeezelite
|
|
@ -0,0 +1,10 @@
|
|||
[Unit]
|
||||
Description=Squeezelite
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/opt/squeezelite -n {{squeezelite_name}} -s {{squeezeserver}} -o softvol_squeezelite
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
squeezeserver: 192.168.178.80
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
- name: restart-squeezelite
|
||||
systemd: name=squeezelite state=restarted enabled=yes daemon_reload=yes
|
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
- name: Apt install squeezelite package
|
||||
apt: name=squeezelite cache_valid_time=7200 state=present
|
||||
notify: restart-squeezelite
|
||||
- name: Install config file
|
||||
template: src=squeezelite.cfg dest=/etc/default/squeezelite
|
||||
notify: restart-squeezelite
|
||||
- name: Add to sysdweb
|
||||
include_role:
|
||||
name: pi-sysdweb
|
||||
vars:
|
||||
sysdweb_name: squeezelite
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
SL_NAME="{{squeezelite_name}}"
|
||||
SL_SOUNDCARD="softvol_squeezelite"
|
||||
SB_SERVER_IP="192.168.178.80"
|
||||
SB_SERVER_IP="{{squeezeserver}}"
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/bash
|
||||
|
||||
if /sbin/ifconfig wlan0 | /bin/grep -q "inet addr:" ; then
|
||||
logger "Tested Inet connection - everything ok"
|
||||
echo "Tested Inet connection - everything ok"
|
||||
else
|
||||
logger "Network connection down! Attempting reconnection."
|
||||
echo "Network connection down! Attempting reconnection."
|
||||
/sbin/ifup --force wlan0
|
||||
fi
|
|
@ -1,3 +1,4 @@
|
|||
---
|
||||
- name: restart sshd
|
||||
service:
|
||||
name: sshd
|
||||
|
|
|
@ -27,14 +27,13 @@
|
|||
command: "raspi-config nonint get_hostname"
|
||||
register: pi_hostname
|
||||
changed_when: False
|
||||
- name: Change hostname to {{ new_hostname }}
|
||||
- name: Change hostname {{ new_hostname }}
|
||||
command: "raspi-config nonint do_hostname {{ new_hostname }}"
|
||||
when: new_hostname | bool and pi_hostname.stdout != new_hostname
|
||||
register: set_hostname
|
||||
notify: reboot
|
||||
- name: Get hostname
|
||||
command: "raspi-config nonint get_hostname"
|
||||
when: set_hostname.changed
|
||||
register: pi_hostname
|
||||
changed_when: False
|
||||
- name: set boot mode to CLI
|
||||
|
@ -71,15 +70,25 @@
|
|||
ignore_errors: yes #to avoid error when WiFi is not present
|
||||
- name: Change WiFi country
|
||||
command: "raspi-config nonint do_wifi_country {{ wifi_country }}"
|
||||
when: wifi_ssid | bool
|
||||
- name: Set WiFi credentials
|
||||
command: "raspi-config nonint do_wifi_ssid_passphrase {{ wifi_ssid }} {{ lookup('keepass', wifi_pass_url) }}"
|
||||
command: "raspi-config nonint do_wifi_ssid_passphrase {{ wifi_ssid }} {{ lookup('keepass', bauer_wifi) }}"
|
||||
when: wifi_ssid | bool
|
||||
- name: Copy WIFI watchdog script
|
||||
copy: src=wifi-watchdog.sh dest=/usr/sbin/wifi-watchdog.sh
|
||||
when: wifi_ssid | bool
|
||||
- name: Run WIFI watchdog script periodically
|
||||
cron:
|
||||
name: "WIFI Watchdog"
|
||||
minute: "*/15"
|
||||
job: /usr/sbin/wifi-watchdog.sh
|
||||
when: wifi_ssid | bool
|
||||
# Message of the day
|
||||
- name: Set Message of the day
|
||||
copy: src=motd/{{ pi_hostname.stdout }} dest=/etc/motd
|
||||
# LED off script
|
||||
- name: Copy led off script
|
||||
copy: src=configs/raspi-leds-off.sh dest=/usr/sbin/raspi-leds-off.sh mode="u+rwx"
|
||||
copy: src=raspi-leds-off.sh dest=/usr/sbin/raspi-leds-off.sh mode="u+rwx"
|
||||
- name: Copy led off service
|
||||
copy: src=raspi-leds-off.service dest=/lib/systemd/system/
|
||||
- name: Activate led off servic
|
||||
|
|
|
@ -4,6 +4,8 @@ set -e # exit on error
|
|||
|
||||
TARGET_FOLDER="./rpi_image"
|
||||
VERSION="2020-02-13"
|
||||
VERSION_DIR="2020-02-14" # :D
|
||||
|
||||
|
||||
echo "This script downloads raspian lite, and modifies the image to enable SSH and set hostname"
|
||||
|
||||
|
@ -14,16 +16,18 @@ fi
|
|||
|
||||
echo -n Hostname of new pi
|
||||
read -p "Hostname of new pi [newrpi]: " RPI_HOSTNAME
|
||||
RPI_HOSTNAME=${HOSTNAME:-newrpi}
|
||||
read -p "WIFI password (leave empty for non-wifi setup) [] " WIFI_PASSWORD
|
||||
RPI_HOSTNAME=${RPI_HOSTNAME:-newrpi}
|
||||
|
||||
SCRIPT_DIR=`pwd`
|
||||
mkdir -p $TARGET_FOLDER
|
||||
cd $TARGET_FOLDER
|
||||
|
||||
|
||||
echo "Downloading image"
|
||||
IMG_FILE_BASENAME=${VERSION}-raspbian-buster-lite.zip
|
||||
wget http://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-${VERSION}/${IMG_FILE_BASENAME}.zip
|
||||
wget http://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-${VERSION}/${IMG_FILE_BASENAME}.zip.sha256
|
||||
IMG_FILE_BASENAME=${VERSION}-raspbian-buster-lite
|
||||
wget http://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-${VERSION_DIR}/${IMG_FILE_BASENAME}.zip
|
||||
wget http://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-${VERSION_DIR}/${IMG_FILE_BASENAME}.zip.sha256
|
||||
|
||||
|
||||
echo "Checksum verification"
|
||||
|
@ -49,17 +53,40 @@ echo $RPI_HOSTNAME > mounted_image/system/etc/hostname
|
|||
touch mounted_image/boot/ssh # startup ssh
|
||||
sed -i "/^#PermitRootLogin/ cPermitRootLogin prohibit-password" mounted_image/system/etc/ssh/sshd_config
|
||||
mkdir -p mounted_image/system/root/.ssh
|
||||
cat $SCRIPT_DIR/public_keys/*.pub > mounted_image/system/root/.ssh/authorized_keys
|
||||
cat $SCRIPT_DIR/*.pub > mounted_image/system/root/.ssh/authorized_keys
|
||||
chmod 700 mounted_image/system/root/.ssh
|
||||
chmod 600 mounted_image/system/root/.ssh/authorized_keys
|
||||
|
||||
echo "Unmounting image"
|
||||
|
||||
if [ -z "$WIFI_PASSWORD" ]
|
||||
then
|
||||
echo "Skipping WIFI setup"
|
||||
else
|
||||
echo "Setting up initial wifi config"
|
||||
/bin/cat <<EOM >mounted_image/boot/wpa_supplicant.conf
|
||||
country=DE
|
||||
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
|
||||
update_config=1
|
||||
|
||||
network={
|
||||
ssid="WLAN"
|
||||
psk="${WIFI_PASSWORD}"
|
||||
}
|
||||
EOM
|
||||
|
||||
fi
|
||||
|
||||
|
||||
echo "Unmounting image and other cleanup"
|
||||
sleep 3 # to prevent "device is busy"
|
||||
umount /dev/loop42p1
|
||||
umount /dev/loop42p2
|
||||
losetup -d /dev/loop42
|
||||
rmdir mounted_image/boot
|
||||
rmdir mounted_image/system
|
||||
|
||||
rmdir mounted_image
|
||||
rm ${IMG_FILE_BASENAME}.zip.sha256
|
||||
chmod a+rw ${IMG_FILE_BASENAME}.img .
|
||||
|
||||
echo ""
|
||||
echo ""
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
|
||||
Instructions from
|
||||
https://www.home-assistant.io/hassio/installation/
|
||||
|
||||
Normally provisioned RPI4
|
||||
|
||||
Preparation
|
||||
```
|
||||
apt-get install -y software-properties-common apparmor-utils apt-transport-https avahi-daemon ca-certificates curl dbus jq network-manager socat
|
||||
systemctl disable ModemManager
|
||||
systemctl stop ModemManager
|
||||
curl -fsSL get.docker.com | sh
|
||||
```
|
||||
|
||||
Install
|
||||
|
||||
```
|
||||
|
||||
curl -sL "https://raw.githubusercontent.com/home-assistant/supervised-installer/master/installer.sh" | bash -s -- -m raspberrypi4
|
||||
|
||||
```
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
- hosts: bedroompi, kitchenpi
|
||||
roles:
|
||||
- pi-standard-setup
|
||||
- pi-squeezelite-custom
|
||||
- pi-shairport
|
||||
- pi-lirc
|
||||
- pi-dhtsensor
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
|
||||
- hosts: all
|
||||
vars:
|
||||
ansible_ssh_pass: raspberry
|
||||
remote_user: pi
|
||||
|
||||
tasks:
|
||||
- name: test
|
||||
debug:
|
||||
msg: Lookup rpi pw {{ lookup('keepass', 'default_rpi_password') }}
|
||||
|
Loading…
Reference in New Issue