add bundle:sdm630_mqtt
This commit is contained in:
parent
f0ebed5dba
commit
01a8d7a6db
4 changed files with 149 additions and 0 deletions
21
bundles/sdm630_mqtt/files/sdm630_printout.service
Normal file
21
bundles/sdm630_mqtt/files/sdm630_printout.service
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
[Unit]
|
||||||
|
Description=SDM630 stats printout
|
||||||
|
Conflicts=getty@tty1.service
|
||||||
|
After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=sdm630_mqtt
|
||||||
|
Group=sdm630_mqtt
|
||||||
|
ExecStart=/opt/sdm630_mqtt/venv/bin/python printout.py /opt/sdm630_mqtt/config.toml
|
||||||
|
WorkingDirectory=/opt/sdm630_mqtt/src
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10
|
||||||
|
StandardInput=tty
|
||||||
|
StandardOutput=tty
|
||||||
|
StandardError=journal
|
||||||
|
TTYPath=/dev/tty1
|
||||||
|
TTYReset=yes
|
||||||
|
TTYVHangup=yes
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
14
bundles/sdm630_mqtt/files/sdm630_to_mqtt.service
Normal file
14
bundles/sdm630_mqtt/files/sdm630_to_mqtt.service
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
[Unit]
|
||||||
|
Description=SDM630-to-MQTT bridge
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=sdm630_mqtt
|
||||||
|
Group=sdm630_mqtt
|
||||||
|
ExecStart=/opt/sdm630_mqtt/venv/bin/python sdm630_mqtt.py /opt/sdm630_mqtt/config.toml
|
||||||
|
WorkingDirectory=/opt/sdm630_mqtt/src
|
||||||
|
Restart=always
|
||||||
|
RestartSec=1
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
76
bundles/sdm630_mqtt/items.py
Normal file
76
bundles/sdm630_mqtt/items.py
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
directories['/opt/sdm630_mqtt/src'] = {}
|
||||||
|
|
||||||
|
git_deploy['/opt/sdm630_mqtt/src'] = {
|
||||||
|
'repo': 'https://git.franzi.business/kunsi/sdm630_mqtt.git',
|
||||||
|
'rev': 'main',
|
||||||
|
'triggers': {
|
||||||
|
'action:sdm630_mqtt_install_deps',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
actions['sdm630_mqtt_create_virtualenv'] = {
|
||||||
|
'command': 'python3 -m virtualenv /opt/sdm630_mqtt/venv',
|
||||||
|
'unless': 'test -x /opt/sdm630_mqtt/venv/bin/python3',
|
||||||
|
'needs': {
|
||||||
|
'directory:/opt/sdm630_mqtt/src',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
actions['sdm630_mqtt_install_deps'] = {
|
||||||
|
'command': 'cd /opt/sdm630_mqtt/src && /opt/sdm630_mqtt/venv/bin/pip install -r requirements.txt',
|
||||||
|
'triggered': True,
|
||||||
|
'needs': {
|
||||||
|
'action:sdm630_mqtt_create_virtualenv',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
users['sdm630_mqtt'] = {
|
||||||
|
'home': '/opt/sdm630_mqtt',
|
||||||
|
}
|
||||||
|
|
||||||
|
files['/opt/sdm630_mqtt/config.toml'] = {
|
||||||
|
'content': repo.libs.faults.dict_as_toml(node.metadata.get('sdm630_mqtt/config')),
|
||||||
|
'triggers': set(),
|
||||||
|
}
|
||||||
|
|
||||||
|
if node.has_bundle('telegraf'):
|
||||||
|
files['/opt/sdm630_mqtt/config.toml']['triggers'].add('svc_systemd:telegraf:restart')
|
||||||
|
git_deploy['/opt/sdm630_mqtt/src']['triggers'].add('svc_systemd:telegraf:restart')
|
||||||
|
|
||||||
|
if node.metadata.get('sdm630_mqtt/enable_stats_collection', True):
|
||||||
|
files['/usr/local/lib/systemd/system/sdm630_to_mqtt.service'] = {
|
||||||
|
'triggers': {
|
||||||
|
'action:systemd-reload',
|
||||||
|
'svc_systemd:sdm630_to_mqtt:restart',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
svc_systemd['sdm630_to_mqtt'] = {
|
||||||
|
'needs': {
|
||||||
|
'git_deploy:/opt/sdm630_mqtt/src',
|
||||||
|
'action:sdm630_mqtt_install_deps',
|
||||||
|
'file:/usr/local/lib/systemd/system/sdm630_to_mqtt.service',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
files['/opt/sdm630_mqtt/config.toml']['triggers'].add('svc_systemd:sdm630_to_mqtt:restart')
|
||||||
|
git_deploy['/opt/sdm630_mqtt/src']['triggers'].add('svc_systemd:sdm630_to_mqtt:restart')
|
||||||
|
|
||||||
|
if node.metadata.get('sdm630_mqtt/enable_local_printout', False):
|
||||||
|
files['/usr/local/lib/systemd/system/sdm630_printout.service'] = {
|
||||||
|
'triggers': {
|
||||||
|
'action:systemd-reload',
|
||||||
|
'svc_systemd:sdm630_printout:restart',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
svc_systemd['sdm630_printout'] = {
|
||||||
|
'needs': {
|
||||||
|
'git_deploy:/opt/sdm630_mqtt/src',
|
||||||
|
'action:sdm630_mqtt_install_deps',
|
||||||
|
'file:/usr/local/lib/systemd/system/sdm630_printout.service',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
files['/opt/sdm630_mqtt/config.toml']['triggers'].add('svc_systemd:sdm630_printout:restart')
|
||||||
|
git_deploy['/opt/sdm630_mqtt/src']['triggers'].add('svc_systemd:sdm630_printout:restart')
|
38
bundles/sdm630_mqtt/metadata.py
Normal file
38
bundles/sdm630_mqtt/metadata.py
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
defaults = {
|
||||||
|
'sdm630_mqtt': {
|
||||||
|
'config': {
|
||||||
|
'modbus': {
|
||||||
|
'host': '127.0.0.1',
|
||||||
|
'port': 501,
|
||||||
|
'unit_id': 1,
|
||||||
|
},
|
||||||
|
'mqtt': {
|
||||||
|
'prefix': 'sdm630',
|
||||||
|
'host': '127.0.0.1',
|
||||||
|
'port': 1883,
|
||||||
|
},
|
||||||
|
'printout': {
|
||||||
|
'title': 'SDM630',
|
||||||
|
},
|
||||||
|
'telegraf': {
|
||||||
|
'identifier': 'unknown',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'telegraf': {
|
||||||
|
'input_plugins': {
|
||||||
|
'execd': {
|
||||||
|
'sdm630_mqtt': {
|
||||||
|
'command': [
|
||||||
|
'/opt/sdm630_mqtt/venv/bin/python',
|
||||||
|
'/opt/sdm630_mqtt/src/telegraf.py',
|
||||||
|
'/opt/sdm630_mqtt/config.toml',
|
||||||
|
],
|
||||||
|
'signal': 'none',
|
||||||
|
'restart_delay': '1s',
|
||||||
|
'data_format': 'influx',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
Loading…
Reference in a new issue