Compare commits

...

3 Commits

Author SHA1 Message Date
3ea64ca768 Add setup instructions 2022-11-13 19:48:26 -07:00
1e87df0b7a Change broker's IP address 2022-11-14 02:11:43 +00:00
7d5d68e29c Increase cooldown 2022-11-14 02:11:24 +00:00
2 changed files with 58 additions and 2 deletions

View File

@@ -2,8 +2,64 @@
This script plays a fake dog bark through speakers to scare people away from your house.
## Setup
Set up the Pi:
```
$ sudo usermod -aG audio tanner
$ sudo apt update
$ sudo apt install python3 python3-pip python3-virtualenv libsdl2-mixer-2.0-0 supervisor
```
Install woof:
```
$ git clone https://git.tannercollin.com/tanner/woof.git
$ cd woof/
$ virtualenv -p python3 env
$ . env/bin/activate
(env) $ pip install -r requirements.txt
```
Run manually to test it:
```
$ . env/bin/activate
(env) $ python main.py
```
Ignore "(snd_pcm_recover) underrun occurred" errors.
To start automatically, create `/etc/supervisor/conf.d/woof.conf`:
```
[program:woof]
user=tanner
directory=/home/tanner/woof
command=/home/tanner/woof/env/bin/python -u main.py
stopasgroup=true
stopsignal=INT
autostart=true
autorestart=true
stderr_logfile=/dev/null
#stderr_logfile_maxbytes=10MB
stdout_logfile=/var/log/woof.log
stdout_logfile_maxbytes=10MB
```
Apply changes:
```
$ sudo supervisorctl reread; sudo supervisorctl reload
$ sudo supervisorctl status
$ tail -f /var/log/woof.log
```
## License
This program is free and open-source software licensed under the GNU Affero General Public License. Please see the `LICENSE` file for details.
That means you have the right to study, change, and distribute the software and source code to anyone and for any purpose. You deserve these rights.

View File

@@ -43,7 +43,7 @@ async def play_sound(filename):
async def barkbark(sound):
global COOLDOWN
if time.time() - COOLDOWN < 15.0:
if time.time() - COOLDOWN < 20.0:
logging.info('Cooldown skipping.')
return
COOLDOWN = time.time()
@@ -84,7 +84,7 @@ async def process_mqtt(message):
async def fetch_mqtt():
await asyncio.sleep(3)
async with Client('192.168.0.100') as client:
async with Client('192.168.0.106') as client:
async with client.filtered_messages('iot/cameras') as messages:
await client.subscribe('#')
async for message in messages: