FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Manul am 30 April 2017, 18:10:18

Titel: [Gelöst, wenn auch anders als gedacht] alias_<RoomName> für group?
Beitrag von: Manul am 30 April 2017, 18:10:18
Ist es möglich, auch einer Gruppe für einzelne Räume einen anderen Anzeigenamen zu verpassen?
Titel: Antw:alias_<RoomName> für group?
Beitrag von: igami am 30 April 2017, 18:17:46
Ein Beispiel bitte.
Titel: Antw:alias_<RoomName> für group?
Beitrag von: Manul am 30 April 2017, 18:23:58
Gerne: Ich habe eine Gruppe "Türen und Fenster" und einen Raum "Übersicht". In letzterem möchte ich aber nur die offenen Türen und Fenster sehen. Lösen würde ich das über ein notify, das bei Öffnen bzw. schließen einer Tür/eines Fensters diese/s aus dem Raum nimmt oder zum Raum hinzufügt. Daher hätte ich die Gruppe im Raum "Übersicht" gerne als "Offene Türen und Fenster" angezeigt.
Titel: Antw:alias_<RoomName> für group?
Beitrag von: igami am 30 April 2017, 18:31:44
Dafür würde sich eher eine ReadingsGroup eignen in der dann nur offene Türen und Fenster aufgelistet werden. Die ReadingsGroup packst du dann in deinen Übersicht Raum.

siehe https://wiki.fhem.de/wiki/ReadingsGroup#Dynamische_Inhalte
Das Attribute valueFormat sollte dabei der für dich interessante Teil sein.
Titel: Antw:alias_&lt;RoomName&gt; für group?
Beitrag von: KernSani am 30 April 2017, 18:34:28
Sowas könnte man besser über eine teadingsgroup lösen, guck mal hier: https://forum.fhem.de/index.php?topic=46039.0
Titel: Antw:alias_<RoomName> für group?
Beitrag von: franky08 am 30 April 2017, 18:43:27
Ich habe mir für den Status der Türen eine sub gebaut, welche die offenen Türen zurück liefert, dass lässt sich für deinen Fall auch abändern bzw. anpassen.
sub statusTuerOffen() {

my @monitored=devspec2array(".*:FILTER=alias=Tür.*:FILTER=STATE!=closed");
my $cnt_devs=@monitored;
my $i = 0;
my $msgtext = "";
foreach(@monitored) {
$msgtext .= AttrVal($_,"alias",$_);
if ($i < $cnt_devs - 2) {
  $msgtext .= ", ";
}
if ($i == $cnt_devs - 2) {
  $msgtext .= " und ";
}
$i++;
}

return $msgtext if ($cnt_devs > 0);
}


Das "Grundgerüst" könntest du dafür nehmen oder wie oben schon gepostet mit readingsGroup.

VG
Frank
Titel: Antw:alias_<RoomName> für group?
Beitrag von: Damian am 30 April 2017, 19:04:35
Zitat von: Manul am 30 April 2017, 18:23:58
Gerne: Ich habe eine Gruppe "Türen und Fenster" und einen Raum "Übersicht". In letzterem möchte ich aber nur die offenen Türen und Fenster sehen. Lösen würde ich das über ein notify, das bei Öffnen bzw. schließen einer Tür/eines Fensters diese/s aus dem Raum nimmt oder zum Raum hinzufügt. Daher hätte ich die Gruppe im Raum "Übersicht" gerne als "Offene Türen und Fenster" angezeigt.

define di_window DOIF
attr di_window state Offene Fenster: [@":open":$group eq "Türen und Fenster" and $_ eq "open","keine"]


Mit diesem Zweizeiler kannst du so etwas realisieren, siehe https://fhem.de/commandref_DE.html#DOIF_aggregation
Titel: Antw:alias_<RoomName> für group?
Beitrag von: Manul am 01 Mai 2017, 13:11:01
Danke Euch allen! Das Problem an der readingsGroup ist, daß sie auch angezeigt wird, wenn sie leer ist. Ich habe es jetzt so gelöst, daß ich zwei Gruppen "Fenster und Türen" und "Offene Fenster und Türen" habe - die erste wird in den einzelnen Räumen angezeigt, die zweite nur auf der Übersichtsseite. Per notify füge ich den Türen und Fenstern dann beim Öffnen und Schließen den Raum "Übersicht" hinzu bzw. nehme ihn weg.

Die Variante mit nur einer Gruppe, die auf der Übersichtsseite anders benannt wird, würde mir besser gefallen. Kann nochmal jemand kurz bestätigen, daß das nicht geht?

