Send alarm via api
This commit is contained in:
parent
521c763ae9
commit
e3e6dc43d0
@ -4,8 +4,4 @@ EMAIL_PASSWORD=
|
|||||||
MAILBOX=
|
MAILBOX=
|
||||||
CHECK_INTERVAL=
|
CHECK_INTERVAL=
|
||||||
SAVE_FOLDER=
|
SAVE_FOLDER=
|
||||||
SMTP_SERVER=
|
DRAEGER_API_KEY=
|
||||||
SMTP_PORT=
|
|
||||||
SMTP_ACCOUNT=
|
|
||||||
SMTP_PASSWORD=
|
|
||||||
TO_EMAIL=
|
|
80
main.py
80
main.py
@ -1,16 +1,11 @@
|
|||||||
REGEX = r'SDS_ILS_BEGINN(#D#Leitstelle:\s+)(.*)(m|o|i)(RTW|NAW|KTW) (.*) \$GPSN(.*)E(.*)SDS_ILS_ENDE'
|
REGEX = r'SDS_ILS_BEGINN(#D#Leitstelle:\s+)(.*)(m|o|i)(RTW|NAW|KTW) (.*) \$GPSN(.*)E(.*)SDS_ILS_ENDE'
|
||||||
DRAEGER_TEMPLATE = "{EINSATZNUMMER}#{EINSATZSTICHWORT}#{KLARTEXT}#{ERGAENZUNG}#{ERWEITERUNG}#{SONDERINFO}#{GEO_LON}#{GEO_LAT}#{EINSATZORT}#{ORTSTEIL}#{STRASSE}#{HAUSNUMMER}#{OBJEKTNAME}#{GMANUMMER}#{SACHVERHALT}#{EINSATZKRÄFTE}#{EINSATZMITTEL}#{WACHEN}#{FAHRZEUGE}#{RICs}#{WINDRICHTUNG}#{WINDGESCHWINDIGKEIT}#{ALARMAUSLÖSUNG}#{MELDERNAME}#{MELDERINFO}#"
|
|
||||||
|
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
import datetime
|
|
||||||
from email.mime.text import MIMEText
|
|
||||||
from email.utils import formatdate
|
|
||||||
import re
|
import re
|
||||||
|
import requests
|
||||||
import imaplib
|
import imaplib
|
||||||
import email
|
import email
|
||||||
from email.header import decode_header
|
from email.header import decode_header
|
||||||
import smtplib
|
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
import PyPDF2
|
import PyPDF2
|
||||||
@ -24,11 +19,7 @@ EMAIL_PASSWORD = os.environ.get("EMAIL_PASSWORD", default=None)
|
|||||||
MAILBOX = os.environ.get("MAILBOX", default=None)
|
MAILBOX = os.environ.get("MAILBOX", default=None)
|
||||||
CHECK_INTERVAL = int(os.environ.get("CHECK_INTERVAL", default=None)) # in Sekunden
|
CHECK_INTERVAL = int(os.environ.get("CHECK_INTERVAL", default=None)) # in Sekunden
|
||||||
SAVE_FOLDER = os.environ.get("SAVE_FOLDER", default=None)
|
SAVE_FOLDER = os.environ.get("SAVE_FOLDER", default=None)
|
||||||
SMTP_SERVER = os.environ.get("SMTP_SERVER", default=None)
|
DRAEGER_API_KEY = os.environ.get("DRAEGER_API_KEY", default=None)
|
||||||
SMTP_PORT = int(os.environ.get("SMTP_PORT", default=None))
|
|
||||||
SMTP_ACCOUNT = os.environ.get("SMTP_ACCOUNT", default=None)
|
|
||||||
SMTP_PASSWORD = os.environ.get("SMTP_PASSWORD", default=None)
|
|
||||||
TO_EMAIL = os.environ.get("TO_EMAIL", default=None)
|
|
||||||
|
|
||||||
def read_pdf(file_path):
|
def read_pdf(file_path):
|
||||||
with open(file_path, 'rb') as file:
|
with open(file_path, 'rb') as file:
|
||||||
@ -39,62 +30,18 @@ def read_pdf(file_path):
|
|||||||
|
|
||||||
return text
|
return text
|
||||||
|
|
||||||
def get_draeger_string(text):
|
def get_draeger_json(text):
|
||||||
match = re.findall(REGEX, text.replace("\n", ""))
|
match = re.findall(REGEX, text.replace("\n", ""))
|
||||||
|
|
||||||
data = {}
|
data = {}
|
||||||
data['EINSATZNUMMER'] = "NULL"
|
data["apiKey"] = DRAEGER_API_KEY
|
||||||
data['EINSATZSTICHWORT'] = "Wachalarm"
|
data["alertingKeyword"] = "Wachalarm"
|
||||||
data['KLARTEXT'] = match[0][1] + " " + match[0][4]
|
data["alertingKeywordText"] = match[0][1] + " " + match[0][4]
|
||||||
data['ERGAENZUNG'] = "NULL"
|
data["lat"] = match[0][5][:2] + '.' + match[0][5][2:]
|
||||||
data['ERWEITERUNG'] = "NULL"
|
data["lon"] = match[0][6][:2] + '.' + match[0][6][2:]
|
||||||
data['SONDERINFO'] = "NULL"
|
|
||||||
data['GEO_LON'] = match[0][6][:2] + '.' + match[0][6][2:]
|
|
||||||
data['GEO_LAT'] = match[0][5][:2] + '.' + match[0][5][2:]
|
|
||||||
data['EINSATZORT'] = "NULL"
|
|
||||||
data['ORTSTEIL'] = "NULL"
|
|
||||||
data['STRASSE'] = "NULL"
|
|
||||||
data['HAUSNUMMER'] = "NULL"
|
|
||||||
data['OBJEKTNAME'] = "NULL"
|
|
||||||
data['GMANUMMER'] = "NULL"
|
|
||||||
data['SACHVERHALT'] = "NULL"
|
|
||||||
data['EINSATZKRÄFTE'] = "NULL"
|
|
||||||
data['EINSATZMITTEL'] = "NULL"
|
|
||||||
data['WACHEN'] = "NULL"
|
|
||||||
data['FAHRZEUGE'] = "NULL"
|
|
||||||
data['RICs'] = "NULL"
|
|
||||||
data['WINDRICHTUNG'] = "NULL"
|
|
||||||
data['WINDGESCHWINDIGKEIT'] = "NULL"
|
|
||||||
data['ALARMAUSLÖSUNG'] = "NULL"
|
|
||||||
data['MELDERNAME'] = "NULL"
|
|
||||||
data['MELDERINFO'] = "NULL"
|
|
||||||
|
|
||||||
return DRAEGER_TEMPLATE.format(**data)
|
print(data)
|
||||||
|
return data
|
||||||
def build_mail(subject, body):
|
|
||||||
msg = MIMEText(body)
|
|
||||||
msg['From'] = SMTP_ACCOUNT
|
|
||||||
msg['To'] = TO_EMAIL
|
|
||||||
msg['Subject'] = subject
|
|
||||||
msg['Message-ID'] = email.utils.make_msgid(domain='bez-stuttgart.dlrg.de')
|
|
||||||
|
|
||||||
current_time = datetime.datetime.now()
|
|
||||||
msg['Date'] = formatdate(timeval=current_time.timestamp())
|
|
||||||
|
|
||||||
msg['MIME-Version'] = "1.0"
|
|
||||||
msg['X-Sender'] = SMTP_ACCOUNT
|
|
||||||
|
|
||||||
return msg
|
|
||||||
|
|
||||||
def send_email(msg):
|
|
||||||
try:
|
|
||||||
with smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT) as server:
|
|
||||||
server.set_debuglevel(1)
|
|
||||||
server.login(SMTP_ACCOUNT, SMTP_PASSWORD)
|
|
||||||
server.sendmail(SMTP_ACCOUNT, TO_EMAIL, msg.as_string())
|
|
||||||
print('Email sent successfully')
|
|
||||||
except Exception as e:
|
|
||||||
print(f'Failed to send email: {e}')
|
|
||||||
|
|
||||||
def check_email():
|
def check_email():
|
||||||
try:
|
try:
|
||||||
@ -136,10 +83,11 @@ def check_email():
|
|||||||
|
|
||||||
if filename.endswith('.pdf'):
|
if filename.endswith('.pdf'):
|
||||||
pdf_text = read_pdf(filepath)
|
pdf_text = read_pdf(filepath)
|
||||||
draeger_text = get_draeger_string(pdf_text)
|
|
||||||
mail = build_mail('Test', draeger_text)
|
|
||||||
|
|
||||||
send_email(mail)
|
r = requests.post('https://einsatzmeldesystem.de/ems/inbound/deployment/universal/', json=get_draeger_json(pdf_text))
|
||||||
|
|
||||||
|
print(r.status_code)
|
||||||
|
print(r.json())
|
||||||
mail.logout()
|
mail.logout()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f'Fehler: {e}')
|
print(f'Fehler: {e}')
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
python-dotenv
|
python-dotenv
|
||||||
PyPDF2
|
PyPDF2
|
||||||
|
requests
|
Loading…
Reference in New Issue
Block a user