Do not repeat if a SMS error; other fixes

This commit is contained in:
root 2019-05-12 23:50:00 +02:00
parent d7f9b7ae71
commit ee8e997dff
3 changed files with 40 additions and 19 deletions

View file

@ -22,7 +22,7 @@ def main():
logfile = "/opt/sms/sms.log" logfile = "/opt/sms/sms.log"
FORMAT = '%(asctime)-15s %(message)s' FORMAT = '%(asctime)-15s %(message)s'
logging.basicConfig(format=FORMAT,filename=logfile,level=10) logging.basicConfig(format=FORMAT,filename=logfile,level=10)
logger = logging.getLogger('observiumsms') logger = logging.getLogger('icingasms')
# check param # check param
smsrcpt = os.environ.get('USERMOBILE') smsrcpt = os.environ.get('USERMOBILE')
@ -43,6 +43,8 @@ def main():
try: try:
# Contact ModemManager, unlock SIM and send SMS to emergency numbers # Contact ModemManager, unlock SIM and send SMS to emergency numbers
sms_functions.send_sms([ smsrcpt ], smsstring) sms_functions.send_sms([ smsrcpt ], smsstring)
except sms_functions.SIMError as err:
logger.exception('SIM Error when sending SMS')
except sms_functions.ModemManagerError as err: except sms_functions.ModemManagerError as err:
logger.error('Error when sending SMS: {0}'.format(e.value)) logger.error('Error when sending SMS: {0}'.format(e.value))
else: else:

View file

@ -1,9 +1,11 @@
#!/usr/bin/python3 #!/usr/bin/python3
import logging import logging
import time
import os import os
from pydbus import SystemBus from pydbus import SystemBus
from gi.repository import GLib from gi.repository import GLib
from datetime import datetime
import sms_functions import sms_functions
def assemble_sms(): def assemble_sms():
@ -13,15 +15,39 @@ def assemble_sms():
str_list.append("{}".format(os.environ.get('OBSERVIUM_DURATION'))) str_list.append("{}".format(os.environ.get('OBSERVIUM_DURATION')))
return ''.join(str_list) return ''.join(str_list)
# Setup logging def main():
logfile = "/opt/sms/sms.log" # Setup logging
FORMAT = '%(asctime)-15s %(message)s' logfile = "/opt/sms/sms.log"
logging.basicConfig(format=FORMAT,filename=logfile,level=10) FORMAT = '%(asctime)-15s %(message)s'
logger = logging.getLogger('observiumsms') logging.basicConfig(format=FORMAT,filename=logfile,level=10)
logger = logging.getLogger('observiumsms')
# check param
smsrcpt = os.environ.get('USERMOBILE')
if not smsrcpt:
logger.error('No SMS number given')
raise Exception('No SMS number given for message')
# Assemble SMS
smsstring = assemble_sms()
logger.info("Sending SMS: %s", smsstring)
success = False
retries = 0
max_retries = 3
while not success and retries < max_retries:
retries += 1
try:
# Contact ModemManager, unlock SIM and send SMS to emergency numbers
sms_functions.send_sms([ smsrcpt ], smsstring)
except sms_functions.SIMError as err:
logger.exception('SIM Error when sending SMS')
except sms_functions.ModemManagerError as err:
logger.error('Error when sending SMS: {0}'.format(e.value))
time.sleep(6)
else:
success = True
# Assemble SMS if __name__ == "__main__":
smsstring = assemble_sms() main()
logger.info("Sending SMS: %s", smsstring)
# Contact ModemManager, unlock SIM and send SMS to emergency numbers
sms_functions.send_sms(, smsstring)

View file

@ -24,13 +24,6 @@ class SIMError(ModemManagerError):
def __str__(self): def __str__(self):
return repr(self.value) return repr(self.value)
def assemble_sms():
str_list = []
str_list.append("Observium {}\n".format(os.environ.get('OBSERVIUM_TITLE')))
str_list.append("{} [{}]\n".format(os.environ.get('OBSERVIUM_ENTITY_NAME'), os.environ.get('OBSERVIUM_ENTITY_DESCRIPTION')))
str_list.append("{}".format(os.environ.get('OBSERVIUM_DURATION')))
return ''.join(str_list)
def get_modem(): def get_modem():
# Retry for 5 seconds and give the modems time # Retry for 5 seconds and give the modems time
retries = 0 retries = 0