FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Thoffi1978 am 05 September 2014, 21:43:06

Titel: Present mit Jalousiestatus verknüpfen
Beitrag von: Thoffi1978 am 05 September 2014, 21:43:06
Hallo,

ich habe einen Notify über present eingebaut.
So funktioniert das auch alles. Wenn die Coolstream angeschaltet wird, fährt die Jalousie zwischen 19-22Uhr runter.
Jetzt möchte ich aber, dass wenn die Jalousie bereits irgendwie runter gefahren ist, also nicht ganz oben. Sich diese nicht schließt.

Irgendwie habe ich aber ein Fehler in der cfg.
Vielleicht kann mir einer helfen?define Coolstream PRESENCE lan-ping 192.168.2.7
attr Coolstream event-on-change-reading state
attr Coolstream ping_count 1
define FileLog_Coolstream FileLog ./log/lgtv-%Y-%m.log Coolstream
define Coolstream_notify notify Coolstream:present iF ($hms gt "19:00" or $hms lt "22:00") && if (ReadingsVal("WZ_Jalousie_vorne_TV","state","100"))(set WZ_Jalousie_vorne_TV 0)


Vielen Dank schon mal
Torsten
Titel: Antw:Present mit Jalousiestatus verknüpfen
Beitrag von: frank am 05 September 2014, 23:12:29
entweder ein perl-if oder ein fhem-IF. aber was ist dieses iF.
Titel: Antw:Present mit Jalousiestatus verknüpfen
Beitrag von: Thoffi1978 am 08 September 2014, 21:40:25
Ich habe da iF gegen ein IF ausgetauscht. Das ist wohl durch das ganze ausprobieren mit geändert worden. Jetzt bekomme ich aber folgenden Fehler:

2014.09.08 20:46:47 3: Coolstream_notify return value: IF: no left bracket:  && IF (ReadingsVal("WZ_Jalousie_vorne_TV","state","100"))(set WZ_Jalousie_vorne_TV 0)

Kann mir einer sagen, wo ich den Fehler habe?
Vielen Dank
Torsten
Titel: Antw:Present mit Jalousiestatus verknüpfen
Beitrag von: Paul am 09 September 2014, 22:13:07
Du hast mE wieder IF und if kombiniert. Kenne mich mit IF nicht aus würde es aber so probieren:

define Coolstream_notify notify Coolstream:present {if (($hms gt "19:00" or $hms lt "22:00") && (ReadingsVal("WZ_Jalousie_vorne_TV","state","")= 100)) {fhem("set WZ_Jalousie_vorne_TV 0")}}
Titel: Antw:Present mit Jalousiestatus verknüpfen
Beitrag von: Puschel74 am 10 September 2014, 05:20:01
Hallo,

evtl. mal das Einsteiger.pdf durchschmöckern und im Forum das eine oder andere Beispiel anschauen.
IF findest du unter Automatisierung - es gibt auch einen eigenen Beitrag dazu.

Grüße
Titel: Antw:Present mit Jalousiestatus verknüpfen
Beitrag von: Icinger am 10 September 2014, 09:08:13
define Coolstream_notify notify Coolstream:present {if (($hms gt "19:00" or $hms lt "22:00") && (ReadingsVal("WZ_Jalousie_vorne_TV","state","")= 100)) {fhem("set WZ_Jalousie_vorne_TV 0")}}

Das kann so gar nicht funktionieren, da die aktuelle Uhrzeit ja immer NACH 19 Uhr oder VOR 22 Uhr ist :)

Eher so evtl:
define Coolstream_notify notify Coolstream:present {if (((localtime)[2]~~[19..21]) && (ReadingsVal("WZ_Jalousie_vorne_TV","state","")= 100)) {fhem("set WZ_Jalousie_vorne_TV 0")}}

Damit testest du nur die Stunde auf 19 bis 21.......Somit gehts aber nur bis 21:59, nicht bis 22 Uhr  8)

lg, Ici

PS: Ausserdem hat $hms den Wert hh:mm:ss (zB 09:08:17)....das kannst SO doch gar nicht gegen hh:mm (also 09:08) testen.
Titel: Antw:Present mit Jalousiestatus verknüpfen
Beitrag von: Thoffi1978 am 10 September 2014, 12:34:53
Vielen Dank für die Antworten,
jetzt wird die Zeit so berücksichtigt wie ich es mir auch dachte. Danke. Ich habe die Zeit natürlich angepasst damit ich nicht auf heute Abend warten muss, doch leider bekomme ich nun aber eine andere Fehlermeldung.:
ZitatCoolstream_notify return value: Can't modify non-lvalue subroutine call in scalar assignment at (eval 4581) line 1, near "100)"

