Python PTT Schaltung

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()

hi, ich bin mir nicht ganz Sicher, aber ich denke du kannst du ein eigenes lua script coden mittels lua addon?

Guten abend.

ALso das Funktionsprinzip stimmt, allerdings soll er das in von mir vorgegebene Zeitabständen machen. Zb. Wenn 15 Minuten um sind, dann sende diese Audiodatei an den Mikrofonausgang aber nur, wenn die PTT vorher nicht geschalten war.