zeitlich gesteuerte Ansagen

  • Hallo,

    ich muss mit meinem Problem mich wieder mal melden. Wir wollen eine Ansage über den repeater laufen lassen, der über Cronjob zeitlich gesteuert wird. dazu habe ich die Dateien, so wie hier beschrieben:
    http://svxlink.de/?page_id=1568
    eingebaut. Leider funktioniert das so glaub ich nicht. Entweder stimmen die Pfadangaben nicht oder ich versteh irgendwas verkehrt.
    Die Prozedur hab ich in ein Verzeichnis wie hier: /usr/share/svxlink/sounds/de_DE/events.d/local
    reingepackt und auch die idle-active.sh so erstellt. Wenn mich nicht alles täuscht sollte doch die Prozedur "RepeaterLogic" als Erweiterung in das Verzeichnis:
    /usr/share/svxlink/events.d/local und nicht in sounds? Die Wave-Datei muss natürlich in das Saoundverzeichnis, aber dann dürften die Pfadangaben in den dateien auch nicht korrekt sein. Irgendwie versteh ich das nicht, vielleicht hat das ja irgendjemand am laufen, der könnte mir mal einen tip geben.
    Ausserdem müsste ich wissen, wo man die Zeit nach dem der Repeater aufgetastet war, die Prozedur aufgerufen wird. Es könnte natürlich sein, daß ich einen Denkfehler mache, da ja zur vollen Stunde die Kennung kommt und danach sollte eigentlich die Ansage kommen, also könnte die Zeit zu lang sein.

    Danke erst mal

    Manfred

  • ja ich hab es laufen: die ausgelieferten Flashcards für die Futrorechner beinhalten den Mechanismus auch freigeschaltet. Da ist alles eingestellt. ansonsten bitte die Anleitung genau lesen.

    Überdies hinausgehend biete ich Lesehilfe / persönliche Erläuterungen gerne über DB0HFT (meist abends oder am WE) an.

    vy 73

    Michael

  • Hallo,

    ich weis nicht, ob das richtig verstanden wurde, ist auch ein wenig kompliziert.
    Für eine Veranstaltung soll eine Sounddatei zu bestimmten Stunden, also 1 mal vormittag und einmal nachmittag, abgespielt werden. Da dachte ich, daß man das irgendwie realisieren könnte. Bei dem Repeater läuft Svxlink auf einem Mini - Rechner, ist also schon alles vorhanden. Jetzt wurde aber die Bitte geäussert, ein Soundfile laufen zu lassen, was aber nur zu einer bestimmten Zeit, wenn auf dem Repeater sowieso kein Betrieb ist, laufen soll. Ich bin halt auch nicht der große Linuxfreak, deshalb hab ich mir schon einigermassen schwer getan mit einem Cronjob zu erstellen. Die Datei idle-activate.sh hab ich auf den Rechner gelegt, so daß das zu erreichen ist. Aber der Repeater tut nicht das was ich möchte, d.h. die Wav-Datei wird nicht abgespielt. Auch wenn ich das mit dem tcl - Script mache, passiert nichts. Ich weis also so langsam nicht mehr weiter, was ich noch machen kann, damit das läuft. Eine andere Möglichkeit wäre noch das über ein DTMF - Kommando abzurufen. Das hab ich noch nicht probiert, aber das wäre die nächste Möglichkeit, oder Herausforderung.
    Vielleicht hat ja noch jemand eine Tip, wie man das eine oder andere bewerksteligen kann.


    73 Manfred

  • Hallo alle,

    Quote

    Für eine Veranstaltung soll eine Sounddatei zu bestimmten Stunden, also 1 mal vormittag und einmal nachmittag, abgespielt werden.

    Das klingt nach einer überschaubaren Anforderung, also ich denke in diesem Falle kann man die Sache doch erheblich vereinfachen. Ich muß ehrlich zugeben, dass Michas Lösung zwar sicher alle Eventualitäten "erschlägt" allerdings auch für mich nicht ganz so einfach nachzuvollziehen ist :oops:
    Ich würde da etwas anders ansetzen: In SvxLink gibt es ja die "every_minute{}-Prozedur, die immer zur vollen Minute aufgerufen wird. Diese kann man nutzen, wenn eine Ansage exakt zu einer gewünschten Minute augegeben werden soll. Hier kann man einfach eine eine if-Abfrage einfügen, die die aktuelle Zeit mit der geplanten Sendezeit vergleicht, a la:

    Code
    if {$aktuelle_Stunde == 10 && $aktuelle_Minute == 34} { 
      playMsg "Core" "Information-OV-Abend";
    }


    Die andere Variante wäre, diese Ansage mit den LONG_IDENT- oder SHORT_IDENT-Parametern zu koppelen, also die geplante Ausgabe(n) in die Prozeduren send_long_ident{} oder send_short_ident{} einzufügen, natürlich über das Locale-Konzept.
    Die Ausgabe würde dann an die routinemäßige Relaisidentifikation angefügt werden, natürlich kann man auch das mittels Zeitvergleich anpassen. So eine Lösung haben wir von Zeit zu Zeit auf DB0HAL laufen.

    In beiden Fällen kann man auf den crond verzichten, da die zeitliche Steuerung der Ansagen innerhalb des SvxLink-eigenen tcl-Frameworks ausgeführt wird. Ebenfalls ist es möglich diese Ausgaben OHNE Neustart von SvxLink ein- bzw. auszuschalten. Ich würde mal die beiden Varianten in Kürze unter Tips und Tricks einstellen, ok?

    vy 73's de Adi, DL1HRC

  • Hallo Adi,

    genau das wärs doch. Mit der Abfrage:

    if {$aktuelle_Stunde == 10 && $aktuelle_Minute == 34} {
    playMsg "Core" "Information-OV-Abend";
    }
    könnte das am einfachsten ausführen. Hoffe Du schaffst es "bald" das unter Tips und Tricks zu veröffentlichen, dann wären meine Probleme alle gelöst. So ähnlich könnte man das auch für vorgefertigte Rundsprüche, die als Wav-Datei vorliegen verwenden. Da müsste man nur noch irgendwo eine Abfrage des Wochentags einbauen. Der Ansatz dazu ist ja schon da, mit der Uhrzeit.
    Danke erst mal

    73 Manfred

  • Hallo Adi,

    ich hab mal die erste Variante bei meinem Simplexlink installiert. Da muss irgendwas nicht stimmen, oder geht das nur bei Repeater? Ich bekomme folgende Fehlermeldung wenn ich Svxlink starte:

    Error: Unable to handle event: SimplexLogic::every_minute in logic SimplexLogic (expected integer but got "now")

    Manfred

  • Hi Manfred,

    das sieht irgendwie danach aus, dass ein Integer mit der Zeichenfolge "now" verglichen wird, ist eventuell beim Kopieren ein $ abhanden gekommen (now statt $now)?
    Ich sollte eventuell die Dateien zum Download bereitstellen, das hatte ich vorhin nicht mehr mit eingebaut...der Weihnachtsmarkt hat gerufen :D

    vy 73's de Adi, DL1HRC

  • Hi Manfred,

    ich noch mal. Ich hatte das heute Nachmittag hier auf meiner Testumgebung ausprobiert, das sollte alles so laufen (eigentlich). Soll ich mal draufschauen bei Dir?

    vy 73's de Adi, DL1HRC

  • Hallo Adi,

    ich muss mich entschuldigen, ich brauch anscheinend doch eine neue Brille. Ich hatte da einen Fehler reingebaut. Es funktioniert, so wie es soll. Was ich noch wissen möchte, ob man da eine zweite Zeit eingeben kann und wie?
    Es ist sonst sehr gut und eignet sich auch für die Ansage z.B. für Weihnachtsgrüße, was ja jetzt aktuell ist. ;)

    73 Manfred

  • Hallo,
    habs selbst rausgefunden, oder probiert. Einfach diesen Teil:
    # eigene Ausgabezeiten definieren
    set ansage_Minute 05;
    set ansage_Stunde 09;

    puts "Es ist $hour:$minute, Ausgabe um $ansage_Stunde:$ansage_Minute";

    # prüfen ob Ausgabezeit erreicht ist
    if {$hour == $ansage_Stunde && $minute == $ansage_Minute} {
    puts "Ausgabe Relaisansage";
    playMsg "Core" "OV-Abend";
    }

    nochmal mit der 2. Zeit eintragen. Gibt vielleicht auch elegantere Lösungen, aber es funktioniert.

    Noch mal Danke an Adi.

    73 Manfred

  • Hallo Manfred,

    ja, so ein falsches Zeichen kann schon mal zu Fehlern führen. Insbesondere Groß- und Kleinschreibung macht schon mal Probleme.
    Noch eine zweite Zeit einzufügen ist nicht kompliziert, kann man so machen:

    Die Ausgabe würde dann um 9:05 und 15:05 erfolgen.

    vy 73's de Adi, DL1HRC

  • Ok,
    daß ist die elegantere Lösung, ich habs ein wenig umständlicher gemacht. Werd das aber gleich ausprobieren und sehen, ob alles so klappt.

    Danke

    Manfred

  • Hallo zusammen,

    es klappt wunderbar, ich hab sogar noch eine dritte Zeit eingetragen. Die Ansage laufen einfach gut.
    Dank Adi hat mal wieder alles super funktioniert.

    73 Manfred