FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Oli am 10 Januar 2013, 14:54:34

Titel: at-Schaltungen temporär deaktivieren
Beitrag von: Oli am 10 Januar 2013, 14:54:34
Hi Zusammen,

bin absoluter FHEM-Frischling und habe gerade erfolgreich meine erste Steckdose in Betrieb genommen ;-)

Ich habe via "at"s festgelegt, daß die angeschlossene Lampe täglich um 19:00 an und 22:00 ausgeht.

Auf der Web-Oberfläche bekomme ich ja beide angezeigt, ich kann Sie hier aber nicht deaktivieren.
Nach dem Motto : Heute möchte ich mal nicht, dass das Ding angeht -> Klick und die at´s sind deaktivier.

Ist sowas möglich ?

Gruss

Oli
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: Tobias am 10 Januar 2013, 15:10:33
Zitatattr <at-device> disable 1
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: jhohn am 10 Januar 2013, 15:13:11
Du kannst Dir einen Dummy bauen dem Du den Status aktiv oder passiv (oder ja/nein) zuweist und in deinen at prüfst ob der dummy status aktiv ist

define dummy_lampe_an dummy
attr dummy_lampe_an setList state:aktiv,passiv
attr dummy_lampe_an webCmd state

define at_lampe_an at 19:00:00 {fhem("set lampe on-for-timer 10800") if (Value("dummy_lampe_an") eq "aktiv");;}


so mal aus dem Kopf ohne Gewähr
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: Oli am 10 Januar 2013, 15:33:05
Super, vielen Dank.

Jetzt hat der Dummy auch den dummy verstanden ;-))
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: jhohn am 10 Januar 2013, 16:07:49
Die Variante von Tobias geht schneller, besonders wenn Du per Telnet auf der Kiste bist. Bei meiner Variante hast Du in der Weboberfläche einen Aktiv/Passiv Knopf und kannst den auch im Floorplan einbauen.
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: Oli am 10 Januar 2013, 16:22:14
Ich wollte genau den Knopf auf der Weboberfläche.

Leider habe ich das Problem, das mir die Konfiguration immer wegfliegt sobald
ich eine weitere Änderung an der cfg gemacht habe. Sehr strange :

define Vitrine dummy
attr Vitrine setList state:aktiviert,deaktiviert
attr Vitrine webCmd state
define Vitrine_Taeglich_An at 16:30:00 {fhem("set wz_Vitrine on") if (Value("Vitrine") eq "aktiviert");;}
define Vitrine_Taeglich_Aus at 16:31:00 {fhem("set wz_Vitrine off") if (Value("Vitrine") eq "aktiviert");;}
attr Vitrine room Wohnzimmer
attr Vitrine_Taeglich_An room Wohnzimmer
attr Vitrine_Taeglich_Aus room Wohnzimmer

Nach dem 2. speichern fliegt mir alles nach dem state raus.
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: jhohn am 10 Januar 2013, 16:42:32
von Hand eingegeben oder irgendwo raus kopiert?
Beim Kopieren können schon mal seltsame Zeilenumbrüche mit reingeraten
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: Oli am 10 Januar 2013, 16:43:46
Klappt doch.

Kaum macht man´s richtig - schon funktionierts.

Danke nochmal !
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: Sonic am 11 Januar 2013, 13:44:09
Hallo,
ich habe es mit nach deiner Anleitung nachgebaut.

#at Befehl mit Ein-Ausschalter für Waermepumpe

define WS_Waermempumpe dummy
attr WS_Waermempumpe icon icoHEIZUNG
attr WS_Waermempumpe room Heizung
attr WS_Waermempumpe setList state:aktiviert,deaktiviert
attr WS_Waermempumpe webCmd state

define Waermepumpe_Taeglich_An at 04:00:00 {fhem("set Waermepumpe on") if (Value("WS_Waermepumpe") eq "aktiviert")} \

define Waermepumpe_Taeglich_Off at 22:50:00 {fhem("set Waermepumpe off") if (Value("WS_Waermepumpe") eq "aktiviert")} \

Ich erhalte im Logfile folgende Fehlermeldung:

statefile: Waermepumpe_Taeglich_An already defined, delete it first
Waermepumpe_Taeglich_Off already defined, delete it first


Kann mir jemand helfen ?
Ich finde den Fehler nicht.

gruss
KLAUS
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: jhohn am 11 Januar 2013, 14:52:06
Waermepumpe_Taeglich_An und Waermepumpe_Taeglich_Off existieren schon, evtl. von Versuchen vorher, und müssen erst gelöscht werden.
Wenn Waermepumpe_Taeglich_An und _Off auch täglich ausgeführt werden sollen fehlt da ein * vor der Uhrzeit


delete Waermepumpe_Taeglich_An
delete Waermepumpe_Taeglich_Off
define Waermepumpe_Taeglich_An at *04:00:00 {fhem("set Waermepumpe on") if (Value("WS_Waermepumpe") eq "aktiviert");;}
define Waermepumpe_Taeglich_Aus at *22:50:00 {fhem("set Waermepumpe off") if (Value("WS_Waermepumpe") eq "aktiviert");;}