@Damian: Auch eine schöne Lösung, vielen Dank für den Hinweis. Ich glaube aber, da kriege ich die Anzeige nicht so, wie ich sie gerne hätte.
Titel: Antw:alias_<RoomName> für group?
Beitrag von: Damian am 01 Mai 2017, 18:03:12
Zitat von: Manul am 01 Mai 2017, 13:11:01
Danke Euch allen! Das Problem an der readingsGroup ist, daß sie auch angezeigt wird, wenn sie leer ist. Ich habe es jetzt so gelöst, daß ich zwei Gruppen "Fenster und Türen" und "Offene Fenster und Türen" habe - die erste wird in den einzelnen Räumen angezeigt, die zweite nur auf der Übersichtsseite. Per notify füge ich den Türen und Fenstern dann beim Öffnen und Schließen den Raum "Übersicht" hinzu bzw. nehme ihn weg.

Die Variante mit nur einer Gruppe, die auf der Übersichtsseite anders benannt wird, würde mir besser gefallen. Kann nochmal jemand kurz bestätigen, daß das nicht geht?

@Damian: Auch eine schöne Lösung, vielen Dank für den Hinweis. Ich glaube aber, da kriege ich die Anzeige nicht so, wie ich sie gerne hätte.

Durch deine Vorgehensweise änderst du ständig deine Konfiguration (fhem.cfg), wenn du damit leben kannst - ist ok.

zu DOIF: man kann die Trennzeichen als Zeichenketten ändern und auch die Aliasnamen anzeigen.
Titel: Antw:alias_<RoomName> für group?
Beitrag von: Manul am 01 Mai 2017, 18:29:16
Zitat von: Damian am 01 Mai 2017, 18:03:12
Durch deine Vorgehensweise änderst du ständig deine Konfiguration (fhem.cfg), wenn du damit leben kannst - ist ok.

Zu welchen Problemen könnte das denn führen?

Zitat von: Damian am 01 Mai 2017, 18:03:12
zu DOIF: man kann die Trennzeichen als Zeichenketten ändern und auch die Aliasnamen anzeigen.

Ich habe das DOIF jetzt nochmal ausprobiert: Es funktioniert leider nicht. Es wird immer "keine" angezeigt, egal, ob eine Tür offen ist oder nicht.

Ich hatte noch eine andere Idee: Könnte man in einem notify die visibilty einer ReadingsGroup ändern, je nachdem, ob sie leer ist oder nicht? Gibt es eine Möglichkeit, in Perl die Anzahl der Mitglieder einer ReadingsGroup abzufragen?
Titel: Antw:alias_<RoomName> für group?
Beitrag von: Damian am 01 Mai 2017, 19:47:27
Zitat von: Manul am 01 Mai 2017, 18:29:16
Zu welchen Problemen könnte das denn führen?

Das ist kein Problem, sondern eine Eigenschaft des Systems. Durch Änderung des Attributes ändert sich die Konfiguration, zu erkennen am roten Fragezeichen. Wenn du sie nicht speicherst ist die Änderung beim nächsten Booten weg.


ZitatIch habe das DOIF jetzt nochmal ausprobiert: Es funktioniert leider nicht. Es wird immer "keine" angezeigt, egal, ob eine Tür offen ist oder nicht.

Poste mal ein list vom offenen Fenster.
Titel: Antw:alias_<RoomName> für group?
Beitrag von: Manul am 01 Mai 2017, 20:41:27
Zitat von: Damian am 01 Mai 2017, 19:47:27
Das ist kein Problem, sondern eine Eigenschaft des Systems. Durch Änderung des Attributes ändert sich die Konfiguration, zu erkennen am roten Fragezeichen. Wenn du sie nicht speicherst ist die Änderung beim nächsten Booten weg.

Ok. Ich denke, damit kann ich in diesem Fall leben - der Fensterzustand sollte flüchtig genug sein. ;)

Zitat von: Damian am 01 Mai 2017, 19:47:27
Poste mal ein list vom offenen Fenster.

Gerne:

Internals:
   CUL_0_MSGCNT 15
   CUL_0_RAWMSG A0C8DA64149BD34FD9F7F01DBC8::-63.5:CUL_0
   CUL_0_RSSI -63.5
   CUL_0_TIME 2017-05-01 20:35:02
   DEF        49BD34
   IODev      CUL_0
   LASTInputDev CUL_0
   MSGCNT     15
   NAME       dg_sz_sco_balkon
   NOTIFYDEV  global
   NR         39
   STATE      open
   TYPE       CUL_HM
   lastMsg    No:8D - t:41 s:49BD34 d:FD9F7F 01DBC8
   peerList   dg_sz_wt_WindowRec,dg_sz_ht_WindowRec,
   protLastRcv 2017-05-01 20:35:02
   protSnd    9 last_at:2017-05-01 20:35:02
   protState  CMDs_done
   rssi_at_CUL_0 max:-63.5 min:-76 cnt:15 lst:-63.5 avg:-70.9
   Readings:
     2017-05-01 15:18:54   Activity        alive
     2017-04-29 20:30:09   D-firmware      1.0
     2017-04-29 20:30:09   R-cyclicInfoMsg on
     2017-04-29 20:30:10   R-dg_sz_ht_WindowRec-expectAES off
     2017-04-29 20:30:10   R-dg_sz_ht_WindowRec-peerNeedsBurst on
     2017-04-29 20:30:10   R-dg_sz_wt_WindowRec-expectAES off
     2017-04-29 20:30:10   R-dg_sz_wt_WindowRec-peerNeedsBurst on
     2017-04-29 20:30:09   R-eventDlyTime  0 s
     2017-04-29 20:30:09   R-sabotageMsg   on
     2017-04-29 20:30:09   R-sign          on
     2017-04-29 20:30:09   RegL_00.        02:01 09:01 0A:FD 0B:9F 0C:7F 10:01 14:06 00:00
     2017-04-29 20:30:09   RegL_01.        08:01 20:9C 21:00 30:06 00:00
     2017-04-29 20:30:10   RegL_04.dg_sz_ht_WindowRec 01:01 00:00
     2017-04-29 20:30:10   RegL_04.dg_sz_wt_WindowRec 01:01 00:00
     2017-05-01 20:34:08   alive           yes
     2017-05-01 20:35:02   battery         ok
     2017-05-01 20:35:02   contact         open (to VCCU)
     2017-05-01 15:18:54   peerList        dg_sz_wt_WindowRec,dg_sz_ht_WindowRec,
     2017-05-01 20:34:08   recentStateType info
     2017-05-01 20:34:08   sabotageError   off
     2017-05-01 20:35:02   state           open
     2017-04-29 11:12:03   trigDst_HM_4189FB noConfig
     2017-04-29 11:12:03   trigDst_HM_440075 noConfig
     2017-04-29 20:00:59   trigDst_dg_sz_ht noConfig
     2017-04-29 16:41:25   trigDst_dg_sz_rt_heizung noConfig
     2017-04-29 20:00:58   trigDst_dg_sz_wt noConfig
     2017-05-01 20:35:02   trigger_cnt     219
   Helper:
     HM_CMDNR   141
     mId        00C7
     rxType     28
     supp_Pair_Rep 0
     Ack:
     Expert:
       def        1
       det        0
       raw        1
       tpl        0
     Io:
       newChn     +49BD34,00,01,00
       nextSend   1493663702.64376
       prefIO
       rxt        2
       vccu
       p:
         49BD34
         00
         01
         00
     Mrssi:
       mNo        8D
       Io:
         CUL_0      -61.5
     Prt:
       bErr       0
       sProc      0
       sleeping   1
       Rspwait:
     Q:
       qReqConf
       qReqStat
     Role:
       chn        1
       dev        1
     Rpt:
       IO         CUL_0
       flg        A
       ts         1493663702.54605
       ack:
         HASH(0x2463038)
         8D8002FD9F7F49BD340101C800
     Rssi:
       At_cul_0:
         avg        -70.9
         cnt        15
         lst        -63.5
         max        -63.5
         min        -76
     Tmpl:
Attributes:
   IODev      CUL_0
   actCycle   002:50
   actStatus  alive
   alias      Balkontür
   autoReadReg 4_reqStatus
   devStateIcon closed:fts_door@green open:fts_door_open@red
   expert     2_raw
   firmware   1.0
   group      Offene Fenster und Türen,Fenster und Türen
   model      HM-SEC-SCo
   peerIDs    00000000,4189FB03,44007503,
   room       CUL_HM,Schlafzimmer,Übersicht
   subType    threeStateSensor


Hier das doif, vielleicht hab ich ja auch da was falsch gemacht:

defmod di_window DOIF
attr di_window state Offene Fenster: [@":open":$group eq "Fenster und Türen" and $_ eq "open","keine"]

setstate di_window Offene Fenster: keine
setstate di_window 2017-05-01 20:35:02 Device dg_sz_sco_balkon
setstate di_window 2017-05-01 18:19:16 cmd 0
setstate di_window 2017-05-01 20:35:02 state Offene Fenster: keine
Titel: Antw:alias_<RoomName> für group?
Beitrag von: Damian am 01 Mai 2017, 21:12:02
Zitat von: Manul am 01 Mai 2017, 20:41:27
Ok. Ich denke, damit kann ich in diesem Fall leben - der Fensterzustand sollte flüchtig genug sein. ;)

