Bei uns ebenfalls das gleiche Problem. Gäbe es eine möglichkeit die alte Version wieder zu aktivieren, bis es ein Workaround gibt ohne den kompletten Monitor neu aufsetzen zu müssen?
Beiträge von EssalG
-
-
Leider besteht das Problem immer noch, kann vielleicht einer der Entwickler weiterhelfen?
-
Mich wundert das ganze auch. Bei meinem Smartphone läuft es auch ohne Probleme, direkt nach dem Anmelden eines Zweitprofils kommt die Verfügbarkeit für den zweiten Standort. Ist aber Android 11 bei mir.
-
Moin,
einer unserer Nutzer nutzt derzeit zwei Profile in der EinsatzApp. Er kann jedoch immer nur bei einem Profil die Verfügbarkeit ändern.
Ist er mit Profil 1 angemeldet und fügt Profil 2 hinzu, kann er nur bei Profil 1 die Verfügbarkeit ändern. Ist er bei Profil 2 angemeldet und fügt dann Profil 1 hinzu, kann er nur bei Profil 2 die Verfügbarkeit ändern.
Die App wurde bereits neugestartet, die Profile jeweils wieder entfernt und neu hinzugefügt, die App neu installiert.
Die App Version ist die 2021.2 und das Smartphone ein Samsung Galaxy S9.
-
Moin, du kannst vom Einsatzmonitor eine selbst erstelle Depesche Drucken lassen, da kannst du dann zum Beispiel auch eine Karte mit der Anfahrt oder so mit ausdrucken lassen.
-
Ich habe nichts weiter von dem Nutzer gehört, daher gehe ich davon aus, dass sich das ganze durch ein Update oder so erledigt hat.
-
Das könnte man ja kombinieren
-
Moin,
ich würde mir die Funktion wünschen, dass man im Tablet nach Stichworten suchen kann und dann angezeigt werden, welche Fahrzeuge bei diesem Stichwort alarmiert werden. Dies soll dem Einsatzleiter vor Ort einen kurzen Überblick verschaffen, ob es sinnvoll ist ein Einsatzstichwort zu erhöhen oder doch nur ein einzelnes Fahrzeug nachzualarmieren.
-
Sorry
Python
Alles anzeigenimport logging import os import sys import time from datetime import datetime as dt import click import yaml from feuersoftware import PublicAPI from alarmparser import AlarmParser from mailcheck import Mail from telegram import telegram_bot #Zur Nutzung des Telegram-Bots müssen nur die Zeilen 42,69,128 auskommentiert werden, also die Raute entfernen. LOGLEVEL = "DEBUG" format = "%(asctime)s.%(msecs)03d - %(name)s - %(levelname)s - %(message)s" dateformat = "%Y-%m-%d %H:%M:%S" logging.basicConfig(level=LOGLEVEL, format=format, datefmt=dateformat) LOGGER = logging.getLogger(">>>main<<<") hdlr = logging.FileHandler('z_Logging.log') hdlr.setLevel(level=logging.INFO) formatter = logging.Formatter('%(asctime)s.%(msecs)03d - %(name)s - %(levelname)s - %(message)s') hdlr.setFormatter(formatter) LOGGER.addHandler(hdlr) class Observer: def __init__(self, config): self.config = config def run(self): while True: try: for account in self.config.get("accounts"): try: self.check_mail(account) except: postfachname = account.get("name") LOGGER.error(f"Fehler in Observer {postfachname} aufgetreten - probiere weiter in 1 Sekunde") #telegram_bot.telegram_bot_sendtext(f"ERROR - Fehler in Observer {postfachname} aufgetreten") time.sleep(1) except KeyboardInterrupt: LOGGER.info("Ctrl + C received. Stopping now!") sys.exit(0) time.sleep(5) def check_mail(self, account): """Check a mail account for new alarm mails.""" _start = dt.now() name = account.get("name") mailcfg = account.get("mail") mail = Mail(mailcfg.get("host"), mailcfg.get("user"), mailcfg.get("password")) msgids = mail.search_mails(mailcfg.get("subject")) text = mail.get_text(msgids) if not text: return _fetchtime = dt.now() LOGGER.info(f"Fetching the alarmmail from {mailcfg.get('user')} took {(_fetchtime - _start).total_seconds()} seconds") data = AlarmParser(self.config, text).data _parsetime = dt.now() LOGGER.info(f"Parsing the alarmmail took {(_parsetime - _fetchtime).total_seconds()} seconds") alarmdata = self.assign_data(data) self.alert(account, alarmdata) _alerttime = dt.now() LOGGER.info(f"Sending to Connect API took {(_alerttime - _parsetime).total_seconds()} seconds") LOGGER.info(f"Entire process took {(_alerttime - _start).total_seconds()} seconds") #telegram_bot.telegram_bot_sendtext(f"ALARM - {name}") def assign_data(self, data): """Assign data to right api fields, transform values if necessary.""" alarmdata = { # "start": dt.now().strftime('%Y-%m-%dT%H:%M:%S'), "start": f"{dt.now().strftime('%Y-%m-%d')}T{data.get('start')}:00", "keyword": data.get("keyword"), "number": data.get("number"), "address": f"{data.get('street')} {data.get('housenumber')}, {data.get('city')} - {data.get('district')}", "facts": data.get("comment"), "properties": [ {"key": "Objekt", "value": data.get("object")}, {"key": "Sondersignal", "value": data.get("siren")}, ], "ric": data.get("assigned"), } LOGGER.info(alarmdata) return alarmdata def alert(self, account, alarmdata): """Send alarm data to Feuersoftware API.""" api = PublicAPI(account.get("connect").get("token")) r = api.post_operation( start=alarmdata.get("start"), keyword=alarmdata.get("keyword"), status="new", alarmenabled=True, address=alarmdata.get("address"), facts=alarmdata.get("facts"), number=alarmdata.get("number"), properties=alarmdata.get("properties"), ric=alarmdata.get("ric"), ) @click.command() @click.argument("configfile", type=click.Path(exists=True)) def main(configfile): LOGGER.info("Programm wurde gestartet") with open(configfile) as cfg: config = yaml.load(cfg, Loader=yaml.BaseLoader) if not config: LOGGER.error("No config file found at %s!", configfile) sys.exit(1) observerloop(config) def observerloop(config): while True: try: observer = Observer(config) observer.run() except: # catch *all* exceptions LOGGER.error("Fehler in observerloop aufgetreten - starte erneut in 10 Sekunden") #telegram_bot.telegram_bot_sendtext("ERROR - Fehler in observerloop aufgetreten") time.sleep(10) if __name__ == "__main__": main()
-
Poste vielleicht auch mal noch dein python code, dann schau ich mir das mal an
Ist das mein Python Code? Wo finde ich den
Spoiler anzeigen
import logging
import os
import sys
import time
from datetime import datetime as dt
import click
import yaml
from feuersoftware import PublicAPI
from alarmparser import AlarmParser
from mailcheck import Mail
from telegram import telegram_bot
#Zur Nutzung des Telegram-Bots müssen nur die Zeilen 42,69,128 auskommentiert werden, also die Raute entfernen.
LOGLEVEL = "DEBUG"
format = "%(asctime)s.%(msecs)03d - %(name)s - %(levelname)s - %(message)s"
dateformat = "%Y-%m-%d %H:%M:%S"
logging.basicConfig(level=LOGLEVEL, format=format, datefmt=dateformat)
LOGGER = logging.getLogger(">>>main<<<")
hdlr = logging.FileHandler('z_Logging.log')
hdlr.setLevel(level=logging.INFO)
formatter = logging.Formatter('%(asctime)s.%(msecs)03d - %(name)s - %(levelname)s - %(message)s')
hdlr.setFormatter(formatter)
LOGGER.addHandler(hdlr)
class Observer:
def __init__(self, config):
self.config = config
def run(self):
while True:
try:
for account in self.config.get("accounts"):
try:
self.check_mail(account)
except:
postfachname = account.get("name")
LOGGER.error(f"Fehler in Observer {postfachname} aufgetreten - probiere weiter in 1 Sekunde")
#telegram_bot.telegram_bot_sendtext(f"ERROR - Fehler in Observer {postfachname} aufgetreten")
time.sleep(1)
except KeyboardInterrupt:
LOGGER.info("Ctrl + C received. Stopping now!")
sys.exit(0)
time.sleep(5)
def check_mail(self, account):
"""Check a mail account for new alarm mails."""
_start = dt.now()
name = account.get("name")
mailcfg = account.get("mail")
mail = Mail(mailcfg.get("host"), mailcfg.get("user"), mailcfg.get("password"))
msgids = mail.search_mails(mailcfg.get("subject"))
text = mail.get_text(msgids)
if not text:
return
_fetchtime = dt.now()
LOGGER.info(f"Fetching the alarmmail from {mailcfg.get('user')} took {(_fetchtime - _start).total_seconds()} seconds")
data = AlarmParser(self.config, text).data
_parsetime = dt.now()
LOGGER.info(f"Parsing the alarmmail took {(_parsetime - _fetchtime).total_seconds()} seconds")
alarmdata = self.assign_data(data)
self.alert(account, alarmdata)
_alerttime = dt.now()
LOGGER.info(f"Sending to Connect API took {(_alerttime - _parsetime).total_seconds()} seconds")
LOGGER.info(f"Entire process took {(_alerttime - _start).total_seconds()} seconds")
#telegram_bot.telegram_bot_sendtext(f"ALARM - {name}")
def assign_data(self, data):
"""Assign data to right api fields, transform values if necessary."""
alarmdata = {
# "start": dt.now().strftime('%Y-%m-%dT%H:%M:%S'),
"start": f"{dt.now().strftime('%Y-%m-%d')}T{data.get('start')}:00",
"keyword": data.get("keyword"),
"number": data.get("number"),
"address": f"{data.get('street')} {data.get('housenumber')}, {data.get('city')} - {data.get('district')}",
"facts": data.get("comment"),
"properties": [
{"key": "Objekt", "value": data.get("object")},
{"key": "Sondersignal", "value": data.get("siren")},
],
"ric": data.get("assigned"),
}
LOGGER.info(alarmdata)
return alarmdata
def alert(self, account, alarmdata):
"""Send alarm data to Feuersoftware API."""
api = PublicAPI(account.get("connect").get("token"))
r = api.post_operation(
start=alarmdata.get("start"),
keyword=alarmdata.get("keyword"),
status="new",
alarmenabled=True,
address=alarmdata.get("address"),
facts=alarmdata.get("facts"),
number=alarmdata.get("number"),
properties=alarmdata.get("properties"),
ric=alarmdata.get("ric"),
)
@click.command()
@click.argument("configfile", type=click.Path(exists=True))
def main(configfile):
LOGGER.info("Programm wurde gestartet")
with open(configfile) as cfg:
config = yaml.load(cfg, Loader=yaml.BaseLoader)
if not config:
LOGGER.error("No config file found at %s!", configfile)
sys.exit(1)
observerloop(config)
def observerloop(config):
while True:
try:
observer = Observer(config)
observer.run()
except: # catch *all* exceptions
LOGGER.error("Fehler in observerloop aufgetreten - starte erneut in 10 Sekunden")
#telegram_bot.telegram_bot_sendtext("ERROR - Fehler in observerloop aufgetreten")
time.sleep(10)
if __name__ == "__main__":
main()
-
Zitat
parser:
- var: start
regex: 'Einsatzzeit (.*)\n'
- var: number
regex: 'Einsatznummer (.*)\n'
- var: city
regex: 'Ort: (.*)\n'
- var: district
regex: 'Ortsteil (.*)\n'
- var: object
regex: 'Objekt (.*)\n'
- var: street
regex: 'Str./Hausnr. (.*)\n'
- var: keyword
regex: 'Stichwort (.*)\n'
- var: comment
regex: 'Bemerkung (.*)\n'
- var: siren
regex: 'Sonderrechte (.*)\n'
- var: assigned
regex: 'AAO (.*)\n'
Damit kenne ich mich halt überhaupt nicht aus, muss die Struktur 1 zu 1 gleich sein?
-
Zitat
Straße Teststraße
Ort Brillit [27442]
Ortsinfo
Stichwort F F1 Feuer
Sonderrechte Mit Sondersignal
Meldebild
Bemerkungen Bereitstellung der Feuerwehr
Einsatzzeit 2020-10-08 08:46:23
Einsatznummer 1200043036
AAO Brillit -;;;;;;;;;;;;;GBM;;;;;
So sieht die Email aus, ich habe gerade Probleme diese auszuwerten und bekomme immer eine Fehlermeldung:
-
Danke für die Antwort. Habe gerade eine eigene Lösung gefunden.
Ich werte per Email Parser von FrozenFrog die Mail mit der PDF aus. Dieser wertet die PDF aus und schreibt aus der PDF eine neue Mail, die er wieder an das Mailpostfach schickt. Diese Mail beinhaltet dann alle wichtigen Infos und wird mittels Python an Connect weitergeleitet.
-
-
-
Moin Community,
ich habe jetzt die AAO in unser System eingepflegt und bei einem Einsatz wird auch eine passende dyn. AAO gefunden. Als bei dem Einsatz auf das Tablet geschaut wurde, war diese aber nirgends zu finden. Wird diese derzeit noch nicht an das Tablet übertragen? Am linken Seitenrand stehen ja alle Fahrzeuge, die im System sind, aber bei einem Einsatz stehen dort immer noch alle. Auch an der Reihenfolge dieser hat sich nichts geändert während es Einsatzes.
Gruß Lasse
-
Wo genau der Zusammenhang zwischen dem Update und dem Verbindungsfehler liegt, kann ich nicht erklären, aber wieso musste denn überhaupt ein BIOS Update gemacht werden? So etwas ist eigentlich nur nötig, wenn es absolut wichtige änderungen im Update gibt oder das Mainboard Probleme mit irgendwelcher Hardware hat. So lange alles läuft, ist eigentlich auch kein BIOS Update nötig.
-
Beim Erstellen gibt es in der Regel keine Benachrichtigung.
-
Alarmton ändern wurde auch versucht
-
App Version ist 2020.07.1. Ton umstellung habe ich vorgeschlagen und warte die Antwort ab.