FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Sammy51 am 07 November 2020, 22:33:50

Titel: GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 07 November 2020, 22:33:50
Hallo zusammen,

eine Lampe (mit Bewegungsmelder ohne Dämmerungsschalter) soll erstmal zeitgeschaltet sein (wenn ein Zwave Bewegungsmelder mit Dämmerungsschalter integriert ist - demnächst abhängig von dessen Dämmerungssensor).

Folgendes (übernommen aus einem funktionierendne CodeSchnipsel für mehrere Bedingungen - die hier ja auch demnächst gelten sollen) macht gar nichts. Auch im Log ist dazu nichts zu finden.

Ein simples manuelle "set GT.Licht.Haustuer on" oder "set GT.Licht.Haustuer off" tuts aber. Der Name stimmt also. On / off tuts auch.

###### Haustür Bewegungssensor Lampe Auto AN und Auto Aus; Zeitsteuerung, später auf Dämmerungssensor umstellen bzw. diesen als Bedingung ergänzen
define HaustuerLichtAn at *16:30:00 { if(("GT.Licht.Haustuer") eq "off") { fhem("set GT.Licht.Haustuer on")}}
setuuid HaustuerLichtAn 5fa04d9e-f33f-826a-6952-e65903bf5d0acf13
define HaustuerLichtAus at *08:30:00 { if(("GT.Licht.Haustuer") eq "on") { fhem("set GT.Licht.Haustuer off") }}
setuuid HaustuerLichtAus 5fa04d9e-f33f-826a-ec45-6f8207db796af16a
###### Haustür Licht Ende
Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: amenomade am 07 November 2020, 22:37:11
Weil "GT.Licht.Haustuer" ein String ist, das nie gleich "off" oder gleich "on" sein kann, sondern nur gleich... "GT.Licht.Haustuer"

Du brauchst eine Funktion: ReadingsVal() oder schlimmsten Fall Value()
Siehe https://fhem.de/commandref_DE.html#perl , Abschnitt "Um auf die Gerätestatus/Attribute zuzugreifen benutzen Sie bitte die folgenden Funktionen"
Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 07 November 2020, 22:49:51
Danke für den Tipp! Da hab ich anscheinend echt blöd aus meiner fhem.cfg kopiert.

Hier ist es ja mit "value"

## Wintermodus ANFANG
define QuellsteinUntenAutoAnWT at *16:30:00 { if((Value("GT.Power.Quellstein1_Automation") eq "on") && (Value ("GT.Power.Quellstein1") eq "off") && $we == 0) { fhem("set GT.Power.Quellstein1 on;; set GT.Power.NordPool on;; set Sonos_EZ Speak 20 de Power Quell stein unten eingeschaltet!;; set Power.Mobil.1 on") }}
setuuid QuellsteinUntenAutoAnWT 5ea091dc-f33f-826a-3211-0a1c69bdb05acd70
define QuellsteinUntenAutoAnWE at *16:30:00 { if((Value("GT.Power.Quellstein1_Automation") eq "on") && (Value ("GT.Power.Quellstein1") eq "off") && $we == 1) { fhem("set GT.Power.Quellstein1 on;; set GT.Power.NordPool on;; set Sonos_EZ Speak 20 de Power Quell stein unten eingeschaltet!;; set Power.Mobil.1 on") }}
setuuid QuellsteinUntenAutoAnWE 5d028802-f33f-826a-5bbf-54b7260aba75ca2e
## Wintermodus ENDE
Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: amenomade am 07 November 2020, 23:05:30
Jetzt wäre ein "list" von GT.Power.Quellstein1_Automation und von GT.Power.Quellstein1 interessant.

Und wenn Du dabei bist, poste bitte zur Sicherheit ein echtes "list" von deinen ATs
Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: MadMax-FHEM am 07 November 2020, 23:09:37
Aber wie Amenomade schon angedeutet hat: schlimmstenfalls ein Value!

Also: Value(DeviceName) "frägt" das INTERNAL STATE ab! NICHT das Reading state! STATE wird z.B. durch stateFormat beeinflusst und hat dann (oft) nicht den Wert den man haben möchte...

Daher besser: ReadingsVal / ReadingsNum / AttrVal / InternalVal / ...

Und: besser gar nicht erst angewöhnen in der fhem.cfg zu editieren! Und wenn schon angewöhnt: versuchen abzugewöhnen ;)

(Spätestens wenn du sowas wie alexa-fhem etc. verwendest, dann wirst du mit dem direkten Editieren AUCH mittels Editor der fhem-Oberfläche [Stichwort: Edit Files] "auf die Nase fallen")

