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

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

Vorheriges Thema - Nächstes Thema

Wernieman

Nur mal eine Frage am Rande:
Warum geht Ihr für eine "Kleinigkeit" wie ein pures if gleich in die perl-Ebene? Giebtes nicht sogar ein Modul dafür? https://www.fhem.de/commandref.html#IF
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

MadMax-FHEM

Zitat von: Sammy51 am 08 November 2020, 13:50:53
Achtung: Zweite Antwort auf Eure Rückfragen und Anmerkungen

Das IF kann ja auch mit mehreren Bedingungen klar kommen Verknüpfung mit && wenn ich mich recht erinnere. Ich will demnächst statt der Uhrzeit oder ergänzend (wenn das geht) den Globalstrahlungswert (oder wie auch immer das heißen mag) von einem anderen Bewegungsmelder mit Dämmerungssensor Verknüpfen.

Jaja ;)


Zitat von: Sammy51 am 08 November 2020, 13:50:53
Ja und es spart ein Funktelegram .. irgendwo hieß es mal damit solle man möglichst sparsam sein. Die BNetzA Vorgaben begrenzen das pro Zeiteinheit - oder?

Ja im Prinzip schon.
Aber durch diese Abfrage sind es u.U. ZWEI Telegramme am Tag... ;)

Aber klar, wenn es "zum Üben" war bzw. später durch weitere Abfragen ergänzt wird, dann kann man das so tun.

Ansonsten gibt es eben für die Variante "nur Telegramme" (oder Befehle generell) sparen auch die Variante mit Filter: set DeviceName [FILTER=STATE!=off] off
(siehe commandref devSpec / dazu dann eben nicht mal Perl ;)  )

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)

Sammy51

Zitat von: MadMax-FHEM am 08 November 2020, 14:00:06
Ansonsten gibt es eben für die Variante "nur Telegramme" (oder Befehle generell) sparen auch die Variante mit Filter: set DeviceName [FILTER=STATE!=off] off
(siehe commandref devSpec / dazu dann eben nicht mal Perl ;)  )

Gruß, Joachim

Das ist auch cool und gut zu wissen - obschon man sich dann fast schon fragen kann weshalb das nicht grundsätzlich so ist - dass ein Befehl nur ausgeführt wird wenn der Status des devices "nicht eh schon so ist". Oder ist das für den Fall das der Status nicht korrekt vorliegt / übermittelt wurde?

Meine neuen düwi zwave Zwischenstecker z.B. übermitteln einen lokal (Button am Gerät) veränderten Status offenbar nicht  ::)


Zusätzliche heutige "lessons learned also" ...

4.) set DeviceName + Filter zum Status möglich (s.o.)
5.) Wenn die Kinder schlafen sollte ich mal etwas Zeit investieren die docu zu lesen - dann macht FHEM vermutlich noch mehr Spaß ... und vielleicht kann ich dann demnächst mal eine Anwesenheitssimulation glaubhaft "programmieren"

Danke nochmal für Eure "heutige" Geduld und die Tipps!
Sammy
----------------------------------------------------------------
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

#18
Weil man manchmal eben trotzdem das Event braucht, dass es ja bei set-Befehlen gibt...

Und bei manchen Geräten (z.B. ohne Rückkanal) manchmal (zur Sicherheit) eben mehrfach durchaus auch gesendet wird/werden will...

Es gibt also durchaus Gründe das nicht einfach zu "unterdrücken".., ;)

Zitat
Meine neuen düwi zwave Zwischenstecker z.B. übermitteln einen lokal (Button am Gerät) veränderten Status offenbar nicht
Kenne die zwar nicht aber ansonsten ist ZWave schon eher mit Statusmeldung etc.

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)

Sammy51

#19
Ok - die ollen düwi Dinger (kein Statuswechsel bei "lokalem manuellem Schalten") sind ja auch ein Beispiel.
ZitatEDIT: Das die Düwi das nicht können steht in der FHEM zwave doku - und das ist offenbar wirklich so. Es soll wohl baugleiche mit verbesserter Firmware unter anderem Label geben. Die düwi konkret bekommt man auch kaum mehr. War wohl ein Lagerausverkauf aus dem meine sind (10Euro/Stück)
Ein NodOn Enocean Aktor von mir reagiert manchmal auch einfach nicht.
Hab schon überlegt für den das set on / off jeweils 2-3 mal einzubauen in der Hoffnung das es dann zuverlässiger klappt.


EDIT: Noch eine Frage im Gesamtzusammenhang. Da ich bislang die FHEM.CFG ständig editiert habe - sollte ich bevor ich das nun lasse einmal aufräumen und vernünftig sortieren? Oder lasse ich das Ding am besten wie es ist?
----------------------------------------------------------------
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

Sammy51


