GELÖST: AT und IF ... warum funktioniert das so nicht?

Begonnen von Sammy51, 07 November 2020, 22:33:50

Vorheriges Thema - Nächstes Thema

Beta-User

Eigentlich sollte da was im Log zu finden sein... on ohne Quotes dürfte nicht klappen...

Als Purist tue ich mich mit diesem ganzen neumodischem Gedönse wie IF und set magic schwer, aber vermutlich geht das hier:
DEF        HW.Licht.Decke:on 00:10:00 HW.Licht.Decke:off IF ([HW.Licht_Automation] eq "on") (set HW.Licht.Decke off); setstate HW.Licht.Decke_an defined
Meine Tipps:
- den watchdog zurückzusetzen macht man mAn. besser via Attribut;
- Nutze Perl und zwar in der exakent Form. "[HW.Licht_Automation]" ist afaik eigentlich die Kurzform von 'Value("HW.Licht_Automation")', was auch "schillernd" ist (=>stateFormat). Ich schreibe sowas (fast) immer als "ReadingsVal('HW.Licht_Automation','state','off')". Damit ist klar, was gemeint ist und ich brauche Klammern dann, wenn es (aus Perl-Sicht) sinnvoll ist.
- IF fand ich auch mal cool, zwischenzeitlich/seit eingen Jahren habe ich alle IF ausgebaut und mache nur noch Perl-if (in mancherlei Varianten, aber das ist eine andere Story).

Kurz: früher oder später wirst du Perl-Kenntnisse brauchen, also packe den Stier gleich bei den Hörnern!
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Sammy51

#31
Die Minimal Korrektur war "on" statt on -richtig?

Deine Empehlung statt

[HW.Licht_Automation] eq "on")
besser:
ReadingsVal('HW.Licht_Automation','state','off')  => oder doch 'on' ?
oder alles in " " so etwa:
"ReadingsVal('HW.Licht_Automation','state','on')"

