Bitte um Hilfe bei "UND Verknüpfung" von Wert und Pinstatus (GPIO)

Begonnen von backbone10, 19 März 2014, 23:00:21

Vorheriges Thema - Nächstes Thema

backbone10

Hi,
kann mir bitte jemand erklären wie man die UND Verknüpfung richtig macht???
Ich möchte einen Logeintrag und Pin22 auf on setzen, sobald Pin 15 off ist und $val kleiner 10 ist.

Die Abfrage als solche funktioniert dank John schon, ich muss aber leider noch die Pin Abfrage mit reinnehmen.


define ALARM.EVENTPS notify CN.PUMPE:pulseTimeIncrement.* {my $val=%EVTPART1;; Log(3," PUMPE SHORT value out range with name:%NAME attribute:%EVTPART0 value:%EVTPART1") if ($val <10 xxxxAND xxxxx Pin15 off);;{fhem ("set Pin22 on")};;}
       

Danke !!!

bb10                                                                                                                                                                                         

backbone10

Hi,
ist die Fragestellung schlecht formuliert oder unklar oder blödsinnig ??

mfg

bb10

Puschel74

Hallo,

anstelle von AND kommt ein &&
Werte kannst du mit ReadingsVal abfragen und Stati mit Value.
Oder hab ich was falsch verstanden?

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

UliM

RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

backbone10

Hi,
ist  NICHT so einfach für mich  :'(

define ALARM.EVENTPS notify CN.PUMPE:pulseTimeIncrement.* {my $val=%EVTPART1;; Log(3," PUMPE SHORT value out range with name:%NAME attribute:%EVTPART0 value:%EVTPART1") if ($val < 10 && Value("PUMPE") eq "off");;{fhem ("set Pin22 on")};;}
attr ALARM.EVENTPS verbose 5
define ALARM.EVENTPL notify CN.PUMPE:pulseTimeIncrement.* {my $val=%EVTPART1;; Log(3," PUMPE LONG value out range with name:%NAME attribute:%EVTPART0 value:%EVTPART1") if ($val > 900 && Value("PUMPE") eq "on");;{fhem ("set Pin22 on")};;}


bringt folgenden Log, wenn ich Pin 15 deaktiviere, d.h. wenn der Counter wieder stoppt (und setzt Pin 22 on)

2014.03.23 19:37:55 5: Triggering ALARM.EVENTPL
2014.03.23 19:37:55 4: ALARM.EVENTPL exec {my $val=39;; Log(3," PUMPE LONGvalue out range with name:CN.PUMPE attribute:pulseTimeIncrement: value:39") if ($val >900 && Value("PUMPE") eq "on");;{fhem ("set Pin22 on")};;}
2014.03.23 19:37:56 5: Triggering ALARM.EVENTPS
2014.03.23 19:37:56 4: ALARM.EVENTPS exec {my $val=39;; Log(3," PUMPE SHORT value out range with name:CN.PUMPE attribute:pulseTimeIncrement: value:39") if ($val <10 && Value("PUMPE") eq "off");;{fhem ("set Pin22 on")};;}


Da ist was falsch, sonst würden nicht beide  Alarme gleichzeitig getriggert

Nur leider komm ich nicht dahinter.

Die Kriterien für den Alarm LONG sind : Pin 15 (PUMPE) on und läuft schon seit über 900 Sekunden
für Kurz : PUMPE ist off (Pin15) und die Einschaltzeit  CN.PUMPE attribute:pulseTimeIncrement war unter 10 Sekunden.

Hat wer eine Idee ??

DANKE

BB10

Damian

Zitat von: backbone10 am 23 März 2014, 20:45:04
Hi,
ist  NICHT so einfach für mich  :'(

define ALARM.EVENTPS notify CN.PUMPE:pulseTimeIncrement.* {my $val=%EVTPART1;; Log(3," PUMPE SHORT value out range with name:%NAME attribute:%EVTPART0 value:%EVTPART1") if ($val < 10 && Value("PUMPE") eq "off");;{fhem ("set Pin22 on")};;}

define ALARM.EVENTPS notify CN.PUMPE:pulseTimeIncrement.* IF (%EVTPART1 < 10 and [PUMPE] eq "off") ({Log(3," PUMPE SHORT value out range with name:%NAME attribute:%EVTPART0 value:%EVTPART1")},set Pin22 on)

dürfte etwas kürzer und weniger kryptisch für dich sein.

Der IF-Befehl ist seit heute per FHEM-Update verfügbar. Doku dazu siehe: http://fhem.de/commandref_DE.html#IF

Den zweiten Befehl bekommst du dann schon alleine hin  ;)

Gruß

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

backbone10

Hi,
ja danke. Genau die Lösung für mein Problem  8)

Das 2. Statement hab ich wirklich alleine geschafft  ;)

Gruß

bb10