Willst Du die Wärmepumpe laufen lassen wenn Du nach dem Einschalten WS_Waermempumpe auf deaktiviert stellst oder soll sie immer ausgeschaltet werden wenn sie um 22:50 an ist?
Der zweite Fall währe dann sowas wie

define Waermepumpe_Taeglich_Aus at *22:50:00 {fhem("set Waermepumpe off") if (Value("Waermepumpe") eq "on");;}

Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: Sonic am 12 Januar 2013, 00:44:44
Guten Abend Jhohn,

vielen Dank für deine Antwort. Ich habe es soeben nach deiner Anleitung verbessert, und es scheint alles zu funktionieren.
Auch danke nochmal für deinen zweiteren Hinweis.
Du hast völlig Recht. Setze ich auf deaktiviert soll die Waermepumpe natürlich spätestens am Abend ausgeschaltet werden, und nicht mehr angeschaltet werden.
Erst dann, wenn ich nach meiner Urlaubsreise wieder auf aktiviert schalte.
Ich denke das müsste so klappen.
Darf ich dich noch fragen ob meine Vermutung so richtig ist ?

Wird die Waermepumpe auch brav AUS bleiben, wenn ich das dummy auf deactiviert setzte ?

schönen Abend
gruss
KLAUS
--------------------------------------------------
Final habe ich es so gemacht:

#at Befehl mit Ein-Ausschalter für Waermepumpe

define WS_Waermempumpe dummy
attr WS_Waermempumpe icon icoHEIZUNG
attr WS_Waermempumpe room Heizung
attr WS_Waermempumpe setList state:aktiviert,deaktiviert
attr WS_Waermempumpe webCmd state

define Waermepumpe_Taeglich_An at *04:00:00 {fhem("set Waermepumpe on") if (Value("WS_Waermepumpe") eq "aktiviert");;}
define Waermepumpe_Taeglich_Aus at *22:50:00 {fhem("set Waermepumpe off") if (Value("Waermepumpe") eq "on");;}
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: jhohn am 12 Januar 2013, 19:56:40
Meiner Meinung nach sollte das so funktionieren
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: ole30419 am 24 Juni 2013, 10:34:05
Hallo,

habe auch mal so ein aktiviert/deaktiviert Knopf versucht ein zubauen aber ich bekomme immer folgende Fehlermeldung im Log:
Zitat2013-06-24 10:13:00 Global global DELETED WZ_Roll_Terasse_Sonne_runter
2013-06-24 10:13:00 Global global DEFINED WZ_Roll_Terasse_Sonne_runter

hier der Code:define Sonne_Terrassenfenster dummy
attr Sonne_Terrassenfenster room Wohnzimmer
attr Sonne_Terrassenfenster setList state:aktiv,passiv
attr Sonne_Terrassenfenster webCmd state

define WZ_Roll_Terasse_Sonne_runter at *10:13 {fhem("set WZ_Roll_Terasse 20") if (Value("Sonne_Terrassenfenster") eq "aktiviert");;}


Ich komme leider nicht alleine weiter.......

Gruß Ole
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: Zrrronggg! am 24 Juni 2013, 14:04:58
Ohne dass ich verstehe was du genau machen und erreichen willst schlage ich erstmal vor, deine Zeile

Zitatdefine WZ_Roll_Terasse_Sonne_runter at *10:13 {fhem("set WZ_Roll_Terasse 20") if (Value("Sonne_Terrassenfenster") eq "aktiviert");;}

wie folgt zu schreiben:

define WZ_Roll_Terasse_Sonne_runter at *10:13:00 {if (Value("Sonne_Terrassenfenster") eq "aktiviert") { fhem("set WZ_Roll_Terasse 20") } }

(Die Leerzeichen vor und nach den Klammern dienen nur der Übersichtlichkeit und sind nicht zwingend.)


In jedem Fall müsstest du aber ein bisschen mehr schreiben.
Zitataber ich bekomme immer folgende Fehlermeldung im Log:
ist nur die halbe Miete. Was machst du, was sollte deiner Meinung nach passieren, und was passiert anstelle dessen?
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: Puschel74 am 24 Juni 2013, 14:18:44
Hallo,

wobei das

Zitat2013-06-24 10:13:00 Global global DELETED WZ_Roll_Terasse_Sonne_runter
2013-06-24 10:13:00 Global global DEFINED WZ_Roll_Terasse_Sonne_runter

ja keine Fehlermeldung im Sinne von das ist ein Fehler ist.
Zumindest in meinen Augen.

FHEM sagt damit ja nur das WZ_Roll_Terasse_Sonne_runter erst DELETED und dann DEFINED wurde.
Das ist ja an sich nicht falsch.

