FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Jak am 03 Oktober 2015, 16:49:13

Titel: Einfache If Anweisung
Beitrag von: Jak am 03 Oktober 2015, 16:49:13
Ich möchte abhängig von einem Dummy in der Zeit von 18:00 bis 23:00 eine Steckdose schalten wenn ein Schalter aktiviert wurde und brauch dazu eine einfache IF Anweisung
Der Dummy hat den Namen: Freigabe
Den Schalter hat den Namen: SchalterTuer
Die Steckdose bez. ich: HM_Steckdose

Habe schon einiges probiert, bekomme des aber nicht hin

define TimeAktiviert *18.00 set HM_Steckdose on

dieser Befehl funktioniert. Auch das notify funktioniert wenn ich des einzeln definiere.

Hat jemand eine Idee?


Danke
Jakob
Titel: Antw:Einfache If Anweisung
Beitrag von: FranzB94 am 03 Oktober 2015, 16:59:46
Zitat von: Jak am 03 Oktober 2015, 16:49:13
Hat jemand eine Idee?

schau dir doch mal http://fhem.de/commandref.html#DOIF (http://fhem.de/commandref.html#DOIF) an
Titel: Antw:Einfache If Anweisung
Beitrag von: Jak am 03 Oktober 2015, 17:08:41
Danke für die schnelle Antwort.

Mir sind aber die vielen Variablen die ich hier vorgeben kann zu kompliziert und hoffe auf ein konkretes Beispiel.
Vielleicht kann mir da nochmals jemand helfen, da ich anscheinend die letzen zwei Stunden immer wieder Fehler eingebaut hatte in die Pearl Syntax


Danke
Jakob
Titel: Antw:Einfache If Anweisung
Beitrag von: franky08 am 03 Oktober 2015, 17:44:32
Hier mal ein Beispiel von mir, daraus kannst du den Code für dich einfach ableiten

Schalter_Tuer:open { if(!isday() && $hour ~~ [17..24]) { fhem "set Licht_SZ on-for-timer 120" } }

VG
Frank
Titel: Antw:Einfache If Anweisung
Beitrag von: Jak am 03 Oktober 2015, 17:55:24
Ok

Vielen Dank für den Versuch. Für einen Anfaenger wie mich sind da zu viele Variablen und Sonderzeichen enthalten.

Ich hoffe es gibt noch was einfacheres für mich


Danke
Jakob
Titel: Antw:Einfache If Anweisung
Beitrag von: VB90 am 03 Oktober 2015, 18:08:03
da auch ich ein Freund von DOIF bin, will ich deine Verwirrung mal komplett machen :D

Ein DOIF könnte für deine Zwecke in etwa so aussehen:

define Nenn_es_wie_du_willst DOIF ([Zeitvon - Zeitbis] and [SchalterTür:state] eq "on")(set Steckdose on]

Das schaltet deine Steckdose ein.
Wie Du sie wieder aus bekommst, steht in der Commandref.
Tu dir selbst den Gefallen und lies dich in das Thema ein, Variablen hin oder her.
Du kannst nicht auf Dauer erwarten, das dir alles auf dem Silbertablett serviert wird. ;)

vb
Titel: Antw:Einfache If Anweisung
Beitrag von: UliM am 03 Oktober 2015, 18:14:44
define n_Steckdose notify SchalterTuer:on { fhem 'set HM_Steckdose on' if (Value('Freigabe') eq 'on' && $HMS gt '18:00:00' && $HMS lt '23:00:00') }
Ungetestet. Und auch nicht ohne Variablen :)


Zitat von: Jak am 03 Oktober 2015, 16:49:13
define TimeAktiviert *18.00 set HM_Steckdose on

dieser Befehl funktioniert.
Wohl kaum - da fehlt das "at".

Gruß + viel Erfolg,
Uli
Titel: Antw:Einfache If Anweisung
Beitrag von: franky08 am 03 Oktober 2015, 18:17:50
Und jetzt ist der Lerneffekt futsch ...  ;)

VG
Frank
Titel: Antw:Einfache If Anweisung
Beitrag von: Jak am 03 Oktober 2015, 19:00:03
Vielen Dank an euch zwei.
Des hilft mir weiter und ich kann jetzt drauf aufbauen.

Würde es nur noch einmal konkret machen:

define LichtAktivieren DOIF ([18:00-22:00] and [SchalterTuer:state] eq "on")(set Steckdose on)
Passt des so??

Verspreche auch, zu diesem Thema keine Frage mehr zu stellen.
Brauche immer etwas Zeit um mich an die Syntax zu gewoehnen
Titel: Antw:Einfache If Anweisung
Beitrag von: Jak am 03 Oktober 2015, 19:01:47
Uli
Danke

Du hast natürlich recht, da fehlt at




Danke
Jakob
Titel: Antw:Einfache If Anweisung
Beitrag von: VB90 am 03 Oktober 2015, 19:04:58
so sieht das gut aus, ja.
Dein Schalter sollte den passenden state liefern, das bekommst du aber leicht raus.

Wenn ich dich recht verstanden habe, soll deine Steckdose um 22:00 wieder "off" gehen, oben steht also nur die halbe Miete.

Und Fragen sollst du sehr gern stellen, aber bitte keine, die du mit ein wenig eigenem Fleiß selbst beantworten kannst ;)

vb
Titel: Antw:Einfache If Anweisung
Beitrag von: Damian am 03 Oktober 2015, 20:58:52
Zitat von: Jak am 03 Oktober 2015, 19:00:03
Vielen Dank an euch zwei.
Des hilft mir weiter und ich kann jetzt drauf aufbauen.

Würde es nur noch einmal konkret machen:

define LichtAktivieren DOIF ([18:00-22:00] and [SchalterTuer:state] eq "on")(set Steckdose on)
Passt des so??

Verspreche auch, zu diesem Thema keine Frage mehr zu stellen.
Brauche immer etwas Zeit um mich an die Syntax zu gewoehnen

Warum probierst du es einfach nicht aus?

Ich habe im DOIF-Modul einen Syntax-Check bei der Eingabe über die Kommandozeile eingebaut (nicht in der cfg editieren), wenn die Syntax nicht stimmt wird eine entsprechende Meldung ausgegeben.

Und wenn die Definition steht, wirst du sehen, was zur gegebenen Zeit passiert oder nicht passiert - dein Haus wird schon stehen bleiben und FHEM wird auch nicht explodieren.

Also einfach mal ausprobieren. Und du musst auch nicht bis 18:00 Uhr warten, wenn du eine andere Zeit einstellst ;)

Gruß

Damian
Titel: Antw:Einfache If Anweisung
Beitrag von: FranzB94 am 04 Oktober 2015, 10:28:43
Zitat von: Jak am 03 Oktober 2015, 19:00:03
define LichtAktivieren DOIF ([18:00-22:00] and [SchalterTuer:state] eq "on")(set Steckdose on)
Passt des so??

Zitat von: Jak
Die Steckdose bez. ich: HM_Steckdose

ohne Umbenennung der Steckdose sollte es also leider nicht funktionieren
Titel: Antw:Einfache If Anweisung
Beitrag von: Jak am 04 Oktober 2015, 11:29:33
An Alle die hier geholfen haben Vielen Dank. Des funktioniert


Danke
Jakob