Gruß, Joachim
Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 08 November 2020, 09:56:11
Zitat von: amenomade am 07 November 2020, 23:05:30
Jetzt wäre ein "list" von GT.Power.Quellstein1_Automation und von GT.Power.Quellstein1 interessant.

Und wenn Du dabei bist, poste bitte zur Sicherheit ein echtes "list" von deinen ATs

Die Dinger funktionieren wie sie sollen eigentlich.

Hier die List outputs:

Dummy um die Automatisierung ein/auszuschalten

Internals:
   FUUID      5d028802-f33f-826a-152f-ee3465a84f547f1e
   NAME       GT.Power.Quellstein1_Automation
   NR         118
   STATE      off
   TYPE       dummy
   READINGS:
     2020-04-22 19:33:29   state           off
Attributes:
   alexaName  Quellstein Automatik
   alias      QuellsteinU Automode
   devStateIcon on:general_an_fuer_zeit@green off:general_aus_fuer_zeit@red
   icon       general_an_fuer_zeit
   room       Garten
   setList    on off
   webCmd     on:off


Zeitsteuerung Quellstein
Internals:
   DEF        55533A01
   FUUID      5d028801-f33f-826a-3f08-c43659c60ecf4dc9
   NAME       GT.Power.Quellstein1
   NOTIFYDEV  global
   NR         31
   STATE      off
   TYPE       CUL_HM
   chanNo     01
   device     Garten.4Switch.G1
   READINGS:
     2020-07-17 19:18:03   CommandAccepted yes
     2017-09-24 15:50:47   R-powerUpAction off
     2017-09-24 15:50:47   R-sign          off
     2020-06-07 12:53:44   RegL_01.        00:00 08:00 30:06 56:00 57:24
     2020-11-08 09:52:31   deviceMsg       off (to vccu)
     2020-11-08 09:52:31   level           0
     2017-09-24 15:49:10   levelMissed     desired:100
     2020-11-08 09:52:31   pct             0
     2020-11-08 09:52:31   recentStateType info
     2020-11-08 09:52:31   state           off
     2020-11-08 09:52:31   timedOn         off
     2020-07-17 19:18:03   trigLast        fhem:02
   helper:
     peerFriend peerSens,peerVirt
     peerOpt    3:switch
     regLst     1,3p
     cmds:
       TmplKey    :no:1604825549.98385
       TmplTs     1604825549.98385
       cmdKey     1:0:0::Garten.4Switch.G1:0003:01:
       cmdLst:
         clear      [(readings|trigger|register|oldRegs|rssi|msgEvents|{msgErrors}|attack|all)]
         getConfig  noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6) [-peerChn-]
         inhibit    [(on|{off})]
         off        noArg
         on         noArg
         on-for-timer -ontime-
         on-till    -time-
         peerBulk   -peer1,peer2,...- [({set}|unset)]
         peerIODev  [IO] -btn- [({set}|unset)] 'not for future use'
         press      [(long|{short})] [(-peer-|{self01})] [(-repCount-|{0})] [(-repDelay-|{0.25})]
         regBulk    -list-.-peerChn- -addr1:data1- -addr2:data2-...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         sign       [(on|{off})]
         statusRequest noArg
         toggle     noArg
         tplDel     -tplDel-
       lst:
         condition  slider,0,1,255
         peer       
         peerOpt   
         tplDel     
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         param      -param-
         reg        -addr- -list- [-peerChn-]
         regList    noArg
         regTable   noArg
         regVal     -addr- -list- [-peerChn-]
         saveConfig [-filename-]
         tplInfo    noArg
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     role:
       chn        1
     tmpl:
Attributes:
   alexaName  Quellstein
   alias      Quellstein unten
   devStateIcon on:FS20.on@yellow
   group      Power
   icon       sani_garden_pump
   model      HM-LC-SW4-DR
   peerIDs    00000000,
   room       Garten
   sortby     1
   webCmd     on:off

Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 08 November 2020, 10:01:25
Zitat von: MadMax-FHEM am 07 November 2020, 23:09:37
Aber wie Amenomade schon angedeutet hat: schlimmstenfalls ein Value!

Also: Value(DeviceName) "frägt" das INTERNAL STATE ab! NICHT das Reading state! STATE wird z.B. durch stateFormat beeinflusst und hat dann (oft) nicht den Wert den man haben möchte...

Daher besser: ReadingsVal / ReadingsNum / AttrVal / InternalVal / ...

Und: besser gar nicht erst angewöhnen in der fhem.cfg zu editieren! Und wenn schon angewöhnt: versuchen abzugewöhnen ;)

(Spätestens wenn du sowas wie alexa-fhem etc. verwendest, dann wirst du mit dem direkten Editieren AUCH mittels Editor der fhem-Oberfläche [Stichwort: Edit Files] "auf die Nase fallen")

Gruß, Joachim

Äh ja .. hab tatsächlich in der fhem.cfg editiert für den ganzen Krempel. Ist total unübersichtlich und überlege schon alles in z.b. notepad++ mal zu sortieren und erweitert zu kommentieren. Für einfacheres edit der fhem.cfg hab ich mal eine formatierte ansicht in fhem davon eingerichtet.

Wie mach ich das denn stattdessen besser? Immerhin scheine ich auch mal ein Auto Backup für jedes Save eingerichtet zu haben:

###### Backup fhem.cfg + fhem.stat at every save ######
define backupCfg notify global:SAVE {\
my $now = TimeNow();; $now =~ s/ /_/g;; \
`cp $attr{global}{configfile} ./backup_cfg-state/fhem.cfg.$now`;;\
`cp $attr{global}{statefile} ./backup_cfg-state/fhem.state.$now`;;\
}
setuuid backupCfg 5d028802-f33f-826a-7aaf-81e696387560ecc7
###### Backup Ende ######


Simpelzeitsteuerung mit zunächst nur einer Bedingung dann so oder (noch mit der EDIT Variant :( )?

###### Haustür Bewegungssensor Lampe Auto AN und Auto Aus; Zeitsteuerung, später auf Dämmerungssensor umstellen bzw. diesen als Bedingung ergänzen
define HaustuerLichtAn at *16:30:00 { if(value("GT.Licht.Haustuer") eq "off") { fhem("set GT.Licht.Haustuer on")}}
setuuid HaustuerLichtAn 5fa04d9e-f33f-826a-6952-e65903bf5d0acf13
define HaustuerLichtAus at *08:30:00 { if(value("GT.Licht.Haustuer") eq "on") { fhem("set GT.Licht.Haustuer off") }}
setuuid HaustuerLichtAus 5fa04d9e-f33f-826a-ec45-6f8207db796af16a
###### Haustür Licht Ende
Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: MadMax-FHEM am 08 November 2020, 10:18:47
Gar NICHT "DIRETKT" editieren!

Übersicht ist doch in fhemWeb gegeben (wenn man entsprechend group, room, etc. nutzt)!

Alles geht (besser!) über die Weboberfläche!

Also entweder die "Knöpfe" (bei jedem Device in der Detail-Ansicht) nutzen oder eben das Web-cmd-Fenster.

Oder (wenn du ganz "tief" rein willst ;)  ): raw Definition...
EDIT: zu finden "unter" jedem Device (Detail-Ansicht), damit kann man auch andere Devices bearbeiten/anlegen (z.B. "Code" aus dem Forum, der in rawDef ist einfügen etc.) / Oder (im "neuesten Default-Style") das "Plus-Zeichen" links oben...

Ich habe zu Beginn auch direkt editiert, weil ich dachte mehr Übersicht zu haben und kommentieren zu können etc.
Es gibt übrigens bei jedem Device auch das Attribut comment ;)
Dort trage ich (mittlerweile) "wichtige" Infos etc. ein...

Und wie geschrieben: es gibt Module (alexa-fhem ist nur eins davon), da wird direktes editieren (bzw. die Nutzung von rereadcfg [was dabei "ausgeführt" wird, um die Config wieder zu "laden"]) SCHIEF GEHEN!
(ich wollte es nur [noch mal] angemerkt haben)


So nun zum Code:

Wenn du schon Funktionen verwendest, dann auch richtig schreiben: value != Value

UND: lieber NICHT Value, sondern eben ReadingsVal/ReadingsNum etc. (Erläuterung siehe meine Antwort zuvor)

UND: warum postest du WIEDER Ausschnitte aus der cfg bzgl. der at, wenn amenomade doch ein list haben wollte?! ;)
(wobei nat. in diesem Fall der [verm.] Fehler auch so zu sehen sein dürfte ;)  )

Gruß, Joachim
Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 08 November 2020, 10:28:43
Das muss ich dann noch lernen wo ich klicken muss. Wie erstelle ich z.B. ein "at" dann? Wenn es eins gibt finde ich es und kann es jetzt auch über die weboberfläche bzgl. seiner "DEF" ändern. Wenn das alles über fhem web geht mag das tatsächlich besser sein.