Titel: Antw:Present mit Jalousiestatus verknüpfen
Beitrag von: Icinger am 10 September 2014, 14:12:48
Mea culpa, mein Fehler **kopfklatsch**

Zitat(ReadingsVal("WZ_Jalousie_vorne_TV","state","")= 100)

Da müssen zwei Gleichzeichen rein, sonst wärs ja eine Zuweisung
(ReadingsVal("WZ_Jalousie_vorne_TV","state","")== 100)

lg, Ici
Titel: Antw:Present mit Jalousiestatus verknüpfen
Beitrag von: Thoffi1978 am 11 September 2014, 11:44:45
Hej,
das ist ja echt super, wie schnell ich hier eine Antwort bekomme.
Ich habe den Code geändert und nun habe ich auch keine Fehlermeldung mehr.

Doch leider passiert nichts. Die Coolstream steht auf present, doch die Jalousie bewegt sich nicht.
Ich hatte erst einen Code mit der die Jalousie sich schloss aber es wurde dort kein Jalousiestatus (ob offen oder zu) berücksichtigt (mein erster Post)

So wie es jetzt in der fhem.cfg steht (ohne Funktion iregendwie)
define Coolstream_notify notify Coolstream:present {if (((localtime)[2]~~[11..21]) && (ReadingsVal("WZ_Jalousie_vorne_TV","state","")== 100)){fhem("set WZ_Jalousie_vorne_TV 0")}}
Irgendwie wie verhext. Ich hoffe "wie kommen den Fehler auf die Schliche"

Vielen Dank
Torsten
Titel: Antw:Present mit Jalousiestatus verknüpfen
Beitrag von: Puschel74 am 11 September 2014, 11:53:38
Hallo,

die Stati sind richtig?
Der Code wird abgearbeitet?
Du hast meinen Beitrag oben berücksichtigt?
Lass dir doch mal die Abfragen im Logfile eintragen.
Dazu gibt es bereits Beiträge.
Code und Fehlermeldungen - ist alles im angepinnten Beitrag im Anfängerbereich beschrieben.
Danke für deine Unterstützung.

Grüße

Edith: Und nun konkreter - wird das notify überhaupt getriggert?

Edith2:
ZitatIch hatte erst einen Code mit der die Jalousie sich schloss aber es wurde dort kein Jalousiestatus (ob offen oder zu) berücksichtigt (mein erster Post)
Meinst du diesen?
define Coolstream_notify notify Coolstream:present iF ($hms gt "19:00" or $hms lt "22:00") && if (ReadingsVal("WZ_Jalousie_vorne_TV","state","100"))(set WZ_Jalousie_vorne_TV 0)
Das würde mich wundern wenn iF klappen würde - ich bekomme bei so einem Versuch zumindest eine Fehlermeldung im Logfile (nicht das mich das verwundern würde):
Zitat2014.09.11 20:06:42 3: Log_dummy return value: syntax error at (eval 31) line 2, near ") {"
syntax error at (eval 31) line 5, near "}
}"
Titel: Antw:Present mit Jalousiestatus verknüpfen
Beitrag von: Thoffi1978 am 11 September 2014, 22:30:12
Hallo,

also der Notify wird unter "Notify" angezeigt.
Unter "Presence" wird der Status auch korrekt angezeigt.

Eine Fehlermeldung habe ich komischer Weise nicht. Ich habe aber gerade gemerkt das die Jalousie sich schließt auch ausserhalb des Zeitraumes. Ich habe aber die Sekunden hinzugefügt also so "19:00:00" or $hms lt "21:00:00".
So würde ich sagen, das die Anwesenheitserkennung wohl korrekt funktioniert, bloß die Zeitabfrage nicht erkannt wird

Wo kann ich sehen ob der Code richtig abgearbeitet wurde? Im "Haupt"Logfile sehe ich z.Zt. nichts. Ich habe einmal verbose auf 5 gesetzt. Je höher desto mehr wird geloggt, war richtig, oder?

Kann ich dem Coolstream_notify auch einzeln ein Logfile geben wo die Abarbeitung eingetragen wird?
Ich habe das einmal so veruscht, doch da steht leider nichts drinnen:
attr Coolstream_notify room Wohnzimmer
define FileLog_Coolstream_notify FileLog ./log/notifytv-%Y-%m.log Coolstream_notify
attr FileLog_Coolstream_notify room File_Log
attr FileLog_Coolstream_notify verbose 5