Dennoch ist es ungünstig, denn das rote Fragezeichen brennt dann bei dir immer und du weißt nicht, ob eine ernsthafte Änderung der Konfiguration vorgenommen wurde oder eine temporäre.

Es liegt an der Tatsache, dass deine Devices in zwei Gruppen liegen. Es ist eine Perlabfrage, das könntest du ggf. so lösen.

attr di_window state Offene Fenster: [@":open":$group =~ "Fenster und Türen" and $_ eq "open","keine"]

Titel: Antw:alias_<RoomName> für group?
Beitrag von: CoolTux am 01 Mai 2017, 21:21:13

defmod listeOffeneFensterTueren readingsGroup FensterKontakt.*|TuerKontakt.*:state
attr listeOffeneFensterTueren alias Übersicht offener Fenster und Türen
attr listeOffeneFensterTueren group Wohnung
attr listeOffeneFensterTueren icon fts_window_1w
attr listeOffeneFensterTueren mapping %ALIAS
attr listeOffeneFensterTueren room AnniKraussStr
attr listeOffeneFensterTueren valueFormat {$VALUE !~ m/closed/?$VALUE:undef;;}
attr listeOffeneFensterTueren valueIcon {'state.open' => 'fts_window_1w_open@red','state.tilted'=>'fts_window_1w_tilt@orange','state.closed'=>'fts_window_1w@green'}


Zeigt nur offene oder gekippte Fenster an.
Titel: Antw:alias_<RoomName> für group?
Beitrag von: Manul am 01 Mai 2017, 21:48:52
Danke Euch allen für die Vorschläge!

Bei der ReadingsGroup bleibt das Problem, daß sie auch angezeigt wird, wenn sie leer ist. Ich dachte, das könnte man per visibilty hide verhindern, das scheint aber für was anderes da zu sein.

Ich denke, ich lasse es erst mal, wie's ist, und denke in einer Weile, wenn ich etwas vertrauter mit FHEM bin, nochmal drüber nach.
Titel: Antw:alias_<RoomName> für group?
Beitrag von: Manul am 08 Mai 2017, 19:54:09
Nach ein paar Tagen muß ich Damian recht geben: Das ständige rote Fragezeichen irritiert. Ansonsten ist die Anzeige aber genau so, wie ich sie gerne haben möchte: Sieht aus wie eine Gruppe, wird nur angezeigt, wenn auch tatsächlich Fenster offen sind, und jedes Fenster hat seine eigene Zeile inklusive devStateIcon.

Irgendjemand eine Idee, wie ich das auch ohne ständige Konfig-Änderungen hinbekommen könnte?
Titel: Antw:alias_<RoomName> für group?
Beitrag von: KernSani am 08 Mai 2017, 23:27:22
Hi Manul,

du kannst natürlich noch ein "save" hinterherschicken, um das rote Fragezeichen loszuwerden. Dann besteht aber die Gefahr, dass du "versehentlich" eine temporäre Änderung speicherst, weil irgendwer ein Fenster aufmacht...

Titel: Antw:alias_<RoomName> für group?
Beitrag von: Manul am 09 Mai 2017, 00:15:40
Dann mach ich's lieber händisch. Ich habe ohnehin eine separate FHEMWEB-Instanz für Konfigurationsarbeiten, in der Ansichtsinstanz habe ich "save config" ausgeblendet. Trotzdem stellt mich diese Lösung nicht 100%ig zufrieden.
Titel: Antw:alias_<RoomName> für group?
Beitrag von: igami am 09 Mai 2017, 06:16:46
man kann ja prüfen wie viele änderungen es gibt und dann ein save ausführen.
Hab z.B. ein notify um uzsu widgets auf einen weekdaytimer zu übertragen.
Raw definition:

defmod profile2WeekdayTimer notify .*(Mo|Di|Mi|Do|Fr|Sa|So)\|\d\d:\d\d\|(enabled|disabled).* {\
  my $profile = (split(": ", $EVENT, 2))[1];;\
  return if(!$profile or $profile =~ /,\|/);;\
  my @WeekdayTimer = devspec2array("TYPE=WeekdayTimer:FILTER=DEVICE=$NAME");;\
  fhem("modify $_ $NAME $profile", 1) for(@WeekdayTimer);;\
  fhem("save", 1) if(int(@structChangeHist) == int(@WeekdayTimer));;\
  return;;\
}
Titel: Antw:alias_<RoomName> für group?
Beitrag von: Manul am 09 Mai 2017, 09:44:02
Sehr schön, so werde ich's machen, vielen Dank!