Guten Abend,
derzeit suche ich nach einer passenden Lösung über den Teamspeak Clienten anhand einer Schnittstelle oder gar eines Plugins oder ein Python Script, das es mir ermöglicht, bei einem Gespräch in einem “Channel” die PTT an meiner Funkanlage mittels RTS/DTR Pin auslöst. Derzeit habe ich ein Script, das auf der Basis von “abfangen von Audiosignalen” läuft. Das funktioniert aber etwas störrisch und suche deshalb eine andere Lösung.
Hier mal das Python Script, das einen RTS Pin über VOX ansteuert.
#!/usr/bin/python
import tkinter as tk
import alsaaudio, time, audioop
import serial
# COM Port
com = '/dev/ttyUSB1'
# Level wann auf Durchgang geschalten wird
dbm = 0
# Sendeverzoegerung
svz = 3
# PTT nach Level halten
lvl = 60
# Sende und Empfangslevel
rx = 0
tx = 0
ser = serial.Serial(str(com), baudrate = 9600, timeout = 3.0)
audio = alsaaudio.PCM(alsaaudio.PCM_CAPTURE, alsaaudio.PCM_NONBLOCK)
audio.setformat(alsaaudio.PCM_FORMAT_S16_LE)
audio.setperiodsize(160)
audio.setchannels(1)
audio.setrate(8000)
def update():
global rx
global tx
a, data = audio.read()
if audioop.avgpp(data, 1) > dbm or audioop.max(data, 1) > dbm:
tx = tx + 2
if tx > svz:
tx = tx - 1
rx = 0;
oled_d.config(text = 'PTT: An', fg = 'red')
ser.setDTR(1)
ser.setRTS(1)
else:
rx = rx + 2
if rx >= lvl:
rx = rx - 1
tx = 0
oled_d.config(text = 'PTT: Aus', fg = 'green')
ser.setDTR(0)
ser.setRTS(0)
# Setze Fensterinhalte
oled_a.config(text = 'Zeile 1', fg = 'grey')
oled_b.config(text = '----------------------------------------------------------------------------------', fg = 'grey')
oled_c.config(text = 'Level max: ' + str(dbm) + ' db - Signal: ' + str(audioop.avgpp(data, 1)) + ' db', fg = 'black')
oled_e.config(text = '----------------------------------------------------------------------------------', fg = 'grey')
oled_f.config(text = 'Zeile 5', fg = 'grey')
# Ruhe
time.sleep(.001)
window.after(18, update)
# Starte den Fenstermanager
window = tk.Tk()
window.title(str('Fenstername'))
window.geometry('400x130')
oled_a = tk.Label(text = '', font=("Ubuntu Thin", 10))
oled_a.pack()
oled_b = tk.Label(text = '', font=("Ubuntu Thin", 10))
oled_b.pack()
oled_c = tk.Label(text = '', font=("Ubuntu Thin", 10))
oled_c.pack()
oled_d = tk.Label(text = '', font=("Ubuntu Thin", 10))
oled_d.pack()
oled_e = tk.Label(text = '', font=("Ubuntu Thin", 10))
oled_e.pack()
oled_f = tk.Label(text = '', font=("Ubuntu Thin", 10))
oled_f.pack()
window.after(18, update)
window.mainloop()