Present mit Jalousiestatus verknüpfen

Begonnen von Thoffi1978, 05 September 2014, 21:43:06

Vorheriges Thema - Nächstes Thema

Thoffi1978

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

frank

entweder ein perl-if oder ein fhem-IF. aber was ist dieses iF.
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

Thoffi1978

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

Paul

#3
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")}}
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Puschel74

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
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.

Icinger

#5
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.
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

Thoffi1978

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


Icinger

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
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

Thoffi1978

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

Puschel74

#9
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 "}
}"
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.

Thoffi1978

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


Puschel74

#11
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
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.

Thoffi1978

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


Puschel74

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
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.

Thoffi1978

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