Hauptmenü

Modul 96_SIP

Begonnen von Wzut, 19 Februar 2017, 19:10:09

Vorheriges Thema - Nächstes Thema

f-zappa

Zitat von: Wzut am 25 Februar 2017, 19:45:43
ich hatte bisher nie Bedarf für Sprachausgabe. Wenn ich die command.ref zu Text2Speech richtig verstehe, geht das Audiofile immer direkt zum Alsadevice via mplayer.
Wenn es aber einen Weg gibt das zu unterdrücken und die mp3 unter einem definierten Namen abzuspeichern könnte man die vermutlich on-the-fly mit sox konvertieren und dem call Befehl übergeben.  Dafür müsste mir aber jemand Nachhilfestunden in Sachen TTS geben.
Vielleicht wäre es einfacher und universeller, wenn man statt Files und DTMF-Tönen als weitere Möglichkeit einbaut, dass ein externes Programm die Audioausgabe erzeugt.
Dazu könnte man ein weiteres Präfix einführen (z.B. "+") und das externe Kommando könnte in ein Attribut (z.B. "sip_outputcmd = /usr/local/bin/mein_tts_script.sh"). Wenn die Nachricht in "set<name> call <nummer> [<ringtime>] [<nachricht>" mit dem Präfix beginnt, würde das hinterlegte Script (mit dem Rest von <nachricht> als Argument) ausgeführt und dessen Output (statt eines fixen Files) abgespielt.
Damit könnte sich jeder seine bevorzugte eigene TTS einbinden - oder auch andere Spielereien umsetzen, z.B. Musik abspielen.

plin

Hallo,

kurzer Zwischenstand zum Thema listen_for_dtmf auf einem Raspi2: Bei mir kommt auch kaum ein Tastendruck durch. Die FHEM-Instanz auf meinem Server mit Intel-CPU hat keine Probleme jeden einzelnen Tastendruck zu erkennen. htop hat mir dann gezeigt, dass der erste der 4 Cores des Raspi2 auf 100% geht, sobald FHEM den listen_for_dtmf-Anruf entgegen genommen hat. Wenn man aber schnell genug ist (anrufen, #23 absetzen, auflegen) klappt's.

Ist vielleicht doch etwas viel für die kleine Kiste.

VG plin

P.S. Auf beiden ist Net:SIP 0.808 installiert und ein aktuelles FHEM. Die Rahmenbedingungen sind also identisch.
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

Wzut

Ankündigung
Ab morgen früh wird es eine neue Version geben.
Die wichtigste Änderung : Das Attribut sip_password wurde entfernt !
Um das das Passwort des SIP Users zu setzen muss einmalig der Befehl set <name> password <das_SIP_Passwort> ausgeführt werden.
(Nutzer des 72_FRITZBOX Moduls sollten das Verfahren zum Passwort speichern schon kennen)

Neu :
Attribut sip_dtmf_size , ( Wert 1 - 4 , default 2) damit ist der DTMF Empfang nicht mehr zwingend an 2 Zeichen gebunden.

Verbessertes Reading call_state, bei einem ausgehenden Anruf via set call kann nun in call_state angezeigt werden ob die Nachricht vollständig übertragen wurde (ok),
ob die Gegenseite den Ruf abgewiesen hat (canceled) oder gar nicht erst angenommen hat (no answer)
 
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

neo_owl

#78
Hallo,

ich habe die "alte" Version jetzt ein paar Tage getestet und finde es bisher sehr gelungen.
Angebunden habe ich FHEM an meine Asterisk-Telefonanlage als eigene Nebenstelle die sicherheitshalber keine Amtberechtigung hat.

Nutzen die ich es derzeit als Wecker, habe einfach einen call Befehl der mein schnurgebundes Nachttischtelefon klingeln läßt und mir ein
dieses ist ihr Weckruf gelaber wie im Hotel ansagt.

Zusätzlich nutze ich die Funktion mit der dtmf-Erkennung um mit der ich einige Geräte steuern kann ohne vom Sofa aufstehen zu müssen...

Ein notify guckt wenn dtmf gekommen ist..
Notify_DEV: sip_160:dtmf:.* {dtmf_read()}

und startet ein sub zum auswerten.

sub
dtmf_read
{
  my $dtmf = ReadingsVal('sip_160','dtmf','');
 
  #Deckenlampen
  if ($dtmf == 01){{fhem ("set LS_Esstisch toggle")}}
 
  # Heizung
  if ($dtmf == 50){{fhem ("set Heizungsmodus OFF")}}
  if ($dtmf == 51){{fhem ("set Heizungsmodus MIN")}}
  if ($dtmf == 52){{fhem ("set Heizungsmodus ECO")}}
  if ($dtmf == 53){{fhem ("set Heizungsmodus COMFORT")}}
  if ($dtmf == 53){{fhem ("set Heizungsmodus MAX")}}
}


Ist zur Zeit noch etwas einfach gestrickt aber ich kann mit einem Anruf mehrere Geräte schalten. Kann man aber definitiv noch ausbauen.

Ein Fehler ist mir allerdings im dtmf aufgefallen aus irgendeinem Grund funktioniert es nicht wenn ich 2 gleiche Zahlen benutzte z.B. 11 / 22 / usw... hier wird der Wert nicht übernommen.
Außerdem wäre ein Ton welche die übernahme der Werte bestätigt total geil.


Gruß
   Patrick

plin

Zitat von: neo_owl am 27 Februar 2017, 20:21:06
Ein Fehler ist mir allerdings im dtmf aufgefallen aus irgendeinem Grund funktioniert es nicht wenn ich 2 gleiche Zahlen benutzte z.B. 11 / 22 / usw... hier wird der Wert nicht übernommen.
Außerdem wäre ein Ton welche die übernahme der Werte bestätigt total geil.


Wär's ein Fehler wär's nicht im Wiki beschrieben;-)

Spaß beiseite. Wenn wir die Tastenentprellung beherrschen gibt's zu Weihnachten auch zweimal die gleiche Ziffer. Aktuell müssen es zwei unterschiedliche sein, damit die zweite eindeutig erkannt wird.
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

frank

#80
konnte schon jemand erfolgreich das password setzen? ich schaff es nicht.

"set triggerLiveCam password test" ergibt:
SIP user password successfully saved in FhemUtils/uniqueID Key SIP_triggerLiveCam_passwd

fhem.log:
2017.02.28 17:34:50.424 1: PERL WARNING: Use of uninitialized value $password in split at ./FHEM/96_SIP.pm line 810.
2017.02.28 17:34:50.425 1: stacktrace:
2017.02.28 17:34:50.425 1:     main::__ANON__                      called by ./FHEM/96_SIP.pm (810)
2017.02.28 17:34:50.425 1:     main::SIP_storePassword             called by ./FHEM/96_SIP.pm (478)
2017.02.28 17:34:50.425 1:     main::SIP_Set                       called by fhem.pl (3296)
2017.02.28 17:34:50.425 1:     main::CallFn                        called by fhem.pl (1649)
2017.02.28 17:34:50.426 1:     main::DoSet                         called by fhem.pl (1681)
2017.02.28 17:34:50.426 1:     main::CommandSet                    called by fhem.pl (1106)
2017.02.28 17:34:50.426 1:     main::AnalyzeCommand                called by fhem.pl (975)
2017.02.28 17:34:50.426 1:     main::AnalyzeCommandChain           called by ./FHEM/01_FHEMWEB.pm (2346)
2017.02.28 17:34:50.426 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (845)
2017.02.28 17:34:50.426 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (509)
2017.02.28 17:34:50.427 1:     main::FW_Read                       called by fhem.pl (3301)
2017.02.28 17:34:50.427 1:     main::CallFn                        called by fhem.pl (673)


im file steht nur:
SIP_triggerLiveCam_passwd:

-rw-r--r-- 1 fhem dialout   180 Feb 28 17:34 uniqueID

edit:
zeile 478: wenn ich das richtig sehe, wurde bis hier $subcmd noch nicht initialisiert.
return SIP_storePassword($name,$subcmd);
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

det.

bei mir leider dto.
der Platz im Passwordfile nach SIP_TELEFON_passwd: ist leer
LG
det.

plin

Abhilfe schafft die $subcmd = -... Zeile


...
  elsif ($cmd eq "password")
  {
    $subcmd  = (defined($a[2])) ? $a[2] : "";
    return SIP_storePassword($name,$subcmd);
  }
...


VG plin
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

frank

ok, password funktioniert nun.

dtmf 4 stellen werden auch sauber erkannt. sehr geil.  :)
allerdings muss nach dem ändern von sip_dtmf_size unbedingt ein set reset erfolgen, sonst ist weiterhin die alte einstellung wirksam.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Wzut

Zitat von: frank am 28 Februar 2017, 17:45:00
zeile 478: wenn ich das richtig sehe, wurde bis hier $subcmd noch nicht initialisiert.
ja , sorry mein Fehler,  der Password Teil sollte eigentlich ein Stück tiefer stehen. Habe es eben gefixt und eingecheckt
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Wzut