Die angefragten List finden sich oben.

Ein List von HaustuerLichtAn ist dieses:

Internals:
   COMMAND    { if(Value("GT.Licht.Haustuer") eq "off") { fhem("set GT.Licht.Haustuer on")}}
   DEF        *16:30:00 { if(Value("GT.Licht.Haustuer") eq "off") { fhem("set GT.Licht.Haustuer on")}}
   FUUID      5fa04d9e-f33f-826a-6952-e65903bf5d0acf13
   NAME       HaustuerLichtAn
   NR         102
   PERIODIC   yes
   RELATIVE   no
   REP        -1
   STATE      Next: 16:30:00
   TIMESPEC   16:30:00
   TRIGGERTIME 1604849400
   TRIGGERTIME_FMT 2020-11-08 16:30:00
   TYPE       at
   READINGS:
     2020-11-08 10:23:38   state           Next: 16:30:00
Attributes:
Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: MadMax-FHEM am 08 November 2020, 11:46:34
Du kannst entweder "leere" Devices erstellen:


define DeviceName Typ "Einstellungen" {}


Also bei einem at:


define DeviceName at *12:00:00 {}


Oder notify:


define DeviceName notify TriggerDevice:TriggerRegEx {}


Und dann in der jeweiligen Device-Ansicht die "leere Ausführung" ( die { } ) bearbeiten.

ODER eben per RawDef.
D.h. unter einem Device (z.B. eines at/notify etc.) auf Raw Definition klicken.
Dann das Device bearbeiten (so als wenn du ein kopiertes Device in der cfg bearbeitet/angelegt hättest), also z.B. den Devicenamen ändern und somit ein "neues" at anlegen, eben mit dem neuen Namen...

Oder auch (was immer häufiger wird) Devices hier aus dem Forum (wenn sie in RawDef gepostet wurden) über dieses "Fenster" dann direkt in die cfg einfügen.

Einfach mal bzgl. Raw-Definition suchen...


Was passiert, wenn du jetzt das at "Zwangsauslöst"? Also exec-now? Dann sollte es funktionieren...
EDIT: also zumindest eines von beiden ;) Weil das Licht ja entweder aus ist und dann an gehen sollte oder eben an ist und aus gehen sollte ;)

Und noch mal: ich würde NICHT Value nehmen...

Gruß, Joachim
Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: MadMax-FHEM am 08 November 2020, 11:51:39
Andere Frage: warum frägst du überhaupt den Zustand des Devices ab, den du dann (abhängig ob der andere Zustand) doch (evtl.) eh ein/ausschaltest?

Das was du hier mit if usw. machst geht auch mit Filter.
Also Gerät nur ausschlten, wenn auch an...

(Spart maximal ein Funktelegramm und wird ja nur 2x am Tag ausgeführt, 1x für an und 1x für aus / da ist die vorherige Abfrage naja ;)  )

Und zwischendrin war mal eine Variante wo "GT.Power.Quellstein1_Automation" abgefragt wurde...

Jetzt wäre ein list von GT.Licht.Haustuer noch interessant... ;)

Gruß, Joachim
Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: amenomade am 08 November 2020, 12:43:55
Zitat von: MadMax-FHEM am 08 November 2020, 11:51:39

Jetzt wäre ein list von GT.Licht.Haustuer noch interessant... ;)

Wollte ich gerade sagen.
Am Anfang ging es um HaustuerLichtAn mit GT.Licht.Haustuer im Befehl, aber mit falscher Syntax. Wir haben jetzt ein "list" vom at aber kein "list" von GT.Licht.Haustuer
Dann ging es um   QuellsteinUntenAutoAnWT mit ...Quellstein... im Befehl. Wir haben ein "list" von den ...Quellstein... Devices, aber kein "list" vom at
Zwischendurch ein Exkurs über backup... und jetzt wieder HaustuerLichtAn

Kann man sich vielleicht auf einem einzigen Ding konzentrieren?

Wie Joachim gefragt hat, was passiert bei "set HaustuerLichtAn execNow"? Wird das Licht eingeschaltet oder nicht?
Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: MadMax-FHEM am 08 November 2020, 13:21:39
Zitat von: amenomade am 08 November 2020, 12:43:55
Wollte ich gerade sagen.
Am Anfang ging es um HaustuerLichtAn mit GT.Licht.Haustuer im Befehl, aber mit falscher Syntax. Wir haben jetzt ein "list" vom at aber kein "list" von GT.Licht.Haustuer
Dann ging es um   QuellsteinUntenAutoAnWT mit ...Quellstein... im Befehl. Wir haben ein "list" von den ...Quellstein... Devices, aber kein "list" vom at
Zwischendurch ein Exkurs über backup... und jetzt wieder HaustuerLichtAn

