Meine ersten zwei Notifies :)

Begonnen von Rince, 30 Mai 2013, 11:32:26

Vorheriges Thema - Nächstes Thema

Rince

Hi

voller Stolz präsentiere ich meine ersten zwei selbst zusammenkopierten Notifies:

## Jemand ruft mich an
define TelefonAN notify Fritz_Box:event:.ring { \
fhem "set OG_wz_WS_LICHT on";;\
fhem "set STV4 PAUSE";;\
}


## Anruf beendet
define TelefonAUS notify Fritz_Box:event:.disconnect { \
fhem "define Latenz at +00:00:10 set OG_wz_WS_LICHT off";;\
fhem "define Latenz2 at +00:00:10 set STV4 PLAY";;\
}



Funktionieren so wie sie sollen.

Das Telefon klingelt, der TV macht Pause, das Licht geht an
Das Telefonat ist beendet, 10 Sekunden später geht das Licht wieder aus und der Fernseher läuft weiter



Jetzt gibt es drei Sachen die stören:
1. Wenn das Licht beim Telefonat schon an war, sollte es beim Beenden vom Telefonat nicht ausgehen
2. Wenn mein Helligkeitssensor (CUL_HM_HM_Sen_MDIR_O_1A8306 brightness: 129) einen Wert von > 100 hat, braucht man das Licht nicht einschalten
3. Das notify läuft los, sobald ein .ring kommt. Es sollte nur laufen, wenn ein Ring auf meine Nummer 37979755 kommt, weil Faxgerät oder Schwiegerelterntelefonate interessieren mich nicht wirklich

Hat jemand zufällig eine coole Idee?
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Ralph

Moin, bin auf Reisen, daher nur kurz.
Es gibt in der FB einen Job namens calllog mit 3 l.
Dorthin übergibt die FB die Nummer des Anrufenden und die angerufene Nummer.
Dies mit einen Shell-Script auswerten und einen Event generieren.
FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen

Rince

Danke für die Antwort. Ich hoffe ich habe sie richtig verstanden ;)
Wenn ja, dann trifft das nicht auf mich zu, weil:

Ich betreibe FHEM auf einem Raspberry.


Und im Logfile taucht das eigentlich alles auf was ich brauche:

2013-05-30_12:02:46 Fritz_Box event: ring
2013-05-30_12:02:46 Fritz_Box external_number: 081512345
2013-05-30_12:02:46 Fritz_Box external_name: JohnDoe
2013-05-30_12:02:46 Fritz_Box internal_number: 37979755
2013-05-30_12:02:46 Fritz_Box external_connection: SIP1
2013-05-30_12:02:46 Fritz_Box call_id: 0
2013-05-30_12:03:06 Fritz_Box event: connect
2013-05-30_12:03:06 Fritz_Box internal_connection: VoIP_3
2013-05-30_12:03:06 Fritz_Box call_id: 0
2013-05-30_12:04:42 Fritz_Box event: disconnect
2013-05-30_12:04:42 Fritz_Box call_duration: 96

Ich bekomme diese komischen if Schleifen und die Readings noch nicht hin.

Das notify müsste also zunächst prüfen, ob die internal_number = 37979755 ist, oder?
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Ralph

Schade, ich habe nämlich gerade meinen alten Beitrag davon wiedergefunden.

http://www.kdgforum.de/viewtopic.php?f=67&t=11693
FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen

Puschel74

Hallo,

ZitatDas notify müsste also zunächst prüfen, ob die internal_number = 37979755 ist, oder?
Ja, das wäre gut ;-)
Wenn
Zitatinternal_number: 37979755
müsstest du das evtl. mit einem ReadingsVal auslesen können.
my $number=ReadingsVal(("Fritz_Box","internal_number",99));
  if ($number = 37979755) {
hier der Code wenn die interne Nummer 37979755 ist


Ungetestet und ohne Gewähr.
Ich weiß - das lässt sich auch ohne den Umweg über die Variable lösen.
Ich schreib aber gern alles in Variablen - alte AmigaBasic-Marotte von mir.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Rince

@Ralph: trotzdem vielen Dank :)


@Puschel

Danke schön.
Jetzt sieht es so aus:
## Jemand ruft mich an
define TelefonAN notify Fritz_Box:event:.ring { \

my $number=ReadingsVal(("Fritz_Box","internal_number",99));
  if ($number = 37979755) {
    fhem "set OG_wz_WS_LICHT on";;\
    fhem "set STV4 PAUSE";;\
  }
}




Und gibt folgende Fehlermeldung:
ZitatERROR:

Unknown command my, try help Unknown command if, try help Unknown command fhem, try help Unknown command }, try help


liegt das an dem oberen {\   ???

Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Puschel74

Hallo,

nein. Das liegt daran das ich das DEF des notify bearbeite und nicht die Konfig.
wenn du den Code in die Konfig schreibst musst du dich bitte selbst um die Zeilenumbrüche \\ und ;; kümmern.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Rince

???
Ich habe ein ziemlich großes Brett vorm Kopf ;)

Notifies gehören nicht in die fhem.cfg?
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Puschel74

Hallo,

natürlich gehören sie dahin.

Aber es kommt drauf an wo du sie bearbeitest.

Ich mach das hier:

(siehe Anhang / see attachement)

indem ich links auf DEF klicke.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Rince

Aha.

Ok. Habe mir das Notify ohne Befehle in der fhem.cfg angelegt.
Dann bekomme ich unter Everything  mein Notify angezeigt.
Kann draufklicken und dann auf DEF.

Das sieht jetzt da drinnen so aus:
Fritz_Box:event:.ring {
my $number=ReadingsVal(("Fritz_Box","internal_number",99));
if ($number = 37979755) {
fhem "set OG_wz_WS_LICHT on";
fhem "set STV4 PAUSE";
}
}


In der fhem.conf sieht es so aus:
define TelefonAN notify Fritz_Box:event:.ring { \
my $number=ReadingsVal(("Fritz_Box","internal_number",99));;\
if ($number = 37979755) { \
fhem "set OG_wz_WS_LICHT on";;\
fhem "set STV4 PAUSE";;\
}\
}


Jetzt ergibt sich folgende Fehlermeldung im Log:

ZitatTelefonAN return value: Not enough arguments for main::ReadingsVal at (eval 160) line 1, near "))"

Das sieht zumindest schon besser aus.

Allerdings wird natürlich nix geschaltet :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Puschel74

Hallo,

jo. Fehler von mir.

my $number=(ReadingsVal("Fritz_Box","internal_number",99));

sollte besser passen.

Und wieder. Ungetestet und ohne Gewähr.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Rince

HEUREKA!

Das klappt :)


Zu gut. Irgendwie ist es jetzt immer wahr.

## Jemand ruft mich an
define TelefonAN notify Fritz_Box:event:.ring { \
my $number=(ReadingsVal("Fritz_Box","internal_number",99));;\
if ($number = 37979755) { \
fhem "set OG_wz_WS_LICHT on";;\
fhem "set STV4 PAUSE";;\
}\
}



Auf der Detailseite der FritzBox steht aber die richtige Nummer drin.

Im Eventmonitor passt es auch :(


Wir kreisen das Ziel ein :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Puschel74

Hallo,

noch ein Fehler von mir ;-)
if ($number == 37979755) {

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Rince

TOP!

Jetzt läuft es :)
Danke Puschel!!!



Ich werde mal selber versuchen die anderen Optimierungen vor zu nehmen, jetzt habe ich ja ein schönes Beispiel :)
Ein Reading auf die Brightness.

Dann noch einen GetState (?) auf das Licht, ob es nicht schon an ist, sonst wäre ja Ausschalten hinterher doof :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Puschel74

Hallo,

gerne doch.

ZitatIch werde mal selber versuchen die anderen Optimierungen vor zu nehmen, jetzt habe ich ja ein schönes Beispiel :)
Ein Reading auf die Brightness.

Mach das mal.
Bei Fragen ... du bist ja registriert im Forum ;-)

ZitatDann noch einen GetState (?) auf das Licht, ob es nicht schon an ist, sonst wäre ja Ausschalten hinterher doof :)

Na ob das so einfach klappen wird?
Du müsstest wissen das das Licht schon eingeschalten war und nicht durch den Anruf eingeschalten wurde.

Ich würde, sicher mal wieder zu kompliziert, den Status des Lichts (ein oder aus) vor dem einschalten durch den Code in einen Dummy sichern
und beim abschalten prüfen ob der Dummy gesetzt ist.
Wenn ja war das Licht vor dem Anruf schon an - wenn nein hat der Anruf das Licht eingeschaltet und soll daher wieder ausgeschaltet
werden.

Aber hier führen ja auch wieder viele Wege zum Ziel und alle sind gleich richtig.
Vllt. nicht gleich elegant aber gleich richtig wenn dein Code am Ende das macht was du willst.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.