FHEM Forum

FHEM => Automatisierung => Thema gestartet von: KernSani am 30 November 2014, 23:37:33

Titel: (Gelöst) Readingsgroup, INTERNALs und ein Device mit eventmap
Beitrag von: KernSani am 30 November 2014, 23:37:33
Hallo zusammen,

folgende Situation:
Nun zu den Fragen:

Vielen Dank und eine frohen Advent,

Oli
Titel: Antw:Readingsgroup, INTERNALs und ein Device mit eventmap
Beitrag von: justme1968 am 01 Dezember 2014, 07:15:37
1. nein. das geht nicht

2. nimm state und ändere den wert per valueFormat auf den richtigen.

gruß
  andre
Titel: Antw:Readingsgroup, INTERNALs und ein Device mit eventmap
Beitrag von: KernSani am 01 Dezember 2014, 15:56:28
Hi Andre,

Vielen Dank für die schnelle Antwort. Das Ganze über valueFormat zu machen wollte ich vermeiden, da ich dann - zumindest nach meinem Wissenstand - einzeln pro Devicenamen angeben müsste, ob "close" nun wirklich close ist oder "open" sein sollte.
Aber ich habe gerade eine Andere Idee: Könnte ich das über ein userreading im Device lösen, das ich bei jedem change entsprechend setze und das dann in der readingsgroup abfrage?

Danke,

Grüße,

Oli

Titel: Antw:Readingsgroup, INTERNALs und ein Device mit eventmap
Beitrag von: justme1968 am 01 Dezember 2014, 16:29:33
du kannst in der valueFormat routine einfach nachschauen ob in dem device die eventMap gesetzt ist oder nicht und dann entsprechen reagieren. da ist nichts device spezifisches nötig.

userReadings sollte auch gehen.

gruß
  andre
Titel: Antw:Readingsgroup, INTERNALs und ein Device mit eventmap
Beitrag von: KernSani am 03 Dezember 2014, 00:11:01
Andre,

danke für die Hilfe, userreadings ging leider doch nicht (siehe http://forum.fhem.de/index.php?topic=29862 (http://forum.fhem.de/index.php?topic=29862)). Für mich - als FHEM und PERL-Neuling - war das Ganze dann doch eine größere Herausforderung. Falls es jemanden interessiert hier meine Lösung:

1.) Abfragen ob eventMap für das device gestzt ist. Falls ja dann wird das mapping von "open" nach "close" durchgeführt (und umgekehrt). Falls nein, wird der ursprüngliche "state" zurückgegeben. Gelöst habe ich das Ganze über eine kleine Routine in 99_myUtils.pm:
sub blindsMap($) {
my ($obj) = @_;
  if ($attr{$obj}{"eventMap"} ne '')
   {if (ReadingsVal($obj,"state","") eq "close")
     {return "open"}
    else
     {return "close"}
   }
  else
   {return ReadingsVal($obj,"state","")}
 
}


2.) Ist dann ganz einfach
attr rg_rolladen valueFormat blindsMap($DEVICE)

Grüße,

Oli