Kann man sich vielleicht auf einem einzigen Ding konzentrieren?

Gut, dann bin nicht nur ich durcheinander (gekommen) ;)

Wäre wirklich gut, wenn du schreiben würdest was du (wirklich) willst und von den beteiligten Devices list postest... :)
EDIT: der besseren Übersicht wegen viellleicht durchaus auch "noch mal", selbst wenn es bereits hier irgendwo zu finden ist...

Gruß, Joachim
Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 08 November 2020, 13:39:45
Richtig - das war ein Missverständnis. Ich habe die list gepostet Die ihr erfragt habt. Das waren aber nicht die problematischen.

Wahrscheinlich habe ich unglücklich formuliert. Alles mit Quellstein funktioniert. Davon habe ich aber falsch übernommen (nämlich ohne Value) für die zunächst nicht funktionierenden AT/IF. HaustuerLichtAn / Aus   -- jetzt funktioniert es offenbar :-)

Ihr seid so oder so die Besten und habt super geholfen.
Habe jetzt gelernt:

1.) das ich fhem.cfg nicht editieren soll und wie es grob stattdessen geht
2.) und das ich "Value" mal ersetzen sollte bzw. das mindestens noch benötigt habe
3.) Das derartige code schnipsel sofort getestet werden können mit zum Beispiel: "set HaustuerLichtAn execNow" :-)

Vielen Dank also Euch beiden! Stelle das Thema auf gelöst :-)
Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 08 November 2020, 13:50:53
Zitat von: MadMax-FHEM am 08 November 2020, 11:51:39
Andere Frage: warum frägst du überhaupt den Zustand des Devices ab, den du dann (abhängig ob der andere Zustand) doch (evtl.) eh ein/ausschaltest?

Das was du hier mit if usw. machst geht auch mit Filter.
Also Gerät nur ausschlten, wenn auch an...

(Spart maximal ein Funktelegramm und wird ja nur 2x am Tag ausgeführt, 1x für an und 1x für aus / da ist die vorherige Abfrage naja ;)  )

Gruß, Joachim

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.

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?

Beste Grüße
Sammy
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: Wernieman am 08 November 2020, 13:54:37
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 (https://www.fhem.de/commandref.html#IF)
Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: MadMax-FHEM am 08 November 2020, 14:00:06
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
Titel: Antw:AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 08 November 2020, 21:37:41
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
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: MadMax-FHEM am 08 November 2020, 21:43:30
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
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 08 November 2020, 21:46:56
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?
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 10 November 2020, 21:14:47

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ß ;-)  )
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: MadMax-FHEM am 10 November 2020, 21:18:24
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
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 10 November 2020, 21:22:18
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?
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: MadMax-FHEM am 10 November 2020, 21:28:02
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
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag 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"
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: MadMax-FHEM am 11 November 2020, 09:22:50
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
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag 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)
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: MadMax-FHEM am 11 November 2020, 09:54:46
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
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: Beta-User am 11 November 2020, 10:17:49
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.
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 11 November 2020, 21:23:43
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)
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: Beta-User am 12 November 2020, 11:57:36
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!
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 12 November 2020, 20:00:03
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)?
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag 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!).

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.
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 12 November 2020, 21:12:18
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?).
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: MadMax-FHEM am 12 November 2020, 21:21:02
ReadingsVal("DeviceName","ReadingName","ERSATZWERT") -> wenn das Reading nicht gelesen werden konnte, dann gib ERSATZWERT zurück...

Gruß, Joachim
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: Beta-User am 15 November 2020, 08:06:13
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)...
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 15 November 2020, 10:43:35
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).
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: amenomade am 15 November 2020, 10:46:08
https://fhem.de/commandref_modular_DE.html
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: Beta-User am 16 November 2020, 12:05:28
Zitat von: amenomade am 15 November 2020, 10:46:08
https://fhem.de/commandref_modular_DE.html (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.
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 18 November 2020, 21:51:50
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 ?

Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: MadMax-FHEM am 18 November 2020, 22:04:50
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
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: amenomade am 19 November 2020, 20:17:09
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
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: Sammy51 am 20 November 2020, 21:46:42
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 (https://forum.fhem.de/index.php/topic,115919.0.html)
Titel: Antw:GELÖST: AT und IF ... warum funktioniert das so nicht?
Beitrag von: amenomade am 20 November 2020, 23:51:16
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