diff --git a/config/config.template.ini b/config/config.template.ini index 3be9c60..ba55ef3 100644 --- a/config/config.template.ini +++ b/config/config.template.ini @@ -126,6 +126,7 @@ BosMon = 0 firEmergency = 0 jsonSocket = 0 notifyMyAndroid = 0 +Sms77 = 0 # for developing template-module template = 0 @@ -301,6 +302,24 @@ phonenumber1 = 0160321654987 # ! DO NOT USE ANY UMLAUT ! text1 = Rueckruf Leitstelle! + +[Sms77] +# SMS77 configuration +# Login Username +user = + +# Password or API Key +password = + +# Receiver singlenumber or groupname from adressbook +to = + +# Sender number or name +from = + +# Type of Message (see https://www.sms77.de/funktionen/smstypen and https://www.sms77.de/funktionen/http-api) +type = quality + ##################### ##### Not ready yet # ##################### diff --git a/plugins/Sms77/Sms77.py b/plugins/Sms77/Sms77.py new file mode 100644 index 0000000..22e3f54 --- /dev/null +++ b/plugins/Sms77/Sms77.py @@ -0,0 +1,110 @@ +#!/usr/bin/python +# -*- coding: cp1252 -*- + +""" +SMS77-Plugin to send FMS-, ZVEI- and POCSAG - messages to SMS77 + +@author: Ricardo Krippner + +@requires: SMS77-Configuration has to be set in the config.ini +""" + +import time +import logging # Global logger +import httplib #for the HTTP request +import urllib +from includes import globals # Global variables + +from includes.helper import timeHandler +from includes.helper import configHandler + +## +# +# onLoad (init) function of plugin +# will be called one time by the pluginLoader on start +# +def onLoad(): + """ + While loading the plugins by pluginLoader.loadPlugins() + this onLoad() routine is called one time for initialize the plugin + + @requires: nothing + + @return: nothing + """ + # nothing to do for this plugin + return + + +## +# +# Main function of SMS77-plugin +# will be called by the alarmHandler +# +def run(typ,freq,data): + """ + This function is the implementation of the Sms77-Plugin. + It will send the data to Sms77 API + + @type typ: string (FMS|ZVEI|POC) + @param typ: Typ of the dataset + @type data: map of data (structure see interface.txt) + @param data: Contains the parameter + @type freq: string + @keyword freq: frequency of the SDR Stick + + @requires: Sms77-Configuration has to be set in the config.ini + + @return: nothing + """ + try: + if configHandler.checkConfig("Sms77"): #read and debug the config + + try: + + # + # Sms77-Request + # + logging.debug("send Sms77 %s", typ) + + conn = httplib.HTTPSConnection("gateway.sms77.de:443") + conn.request("POST", "", + urllib.urlencode({ + "u": globals.config.get("Sms77", "user"), + "p": globals.config.get("Sms77", "password"), + "to": globals.config.get("Sms77", "to"), + "from": globals.config.get("Sms77", "from"), + "type": globals.config.get("Sms77", "type"), + "text": data["description"]+"
"+data["msg"].replace(";", "
") + }),{"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}) + + except: + logging.error("cannot send SMS77 request") + logging.debug("cannot send SMS77 request", exc_info=True) + return + + else: + try: + # + # check Sms77-Response + # + response = conn.getresponse() + if str(response.status) == "200": #Check Sms77 Response and print a Log or Error + logging.debug("SMS77 response: %s - %s" , str(response.status), str(response.reason)) + else: + logging.warning("SMS77 response: %s - %s" , str(response.status), str(response.reason)) + except: #otherwise + logging.error("cannot get SMS77 response") + logging.debug("cannot get SMS77 response", exc_info=True) + return + + finally: + logging.debug("close Sms77-Connection") + try: + request.close() + except: + pass + + except: + logging.error("unknown error") + logging.debug("unknown error", exc_info=True)