FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: TommiH am 15 Oktober 2017, 22:05:05

Titel: DOIF mit Verständnisproblem -> warum funktioniert die Ausführung nicht?
Beitrag von: TommiH am 15 Oktober 2017, 22:05:05
Hai Zusammen,

ich habe eine Frage zu einem Test-Notify, warum geht Folgendes einwandfrei:

([MasterKind1] eq "aktiviert" and [MasterKind2] eq "aktiviert") (set AZ_x1 on; set AZ_x2 on) DOELSE  (set AZ_x1 off, set AZ_x2 off)

aber das hier

([MasterKind1] eq "aktiviert" and [MasterKind2] eq "aktiviert") (set AZ_x1,AZ_x2 on) DOELSE  (set AZ_x1,AZ_x2 off)

geht nicht? Laut Wiki sollte das doch so funktionieren, oder habe ich da etwas falsch verstanden?

LG
Tommi
Titel: Antw:Notify mit Verständnisproblem -> warum funktioniert die Ausführung nicht?
Beitrag von: herrmannj am 15 Oktober 2017, 22:11:55
- Bitte kompletten code posten, erklären was passieren soll, sagen was passiert, welche Aktoren beteiligt.
- Fehlermeldungen im log suchen und hier posten.

ABER: DOIF und notify sind was unterschiedliches ! Beide benutzen unterschiedlichen Syntax
Titel: Antw:Notify mit Verständnisproblem -> warum funktioniert die Ausführung nicht?
Beitrag von: Otto123 am 15 Oktober 2017, 22:12:38
Hallo Tommi,

das ist sicher alles, aber kein notify.
Kannst Du bitte anstatt Fragmente ein list von deinem Gerät posten.


hermannj war schneller  8)

Gruß Otto
Titel: Antw:DOIF mit Verständnisproblem -> warum funktioniert die Ausführung nicht?
Beitrag von: TommiH am 15 Oktober 2017, 22:31:34
Mist - eigene Regel gebrochen - keine Fragen nach 22 Uhr ;)

Es ist kein notify sondern ein DOIF - aber ich dachte die Syntax set A on;set B on entspricht set A,B on gilt generell.


define n_t DOIF ([MasterKind1] eq "aktiviert" and [MasterKind2] eq "aktiviert")
(set AZ.xx on)
DOELSE
(set AZ.xx off)


Ich übe nur ein bisschen mit der Syntax. Also geht hier nur für beide der SET-Befehl, getrennt mit ;

Es geht einfach darum, das 2 Dummy-Schalter (ON/OFF) - MasterKind1/MasterKind2 beide aktiv sein müssen, damit ein Schaltvorgang durchgeführt wird - ich will einen Masterschalter einbauen, damit Befehle nur ausgeführt werden, wenn auch dieser auf aktiviert steht (z.B. automatischer Rolladen morgens hoch oder LichtWecker zu bestimmter Zeit an) - wenn MasterKind1 auf inaktiv steht, dann wird nicht geweckt/der Rolladen hochgezogen.
Das war die ursprüngliche Idee und in dem Zusammenhang wollte ich 2 Aktoren zusammen auf ON schalten - das schlug in der verkürzten Form fehl.
So verständlicher?
Wie geschrieben, in der 'langen' Version geht es ja wie gedacht, ich habe nur aus dem 'Erste Schritte in FHEM' noch das im Kopf gehabt:


1. set <device1>,<device2> on
Eine alternative Schreibweise dafür ist
2. set <device1> on; set <device2> on


Version 2 geht, Version 1 anscheinend nicht.

Tommi

Titel: Antw:DOIF mit Verständnisproblem -> warum funktioniert die Ausführung nicht?
Beitrag von: Otto123 am 15 Oktober 2017, 23:18:38
Hallo Tommi,

ja DOIF ist da etwas "eigen". Es gilt in jedem Falle die Doku (commandref) im Allgemeinen und Besonderen für DOIF.

Beim DOIF ist das Komma der Trenner für komplette Kommandos, im Allgemeinen ist das Komma der Trenner zwischen Geräten innerhalb eines Kommandos.
Also überall -> set D1 on;set D2 on (in der DEF und nicht im define! Im define zwei semikolons -> set D1 on;;set D2 on
  oder -> set D1,D2 on
Im DOIF -> (set D1 on,set D2 on) oder ((set D1,D2 on)) - die Klammern sind wichtig!

Ich finde es auch blöd. :-X aber es wird seinen Grund haben.

Gruß Otto
Titel: Antw:DOIF mit Verständnisproblem -> warum funktioniert die Ausführung nicht?
Beitrag von: TommiH am 16 Oktober 2017, 16:44:26
Hallo Otto,

ha - funktioniert - danke für die Aufklärung :) Okay, ich sage ja immer, Programmieren ist nicht wirklich schwierig, aber die teilweise etwas krude Syntax (bei allen Programmiersprachen) bringt einen immer wieder zum Stolpern.

Noch eine Frage:
Wenn ich mit dem ersten Taster eines 6-er Tasters den DeckenlichtDimmer zwischen 3 verschiedenen Stati hin und herschalten möchte, dann hätte ich nun gedacht, dass es so in etwa gehen müsste, aber das klappt nicht. Liege ich da völlig daneben oder ist der Weg der richtige?


define dimmi
DOIF (.*SI_PB6_Btn_01.trigger:.Short.* and [SI_DeckenlichtDi:level] = 80) (set SI_DeckenlichtDi 15)
DOELSEIF ([SI_DeckenlichtDi:level] = 30) (set SI_DeckenlichtDi 80)
DOELSEIF ([SI_DeckenlichtDi:level] = 15) (set SI_DeckenlichtDi 30)
DOELSE (set SI_DeckenlichtDi 15)


LG
Tommi
Titel: Antw:DOIF mit Verständnisproblem -> warum funktioniert die Ausführung nicht?
Beitrag von: Pfriemler am 16 Oktober 2017, 16:54:54
edit:

geht weiter in diesem Thread. (https://forum.fhem.de/index.php/topic,78088.0.html)