Ergebnis 1 bis 15 von 301

Thema: multimon (der Vorgänger des monitord) auf Raspberry Pi

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registriert seit
    03.03.2015
    Beiträge
    45
    Moin, moin,

    so, bei mir läuft jetzt alles wie gewünscht.

    Hier meine Code-Änderungen:

    1.) config.ini
    Code:
    [Module]
    useMySQL = 1
    #useAudiorecord = 0
    useHTTPrequest = 0
    useBosMon = 1
    Code:
    [BosMon]
    #Server without http://, as IP oder DNS-Name
    bosmon_server = 192.168.0.1
    bosmon_port = 80
    bosmon_user = user
    bosmon_password = password
    #Channel of type "Web Telegramme"
    bosmon_kanal = kanal
    2.) boswatch.py
    Code:
    import urllib #for the HTTP request and BosMon with parameters
    import base64 #for the HTTP request and BosMon with User/Password
    Code:
    #BosMon config
    useBosMon = int(config.get("Module", "useBosMon")) #use BosMon support?
    if useBosMon: #only if BosMon is active
    	bosmon_server = config.get("BosMon", "bosmon_server")
    	bosmon_port = config.get("BosMon", "bosmon_port")
    	bosmon_user = config.get("BosMon", "bosmon_user")
    	bosmon_password = config.get("BosMon", "bosmon_password")
    	bosmon_kanal = config.get("BosMon", "bosmon_kanal")
    Code:
    if useBosMon: #only if BosMon is active
    	log("POC512 to BosMon")   
    	try:
    		#BosMon-Telegramin expected "a-d" as RIC-sub/function
    		bosmon_poc_sub = poc_sub.replace("1", "a").replace("2", "b").replace("3", "c").replace("4", "d")
    		params = urllib.urlencode({'type':'pocsag', 'address':poc_id, 'flags':'0', 'function':bosmon_poc_sub, 'message':poc_text})
    		headers = {}
    		headers['Content-type'] = "application/x-www-form-urlencoded"
    		headers['Accept'] = "text/plain"
    		if bosmon_user:
    			headers['Authorization'] = "Basic {0}".format(base64.b64encode("{0}:{1}".format(bosmon_user, bosmon_password)))
    		httprequest = httplib.HTTPConnection(bosmon_server, bosmon_port)
    		httprequest.request("POST", "/telegramin/"+bosmon_kanal+"/input.xml", params, headers)
    		httpresponse = httprequest.getresponse()
    		if str(httpresponse.status) == "200": #Check HTTP Response an print a Log or Error
    			log("BosMon response: "+str(httpresponse.status)+" - "+str(httpresponse.reason))
    		else:
    			log("BosMon response: "+str(httpresponse.status)+" - "+str(httpresponse.reason),"error")
    	except:
    		log("POCSAG512 to BosMon failed","error")
    BosMon erwartet kein XML, es reicht ein einfacher Get/Post-Aufruf.
    Die Parametrisierung ist aber schon speziell (z.B. Funktion a-d)
    Was in der BosMon-Schnittstelle "Flags" bedeutet, entzieht sich meiner Kenntnis, bezieht sich evtl. auf andere Protokolle, ich habe nur POCSAG berücksichtigt.

    Viel Spaß beim Einbauen ;)

    Grüße
    Jens

  2. #2
    Registriert seit
    01.10.2011
    Beiträge
    94
    Sieht gut aus.
    Ich baue es morgen in den POCSAG512 und POCSAG1200 Bereich ein.
    kannst du dann morgen abend den dev-branch von boswatch nochmal testen?
    Ich schmeiß, wie bereits geschrieben, dann auch direkt firEmergency mit rein. Das läuft auch wie geplant.

    Zum filtern:
    Wie schrolli bereits geschrieben hat, es wird echt schwer das ganze direkt im Script zu filtern. Im Moment habe ich sogar das "Problem" wenn mehrere RICs unserer Einheit alarmiert werden, dann bringt die filterung nichts da RIC A und RIC B im Wechsel kommen, ergo überschreiben die Variabeln sich dann und es wird nicht gefiltert.
    Und der Range-Check ist auch nicht ganz dabei. Steht für morgen auf der ToDo...

  3. #3
    Registriert seit
    03.03.2015
    Beiträge
    45
    Moin, moin,

    Zitat Zitat von Smith Beitrag anzeigen
    Sieht gut aus.
    Ich baue es morgen in den POCSAG512 und POCSAG1200 Bereich ein.
    kannst du dann morgen abend den dev-branch von boswatch nochmal testen?
    Die BosMon-Schnittstelle ist generell und übergreifend für alle Dienste (FMS, ZVEI, POCSAG) identisch, so dass die BosMon-Konfiguration in BOSWatch global eingebaut werden kann.
    Unterschiedlich sind halt nur die Werte, die man übergeben kann/muss.

    Zitat Zitat von Smith Beitrag anzeigen
    Zum filtern:
    Wie schrolli bereits geschrieben hat, es wird echt schwer das ganze direkt im Script zu filtern. Im Moment habe ich sogar das "Problem" wenn mehrere RICs unserer Einheit alarmiert werden, dann bringt die filterung nichts da RIC A und RIC B im Wechsel kommen, ergo überschreiben die Variabeln sich dann und es wird nicht gefiltert.
    Und der Range-Check ist auch nicht ganz dabei. Steht für morgen auf der ToDo...
    Ich lasse BosMon weiterhin den Duplikats-Check machen. Dort sind alle Informationen in der DB vorhanden sind.

    Evtl. lasse ich den DAG/DAU-Test in BOSWatch filtern. Andererseits wäre ein "Alarmskript" interessant. Wenn keine Test-Alarme mehr ankommen, läuft etwas falsch.

    Grüße
    Jens
    Geändert von JHC (17.05.2015 um 00:34 Uhr)

  4. #4
    Registriert seit
    03.03.2015
    Beiträge
    45
    Moin, moin,

    leider sind meine Linux-Kenntnisse nicht so gut, wie meine Programmiererfahrungen, daher hätte ich da noch eine Frage bzw. ein Feature-Request.

    Wie kann ich BOSWatch automatisch (als Dienst) starten?
    Wird dafür eine "Dienst-Steuer-Datei" in etc/init.d benötigt, die Start/Stop/Restart implementiert?

    Grüße
    Jens

  5. #5
    Registriert seit
    01.10.2011
    Beiträge
    94
    okay. Ich baue es nachher für den Rest auch ein. Hast ja recht.

    Zum start-Script: aktuell lasse ich hier beim Reboot das Script inkl. Aufruf über die rc.local ausführen. läuft quasi direkt nach dem init.
    wenn ich es noch schaffe heute, baue ich das start-Script. Allerdings werde ich mir nicht die Arbeit machen und die Argument-Übergabe einbauen. Es kann dann jeder seine BOSWatch Zeile einfügen und dann einfach mit ./boswatch.sh start etc. Zum laufen bringen. ;-)

    Was aber heute noch kommt ist die Funktion im py Script welche die -p Übergabe ermöglicht.
    Geändert von Smith (17.05.2015 um 08:33 Uhr) Grund: Option -p

  6. #6
    Registriert seit
    18.03.2015
    Beiträge
    67
    Zitat Zitat von Smith Beitrag anzeigen
    Was aber heute noch kommt ist die Funktion im py Script welche die -p Übergabe ermöglicht.
    Ist doch schon drin? 'boswatch.py -e PPM' gibt den Error in PPM an...

    Code:
    -e ERROR, --error ERROR   |   Frequency-Error of your Device in PPM

    EDIT:
    BTW... Sobald Smith seine getesteten Änderungen eingebaut hat, werde ich beginnen den Code zu strukturieren. Also trennen in einzelne Dateien. Denn so langsam wird es unübersichtlich und der Code wiederholt sich eh ständig, wieso also nicht Funktionen erstellen die immer genutzt werden...
    Am sinnvollsten wäre es wohl, das ganze als eine Art Plugin System aufzubauen.
    Geändert von Schrolli (17.05.2015 um 10:29 Uhr)

  7. #7
    Registriert seit
    01.10.2011
    Beiträge
    94
    Zitat Zitat von Schrolli Beitrag anzeigen
    Ist doch schon drin? 'boswatch.py -e PPM' gibt den Error in PPM an...

    Code:
    -e ERROR, --error ERROR   |   Frequency-Error of your Device in PPM
    ja, als ich mir die Kommandos nochmal angeschaut habe viel es mir auch auf.
    Ich bin mit dem -e von boswatch und -p vom sdr durcheinander gekommen zwischen den Fahrten hier... :-)

    Und wie ich bereits per PN schrieb, ich bin auch für das auslagern in einzelene Dateien. ;)
    der Import eines Modules Verzeichnis ist ja in Py ohne weiteres möglich.
    Die Routine dazu schreibst dann du :-D

  8. #8
    Registriert seit
    03.03.2015
    Beiträge
    45
    Moin, moin,

    Zitat Zitat von Smith Beitrag anzeigen
    okay. Ich baue es nachher für den Rest auch ein. Hast ja recht.
    So war das jetzt auch nicht gemeint. ;-)
    Ich meinte, dass es nur so einen BosMon-Eingang gibt, so dass man nicht mehrere Konfigurationen (ini) für die verschiedenen Dienste benötigt. (Annahme: keine verschiedenen BosMon-Server)

    Testen kann ich allerdings nur POCSAG, die anderen Dienste nutze ich hier nicht.

    Zitat Zitat von Schrolli
    Als trennen in einzelne Dateien. Denn so langsam wird es unübersichtlich und der Code wiederholt sich eh ständig, wieso also nicht Funktionen erstellen die immer genutzt werden...
    Das klingt gut. Für den BosMon-Teil sind -wie bereits erwähnt - die Aufruf-Parameter je Dienst allerdings unterschiedlich. Entweder die Parameter einzelnd oder das params-Objekt übergeben.

    Zitat Zitat von Smith Beitrag anzeigen
    Zum start-Script: aktuell lasse ich hier beim Reboot das Script inkl. Aufruf über die rc.local ausführen. läuft quasi direkt nach dem init.
    Hast Du mal ein Bsp? Dann würde ich das bei mir auch mal einbauen...

    Zitat Zitat von Smith Beitrag anzeigen
    wenn ich es noch schaffe heute, baue ich das start-Script. Allerdings werde ich mir nicht die Arbeit machen und die Argument-Übergabe einbauen. Es kann dann jeder seine BOSWatch Zeile einfügen und dann einfach mit ./boswatch.sh start etc. Zum laufen bringen. ;-)
    Anpassungen wären für mich okay, spätestens den Pfad zum Verzeichnis muss auch jeder angeben (oder das install-Skript mit erledigen).

    Grüße
    Jens

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •