Hauptmenü

Einfache If Anweisung

Begonnen von Jak, 03 Oktober 2015, 16:49:13

Vorheriges Thema - Nächstes Thema

Jak

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


Jak

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

franky08

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
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Jak

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

VB90

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
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

UliM

#6
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
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

franky08

Und jetzt ist der Lerneffekt futsch ...  ;)

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Jak

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

Jak

Uli
Danke

Du hast natürlich recht, da fehlt at




Danke
Jakob

VB90

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
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FranzB94

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

Jak

An Alle die hier geholfen haben Vielen Dank. Des funktioniert


Danke
Jakob