Autor Thema: steurung eines Schalt/Messstecker über einen Türsensor  (Gelesen 1304 mal)

0-Positiv

  • Gast
steurung eines Schalt/Messstecker über einen Türsensor
« am: 08 November 2015, 11:39:51 »
ich möchte eine Schalt/Messsteckdose dann einschalten, wenn der Sensor eine geschlossene Tür bei eingeschalteten Licht und einer Temperatur unter 20°C meldet, die Steuerung über die einzelnen Zustände (z.B. Licht an) funktioniert, leider gelingt mir die Steuerung über if and nicht.

Codebeispiel für Einzelzustand (funktioniert):
define TuerZuHeizungAn notify BZ.Tuer.*luminance.*26.* set BZ.Heizung on
Code für Steuerung in Abhängigkeit der 3 gewünschten Zustände:
define TuerZuHeizungAn notify { if ((*doorWindow.*00.*) && (*luminance.*26.*) && (*temperature.*68.*) { fhem("set BZ.Heizung on") } }

da meine Google Suche nicht erfolgreich war hoffe ich, das ich hier Hinweise erhalte, wie ich diese Funktion am besten mit einem else Zweig zum Abschalten der Steckdose umsetzen kann.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19147
Antw:steurung eines Schalt/Messstecker über einen Türsensor
« Antwort #1 am: 08 November 2015, 12:44:00 »
Zitat
(*doorWindow.*00.*)
Ich weiss nicht, wer dich zu diese Schreibweise inspririert hat, es ist leider falsch.
Mein Ratschlag: die ersten zwei Kapitel eines Perl-fuer-Anfaenger-Buches lesen, und danach http://fhem.de/commandref.html#perl. Das ist nicht nur fuer notify und at sinnvoll, sondern auch fuer viele andere Ecken in FHEM.

Eine Alternative zu notify mit Perl ist DOIF, der aber "nur" als Ersatz fuer notify und at taugt.

Offline Rince

  • Hero Member
  • *****
  • Beiträge: 2640
Antw:steurung eines Schalt/Messstecker über einen Türsensor
« Antwort #2 am: 08 November 2015, 14:09:06 »
Zitat
Eine Alternative zu notify mit Perl ist DOIF, der aber "nur" als Ersatz fuer notify und at taugt.

Und watchdog  ::)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Offline Damian

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5582
Antw:steurung eines Schalt/Messstecker über einen Türsensor
« Antwort #3 am: 08 November 2015, 20:26:45 »
Und watchdog  ::)

und IF oder if

und sleep

ach ja, und alles was man mit Perl anstellen kann ;)

Gruß

Damian
Programmierte FHEM-Module: DOIF mit uiTable, DOIF-Perl, THRESHOLD, FHEM-Befehl: IF

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19147
Antw:steurung eines Schalt/Messstecker über einen Türsensor
« Antwort #4 am: 08 November 2015, 20:39:57 »
Zitat
ach ja, und alles was man mit Perl anstellen kann

1. stateFormat, userReadings, SVG-Funktionen, eventMap, basicAuth, nameDisplay, devStateIcon koennen alle kein DOIF aber perl. Und das sind nur meine Baustellen gewesen.
2. Ist etwas unfair darauf hinzuweisen, dass man in DOIF perl verwenden kann, wenn es gerade darum geht perl _nicht_ lernen zu wollen.

Offline Damian

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5582
Antw:steurung eines Schalt/Messstecker über einen Türsensor
« Antwort #5 am: 08 November 2015, 21:01:21 »
1. stateFormat, userReadings, SVG-Funktionen, eventMap, basicAuth, nameDisplay, devStateIcon koennen alle kein DOIF aber perl. Und das sind nur meine Baustellen gewesen.
2. Ist etwas unfair darauf hinzuweisen, dass man in DOIF perl verwenden kann, wenn es gerade darum geht perl _nicht_ lernen zu wollen.

OK. Dann streichen wir an dieser Stelle die Information zu Perl in DOIF, war ja ursprünglich nur als Hintertür gedacht - inzwischen packen Experten ganze Perlprogramme in die Bedingung. Manche Entwicklungen lassen sich halt schwer beeinflussen.

Gruß

Damian
Programmierte FHEM-Module: DOIF mit uiTable, DOIF-Perl, THRESHOLD, FHEM-Befehl: IF

0-Positiv

  • Gast
Antw:steurung eines Schalt/Messstecker über einen Türsensor
« Antwort #6 am: 09 November 2015, 08:34:54 »
zuerst einmal dank für die vielen Antworten  :).
ja, mein Code Beispiel für die if Abfrage ist nicht korrekt, wenn es das währe würde es ja funktionieren  ;).
gerade weil es nicht funktioniert frage ich ja, wie es richtig aussehen müsste, wenn es für meinen Anwendungsfall notwendig ist beschäftige ich mich auch mit PERL´und DOIF.

hier habe ich versucht das ganze mit DOIF umzusetzen:
define TuerZuHeizungAn DOIF ([BZ.Tuer:doorWindow] == 00" ) and ([BZ.Tuer:luminance] > 20) and ([BZ.Tuer:temperature] < 68 ) (set BZ.Heizung on) DOELSE (set BZ.Tuer off)
Folgende Meldung wird von FHEM ausgegeben:
Zitat
TuerZuHeizungAn DOIF: expected DOELSEIF or DOELSE: and ([BZ.Tuer:luminance] > 20) and ([BZ.Tuer:temperature] < 68 ) (set BZ.Heizung on) DOELSE (set BZ.Tuer off)
"

kann DOIF mit mehreren Bedingungen arbeiten und wie würde der Code aussehen?

Offline krikan

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 6042
Antw:steurung eines Schalt/Messstecker über einen Türsensor
« Antwort #7 am: 09 November 2015, 08:48:23 »
wenn es für meinen Anwendungsfall notwendig ist beschäftige ich mich auch mit PERL´und DOIF.
Perl ist für FHEM notwendig. Du musst zumindest die Grundzüge kennen. Bitte nimm den Ratschlag zum Perl-Buch ernst. Du bist sonst schnellsten gefrustet und kommst nicht weiter.
Und bitte schau Dir die angepinnten Beiträge und die dort verlinkten Einstiegslektüren an.

Zu Deinem Problem: Schau Dir die Klammerung an.

Gruß, Christian

0-Positiv

  • Gast
Antw:steurung eines Schalt/Messstecker über einen Türsensor
« Antwort #8 am: 09 November 2015, 10:30:16 »
die Steuerung funktioniert nun, wie von mir gewünscht geht die el. Heizung nun bei unter 20° an wenn das Licht an und die Tür geschlossen ist.

define TuerZuHeizungAn DOIF (([BZ.Tuer:doorWindow] == 00 ) and ([BZ.Tuer:luminance] > 20) and ([BZ.Tuer:temperature] < 68 )) (set BZ.Heizung on)
define TuerZuHeizungAus
DOIF (([BZ.Tuer:doorWindow] == 00 ) and ([BZ.Tuer:luminance] < 10)) (set BZ.Heizung off)

jetzt werde ich mich erst einmal in Perl einlesen.