Grüße
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: ole30419 am 24 Juni 2013, 21:18:40
Hallo,
 ja ich möchte das ich im Sommer mein Terrassenfenster mit dem Rolladen beschatte. Das geht auch mit: "set WZ_Roll_Terasse 20" nun will ich auf der Weboberfläche auch ein Kopf zum aktiv/deaktivieren.
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: Puschel74 am 24 Juni 2013, 21:30:41
Hallo,

Das

Zitat2013-06-24 10:13:00 Global global DELETED WZ_Roll_Terasse_Sonne_runter
2013-06-24 10:13:00 Global global DEFINED WZ_Roll_Terasse_Sonne_runter

kommt daher

Zitatdefine WZ_Roll_Terasse_Sonne_runter at *10:13:00

Der * heisst täglich um 10:30 Uhr wird geprüft und danach für den nächsten Tag um 10:30 Uhr wieder angelegt (logischerweise).

Ich greif mal vor *Glaskugelpolier*.

Ich vermute mal du wunderst dich warum dein Code nicht das macht was er soll.
Er macht das schon richtig - so wie du ihn programmiert hast.
Das Problem wird vermutlich sein das du
Zitatif (Value("Sonne_Terrassenfenster") eq "aktiviert")
abfragst aber dein Dummy
Zitatattr Sonne_Terrassenfenster setList state:aktiv,passiv
aktiv oder passiv stehen hat.
Und aktiv != aktiviert
*Glaskugelwegräum*

Wenn ich falsch liege dann musst du uns schon genauer mitteilen was den nun nicht funktioniert und was dich zu dieser Annahme bewegt das es nicht so funktioniert.

Grüße
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: ole30419 am 24 Juni 2013, 22:09:54
Ich habe mit dem Befehl: " define WZ_Roll_Terasse_Sonne_runter at *10:13 set WZ_Roll_Terasse 20" mein Rolladen täglich in eine Art Beschattung für mein Terrassenfenster. Nun möchte ich auf der Weboberfläche dafür eine Knopf und wenn der auf "aktiv" steht soll der Rollladen in die Beschattung fahren und wenn der auf "passiv" steht soll der Rolladen oben bleiben. Aber alles was ich sehe ist das im eventMonitor steht ist:
Zitat2013-06-24 10:13:00 Global global DELETED WZ_Roll_Terasse_Sonne_runter
2013-06-24 10:13:00 Global global DEFINED WZ_Roll_Terasse_Sonne_runter
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: Puschel74 am 24 Juni 2013, 22:23:25
Hallo,

Zitat von: ole30419 schrieb am Mo, 24 Juni 2013 22:09Ich habe mit dem Befehl: " define WZ_Roll_Terasse_Sonne_runter at *10:13 set WZ_Roll_Terasse 20" mein Rolladen täglich in eine Art Beschattung für mein Terrassenfenster. Nun möchte ich auf der Weboberfläche dafür eine Knopf und wenn der auf "aktiv" steht soll der Rollladen in die Beschattung fahren und wenn der auf "passiv" steht soll der Rolladen oben bleiben. Aber alles was ich sehe ist das im eventMonitor steht ist:
Zitat2013-06-24 10:13:00 Global global DELETED WZ_Roll_Terasse_Sonne_runter
2013-06-24 10:13:00 Global global DEFINED WZ_Roll_Terasse_Sonne_runter

Und das ist das was ich oben schon beschrieben habe.
FHEM prüft um 10:13 das at - da ein * vorne dran steht wird es um 10:13 gelöscht und neu angelegt für den nächsten Tag.

Grüße
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: ole30419 am 24 Juni 2013, 22:49:15
Ja, es geht .....

ich habe das Und aktiv != aktiviert nicht richtig gelesen. Nun habe ich das noch ein mal berichtigt und es hat geklappt, Super Danke !!! Sorry das ich das nicht gleich geschnallt habe
define Sonne_Terrassenfenster dummy
attr Sonne_Terrassenfenster room Wohnzimmer
attr Sonne_Terrassenfenster setList state:aktiv,passiv
attr Sonne_Terrassenfenster webCmd state
define WZ_Roll_Terasse_Sonne_runter at *10:13 {fhem("set WZ_Roll_Terasse 20") if (Value("Sonne_Terrassenfenster") eq "aktiv");;}
Titel: Aw: at-Schaltungen temporär deaktivieren
Beitrag von: Puschel74 am 24 Juni 2013, 23:07:29
Hallo,

ZitatSorry das ich das nicht gleich geschnallt habe

Da gibt es nichts zu entschuldigen ;-)

Ich hätte ja auch anstelle von
Zitataktiv!=aktiviert
schreiben können das aktiv nicht gleich aktiviert bedeutet.
Aber das ! heisst in Perl (und auch einigen anderen Programmiersprachen) eben
Zitatnicht
und != heisst dann eben
Zitatnicht gleich
.
Das ! wirst du noch einige Male benötigen - spätestens wenn du auf (!($we)) prüfen willst (also nicht Wochenende).

Grüße