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
    02.01.2002
    Beiträge
    105
    @Smith, was decodierst Du? ZVEI ?

    Ich habe rtl_fm mit multimon noch nicht zum decodieren von ZVEI überreden können. [emoji15]

    Multimon schreibt doch nur die Ausgabe in die Konsole.
    Dein Script schreibt dann in die DB?

    Wäre da auch eine Aufnahme Funktion möglich?

    Der monitor 1.81 basiert ja auf den multimon.

    Hat es schon jemand geschafft, den für ARM zu kompilieren?


    Sent from my iPhone using Tapatalk

  2. #2
    Registriert seit
    01.10.2011
    Beiträge
    94
    Erstmal: Multimon und Multimon-NG sind nicht unterschiedlich vom Kern her aber die NextGen Version vom Elias Oenal ist scheinbar echt gut.
    Kompilieren war einfach. Elias hat gute Arbeit geleistet.

    POCSAG1200 ist der Spaß den ich hier teste. Für FMS (Option FMSFSK) ist der Antennenstandort im Keller zu schlecht. ZVEI wird hier nicht mehr benutzt, wenn ich irgendwann mal die Tage Zeit habe funke ich mal selbst ZVEI.
    Aufnahmen sind nicht in meinem Interesse. Zumal hier ab 01.01. alles im TETRA laufen soll.
    Übergabe erfolgt über stdin/out. Ich denke da wird es schwer eine Aufnahme zwischen zu packen.

    @Fabpicard:
    Der Load liegt bei ca. 0.5
    multimon-ng nimmt sich ca. 5 CPU% - rtl_fm 37-40 CPU% und beide zusammen gerade mal 5-7 MEM% (lt. htop)

    Der python-Code ist eine angepasste Version von russinnes aus dem raspberrypi.org-Forum. Ich habe Anpassung vorgenommen um die Daten anstatt nur in 2 txt schreiben zu lassen auch in eine MySQL zu schreiben.

    So gut meine python Kenntnisse nicht sind, die Kommentare habe ich noch gesetzt um den Code selbst ein wenig zu verstehen. Außerdem habe ich noch die mySQL-Funktion eingebaut. Hier muss allerdings der Connector noch manuell installiert werden. Ich habe die Codezeile in das Script mit eingefügt.
    Geändert von Smith (29.12.2014 um 23:54 Uhr)

  3. #3
    Registriert seit
    01.10.2011
    Beiträge
    94
    -- Schritt 1:
    RTL_SDR kompilieren:
    Hier aus dem Forum irgendwo.

    Code:
    # Install dependencies
    sudo apt-get update 
    sudo apt-get -y install git cmake build-essential libusb-1.0 qt4-qmake libpulse-dev libx11-dev
    
    # Fetch and compile rtl-sdr source
    mkdir -p ~/src/ 
    cd ~/src/ 
    git clone git://git.osmocom.org/rtl-sdr.git
    cd rtl-sdr 
    mkdir build && cd build
    cmake ../ -DINSTALL_UDEV_RULES=ON && make && sudo make install 
    sudo ldconfig
    -- Schritt 2:

    Multimon-NG:

    Code:
    sudo su -
    apt-get install libpulse-dev libx11-dev qt4-qmake git cmake build-essential
    git clone https://github.com/EliasOenal/multimonNG.git 
    cd multimonNG/ 
    mkdir build
    cd build 
    qmake ../multimon-ng.pro && make && make install
    -- Schritt 3:
    Pyton MySQL-Support installieren:
    Code:
    wget "http://dev.mysql.com/get/Downloads/Connector-Python/mysql-connector-python-1.0.9.tar.gz/from/http://cdn.mysql.com/" -O mysql-connector.tar
    tar xfv mysql-connector.tar
    cd mysql-connector-python*
    chmod +x ./setup.py 
    sudo ./setup.py install
    -- Schritt 4:
    Sktipte anlegen:
    Code:
    mkdir /home/pi/py-sripte && cd /home/pi/py-sripte
    FÜR MYSQL:
    nano poc-to-mysql.py
    Für das MySQL Script dann folgenden Text einfügen:
    Code:
    #!/usr/bin/python
    # -*- coding: cp1252 -*-
    '''
    !! This requires a recent build of Multimon-NG as the old builds wont accept a piped input !!
    Change the rtl_fm string to suit your needs.. add -a POCSAG512 , 2400 etc if needed to the Multimon-ng string
    This just prints and writes to a file, you can put it in a threaded class and pass though a queue
    or whatever suits your needs.
    
    Änderungen  für Deutschland und Kommentare von Smith - Funkmeldesystem.de-Forum.
    Bitte beachten, bei POC512 ist die Zeichenkette jeweiles um ein Zeichen kürzer!
    MySQL-Funktion hinzugefügt. 
    
    Pyton MySQL-Support installieren
    wget "http://dev.mysql.com/get/Downloads/Connector-Python/mysql-connector-python-1.0.9.tar.gz/from/http://cdn.mysql.com/" -O mysql-connector.tar && tar xfv mysql-connector.tar && cd mysql-connector-python* && chmod +x ./setup.py && sudo ./setup.py install
    
    '''
    
    import time
    import sys
    import subprocess
    import os
    import mysql
    import mysql.connector
    
    try:
        connection = mysql.connector.connect(host = "DATENBANKSERVER", user = "DATENBANKUSER", passwd = "DBPASSWORT", db = "DATENBANK")
    except:
        print "Keine Verbindung zum Server"
        exit(0)
    
    def curtime():
        return time.strftime("%Y-%m-%d %H:%M:%S")
    
    with open('Fehler.txt','a') as file:
        file.write(('#' * 20) + '\n' + curtime() + '\n')
    
    multimon_ng = subprocess.Popen("sudo rtl_fm -f XXX.XXXM -M fm -s 22050 -p 37 -E dc -F 0 -g 40 | multimon-ng -a POCSAG1200 -f alpha -t raw -",
                                   #stdin=rtl_fm.stdout,
                                   stdout=subprocess.PIPE,
                                   stderr=open('error.txt','a'),
                                   shell=True)
    
    try:
        while True:
            line = multimon_ng.stdout.readline()
            multimon_ng.poll()                                                                  # multimon wird gestartet
            if line.__contains__("Alpha:"):                                                     # Die Ausgabe wird nach dem Text "Alpha" durchsucht
                if line.startswith('POCSAG'):
                    address = line[21:28].replace(" ", "")		                            # Zeichen 22 bis 28. RIC wird in die Variabel "adress" gelegt.Leerzeichen werden entfernt. Wenn kleiner als 7 Stellen wird der Rest vorne weg mit 0 aufgefüllt (zfill). Feld muss in VARCHAR vorliegen, führendene 0 wird sonst nicht geschrieben!
                    subric = line[40:41].replace(" ", "").replace("3", "4").replace("2", "3").replace("1", "2").replace("0", "1") # Sub-RIC auslesen und anpassen (3=4, 2=3, 1=2, 0=1)
                    message = line.split('Alpha:   ')[1].strip().rstrip('').strip()        # Die Nachricht wird nach dem Bereich Alpha in die Variabel "message" abgelegt. EOT wird entfernt.
                    output=(curtime()+' '+ address+' '+ subric+' '+ message+'\n')               # Es wird ein String in die Variabel "output" gelegt. Hier: Adresse + Zeitstempel + Text
                    print curtime(), address, subric, message                                   # Die Meldung wird im Terminal angezeigt
                    with open('POCSAG.txt','a') as f:                                           # Der String output wird in die Datei POCSAG.txt geschrieben.
                        f.write(output)
                    #Datensatz einfügen per mySQL
                    cursor = connection.cursor()
                    cursor.execute("INSERT INTO DATENBANKTABELLE (time,ric,funktion,text,einsatz) VALUES (%s,%s,%s,%s,%s)",(curtime(),address,subric,message,'0',))
                    cursor.close()
                    connection.commit()
            if not "Alpha:" in line:                                                            # Wenn kein Alpha im String der Ausgabe multimon steht, wird die Zeile in die Datei POCSAG_KeinText.txt geschrieben.
                with open("POCSAG_KeinText.txt","a") as missed:
                    address = line[21:28].replace(" ", "")		                            # Zeichen 22 bis 28. RIC wird in die Variabel "adress" gelegt.Leerzeichen werden entfernt. Wenn kleiner als 7 Stellen wird der Rest vorne weg mit 0 aufgefüllt (zfill). Feld muss in VARCHAR vorliegen, führendene 0 wird sonst nicht geschrieben!
                    subric = line[40:41].replace(" ", "").replace("3", "4").replace("2", "3").replace("1", "2").replace("0", "1") # Sub-RIC auslesen und anpassen (3=4, 2=3, 1=2, 0=1)
                    print  curtime(), address, sum                                              # Die Meldung wird im Terminal angezeigt
                    missed.write(line)                                                           # Der String output wird in die Datei POCSAG_KeinText.txt geschrieben.
    		#Datensatz einfügen per mySQL
                    cursor = connection.cursor()
                    cursor.execute("INSERT INTO DATENBANKTABELLE (time,ric,funktion,text,einsatz) VALUES (%s,%s,%s,%s,%s)",(curtime(),address,subric,'','0',))
                    cursor.close()
                    connection.commit()
                    
    except KeyboardInterrupt:
        os.kill(multimon_ng.pid, 9)
    HINWEIS: die fett-Texte oben im Script sind anzupassen.

    -- Schritt 5:
    Script ausführbar machen:

    Code:
    sudo chmod +x poc-to-mysql.py
    bei Problemen beim starten:
    sudo chmod 777 poc-to-mysql.py
    -- Schritt 6:
    Autotart:
    Ich verweise dafür auf:
    Code:
    http://www.forum-raspberrypi.de/Thread-tutorial-autostart-eines-python-script?pid=24741#pid24741

  4. #4
    Registriert seit
    02.01.2002
    Beiträge
    105
    @Smith

    Danke für Deine Anleitung.

    Ich habe den multimon-ng jetzt auf meinem Cubietruck laufen.

    ZVEI2 und FMS funktioniert mit Konsolenausgabe.

    Wie bekomme ich die ZVEI und FMS Daten in die Datenbank?
    Dein Pythonscript ist ja nur für Pocsag.


    Gruß

    Marcel

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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