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
    Hallo Basti,

    ich habe mal quick and dirty einen "useBosMon"-Zweig gebaut:

    Code:
    if useBosMon: #only if BosMon is active
       log("POC512 to BosMon")   
          try:
             #BosMon-Schnittstelle erwartet als RIC-Sub/Funktion a-d
             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 = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
             httprequest = httplib.HTTPConnection(bosmon_server, bosmon_port)
             # ToDo: "pocsag" durch bosmon_kanal ersetzen
             httprequest.request("POST", "/telegramin/pocsag/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")
    Aktuell verzweifel ich gerade am Thema User/Passwort für den Aufruf...

    Grüße
    Jens

  2. #2
    Registriert seit
    02.01.2002
    Beiträge
    105
    Da kann ich helfen.

    Im Anhang ein Auszug aus meinem Icast2 Meata-Update:

    Code:
    # Icecast Meta-Update
    import urllib2
    
    icecastrun = process_num("icecast2")
    ezstreamrun = process_num("ezstream")
    
    if int(icecastrun) > 0 and int(ezstreamrun) > 0:
        
        print "Icecast und ezstream laufen"
        
        metadata = str(datum) + " " + str(zeit) + " [" + str(schleife) + "] " + str(org) + " " + str(ort) + " " + str(bez)
    
        metadata = metadata.replace(" ","+") #add "+" instead of " " for icecast2
        url = "http://" + str(icecast_server) + ":" + str(icecast_port) + "/admin/metadata?mount=/" + str(icecast_mountpoint) + "&mode=updinfo&charset=UTF-8&song=" + str(metadata)
    
        # simple wrapper function to encode the username & pass
        def encodeUserData(user, password):
            return "Basic " + (user + ":" + password).encode("base64").rstrip()
    
        # create the request object and set some headers
        req = urllib2.Request(url)
        req.add_header('Accept', 'application/json')
        req.add_header("Content-type", "application/x-www-form-urlencoded")
        req.add_header('Authorization', encodeUserData(icecast_user, icecast_password))
        # make the request and print the results
        res = urllib2.urlopen(req)
        print res.read()
        
    else:
        print "Icecast oder/und ezstream laufen nicht"
    Gruß

    Marcel

  3. #3
    Registriert seit
    01.10.2011
    Beiträge
    94
    Edit... :)
    Vergesst es.. das war ein anderes Programm.

    Okay, dann muss neben User und Passwort in die Config auch noch der Kanalname sowie die IP/URL des Server.

    ich baue das dann morgen im Dienst um.

    Dann setzte ich auch direkt die firEmergency-Erweiterung ins Dev-Branch ein.

    Nächster Schritt ist die Installation von VPN-Komponenten... Das ist gerade im Mulltiserver-Bereich einn Muss! Ich habe hier zwar eines laufen, aber die meisten werden wohl Probleme damit haben...
    Geändert von Smith (16.05.2015 um 22:48 Uhr)

  4. #4
    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

  5. #5
    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...

  6. #6
    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)

  7. #7
    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

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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