Wenn ich noch verstehen kann warum '..' gesetzt werden (immerhin hab ich den korrekten Button ' auf dem alten macbook gefunden *g*) kann mir die Schreibweise vielleicht sogar besser merken oder zumindest besser später nachvollziehen. Scheint charmant .. vielleicht sollte ich das perl buch doch wieder aus dem Büro Schrank (nicht Homeoffice) heraussuchen.


EDIT: Warum ist IF neumodisch? Das gabs schon mit qbasic (oder wie hieß das noch) und derartigem 90er Jahre Zeug?
EDIT2: Wie setze ich den Watchdog via attribut auf "timer läuft jetzt" (statt mit einem neuen registriertem "on" signal)?
----------------------------------------------------------------
PI3b FHEM@Buster | Homematic via HMLAN | Phillips HUE/Zigbee | EnoCean via USB300 | Z-Wave via USB | Sonos | AlexaConnector

In Schublade (Anwendungstipps?): Raspy 1 | HM-Raspi-Modul | USB-Serial Adapter

Beta-User

ReadingsVal('HW.Licht_Automation','state','off') eq 'on'Der Vergleich wäre immer angebracht..., ganz ohne "eq" klappt das nicht, aber eben innerhalb eines Perl - "if" (klein geschrieben!).

Suchbegriff wegen der einfachen Quotes: Quotes in Perl.

IF als _FHEM-Befehl_ ist "neumodisch", weil es ein Wrapper für Perl-if-Strukturierungen ist.

Der watchdog läuft eigentlich nach jedem FHEM-Start nur einmalig. Wenn man ihn immer wieder nach dem Auslösen (Eintritt der 2. regex) "reaktivieren will", muß man was tun. Die eine Variante (in einer nicht in der cref stehenden Form) hast du mit dem setreading drin gehabt, welches Attribut diese Konstruktion ersetzen kann, steht dafür aber in der commandref...

Du solltest diese zu watchdog lesen und die Perl-Specials dazu.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Sammy51

Zitat von: Beta-User am 12 November 2020, 20:58:53
ReadingsVal('HW.Licht_Automation','state','off') eq 'on'Der Vergleich wäre immer angebracht..., ganz ohne "eq" klappt das nicht, aber eben innerhalb eines Perl - "if" (klein geschrieben!).

Das verstehe ich (noch) nicht. Bedeutet das nicht frei übersetzt "wenn HW.% Status aus = an dann ...."  Aus ist doch nie An?! Oder was sagt der dritte Teil des ReadingsVal (hier 'off')?

Zitat von: Beta-User am 12 November 2020, 20:58:53
Der watchdog läuft eigentlich nach jedem FHEM-Start nur einmalig. Wenn man ihn immer wieder nach dem Auslösen (Eintritt der 2. regex) "reaktivieren will", muß man was tun. Die eine Variante (in einer nicht in der cref stehenden Form) hast du mit dem setreading drin gehabt, welches Attribut diese Konstruktion ersetzen kann, steht dafür aber in der commandref...

Du solltest diese zu watchdog lesen und die Perl-Specials dazu.

Ich sehe eine andere Herausforderung die mir noch nicht gelöst scheint. Oder ich hab auch das noch nicht richtig verstanden.
Stell Dir vor das Licht ist an seit 20min - weil der "Automation Dummy = off ist".
Wenn ich dann den Automation Dumm wieder auf "on" schalte - dann läuft der Timer des Watchdog niemals an - weil er kein neues "Licht on" gesehen hat. Oder?

Würde ich dann nochmal manuell den Lichtschalter betätigen - dann liefer der Watchdog wieder.
Wäre schick wenn das nicht nötig wäre weil z.B. ein einschalten des "Automation Dummy" ein neues "warten des Watchdog auf "Licht off" startet (z.B. indem er gleichzeitig ein "licht on" sendet (der Watchdog prüft doch die zeit zwischen licht on und licht off - oder?).
----------------------------------------------------------------
PI3b FHEM@Buster | Homematic via HMLAN | Phillips HUE/Zigbee | EnoCean via USB300 | Z-Wave via USB | Sonos | AlexaConnector

In Schublade (Anwendungstipps?): Raspy 1 | HM-Raspi-Modul | USB-Serial Adapter

MadMax-FHEM

ReadingsVal("DeviceName","ReadingName","ERSATZWERT") -> wenn das Reading nicht gelesen werden konnte, dann gib ERSATZWERT zurück...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

Zitat von: Sammy51 am 12 November 2020, 21:12:18
Das verstehe ich (noch) nicht.
Auch wenn es unmodern erscheint: in der commandref ist ReadingsVal() erläutert. Bitte mal die Perl specials überfliegen (am besten die modular-Variante der commandref verwenden, das ist m.E. viel übersichtlicher).

Wäre schick wenn das nicht nötig wäre weil z.B. ein einschalten des "Automation Dummy" ein neues "warten des Watchdog auf "Licht off" startet (z.B. indem er gleichzeitig ein "licht on" sendet (der Watchdog prüft doch die zeit zwischen licht on und licht off - oder?).

Dann ergänze doch einfach den "Ersttrigger" des watchdog um den "dummy wird eingschaltet"-Fall.
(Wobei es mich immer leicht gruselt, wenn ich "dummy" lese. Das mag hier angebracht sein, aber oft werden die inflationär genutzt, was nicht eben zur Übersichtlichkeit der Logiken insgesamt beiträgt)...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Sammy51

#36
Zitat von: Beta-User am 15 November 2020, 08:06:13
Auch wenn es unmodern erscheint: in der commandref ist ReadingsVal() erläutert. Bitte mal die Perl specials überfliegen (am besten die modular-Variante der commandref verwenden, das ist m.E. viel übersichtlicher).

Dann ergänze doch einfach den "Ersttrigger" des watchdog um den "dummy wird eingschaltet"-Fall.
(Wobei es mich immer leicht gruselt, wenn ich "dummy" lese. Das mag hier angebracht sein, aber oft werden die inflationär genutzt, was nicht eben zur Übersichtlichkeit der Logiken insgesamt beiträgt)...

Wie wechselt man zur modular variante? https://commandref.fhem.de/

Gute Idee - cool wenn das geht! Wie ergänze ich den Ersttrigger um ein weiteres event? Klammern und Trennzeichen (wenn ja welche)?   OR ? ...?

Habe Dummys um Schalter zu definieren die es physikalisch nicht gibt, um bestimmte Automatisierungen aktivieren zu können.
Licht im "HWR Auto Off" z.B. damit es anbleibt wenn ich länger dort bin. Oder Quellstein Zeisteuerung nur im Sommer aktiv wenn genug Wasser im Becken ist (hab leider kein Sensor dafür).
----------------------------------------------------------------
PI3b FHEM@Buster | Homematic via HMLAN | Phillips HUE/Zigbee | EnoCean via USB300 | Z-Wave via USB | Sonos | AlexaConnector

In Schublade (Anwendungstipps?): Raspy 1 | HM-Raspi-Modul | USB-Serial Adapter

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Beta-User

Zitat von: amenomade am 15 November 2020, 10:46:08
https://fhem.de/commandref_modular_DE.html
Oder lokal, indem man in global umstellt: https://fhem.de/commandref_modular_DE.html#global:
Zitat
commandref
Falls der Wert "full" (die Voreinstellung) ist, dann wird nach jedem update ein komplettes commandref.html generiert. Falls der Wert "modular" ist, dann wird die Moduldokumentation erst nach Bedarf waehrend der Laufzeit per JavaScript geladen.
Damit läuft übrigens auch ein update deutlich schneller durch....

Was das mit dem zweiten Event als Eingangsbedingung angeht, gilt dasselbe wie für notify (dort unter "addRegexpPart" in der cref zu finden): Trennzeichen ist eine "Pipe" |. Beispiel für ein "dreifaches notify" (mit Prüfung, ob überhaupt was veranlasst werden soll in Perl):
define Umwaelzpumpe_Schalter notify Licht_Bad_Spiegel:on|Schalter_EZ1_Btn_06:short|Schalter_SZ1_Btn_06:short { fhem "set MYSENSOR_96 status1 on" if (ReadingsVal("MYSENSOR_96","temperature21","20")<35)}

Sollte mit watchdog genauso gehen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Sammy51

#39
Cool hab einiges übernommen (leider noch nichts neu aufgesetzt weder auf dem Pi3 noch auf dem produktivem NUC) und ergänzt. Probleme nur plötzlich mit einem NoDon Enocean Modul (separater Thread).

EDIT - war schwer zu finden aber Platzhalter scheint .* zu sein :-)   Geänderte Raumzuordnung hat funktioniert. Dabei frage ich mich nun. Was ist bei den Namen besser "Funktion vor Raum Kürzel" (Licht / Schalter / Steckdose) oder "Raum vor Funktion" .... hmm

