VOIP mit linphone

Begonnen von Samsi, 13 August 2014, 18:38:39

Vorheriges Thema - Nächstes Thema

Samsi

Hallo,


ich habe mir auf meinem BBB linphone installiert (apt-get install linphone; sollte auch auf anderen linux systemen laufen)

Dann habe ich ein Shell Script gemacht:

#!/bin/bash
linphonecsh init
sleep 4
linphonecsh register --host 192.168.0.15 --username xxxxxxxx   --password xxxxxxxxxxx  #VOIP benutzer auf meiner FritzBox
linphonecsh generic "soundcard use files"
linphonecsh dial **613   # Interne Rufnummer der Fritzbox anrufen
sleep 2
linphonecsh generic "speak default hallo"
sleep 8      #Nötig, damit linphone nicht auflegt, bevor die Sprachausgabe zu Ende ist. Bei längeren Texten entsprechend erhöhen.
linphonecsh hangup
linphonecsh exit
sleep 2


Das script habe ich in /opt/fhem abgelegt und ausführbar gemacht.
Außerdem habe ich das script noch in etc/sudoers für den user fhem eingetragen.

mit

system('sudo ./sipcall.sh');

kann ich es aus FHEM heraus aufrufen und es funktioniert auch.

Aber ein Problem habe ich noch: durch die sleeps blockiert das sehr lange. Ich wollte es also so aufrufen:

system('sudo ./sipcall.sh &');

Aber leider funktioniert es dann nicht mehr.  Von der Shell aus geht das mit dem &

Vielleicht hat da jemand eine Idee?

Grüße





FHEM 5.5 / BBB Debian Wheezy

Homematic CFG-LAN

HM-Sec-MDIR / HM-Sec-SD / HM-Sec-WDS / HM-LC-Sw2-FM / HM-Sec-SC / HM-LC-Sw1PBU-FM / HM-SCI-3-FM / HM-Sec-Key / HM-RC-Key3-B / HM-LC-Dim1TPBU-FM /  HM-CC-RT-DN / HM-PBI-4-FM / HM-RC-Key4-2 / HM-ES-PMSw1-Pl / HM-LC-Sw4-WM

Samsi

#1
Ich bin ein Stück weiter:

Wenn ich den user fhem in die Gruppe root nehme, dann geht es ohne sudo und dann funktioniert auch das &:

system('./sipcall.sh &');

Da ich aber fhem nicht dauerhaft in der Gruppe root lassen will, vielleicht weiss jemand, warum das mit sudo nicht richtig mit dem & funktioniert.

Grüße


EDIT: Ich habe fhem wieer aus der Gruppe root rausgenommen und es geht immer noch mit:

system('./sipcall.sh &');

Ich vermute ich hätte einen reboot machen müssen nachdem ich fhem in etc/sudoers eingetragen hatte.
FHEM 5.5 / BBB Debian Wheezy

Homematic CFG-LAN

HM-Sec-MDIR / HM-Sec-SD / HM-Sec-WDS / HM-LC-Sw2-FM / HM-Sec-SC / HM-LC-Sw1PBU-FM / HM-SCI-3-FM / HM-Sec-Key / HM-RC-Key3-B / HM-LC-Dim1TPBU-FM /  HM-CC-RT-DN / HM-PBI-4-FM / HM-RC-Key4-2 / HM-ES-PMSw1-Pl / HM-LC-Sw4-WM

P.A.Trick

Hm eigentlich solltest du mit dem sudo den absoluten Pfad angeben, weil man als sudo Root ist! Vielleicht liegt da der Hund begraben!?
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Samsi

Hi P.A.Trick

Es geht ja jetzt auch ohne root. Das problem war das ich nicht rebootet hatte, nachdem ich fhem in etc/sudoers eingetragen hatte.
FHEM 5.5 / BBB Debian Wheezy

Homematic CFG-LAN

HM-Sec-MDIR / HM-Sec-SD / HM-Sec-WDS / HM-LC-Sw2-FM / HM-Sec-SC / HM-LC-Sw1PBU-FM / HM-SCI-3-FM / HM-Sec-Key / HM-RC-Key3-B / HM-LC-Dim1TPBU-FM /  HM-CC-RT-DN / HM-PBI-4-FM / HM-RC-Key4-2 / HM-ES-PMSw1-Pl / HM-LC-Sw4-WM

P.A.Trick

Zitat von: Samsi am 13 August 2014, 23:01:21
Hi P.A.Trick

Es geht ja jetzt auch ohne root. Das problem war das ich nicht rebootet hatte, nachdem ich fhem in etc/sudoers eingetragen hatte.

Dafür muss man aber nicht booten!?
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Markus Hermann

Wenn ich das Thema noch mal aufgreifen darf.

Ich habe Dein Script, Samsi, nun auf den Cubietruck installiert und möchte eigentlich nur, dass Fhem mich von einer bestimmten Nummer über die Fritzbox anruft. (Alarmmeldung)
Das klappt auch soweit, nur dass nach dem ich angerufen wurde und es ein paar mal auf dem Handy geklingelt hat, das "linphonecsh hangup" wohl NICHT ausgeführt wird,
dadurch FHEM auch nicht weiter arbeitet.

Das heißt der sipcall.sh Sricpt wird nicht beendet

