Update smsquitto daemon

This commit is contained in:
denis
2021-04-15 15:12:43 +02:00
parent d21e6fc4e1
commit 7c91e9d4f2
49 changed files with 37183 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
/.venv/
/__pycache__/
+12
View File
@@ -0,0 +1,12 @@
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"
[packages]
paho-mqtt = "*"
[dev-packages]
[requires]
python_version = "3.7"
+28
View File
@@ -0,0 +1,28 @@
{
"_meta": {
"hash": {
"sha256": "47d34de35cffe48275419da22ca30e039500918cb65f5f7367b191fba49faeed"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.7"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.python.org/simple",
"verify_ssl": true
}
]
},
"default": {
"paho-mqtt": {
"hashes": [
"sha256:9feb068e822be7b3a116324e01fb6028eb1d66412bf98595ae72698965cb1cae"
],
"index": "pypi",
"version": "==1.5.1"
}
},
"develop": {}
}
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/bash
/usr/bin/python3 /home/domosquitto/domoticz/scripts/smsquitto.py \
--method=notify --host=$1 --port=$2 --user=$3 --password=$4 --apikey=$5 --text="$6" $7 \
> /dev/null 2>&1 &
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/bash
/usr/bin/python3 /home/domosquitto/domoticz/scripts/smsquitto.py \
--method=sms --host=$1 --port=$2 --user=$3 --password=$4 --apikey=$5 --text="$6" --phone="$7" $8 \
> /dev/null 2>&1 &
+77
View File
@@ -0,0 +1,77 @@
#!/usr/bin/python3
# encoding: utf-8
'''
notify -- termux notification
Send sms or notification to a smartphone
@author: deunix
@contact: deuxnix@e-educ.fr
'''
import os, sys, ssl, json
from argparse import ArgumentParser
import paho.mqtt.publish as publish
CA_CERTS = """
-----BEGIN CERTIFICATE-----
EAYDVQQKDAllLWVkdWMuZnIxDDAKBgNVBAsMA29yZzESMBAGA1UEAwwJZS1lZHVj
LmZyMR0wGwYJKoZIhvcNAQkBFg5yb290QGUtZWR1Yy5mcjAeFw0yMDA2MTUwNzMw
MjVaFw0zMDA2MTMwNzMwMjVaMH4xCzAJBgNVBAYTAkZSMQswCQYDVQQIDAJPQzEN
MAsGA1UEBwwEQUxCSTESMBAGA1UECgwJZS1lZHVjLmZyMQwwCgYDVQQLDANvcmcx
EjAQBgNVBAMMCWUtZWR1Yy5mcjEdMBsGCSqGSIb3DQEJARYOcm9vdEBlLWVkdWMu
ZnIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCesN2Xt6uKezWj55gK
qBxzqyIe06GQqerGXWMQhdP5KiSP1PKRZVBcZzze0A//Qcd/f204CTu1P5Qj9pcG
2LIgGiH5r89j2cyvKDtgbwYT2HdWAJtqnI1d9LWl2RLLaaKijmwJl0rhFdOojxsz
s09sdXq3aSkpYG8f5y166jRPOCusOC+OdnqOJObVUWYI25gQUJ4KYd13oMVmCB90
tsqpjLcWa3y/sZ7ngYJr2EzFDpGv299dqgw+fVuxeOgMvlCllw6mgXenegjyHRZP
9BS5742LIdDsc11BcA4bEW97+M7gZg/s0hPJim5oZqXdYJFZ5VFK7GQuyah3euHw
V97PAgMBAAGjUzBRMB0GA1UdDgQWBBRb1QVCTMLstcT9rClf106cLrK2lTAfBgNV
HSMEGDAWgBRb1QVCTMLstcT9rClf106cLrK2lTAPBgNVHRMBAf8EBTADAQH/MA0G
CSqGSIb3DQEBCwUAA4IBAQALmdJCtU3k5OKYkA3iiriW5NVya7XplmcGMg4KMtRL
E3kb6yS6sk7Msri1YNA/6noWSHAZIDfBmoadrCNm4XB/
-----END CERTIFICATE-----
"""
def publish_message(topic, payload, host='127.0.0.1', port=1883, auth={}, ca_certs=None):
publish.single(topic, payload.encode('utf_8'), qos=0, hostname=host, port=port, auth=auth, \
tls={'ca_certs': ca_certs, 'tls_version': ssl.PROTOCOL_TLSv1_2} if ca_certs else None,)
def main():
try:
parser = ArgumentParser()
parser.add_argument("-H", "--host", dest="host", action="store", type=str, default="broker.emqx.io")
parser.add_argument("-P", "--port", dest="port", action="store", type=int, default=1883)
parser.add_argument("-u", "--user", dest="user", action="store", type=str, default='emqx')
parser.add_argument("-p", "--password", dest="password", action="store", type=str, default='public')
parser.add_argument("-a", "--apikey", dest="apikey", action="store", type=str, required=True)
parser.add_argument("-m", "--method", dest="method", action="store", type=str, default='notify')
parser.add_argument("-s", "--phone", dest="phone", action="store", type=str, default='')
parser.add_argument("-t", "--text", dest="message", action="store", type=str, required=True)
parser.add_argument("--tls", dest="ca_certs", action="store_true", default=False, help="--tls if ca certification")
args = parser.parse_args()
topic = args.apikey + '/pub/' + args.method
payload = { 'msg': args.message };
if args.method=='sms':
payload['mobile'] = args.phone.split(',')
publish_message(
topic,
json.dumps(payload),
host=args.host,
port=args.port,
auth={'username': args.user, 'password': args.password },
ca_certs=CA_CERTS if args.ca_certs else None,
)
return 0
except KeyboardInterrupt:
return 0
except Exception as e:
print("notify error", e)
return 2
if __name__ == "__main__":
sys.exit(main())