Titel: Antw:Present mit Jalousiestatus verknüpfen
Beitrag von: Puschel74 am 12 September 2014, 18:23:21
Hallo,

versuch mal sowas:
define Coolstream_notify notify Coolstream:present {
  Log(3,"$NAME - $EVENT");
  Log(3,"$hms");
}

Dann siehst du erstmal ob das notify überhaupt auf dein Coolstream reagiert und wie spät es bei dem Trigger war.

Code ist NICHT für die fhem.cfg gedacht.
In die Befehlszeile einfach
define Coolstream_notify notify Coolstream:present { eingeben und den Rest per DEF hinzufügen.

Code ohne Anspruch auf Funktion.
Fehlermeldungen bitte hier posten.

Grüße
Titel: Antw:Present mit Jalousiestatus verknüpfen
Beitrag von: Thoffi1978 am 13 September 2014, 10:07:08
Hallo,
ich habe den Code über die Befehlszeile eingetragen  und den Rest per DEF hinzugefügt.
Wo finde ich den passenden Logfile dazu?

Wenn ich einen Logfile anlege:
define FileLog_Coolstream_notify FileLog ./log/Coolstream_notify-%Y-%m.log FileLog_Coolstream_notify
Dann finde ich zwar den Log, doch da steht nichts drinnen.

Vielen Dank
und ein sonniges Wochenende

Titel: Antw:Present mit Jalousiestatus verknüpfen
Beitrag von: Puschel74 am 13 September 2014, 10:32:09
Hallo,

für das bischen brauchst du kein eigenes Logfile - das FHEM-Logfile genügt für diese Zwecke.
Da ich aber alles! in eine Datenbank loggen lasse kann ich dir mit dem Logfile nicht helfen.
Aber lass mal das Logfile weg - lt. Titel geht es um den Code und nicht um das Logfile.

Grüße
Titel: Antw:Present mit Jalousiestatus verknüpfen
Beitrag von: Thoffi1978 am 16 September 2014, 18:43:08
Hallo,

anbei nun das Logfile. Die Box wird erkannt so wie ich es deute:
Zitat
--- 192.168.2.7 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss
2014.09.16 18:35:19 5: PRESENCE (Coolstream) - blocking scan result: Coolstream|0|absent
2014.09.16 18:35:19 4: PRESENCE (Coolstream) - rescheduling next check in 30 seconds
2014.09.16 18:35:49 5: PRESENCE (Coolstream) - stopping timer
2014.09.16 18:35:49 5: PRESENCE (Coolstream) - starting blocking call for mode lan-ping
2014.09.16 18:35:49 5: PRESENCE (Coolstream) - starting ping scan: Coolstream|192.168.2.7|0|1
2014.09.16 18:35:49 5: PRESENCE (Coolstream) - ping command returned with output:
PING 192.168.2.7 (192.168.2.7): 56 data bytes
64 bytes from 192.168.2.7: seq=0 ttl=64 time=1.925 ms
--- 192.168.2.7 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 3.482/3.482/3.482 ms
2014.09.16 18:37:51 5: PRESENCE (Coolstream) - blocking scan result: Coolstream|0|present
2014.09.16 18:37:51 4: PRESENCE (Coolstream) - rescheduling next check in 30 seconds
2014.09.16 18:38:21 5: PRESENCE (Coolstream) - stopping timer
2014.09.16 18:38:21 5: PRESENCE (Coolstream) - starting blocking call for mode lan-ping
2014.09.16 18:38:21 5: PRESENCE (Coolstream) - starting ping scan: Coolstream|192.168.2.7|0|1
2014.09.16 18:38:31 5: PRESENCE (Coolstream) - ping command returned with output:
PING 192.168.2.7 (192.168.2.7): 56 data bytes

--- 192.168.2.7 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss
2014.09.16 18:38:32 5: PRESENCE (Coolstream) - blocking scan result: Coolstream|0|absent
2014.09.16 18:38:32 4: PRESENCE (Coolstream) - rescheduling next check in 30 seconds
2014.09.16 18:39:02 5: PRESENCE (Coolstream) - stopping timer
2014.09.16 18:39:02 5: PRESENCE (Coolstream) - starting blocking call for mode lan-ping
2014.09.16 18:39:02 5: PRESENCE (Coolstream) - starting ping scan: Coolstream|192.168.2.7|0|1
2014.09.16 18:39:12 5: PRESENCE (Coolstream) - ping command returned with output:
PING 192.168.2.7 (192.168.2.7): 56 data bytes