initial comit
This commit is contained in:
commit
257b6f213b
|
@ -0,0 +1,115 @@
|
||||||
|
# Antlr4
|
||||||
|
*.interp
|
||||||
|
*.tokens
|
||||||
|
|
||||||
|
# Byte-compiled / optimized / DLL files
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
|
||||||
|
# C extensions
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Distribution / packaging
|
||||||
|
.Python
|
||||||
|
build/
|
||||||
|
develop-eggs/
|
||||||
|
dist/
|
||||||
|
downloads/
|
||||||
|
eggs/
|
||||||
|
.eggs/
|
||||||
|
lib/
|
||||||
|
lib64/
|
||||||
|
parts/
|
||||||
|
sdist/
|
||||||
|
var/
|
||||||
|
wheels/
|
||||||
|
*.egg-info/
|
||||||
|
.installed.cfg
|
||||||
|
*.egg
|
||||||
|
MANIFEST
|
||||||
|
|
||||||
|
# PyInstaller
|
||||||
|
# Usually these files are written by a python script from a template
|
||||||
|
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||||
|
*.manifest
|
||||||
|
*.spec
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
htmlcov/
|
||||||
|
.tox/
|
||||||
|
.nox/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
.cache
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*.cover
|
||||||
|
.hypothesis/
|
||||||
|
.pytest_cache/
|
||||||
|
|
||||||
|
# Translations
|
||||||
|
*.mo
|
||||||
|
*.pot
|
||||||
|
|
||||||
|
# Django stuff:
|
||||||
|
*.log
|
||||||
|
local_settings.py
|
||||||
|
db.sqlite3
|
||||||
|
|
||||||
|
# Flask stuff:
|
||||||
|
instance/
|
||||||
|
.webassets-cache
|
||||||
|
|
||||||
|
# Scrapy stuff:
|
||||||
|
.scrapy
|
||||||
|
|
||||||
|
# Sphinx documentation
|
||||||
|
docs/_build/
|
||||||
|
|
||||||
|
# PyBuilder
|
||||||
|
target/
|
||||||
|
|
||||||
|
# Jupyter Notebook
|
||||||
|
.ipynb_checkpoints
|
||||||
|
|
||||||
|
# IPython
|
||||||
|
profile_default/
|
||||||
|
ipython_config.py
|
||||||
|
|
||||||
|
# pyenv
|
||||||
|
.python-version
|
||||||
|
|
||||||
|
# celery beat schedule file
|
||||||
|
celerybeat-schedule
|
||||||
|
|
||||||
|
# SageMath parsed files
|
||||||
|
*.sage.py
|
||||||
|
|
||||||
|
# Environments
|
||||||
|
.env
|
||||||
|
.venv
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
env.bak/
|
||||||
|
venv.bak/
|
||||||
|
|
||||||
|
# Spyder project settings
|
||||||
|
.spyderproject
|
||||||
|
.spyproject
|
||||||
|
|
||||||
|
# Rope project settings
|
||||||
|
.ropeproject
|
||||||
|
|
||||||
|
# mkdocs documentation
|
||||||
|
/site
|
||||||
|
|
||||||
|
# mypy
|
||||||
|
.mypy_cache/
|
||||||
|
.dmypy.json
|
||||||
|
dmypy.json
|
|
@ -0,0 +1,3 @@
|
||||||
|
[submodule "baconscript"]
|
||||||
|
path = baconscript
|
||||||
|
url = https://git.company235.com/kevin/baconscript.git
|
|
@ -0,0 +1,25 @@
|
||||||
|
The MIT License (MIT)
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Copyright © `2019` `Kevin Matz (kevin@company235.com)`
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation
|
||||||
|
files (the “Software”), to deal in the Software without
|
||||||
|
restriction, including without limitation the rights to use,
|
||||||
|
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -0,0 +1,54 @@
|
||||||
|
# onsetswitch
|
||||||
|
Use buttons connected to a Rasberry Pi GPIO to trigger Hog 4 comment macros.
|
||||||
|
|
||||||
|
This readme assumes that you have:
|
||||||
|
1. a working and updated Rasberry Pi,
|
||||||
|
1. with ssh access already set up,
|
||||||
|
1. and a static IP address on HogNet.
|
||||||
|
|
||||||
|
Beginner users will also want:
|
||||||
|
* Internet access on HogNet during setup.
|
||||||
|
|
||||||
|
## Installing
|
||||||
|
|
||||||
|
```
|
||||||
|
cd /home/pi
|
||||||
|
git clone https://git.company235.com/kevin/onsetswitch.git
|
||||||
|
cd onsetswitch
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuring
|
||||||
|
|
||||||
|
### Input
|
||||||
|
Connect one side of the button to ground, the other to a GPIO pin.
|
||||||
|
|
||||||
|
![](https://gpiozero.readthedocs.io/en/stable/_images/button_bb.svg)
|
||||||
|
|
||||||
|
Configure the buttons:
|
||||||
|
```
|
||||||
|
nano buttons.cfg
|
||||||
|
```
|
||||||
|
|
||||||
|
### Output
|
||||||
|
|
||||||
|
Configure the Hog4 OSC server:
|
||||||
|
```
|
||||||
|
nano server.cfg
|
||||||
|
```
|
||||||
|
|
||||||
|
## Enabling on Boot
|
||||||
|
Link the onsetswitch service file to systemd:
|
||||||
|
```
|
||||||
|
sudo ln -s buttons.service /lib/systemd/system/buttons.service
|
||||||
|
```
|
||||||
|
|
||||||
|
Enable the service at startup:
|
||||||
|
```
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable buttons.service
|
||||||
|
```
|
||||||
|
|
||||||
|
Reboot the Rasberry Pi:
|
||||||
|
```
|
||||||
|
sudo reboot
|
||||||
|
```
|
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit c1a7ad48b2ea848f59717832f938a3687b88e781
|
|
@ -0,0 +1,51 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""buttond.py: Watch a Rasberry Pi GPIO button. Exec Hog4 comment macros."""
|
||||||
|
|
||||||
|
__author__ = "Kevin Matz"
|
||||||
|
__copyright__ = "Copyright 2019, Company 235, LLC"
|
||||||
|
__credits__ = ["Kevin Matz"]
|
||||||
|
|
||||||
|
__license__ = "MIT"
|
||||||
|
__version__ = "3.9"
|
||||||
|
__maintainer__ = "Kevin Matz"
|
||||||
|
__email__ = "kevin@company235.com"
|
||||||
|
|
||||||
|
__status__ = "Prototype"
|
||||||
|
|
||||||
|
import configparser
|
||||||
|
from baconscript.comment import comment
|
||||||
|
from gpiozero import Button, GPIODeviceError
|
||||||
|
from signal import pause
|
||||||
|
|
||||||
|
# use mock pins when not working on Pi hardware
|
||||||
|
# from gpiozero.pins.mock import MockFactory
|
||||||
|
# from gpiozero import Device
|
||||||
|
# Device.pin_factory = MockFactory()
|
||||||
|
|
||||||
|
# empty button directory
|
||||||
|
_buttons = {}
|
||||||
|
|
||||||
|
# open config file
|
||||||
|
config = configparser.ConfigParser(allow_no_value=False)
|
||||||
|
config.read('buttons.cfg')
|
||||||
|
# set up each buttons
|
||||||
|
for b in config.get('button', 'names').split(','):
|
||||||
|
try:
|
||||||
|
# move to config section
|
||||||
|
c = config[b]
|
||||||
|
# read macro values
|
||||||
|
closed = c.get('close', None)
|
||||||
|
opened = c.get('open', None)
|
||||||
|
# set up button on pin
|
||||||
|
_buttons[b] = Button(c.getint("pin", None))
|
||||||
|
# connect button callbacks to anonymous functions
|
||||||
|
_buttons[b].when_pressed = lambda: comment(closed)
|
||||||
|
_buttons[b].when_released = lambda: comment(opened)
|
||||||
|
except (KeyError, GPIODeviceError) as e:
|
||||||
|
print('Error configuring button', b, e)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
pause()
|
|
@ -0,0 +1,17 @@
|
||||||
|
[button]
|
||||||
|
names=switch1,switch2,switch3
|
||||||
|
|
||||||
|
[switch1]
|
||||||
|
pin: 4
|
||||||
|
close: "gm21/2"
|
||||||
|
open: "gm21/1"
|
||||||
|
|
||||||
|
[switch2]
|
||||||
|
pin: 5
|
||||||
|
close: "gm22/2"
|
||||||
|
open: "gm22/1"
|
||||||
|
|
||||||
|
[switch3]
|
||||||
|
pin: 6
|
||||||
|
close: "gm23/2"
|
||||||
|
open: "gm23/1"
|
|
@ -0,0 +1,10 @@
|
||||||
|
[Unit]
|
||||||
|
Description=OSC Button Watcher
|
||||||
|
After=multi-user.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=idle
|
||||||
|
ExecStart=/usr/bin/python3 /home/pi/onsetswitch/buttond.py
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1 @@
|
||||||
|
baconscript/server.cfg
|
Loading…
Reference in New Issue