Hab jetzt ein erstes leeres device (ein dummy) angelegt via "define test dummy" danach musse ich dann aber jedes nötige atribut einzeln hinzufügen (webcmd, setlist, icon ...) geht das auch praktischer? Habe andere Dummies die genauso sind (hätte ich bislang schlicht dupliziert und umbenannt)?

Kann ich dann ein watchdog an eine bedingung knüpfen? Der Soll das licht nur automatisch nach 10min ausschalten - wenn der Dummy test on ist.

Den Watchdog habe ich schon - er schaltet auch das richtige Licht nach 10min au (früher hat er dann via Sonos gesagt "ist schon 10min an" - das nervt aber meine Frau die es meist anließ ;-)  )
----------------------------------------------------------------
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

Per raw definition kannst du alles eingeben wie du willst und einen bestehenden auch "duplizieren" etc.

EDIT: hatte ich aber ja schon mal ausführlich beschrieben... ;)

Watchdog hab ich noch nicht genutzt, sollte aber ja in commandref und Wiki beschrieben sein...

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)

Sammy51

#22
Ja die RAW VAriante habe ich nicht ganz verstanden.

Wenn ich diese für ein device öffnen -- kann ich dort in jeder Zeile den Namen ändern und beim speichern ist das ein neues Device? Oder ist das bestehende dann geändert?

Hab ich halt zunächst nicht gefunden in der docu. Jetzt doch gefunden. Evtl. kann im <command> ein if verwendet werden
ZitatDefine

    define <name> watchdog <regexp1> <timespec> <regexp2> <command>

    Start an arbitrary FHEM command if after <timespec> receiving an event matching <regexp1> no event matching <regexp2> is received.
    The syntax for <regexp1> and <regexp2> is the same as the regexp for notify.
    <timespec> is HH:MM[:SS]
    <command> is a usual fhem command like used in the at or notify

    Examples:
        # Request data from the FHT80 _once_ if we do not receive any message for
        # 15 Minutes.
        define w watchdog FHT80 00:15:00 SAME set FHT80 date
        # Request data from the FHT80 _each_ time we do not receive any message for
        # 15 Minutes, i.e. reactivate the watchdog after it triggered. Might be
        # dangerous, as it can trigger in a loop.
        define w watchdog FHT80 00:15:00 SAME set FHT80 date;; trigger w .
        # Shout once if the HMS100-FIT is not alive
        define w watchdog HMS100-FIT 01:00:00 SAME "alarm-fit.sh"
        # Send mail if the window is left open
        define w watchdog contact1:open 00:15 contact1:closed "mail_me close window1"
        attr w regexp1WontReactivate
    Notes:
        if <regexp1> is . (dot), then activate the watchdog at definition time. Else it will be activated when the first matching event is received.
        <regexp1> resets the timer of a running watchdog, to avoid it use the regexp1WontReactivate attribute.
        if <regexp2> is SAME, then it will be the same as the first regexp, and it will be reactivated, when it is received.
        trigger <watchdogname> . will activate the trigger if its state is defined, and set it into state defined if its state is active (Next:...) or triggered. You always have to reactivate the watchdog with this command once it has triggered (unless you restart fhem)
        a generic watchdog (one watchdog responsible for more devices) is currently not p




Wie machst Du ohne Watchdog das nach x-Minuten etwas passieren soll, wenn diese Prüfung aktiv geschaltet ist?
----------------------------------------------------------------
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

Wenn du den Namen in der Raw Def änderst ist es ein neues Device mit dem neuen Namen...

EDIT: die "setstate-Einträge" kannst du löschen...

Den Namen eines bestehenden Devices änderst du mit rename...

Ich mache das mit einem at...

Aber immer wild zwischen Lösungsmöglichkeiten "hüpfen" bringt dich (verm.) nicht weiter...

Lese dich ein und entscheide...

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)

Wernieman

Ich muß gestehen, das ich bei mehreren gleichen Devices eines richtig einstelle und dieses dann "nur" copiere und dort partil anpasse. Spart mir dauerndes "neuüberlegen"
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

MadMax-FHEM

Zitat von: Wernieman am 11 November 2020, 09:09:34
Ich muß gestehen, das ich bei mehreren gleichen Devices eines richtig einstelle und dieses dann "nur" copiere und dort partil anpasse. Spart mir dauerndes "neuüberlegen"

Das geht ja per "Raw Def"...
Mache ich auch so: ich nehme eines was schon da ist und tut, klicke auf RawDef und passe es an (also mind. neuer Name, damit es ein neues Device wird ;)  ) und fertig :)

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)

Wernieman

Ich verwende immer ein "copy" ..... gab es schon vor "RAF Def"
Und bin dort "zu faul" zum Umdenken ;o)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

MadMax-FHEM

Zitat von: Wernieman am 11 November 2020, 09:52:18
Ich verwende immer ein "copy" ..... gab es schon vor "RAF Def"
Und bin dort "zu faul" zum Umdenken ;o)

copy?

Aha, wie das? Kenne ich (noch) nicht...

Aber ich kann auch mit "RawDef" leben.
Ist dem direkten Editieren (das ich noch "kenne" und getan habe) am nächsten :)

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

Rawdef hat einen großen Vorteil gg. copy: Die internen Datenstrukturen werden bei dem neuen Device auch neu aufgebaut ;) .

Ich hatte ein paar Mal "komische" Effekte (bei MQTT2_DEVICE?, aber afaik ist das nicht beschränkt darauf) mit copy, die dann nur durch einen Neustart zu beseitigen waren. Von daher klare Empfehlung: Umlernen!

(Ich habe auch mal mit #include angefangen, weil ich das übersichtlich fand. Aber alles via FHEMWEB zu machen (und configdb search nutzen zu können), haben den Abschied von dieser unkomfortabelen Methode deutlich erleichtert. Und "list mit devspec" (samt -r-Option) ist auch einfach nur klasse ;) ).

Vielleicht noch ein paar Anmerkungen zum Thema Generalisierung/Doppelungen von Codestückchen:
- Es gibt mit attrTemplate und archetype auch (mind.) zwei Varianten, wie man Dinge "immer wieder gleich" gestalten kann (attrTemplate sollte bei aktivierten SetExtensions auch mit dummy gehen).
- Oft macht es Sinn, für solche wiederkehrenden Dinge dann auf entsprechende Routinen zurückzugreifen, die es "für alle betreffenden Devices gleich" machen, was die Reaktion etc. angeht. Ist einfacher, wenn man mal was anpassen will... watchdog läßt sich leider schlecht dahingehend generalisieren, dass er auf mehrere Devices gleichzeitig hört, aber was ähnliches macht Benni's generalisierter "Fenster-offen-Code" (zu finden über das Wiki zu 99_myUtils.pm anlegen); sowas sollte man sich mAn. nach der ersten Orientierungsphase zu FHEM dann mal näher ansehen.

just my2ct.
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

#29
Cool das klingt gut probiere ich bei nächster Gelegenheit :-)

Im Moment stimmt etwas mit meiner Schreibweise nicht nehme ich an.
=> Der simple Watchdog mit dem simplen command "set HW.Licht.Decke off" funktionierte.
=> Mit der IF Variante passiert nun nach Ablauf des Timers nichts mehr (egal ob der "Automation Dummy" den State on oder off hat).

Hier ein List vom Watchdog mit "IF" meiner Theorie nach sollte das gehen. IF ist doch auch ein FHEM Command.
Vermutlich passt nur irgendeine Formalität nicht?
Wenn es läuft müsste man nur den Dummy noch so einrichten das ein Einschalten des Dummys auch ein "set HW.Licht.Decke on" absetzt - damit der Watchdog wieder läuft (ohne manuelles erneutes Lichtschalter Betätigen).

Hier ein list vom Watchdog
Internals:
   CMD        IF ([HW.Licht_Automation] eq on) (set HW.Licht.Decke off); setstate HW.Licht.Decke_an defined

#set Sonos_EZ Speak 20 de Das Licht im Hauswirtschaftsraum ist bereits seit 10 Minuten an; setstate HW.Licht.Decke_an defined
   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

#set Sonos_EZ Speak 20 de Das Licht im Hauswirtschaftsraum ist bereits seit 10 Minuten an; setstate HW.Licht.Decke_an defined
   FUUID      5d028802-f33f-826a-19f0-c56acff3ae32ebbc
   NAME       HW.Licht.Decke_an
   NOTIFYDEV  HW.Licht.Decke_an,HW.Licht.Decke
   NR         112
   NTFY_ORDER 50-HW.Licht.Decke_an
   RE1        HW.Licht.Decke:on
   RE2        HW.Licht.Decke:off
   STATE      defined
   TO         600
   TYPE       watchdog
   READINGS:
     2020-11-11 18:42:42   Activated       activated
     2020-11-10 21:40:08   Reset           reset
     2020-11-11 18:52:42   Triggered       triggered
Attributes:
   room       EG


Hier der Dummy der als Bedingung eingebunden sein soll (on = Auto off durch watchdog)

   CFGFN     
   FUUID      5faaf20a-f33f-826a-d5cb-7c430ad592ce000a
   NAME       HW.Licht_Automation
   NR         226
   STATE      on
   TYPE       dummy
   READINGS:
     2020-11-11 18:57:36   state           on
Attributes:
   devStateIcon on:general_an_fuer_zeit@green off:general_aus_fuer_zeit@red
   icon       general_an_fuer_zeit
   room       EG
   setList    on off
   webCmd     on:off



Den Tipp zu Fenster offen (als Alternative zum watchdog) gucke ich mir früher oder später mal an. Zunächst hätte ich gedacht ich nehm auch dafür ein watchdog und ein set sonos für eine Sprachhinweis das das Fenster schon länger als x Minuten offen ist (um nach dem Duschen nicht ungewollt zu lange zu lüften)
----------------------------------------------------------------
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