Zitat von: frank am 28 Februar 2017, 20:51:54
allerdings muss nach dem ändern von sip_dtmf_size unbedingt ein set reset erfolgen, sonst ist weiterhin die alte einstellung wirksam.
ja und das trifft auch noch auf Änderungen an anderen Attributen zu.
Ein bereits laufender Listen Prozess hat keinen Zugriff auf die geänderten Attrbute, dazu muss er gestoppt und neu gestartet werden.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

hartenthaler

ok, dann fände ich es aber besser, wenn das bei einer solchen Attribut-Änderung automatisch passieren würde. Hat zwar ggf. auch Nebenwirkungen falls gerade eine Erkennung läuft, aber das fände ich nicht tragisch, denn ich will ja aus irgendeiner Absicht heraus ein Attribut ändern.
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

DerTom

Zitat von: Wzut am 26 Februar 2017, 17:25:46
Vermutlich nichts , die Frage ist vllt welches FB Modell mit welcher Firmware du benutzt.
Bzw. auf welchem Unterbau läuft das SIP Modul und welche Version von Net::Sip ?

Ich nutze auf meinem Cubietruck unter Debian jessie (8.7) derzeit die V 0.687-1. Meine Fritzbox ist eine 7390 mit der aktuellen 6.80 FW.

Habe eben ein Update von FHEM gemacht und nutze also das Modul:

96_SIP.pm             13552 2017-02-28 21:04:02Z Wzut

Die Probleme waren bis auf den allerersten Versuch (und ich hab mich schon gefreut) allesamt nicht zufriedenstellend. Es werden Tasten erkannt, die ich gar nicht gedrückt habe oder es werden welche ausgelassen (oder übersprungen) und zu guter Letzt wird, obwohl ich (im Beispiel unten) eine Länge von 4 Zeichen eingegeben habe und schon mittendrin 4 Tasten erkannt wurden (dtmf Total: 2129) 5 Zeichen in das Reading geschrieben, weil er danach noch was erkannt hat...

Vorher hatte ich schon mal 2 Zeichen eingestellt, da hat er auch schon 3 ins Reading geschrieben...


2017.03.01 16:57:49.758 5: FB_SIP, SIP_filter : a:"Mobilteil_2" <sip:**612@fritz.box>;tag=37B597BB50E3C75A | b:Net::SIP::Request=HASH(0x1db05b0)
2017.03.01 16:57:56.707 5: FB_SIP : DTMF Event : #
2017.03.01 16:57:57.509 5: FB_SIP : DTMF Event : 2
2017.03.01 16:57:57.509 5: FB_SIP : DTMF Total: 2 , Anz: 2
2017.03.01 16:58:14.913 5: FB_SIP : DTMF Event : #
2017.03.01 16:58:22.157 5: FB_SIP : DTMF Event : 1
2017.03.01 16:58:22.158 5: FB_SIP : DTMF Total: 21 , Anz: 2
2017.03.01 16:58:22.644 5: FB_SIP : DTMF Event : 1
2017.03.01 16:58:23.060 5: FB_SIP : DTMF Event : 1
2017.03.01 16:58:28.588 5: FB_SIP : DTMF Event : 2
2017.03.01 16:58:28.588 5: FB_SIP : DTMF Total: 212 , Anz: 3
2017.03.01 16:58:35.004 2: HMCCU: Received no events from CCU since 300 seconds
2017.03.01 16:58:37.444 5: FB_SIP, listen prozess 4096 found
2017.03.01 16:59:03.117 5: FB_SIP : DTMF Event : 9
2017.03.01 16:59:03.117 5: FB_SIP : DTMF Total: 2129 , Anz: 4
2017.03.01 16:59:03.349 5: FB_SIP : DTMF Event : 9
2017.03.01 16:59:04.189 5: FB_SIP : DTMF Event : 8
2017.03.01 16:59:04.189 5: FB_SIP : DTMF Total: 21298 , Anz: 5
2017.03.01 16:59:04.190 5: FB_SIP, telnet : set FB_SIP dtmf_event 21298

2017.03.01 16:59:37.509 5: FB_SIP, listen prozess 4096 found
2017.03.01 16:59:40.292 5: FB_SIP, SIP_bye : HASH(0x4b46ad0)
2017.03.01 16:59:40.292 5: FB_SIP, telnet : set FB_SIP caller none
set FB_SIP caller_state hangup
exit


Hat jemand eine Idee?

plin

Hast du dir mal die CPU-Auslastung deines Cubietruck während des Anrufes angeschaut?
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

DerTom

Oha! Laut top geht die Auslastung von fhem auf 100%...das ist doch mal ein Ansatz. Wie kommt das?