[gelöst] notify mit If und "&&"

Begonnen von Estrella, 05 Juli 2018, 15:24:31

Vorheriges Thema - Nächstes Thema

Estrella

Hallo Zusammen,
ich habe jetzt einige Zeit experimentiert; komme aber nicht zum Ziel
Aufgabenstellung:
In Abhängigkeit zweier Variablen , die mit && verknüpft sind, soll eine Aktion ausgeführte werden.
Solange ich ausschließlich mit einer Variablen arbeite, funktioniert das Ausführen der Aktion - kommt die 2. Variable mit && dazu, rührt sich nichts.
Variable 1 = Luxwert eines Lichtsensors
Variable 2 = Merker, ob Aktion bereits ausgeführt ist

Mit

SW_WoZ_Stehlampe_an D_Brightness_aktuell { if ("D_Brightness_aktuell" lt "Schwelle_Sw.WoZ.an")
{ fhem("set Switch_WoZ_Stehlampe on;set Merker_Sw.WoZ 1")}}

funktioniert es.

??? wo geht da was schief ???
Vielen Dank schon mal und Gruss
Estrella


set Merker_Sw.WoZ 0
#NAME    Merker_Sw.WoZ
#STATE   0
#TYPE    dummy

+*00:15:00 { my $d= ReadingsVal("HM_Lichtsensor","brightness",0); fhem("set D_Brightness_aktuell $d")}
#NAME   D_Brightness_aktuell
#STATE 550.15
#TYPE   dummy

set Schwelle_Sw.WoZ.an 1000
#NAME  Schwelle_Sw.WoZ.an
#STATE 1000
#TYPE   dummy

SW_WoZ_Stehlampe_an D_Brightness_aktuell { if (("D_Brightness_aktuell" lt "Schwelle_Sw.WoZ.an") && ("Merker_Sw.WoZ" eq 0))
{ fhem("set Switch_WoZ_Stehlampe on;set Merker_Sw.WoZ 1")}}



Otto123

#1
Hallo Estrella,

was soll das für Code sein? Aus welchem System?
Der Teil in den Codetags steht wo?  :o

Diese Bedingung ist immer war
("D_Brightness_aktuell" lt "Schwelle_Sw.WoZ.an") aber nicht wegen den Inhalten der vermeintlichen Geräte, sondern einfach weil es ein String Vergleich ist. Warum "D_Brightness_aktuell" kleiner als "Schwelle_Sw.WoZ.an" ist kann ich auf Anhieb nicht sagen, aber ich habe getestet: es ist so.  ;D :o :-*

Ich weiß der Hinweis kommt immer nicht so gut, aber:
http://perldoc.perl.org/index.html
https://commandref.fhem.de/

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damian

ZitatWarum "D_Brightness_aktuell" kleiner als "Schwelle_Sw.WoZ.an" ist ...

Weil D vor S im Alphabet vorkommt ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Beta-User

(war ja zu erwarten, dass da jemand schneller ist. Daher ggf. doppelt...)

Vorab: Direktes Editieren der cfg ist als Gefahrenpunkt bekannt?

Dann ist da einiges an Grundlagen nicht berücksichtigt.
- Was soll das für ein Device-Typ sein?
- Auf Werte greift man entweder mit ReadingsVal() oder Value() zu, ggf. auch mit magicSets.
- Dann sind deine Vergleiche alphanummerisch. Ist das so gewollt? Eigentlich sollte hier "<" und "==" besser funktionieren.
- Die Bedingungen brauchen auch nur dann geklammert zu werden, wenn ein "or" dazu käme.

Versuch' mal folgendes im Eingabefeld:
{if (Value("D_Brightness_aktuell") < Value("Schwelle_Sw.WoZ.an") && Value("Merker_Sw.WoZ") == 0)
{ fhem ("set Switch_WoZ_Stehlampe on;set Merker_Sw.WoZ 1")}}

Und dann gehst du in den Event-Monitor und versuchst nach der Anleitung im Wiki einen Event-Handler zu definieren, der dann den Code ausführt (wenn er funktioniert wie gewollt).

Ansonsten kommt es mir so vor, als solltest du a) das Einsteiger-pdf mal durcharbeiten und b) überlegen, ob das, was du hier tun willst nicht besser in einem THRESHOLD aufgehoben wäre. Und warum man hier einen Dummy braucht, um ein Reading zu verpacken, verstehe ich auch nicht, aber du wirst Gründe haben...

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Otto123

Zitat von: Damian am 05 Juli 2018, 15:43:21
Weil D vor S im Alphabet vorkommt ;)
ach ist das einfach, Länge, Quersumme und Rest spielen dann keine Rolle. Erst wieder wenn der erste Buchstabe gleich ist.
Na dann hätten wir das auchmal besprochen  ;D
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wuppi68

hmmmm, frei interpretiert ;-)

Notify auf Brightness und danach die Lampe direkt geschaltet ... wozu Dummies ;-)


define ntyLampe notify HM_Lichtsensor:brightness.* {
  if (($EVTPART1  < Value("Schwelle_Sw.WoZ.an") && (Value("Merker_Sw.WoZ") == 0))  {fhem "set lampe on"}
  else {fhem "set lampe off"};
}


in Merker_Sw.WoZ schaltest Du dann die Automatik ein und aus
FHEM unter Proxmox als VM

Estrella

Hallo Zusammen,
meinen besten Dank für die prompten und sehr aufschlußreichen Antworten bzw. Lösungsvorschläge.
Ich habe die Lösung von "Beta-User" gewählt, da sie exakt meine Vorstellung trifft.
Sorry, dass ich mit so einer trivialen Frage gekommen bin; im Forum habe ich trotz intensiver Suche keine passende Lösung gefunden.
Die Anmerkungen und Lösungsvorschläge haben mir allerdings jetzt sehr deutlich die Augen hinsichtlich Syntax und des "Zugriffs" auf die Daten geöffnet - vielen Dank!
und Gruß
Estrella