Mehrere E-Mail Postfächer auf einem PC auswerten und an Connect senden

  • Nabend Bouni

    Hi. Ich hab die Änderungen gemacht.

    Die Zeilen im alarmparser.py haben nicht ganz gepasst. Die Ergebnisse hab ich dir erstmal per PN geschickt.

    Ich habe nochmal eine "alte" Alarmmail als noch funktionierte als ungelesen gesetzt. Siehe da... die Auswertung funktioniert.
    Nach etwas suchen hab ich dann entdeckt, dass die Leitstelle das chartset von us=ascii auf utf-8 geändert hat. Kann das einen Einfluss haben?

    Meine eigenen Testmails werden auch ausgewertet. Die kommen mit chartset=iso-8859-1.

  • Morgen allerseits,

    Zitat

    Nach etwas suchen hab ich dann entdeckt, dass die Leitstelle das chartset von us=ascii auf utf-8 geändert hat. Kann das einen Einfluss haben?

    Das ist schon mal Löblich von der LST, ASCII ist zwar OK, kann aber keien Umlaute, ISO-8859-1 ist so esotherischer Windows Mist, will man nicht haben, UTF-8 ist der Goldstandard.

    Das was dein Problem auslöst kann davon allerdings nicht verursacht werden, das kann lediglich dazu fügren das aus einem ä ein ä wird oder so, aber nicht so gravierend das gar nichst mehr lesbar ist.

  • Moin. Habe Probleme mit der Auswertung. Hier mein Log:

    imap.gmx.net

  • Schönen Sonntag,

    die skriptlösung finde ich cool. Haben auch schon etwas experimentiert.

    Bei der Emailauswertung ist bei mir noch was faul.

    Die Originale Alarmmails sind später von securAlarmMail welche anscheinend als HTML mit base64 codiert.

    Also habe ich es erstmal mit einer einfachen textmail probiert. Das funktioniert aber nur wenn die Email keine Umlaute enthält.

    Danach im Script ein paar Zeilen ergänzt um die Umlaute zu ersetzen. Danach lief es.

    Nun an die originale Mail als html, leider geht es nicht.
    folgende Fehler:

    2021-08-15 13:40:47.156 - alarmparser [alarmparser.py:41 - decode()] ERROR - <class 'str'>

    2021-08-15 13:40:47.157 - >>>main<<< [__main__.py:41 - run()] ERROR - Fehler in Observer Zwinge aufgetreten - probiere weiter in 1 Sekunde

    Habe es auch schon mit dem Post #60 für verbesserte Fehlerinfo versucht. Leider bekomme ich Syntaxfehler wenn ich in die alarmparser.py den Code einfüge.

    Zur Hilfe habe ich ein paar Print Befehle einführt um mir die Nachricht anzusehen, da sieht das ger nicht schlecht aus. Also nix kryptisches als ich die Umlautersetzung noch nicht drin hatte.

    Scheint ab der AlarmParser.py LOGGER.error(type(msg) was schief zu laufen.

    Ist eventuell die Email zu groß / zu lang?


    Gruß aus Sonnenstein

    • Offizieller Beitrag

    Bouni  Pyrokevin112

    Hi!

    Ich finde die Idee dieses Projekts echt super und bin gerade dabei das Ganze mal aufzubauen und zu testen. Wir haben immerhin 10 einzelne EMs die auswerten. Da würde sich so etwas schon anbieten.

    Habt ihr euch mal Gedanken gemacht, ob es vielleicht funktioniert, das Projekt als eigenes Programm mit einer eigenen Oberfläche zu versehen, so dass auch ein "unerfahrener" PC User es zum Laufen bekommen kann? So dass man nur noch die Maileingänge und Token eingeben muss und ein "patterartiges" Fenster zum Einrichten der Auswerteparameter?


    Wenn ich das Ganze jetzt nach eurer Variante auf meinem Notebook als Test zum Laufen bringe, wie kompliziert ist dann der Umzug auf einen extra PC?

    • Offizieller Beitrag

    Sooo, läuft soweit. Nun kommen die Fragen... :D

    Lassen sich weitere Variablen so einfach mit einbinden?

    Ich habe mal welche vorbereitet. Die Frage ist nur, ob noch weiteres beachtet werden muss?

    Code
                    {"key": "sonst. Ortsang.", "value": data.get("moreadress")},
                    {"key": "Querstraße", "value": data.get("crossstreet")},
                    {"key": "Name", "value": data.get("name")},
                    {"key": "Hinweise", "value": data.get("note")},
                    {"key": "Hydranten", "value": data.get("hydrant")},
                    {"key": "AAO", "value": data.get("aao")},

    Klappt das so oder mache ich einen Denkfehler? Bei AAO mit \z, da die AAO sich über mehrere Zeilen zieht

  • Hallo zusammen,

    ihr habt vielleicht schon bemerkt das ich nicht mehr so oft hier bin um zu helfen wie auch schon, die Zeit ist einfach zu knapp :-/

    Tut mir bitte einen Gefallen und stellt eure Frage hier im Thread und nicht als PN, ich will ungern die selben Fragen immer wieder als PMN beantworten.

    Wenn ich das hier im Thread tue haben später andere auch was davon ;)

    FwSonnenstein_Jac alarmparser [alarmparser.py:41 - decode()] ERROR - <class 'str'> Das deutet drauf hin das erwartet wird das der Input als z.B. UTF-8 codierter Text daherkommt und mittels decode() dekodiert werden soll, dies aber weil entweder das encoding falsch ist oder der Text schon ein String ist nicht dekodiert werden kann. E-Mails die nicht reine Textmails sind sind mega Sch*** zu behandeln weil es dutzende encodings gibt ...

    FFBuxZug1

    einfach eine weitere Zeile im yaml einfügen:

    Code
      - var: NeueBezeichnung
        regex: 'NeueBezeichnung (.*)\n'

    im Code dann:

    Code
     {"key": "NeueBezeichnung", "value": data.get("NeueBezeichnung")},

    Das sollte eigentlich funktionieren (Keine Gewähr ;-))

  • Hallo in die Runde,

    habe noch probiert, aber noch keine funktionfähige Lösung.

    Die E-Mail kommt anscheinend auch als utf-8.

    Der Script liest auch den Text-Teil der Email aus. Diesen lasse ich mir zum Test per print (msg) auch anzeigen. Sieht auch ganz gut aus, keine Sonderzeichen oder ähnlich. Also bevor er mit msg = msg.get_payload(decode=True) und msg = msg.decode() verarbeitet wird.

    FwSonnenstein_Jac alarmparser [alarmparser.py:41 - decode()] ERROR - <class 'str'> Das deutet drauf hin das erwartet wird das der Input als z.B. UTF-8 codierter Text daherkommt und mittels decode() dekodiert werden soll, dies aber weil entweder das encoding falsch ist oder der Text schon ein String ist nicht dekodiert werden kann.

    Für die beiden Lösungsansätze würde ich das encoding erstmal ausschließen und vermute das es schon ein String ist. Habe leider keine Ahnung an welcher Stelle ich das prüfen kann und wie die "Verarbeitung" weitergeht das der Parser mit regex die Werte findet.

  • Ich glaube ich habe es, bzw es geht erstmal.

    den Fehler "decode()] ERROR - <class 'str'>" erhalte ich immer noch. Aber die Auswertung funktioniert und wird über die API an Connect übermittelt.

    Habe die Codezeile auskommentiert zum Testen.

    msg = msg.get_payload(decode=True)

    msg = msg.decode('utf8')

    Da hatte ich zwar schomal probiert, aber ohne Erfolg. Da hatte ich aber noch ein Sonderzeichen in der Email versteckt warum es anscheinend nicht ging.

    Ich muss alle Sonderzeichen ersätzen, sonst läuft die Auswertung nicht.

    Leider werden von der Leitstelle in den Text auch mal was anderes eingefügt als nur ä,ö,ü,ß usw.

    msg = msg.replace('»', 'Richtung')

    Will noch schauen wie ich die GPS Positionen per API noch übergeben kann. Die bekommen wir auch mit gesendet. Wenn der Einsatzort keine direkte Adresse, wie bei Landstraßen zwischen den Orten oder brennende Landmaschinen in der Feldflur ist,

    Wenn habe würde ich natürlich das Endprodukt posten.

  • FwSonnenstein_Jac super Arbeit. Ich habe es auch schon so oft probiert mit einer Secur.Alarmmail darüber auszuwerten. Keine Chance.

    So richtig konnte mir auch keiner helfen und hab es dann aufgegeben. Dank dir hab ich wieder die Hoffnung, bald darüber Auszuwerten und über API Alarmieren zu lassen 👍🏻

    Administrator in 5 Ortswehren im Landkreis Harz

    Mitglied in der Feuerwehr Welterbestadt Quedlinburg

    Ofw Gernrode

  • Hallo zusammen,

    erstmal vielen Dank für die Bereitstellung des Tools.

    Kann ich mit dem Tool auch eine Mail zerlegen deren Inhalt wie folgt aussieht:

    1234567/B2.6 Gebäudebrand/Musterstadt/Musterstraße 2/ /Musterobjekt/Rauch aus Fenster/19:56:00

    also

    RIC/Stichwort/Ort/Straße + Hausnummer/Straßenabschnitt (wenn vorhanden)/Objekt/Bemerkung/Zeit


    Vielen Dank und viele Grüße

    Marco

    Einmal editiert, zuletzt von marwo (9. November 2021 um 08:58)

  • Ich habe ein Problem mit dem Parser und einer Fehlermeldung im LOG:


    2022-03-09 13:36:11,843.843 - mailcheck - INFO - 1 neue E-Mails

    2022-03-09 13:36:11,910.910 - >>>main<<< - INFO - Fetching the alarmmail from ffw-friesau@saalburg-ebersdorf.de took 0.362925 seconds

    2022-03-09 13:36:11,911.911 - alarmparser - ERROR - <class 'str'>

    2022-03-09 13:36:11,914.914 - >>>main<<< - ERROR - Fehler in Observer Feuerwehr Friesau aufgetreten - probiere weiter in 1 Sekunde

    Was kann hier der Fehler sein?

    Im Anhang habe ich meine alarmparser und die main angehangen.

    Dank für Eure Hilfe!

  • So ich muss es nochmal aufkurbeln 😅.

    Geht mittlerweile auch die Auswertung von secur.CAD Alarmmails? Hat dies einer jetzt hin bekommen, ich selbst hab es noch nicht nochmal ausprobiert.

    Grund für die Nachfrage ist, dass die Gemeinde jetzt für alle Ortswehren eine Lösung sucht, wo es nicht erforderlich ist dort einen Rechner zu stationieren für die Auswertung. Quasi eine Serverseitige Auswertung mit Auswertung (wie bei Divera mit dem Alarmserver, wo die Mails dort eingehen und die Apps alarmieren). Die Standorte, die jedoch schon Feuersoftware haben wollen nicht wechseln

    Administrator in 5 Ortswehren im Landkreis Harz

    Mitglied in der Feuerwehr Welterbestadt Quedlinburg

    Ofw Gernrode