Wenn ich das Script über PUTTY mit sudo ./sipcall.sh aufrufe bleibt das Script auch bei "linphonecsh hangup" hängen.

Und wenn ich den Befehl linphonecsh hangup in der Shell  eingebe passiert auch nichts.

Hast jemand eine Idee warum das so ist?

#!/bin/bash
linphonecsh init
sleep 4
linphonecsh register --host 192.168.2.1 --username 620  --password 620  #Die ausgehende Rufnummer ist im Handy-Telefonbuch als ALARM hinterlegt.
linphonecsh dial 0176xxxxxxxx   # externe Handy-Rufnummer über die Fritzbox anrufen
sleep 8      #Ein paar Mal klingel sollte reichen.
echo vor dem hangup
linphonecsh hangup #Hier bleibt der script stehen.
echo nach dem hangup
linphonecsh exit #Das wohl nicht.
sleep 2


Gruß
Markus
CUL/CUL-RFR/HM-LAN an Cubietruck

FS20/FHT/TFK/UTS/KS300/HM-SEC-SC/HMS100/HM-OU-CFM-PL/HM-RC-SEC3/

FLOORPLAN auf Android-Tablet und VDR

heinerwm

#6
Hallo,

ich habe das gleiche Problem wie Markus mit dem script von Samsi auf meinem rpi B+. und habe im Internet keine Lösung gefunden. Markus, hast du eine Lösung gefunden?

Gruß Heiner

Markus Hermann

Da ich nur einen Anruf benötige, habe ich einfach ein killall -9 linphonecsh statt des hangup eingefügt.

Ist zwar nicht so elegant, aber dafür klappt es so ganz gut.

Gruß
Markus

CUL/CUL-RFR/HM-LAN an Cubietruck

FS20/FHT/TFK/UTS/KS300/HM-SEC-SC/HMS100/HM-OU-CFM-PL/HM-RC-SEC3/

FLOORPLAN auf Android-Tablet und VDR

heinerwm

Danke, Markus, für den Tipp,

ich habe jetzt nur Fehlermeldungen wie "cannot connect to pipe...", zu denen ich bisher keine Lösung gefunden habe.

Ich werde mich jetzt auch mal der fritzbox-api (http://forum.fhem.de/index.php?topic=16570.0) widmen.

Gruß

Heiner

Reini

#9
Hallo zusammen,
wurde schon eine Lösung gefunden? Ich habe das gleiche Problem auf dem Raspberry, will hier einen Call starten und nach einer Wartezeit auflegen lassen (als Haustürklingel muss der Anruf nicht entgegengenommen werden). Der Befehl hangup, exit oder kill bringt nichts. Das Telefron klingelt und klingelt und klingelt...

Übrigens:
Ich verwende Linphonecsh und versuche über ein Phyton Skript einen SIP-Call abzusetzen. Das funktioniert auch bis auf das Auflegen...

rx

Ich kille in meinem Skript immer den linphonec - weil der auch die Pipe anlegt und nicht den linphonecsh.

Mein Skript sieht so aus:


#!/bin/bash
echo "Killing linphonec ..."
killall -9 linphonec

SIP_HOST='192.168.179.1'
SIP_USER='620'
SIP_PASS='foobarfoobar'
CALL='**611'

########################################
get_phone_state () {
linphonecsh status register 2>/dev/null 1>&2
if [ $? -eq $1 ]; then
  true
else
  false
fi
}
get_call_state () {
linphonecsh status hook 2>/dev/null 1>&2
if [ $? -eq $1 ]; then
  true
else
  false
fi
}

# ret code 255 = no daemon started
if get_phone_state 255; then
echo "Starting Phone client ..."
linphonecsh init
while get_phone_state 255; do sleep 0.2; done
else echo "Phone client already started ..."
fi

# ret code 0 = unregistered
# ret code 1 = registered
if get_phone_state 0; then
echo "Register Client on SIP Server ..."
linphonecsh register --host ${SIP_HOST} --username ${SIP_USER} --password ${SIP_PASS}
else echo "Client already registered ..."
fi
while ! get_phone_state 1; do sleep 0.2; done

echo "Calling Number: ${CALL} ..."
linphonecsh dial ${CALL}

echo "Sleeping three seconds ..."
sleep 3

echo "Killing linphonec ..."
killall linphonec

echo "Exit."
exit 0



Der Prozess läuft als fhem und das ist auch wichtig, da linphone sonst das Device /dev/null mit falschen Berechtigungen versieht  (jedenfalls in der Version, die ich verwende) und dann geht nichts mehr bis das behoben ist. Also kontrolliert auch mal ls -l /dev/null wie die Berechtigungen sind.

Server started with 1333 defined entities (fhem.pl:27302/2023-03-05 perl:5.028001 os:linux user:root pid:29591)

heinerwm

#11
Bisher habe ich die fritzbox-api genutzt (mein Beitrag vom 14.10.2014). Die geht aber nicht mehr mit Fritzbox 6.30.  Mit dem Script von rx habe ich jetzt erstmals einen Anruf durch FHEM erreichen können, ohne dass der raspbery abgestürzt ist. Allerdings habe ich das script (vorsichtshalber) um  linphonecsh generic "soundcard use files" erweitert. Also: herzlichen Dank an rx!
LG Heiner