attr n_LZ.* room DG   (was statt %?)

Oder um Alle Lampen anzuschalten:

set .*Licht.* on ?

----------------------------------------------------------------
PI3b FHEM@Buster | Homematic via HMLAN | Phillips HUE/Zigbee | EnoCean via USB300 | Z-Wave via USB | Sonos | AlexaConnector

In Schublade (Anwendungstipps?): Raspy 1 | HM-Raspi-Modul | USB-Serial Adapter

MadMax-FHEM

Vermutlich "suchst" du nach: Punkt Stern

Namensteil.* "greift" auf alle Devices, die mit Namensteil beginnen...

Aber Achtung!!

Z.B.


attr Namensteil.* room NeuerRaum


Damit sind alle Devices NUR im neuen Raum!

D.h. wenn ein Device in 2 (oder mehr) Räumen war, dann ist es nach dem Aufruf in genau dem einen neuen Raum!

Wenn du sehen willst für welche Devices es treffen würde:


list Namensteil.*


Zu finden in der commandref unter dem Stichwort "devspec"...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

amenomade

Zitat von: MadMax-FHEM am 18 November 2020, 22:04:50

Aber Achtung!!

Z.B.


attr Namensteil.* room NeuerRaum


Damit sind alle Devices NUR im neuen Raum!


Dannattr -a Namensteil.* room ,NeuerRaum
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Sammy51

Danke - d.h. die ", Variante" ergänzt überall den zusätzlichen Raum?

Kann ich auf die Variante im Nachgang Gruppieren also z.b. "EG => Küche"; "EG => Wohnen"  ? Wie würde das gehen?
Bislang hab ich Aufgrund überschaubar vieler Komponenten nur nach EG und DG sowie Garten unterschieden.

Habt Ihr evtl. auch eine Idee woran das Problem hier lag (workaround gefunden aber wäre interessant es zu verstehen)
https://forum.fhem.de/index.php/topic,115919.0.html
----------------------------------------------------------------
PI3b FHEM@Buster | Homematic via HMLAN | Phillips HUE/Zigbee | EnoCean via USB300 | Z-Wave via USB | Sonos | AlexaConnector

In Schublade (Anwendungstipps?): Raspy 1 | HM-Raspi-Modul | USB-Serial Adapter

amenomade

Zitat von: Sammy51 am 20 November 2020, 21:46:42
Danke - d.h. die ", Variante" ergänzt überall den zusätzlichen Raum?
Ja. das "-a" ist auch entscheidend. Siehe CommandRef https://fhem.de/commandref_DE.html#attr

Zitat von: Sammy51 am 20 November 2020, 21:46:42
Kann ich auf die Variante im Nachgang Gruppieren also z.b. "EG => Küche"; "EG => Wohnen"  ? Wie würde das gehen?
room Gruppierung geht mit "->". Siehe CommandRef https://fhem.de/commandref_DE.html#attributes
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus