Ergebnis 1 bis 15 von 94

Thema: SDS2DB schreibt SDS-Nachrichten in eine MySQL-Datenbank

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registriert seit
    30.07.2012
    Beiträge
    227
    Zitat Zitat von TLF1625
    hallo,

    habe gerade hier im Forum deinen Beitrag zu SDS2DB gefunden.

    Ich wollte mir die ZIP-Datei runterladen, leider wird mir auf zwei unterschiedlichen Rechnern angezeigt, dass die Datei im ersten Post 0KB hat. Somit lässt sie sich folglich auch nicht entpacken.
    Kannst du mir SDS2DB bitte ... mailen ?

    Ich möchte SDS2DB gerne in unserem ELW auf einem Raspberry nutzen. Neben dem Speichern der SDS in der MySQL würde ich gerne versuche SDS2DB so zu erweitern, dass ich weitere Daten abzuspeichern kann, z.B. Gespräche, aktuelle GPS-Position, ... usw.
    Wenn ich die Beschreibung richtig verstehe, kann ich über die pei.write auch eigene Kommandos an die PEI senden und die Antwort dann ähnlich einer SDS auswerten und wieder in der MySQL abspeichern ?

    DANKE !

    Gruß
    Chibbez
    Hallo,

    ich bin mal so indiskret deine PN in's Forum zu stellen. Dann haben auch andere Interessierte was davon...
    Die Dateien aus dem Eröffnungspost kann ich einwandfrei herunterladen. Es ist ein tgz-Archiv was man mit "tar xvzf ..." auf dem Zielrechner auspacken können sollte. Evtl. vermurkst die Dateiendung .zip da irgenwas? Ich musste das .zip dranhängen, um die Datei hochladen zu können.

    pei.write läuft als Daemon und schreibt den Inhalt der Spool-Dateien in .../var/spool/write/... an das passende Interface. Du siehst ja in den Skripten, wie ich die Spooldateien generiere.

    Bei den GPS-Positionen sehe ich keine große Herausforderung in der Auswertung, wenn sie als LIP-SDS empfangen werden. Ich habe einen Satz PHP-Funktionen zum Dekodieren der SDS geschrieben. Die sollten auch in diesem Thread zum Herunterladen stehen. Ich habe SDS2DB auch für meinen Einsatzzweck weiterentwickelt und rufe ein weiteres Processing-Skript auf, dem ich in Abhängigkeit einiger Parameter die empfange SDS zur weiteren Verarbeitung übergebe.

    Zur Dokumentation von Gesprächsdaten kann ich bis jetzt nichts beitragen. In meinem Fall ist das FRT auf eine reine Datengruppe geschaltet. Da wird nicht gesprochen. Wenn du es schaffst, dass das Gerät die Metadaten der Gruppenkommunikation als "unsolicited message" auf die PEI schreibt, sollten am Skript sds2db keine großen Ergänzungen dafür nötig sein.

  2. #2
    Registriert seit
    16.01.2012
    Beiträge
    18
    Hallo,
    ich komme irrgendwie nicht klar mit dem Einrichten.
    Ich habe ein MTP850 mittel Serial->USB an einen Raspberry. Wenn ich screen /dev/ttyUSB0 nutze sehe ich eingehende SDS, z.B. +CTSDSR: 13,xxxxxxx,0,xxxxxxx,0,16 8007.

    Leider habe ich mit sds2db kein Erfolg.
    Config der Schnittstelle in der sds2db.conf:
    serialdev_1="ttyUSB0"
    serialdev_1_init_1="$sttybin -F /dev/$serialdev_1 0:0:cbf:0:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f:17:16 :0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0"
    ttyToListenTo="ttySDS2DB0"

    Die userinit_1 ist auskommentiert wie in Beitrag #39 empfohlen, da der gleiche Fehler wie in Beitrag #38 auftritt. Es tritt dann aber beim Starten von sds2db folgender Fehler auf:
    pi@raspberrypi ~ $ sudo /etc/init.d/sds2db start
    Starting sds2db... /etc/init.d/sds2db: line 115: ((: != 0 : syntax error: operand expected (error token is "!= 0 ")
    done!

    Die beiden Log-Dateien beinhalten folgende Meldungen:

    sds2db.log.null:
    Sep 20 23:24:34 raspberrypi sds2db: <- ATZ
    Sep 20 23:24:35 raspberrypi sds2db: <- AT+CTSP=1,2,20
    Sep 20 23:24:36 raspberrypi sds2db: <- AT+CTSP=1,3,10
    Sep 20 23:24:37 raspberrypi sds2db: <- AT+CTSP=1,3,130
    Sep 20 23:24:38 raspberrypi sds2db: <- AT+CNUMF?

    sds2db.log:
    Sep 20 22:38:21 raspberrypi sds2db: --------------------------
    Sep 20 22:38:21 raspberrypi sds2db: Start sds2db begonnen
    Sep 20 22:38:21 raspberrypi sds2db: lösche Alive-Einträge der FuGs aus DB
    Sep 20 22:38:22 raspberrypi sds2db: lösche Alive-Einträge des Servers aus DB
    Sep 20 22:38:22 raspberrypi sds2db: starte sds2db
    Sep 20 22:38:22 raspberrypi sds2db: starte write spooler
    Sep 20 22:38:22 raspberrypi sds2db: erstelle Cronjob für regular run skript
    Sep 20 22:38:22 raspberrypi sds2db: initialisiere serielle Schnittstelle "ttyUSB0"
    Sep 20 22:38:22 raspberrypi sds2db: starte read spooler auf "ttyUSB0"
    Sep 20 22:38:22 raspberrypi pei.init: initialisiere PEI Schnittstelle an "ttyUSB0"
    Sep 20 22:38:23 raspberrypi pei.init: registriere TE für Status-SDS
    Sep 20 22:38:24 raspberrypi pei.init: registriere TE für LIP
    Sep 20 22:38:26 raspberrypi pei.init: registriere TE für Text Messaging
    Sep 20 22:38:27 raspberrypi pei.init: lese MS Identität
    Sep 20 22:38:28 raspberrypi sds2db: konfiguriere Logfile-Rotation für "/usr/local/sds2db/var/log/sds2db.log.ttyUSB0"
    Sep 20 22:38:28 raspberrypi sds2db: Start sds2db abgeschlossen
    Sep 20 22:39:02 raspberrypi regular.run: Server "raspberrypi" Alive-Eintrag in DB "sds2db" hinzugefügt
    Sep 20 22:40:01 raspberrypi regular.run: Server "raspberrypi" Alive-Eintrag in DB "sds2db" aktualisiert
    .
    .
    .

    Habt Ihr Hinweise was ich hier falsch mache???

    Gruß Grisu911

    PS.: Es wurde des öffteren darüber geschrieben das es noch php-Projekte gibt, könnten die vielleicht mal hochgeladen werden???

  3. #3
    Registriert seit
    30.07.2012
    Beiträge
    227
    Zitat Zitat von grisu911 Beitrag anzeigen

    Die beiden Log-Dateien beinhalten folgende Meldungen:

    sds2db.log.null:
    Sep 20 23:24:34 raspberrypi sds2db: <- ATZ
    Sep 20 23:24:35 raspberrypi sds2db: <- AT+CTSP=1,2,20
    Sep 20 23:24:36 raspberrypi sds2db: <- AT+CTSP=1,3,10
    Sep 20 23:24:37 raspberrypi sds2db: <- AT+CTSP=1,3,130
    Sep 20 23:24:38 raspberrypi sds2db: <- AT+CNUMF?
    Ich sehe hier zwei Auffälligkeiten:

    1. Der Name der Logdatei
    - Das Logfile wird für jedes konfigurierte Interface geschrieben. Das "null" weist darauf hin, dass "/dev/ttyUSB0" nicht als Character Device existiert.

    2. Die fehlenden Antworten vom Funkgerät
    - Auf die Initialisierungskommandos müsste das Funkgerät eigentlich antworten, was hier nicht passiert.

    Welche Bezeichnung hat dein Kabel?

    Welchen RS232/USB Adapter benutzt du?

    Schaue doch mal mit "tail -f /var/log/messages" oder "tail -f /var/log/syslog" welche Logmeldungen geschrieben werden, während du das Kabel ansteckst. Mir ist so, als würde der Pi das Device nicht /dev/ttyUSB0 nennen, sondern /dev/ACM0 oder so ähnlich.

  4. #4
    Registriert seit
    16.01.2012
    Beiträge
    18
    Hallo,

    danke für die schnelle Antwort.
    Eingehangen wurde das Gerät schon auf /dev/ttyUSB0
    Sep 20 23:17:21 raspberrypi kernel: [ 8.134611] usb 1-1.3: pl2303 converter now attached to ttyUSB0
    Als Kabel wird das Datenkabel PMKN4025A genutzt, welches auch unter Windows z.B. bei TetraControl funktioniert. Ich bekomme ja bei "screen /dev/ttyUSB0" Daten über die Schnittstelle.

    Das was mich irritiert ist folgender Eintrag
    ttyToListenTo="ttySDS2DB0" muss hier auch "ttyUSB0" rein oder was anderes rein???
    Wenn ich es auf ttyUSB0 stelle geht es auch nicht.
    Irrgendwas schein an meiner config nicht zu stimmen, ich weiß nur nicht was!?!?!

    Hier noch mal die ganze Config:
    #!/bin/bash
    ################################################## ################################################## ###########
    # Titel: sds2db.conf
    # Autor: Michael Kaden
    # Datum: 30.12.2012
    #
    # Funktion:
    # Dieses Skript ist Bestandteil von sds2db. Hier werden Konfigurationsvariablen gesetzt und Funktionen
    # beschrieben, die durch das Einbinden des Skripts in allen sds2db-Skripten programmweit verfügbar sind.
    #
    # Zweck:
    # Das Skript ermöglicht die zentrale Konfiguration von sds2db.
    #
    # Copyright (C) 2013 Michael Kaden
    #
    # Dieses Programm ist freie Software. Sie können es unter Beachtung der Nutzungsbedingungen benutzen,
    # weitergeben und modifizieren.
    # Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, dass es Ihnen von Nutzen sein wird,
    # aber OHNE IRGENDEINE GARANTIE, sogar ohne die Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN
    # BESTIMMTEN ZWECK.
    ################################################## ################################################## ###########
    configfile="/usr/local/sds2db/etc/$skriptname.conf"
    programdir="/usr/local/sds2db/bin"
    skriptname="sds2db"
    program="$programdir/$skriptname"
    readspooler="pei.read"
    writespooler="pei.write"
    inithelper="pei.init"
    regular_run="regular.run"
    readspooldir="/usr/local/sds2db/var/spool/read"
    writespooldir="/usr/local/sds2db/var/spool/write"
    pidfiledir="/var/run"
    runfiledir="/usr/local/sds2db/var/run"
    logfile="/usr/local/sds2db/var/log/$skriptname.log"
    initscript="/etc/init.d/$skriptname"
    sttybin="/bin/stty"
    mysqlbin="/usr/bin/mysql"
    awkbin="/usr/bin/awk"
    inotifybin="/usr/bin/inotifywait"
    db="sds2db"
    dbuser="root"
    dbpass="root"
    db_sds_table="sds2db_sds"
    db_radios_table="sds2db_radios"
    db_servers_table="sds2db_servers"
    now=$(date +"%b %d %H:%M:%S")
    host=$(/bin/hostname)
    # Name der ersten zu konfigurierenden seriellen Schnittstelle (ohne "/dev/")
    # Beispiel: serialdev_1="ttyS0"
    #
    serialdev_1="ttyUSB0"
    #
    # Initialisierungskommandos für erste zu konfigurierende serielle Schnittstelle
    serialdev_1_init_1="$sttybin -F /dev/$serialdev_1 0:0:cbf:0:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f:17:16 :0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0"
    #
    # Moxa serial device server starten
    #serialdev_1_init_1="/sbin/modprobe npreal2 ttymajor=33 calloutmajor=38 verbose=0"
    #serialdev_1_init_2="/usr/lib/npreal2/driver/mxloadsvr"
    # Parameter der seriellen Schnittstelle mittels "stty" konfigurieren (38400,8,n,1)
    #serialdev_1_init_3="$sttybin -F /dev/$serialdev_1 0:0:80000cbd:0:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f: 17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0"
    #
    # Name der zweiten zu konfigurierenden seriellen Schnittstelle (ohne "/dev/"; auskommentieren, wenn nicht gebraucht)
    # Beispiel: serialdev_2="ttyS1"
    #
    #serialdev_2="ttyS0"
    #
    # Initialisierungskommandos für zweite zu konfigurierende serielle Schnittstelle
    # Beispiel: serialdev_2_init_1="$sttybin -F /dev/$serialdev_2 0:0:80000cbd:0:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f: 17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0"
    #
    # Parameter der seriellen Schnittstelle mittels "stty" konfigurieren (9600,8,n,1)
    #serialdev_2_init_1="$sttybin -F /dev/$serialdev_2 0:0:80000cbd:0:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f: 17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0"
    #
    # Schnittstellenparameter für stty
    # 115200,8,n,1: "0:0:80001cb2:0:3:1c:7f:15:1:0:1:0:11:13:1a:0:12:f: 17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0"
    # 57600,8,n,1: "0:0:80001cb1:0:3:1c:7f:15:1:0:1:0:11:13:1a:0:12:f: 17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0"
    # 38400,8,n,1: "0:0:80000cbf:0:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f: 17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0" (RTS/CTS)
    # 38400,8,n,1: "0:0:cbf:0:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f:17:16 :0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0" (ohne Handshake)
    # 9600,8,n,1: "0:0:80000cbd:0:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f: 17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0"
    #
    # userdefinierbare Initialisierungskommandos (auskommentieren, wenn nicht gebraucht; Text zwischen []-Klammern erscheint im Logfile)
    #
    #userinit_1="/usr/local/sds2db/bin/user.init[starte /usr/local/sds2db/bin/user.init]"
    #
    # an welchen Interfaces soll sds2db lauschen? (mehrere durch Leerzeichen trennen)
    # Beispiel: ttyToListenTo="ttyS0 ttyS1"
    #
    ttyToListenTo="ttySDS2DB0"
    #
    # soll sds2db empfangene Statusmeldungen als Quittung zurücksenden?
    # Beispiel: confirmStatusSDS="yes"
    #confirmStatusSDS="yes"
    #
    # soll sds2db SDS-Empfangsquittungen senden, wenn sie angefordert werden?
    # Beispiel: SDSdeliveryReport="yes"
    #SDSdeliveryReport="yes"
    #
    # Funktion für Datenbankzugriff
    #
    exec_mysql() {
    $mysqlbin $db --protocol=TCP -u $dbuser -p$dbpass < $1;
    EOFMYSQL
    return $?
    }


    Gruß Grisu911

  5. #5
    Registriert seit
    30.07.2012
    Beiträge
    227
    Ja genau. So wie es im Kommentar der Konfig steht. ;-) Wenn dein Device ttyUSB0 heißt, muss natürlich das Programm auf dieses Gerät gebunden werden.
    ttyToListenTo="ttyUSB0"

    Wenn es trotzdem nicht geht, könntest du noch die Parameter der seiellen Verbindung prüfen, ob sie zur PEI-Konfig passt.

    Du setzt /dev/ttyUSB0 auf 38400 Bit/s,8 Datenbits, kein Paritätsbit, 1 Stopbit.

  6. #6
    Registriert seit
    16.01.2012
    Beiträge
    18
    Hallo,

    nach Änderung der ttyToListenTo zu "ttyUSB0" und der Parameter der seriellen Schnittstelle zu 9600,8,n,1 klappt es.
    Hatte ich gestern auch schon alles probiert, aber wahrscheinlich irrendwie nicht in der Kombination.

    Also Danle für die schnell Unterstützung.

    Nun noch die folgende Frage:
    pi@raspberrypi ~ $ sudo /etc/init.d/sds2db start
    Starting sds2db... /etc/init.d/sds2db: line 115: ((: != 0 : syntax error: operand expected (error token is "!= 0 ")
    done!

    Was hat diese Fehlermeldung beim Starten zu bedeuten?

    Gruß Grisu911

  7. #7
    Registriert seit
    30.07.2012
    Beiträge
    227
    Wird die Fehlermeldung bei jedem Start angezeigt?

    Der bemängelte Vergleich in Zeile 115 des Init-Skriptes bezieht sich auf folgenden Abschnitt:

    # Wenn Initialisierung nicht erfolgreich war
    if (( "$ret_userinit" != 0 )); then
    # Fehlermeldung ins Logfile schreiben und Skript beenden
    echo "$(date +"%b %d %H:%M:%S") $host $skriptname: Stop! Userdefinierbares Init-Kommando fehlgeschlagen" >> $logfile
    echo "failed!"
    stop_deamon
    exit 1
    fi

    Welche Shell benutzt du? Bash? Ich sehe die Meldung zum ersten Mal. Du kannst ja tesweise in Zeile 115 die 0 in Anführungszeichen setzen. (( "$ret_userinit" != "0" )) oder die Anführungszeichen weglassen (( $ret_userinit != 0 ))

    Nachtrag: Mir ist in deinem Post der Konfig aufgefallen, dass in den Strings zum Initialisieren der RS232-Ports Leerzeichen stehen, die dort nicht hingehören. Stehen die wirklich in deiner Konfig, oder ist das ein Kopierfehler im Post?
    Geändert von flachrelais_48 (21.09.2015 um 23:41 Uhr)

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
  •