Neues Modul readingsGroup

Begonnen von Niko, 24 August 2013, 11:59:11

Vorheriges Thema - Nächstes Thema

justme1968

das habe ich nicht vergessen. ich möchte es aber etwas anders lösen.

am liebsten über zwei zusätzliche attribute prefix und suffix. dann kann man valueFormat wieder nur zum formatieren verwenden und muss nicht hier noch einheiten oder ähnliches dran hängen. das würde glaube ich so manche meldung wegen nicht verdoppeltem % vermeiden.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

#931
angehängt eine version mit den neuen attributen valuePrefix und valueSuffix.

bitte probier mal ob damit geht was du möchtest.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

igami

Hallo andre,

wie schon befürchtet funktioniert das:
Zitat von: igami am 26 November 2014, 14:41:18
Kann man das optional machen? Ich habe readingsGroups in denen ich das als feature nutze

define rg_12220_1 readingsgroup EIB_1106:?alias,state,set@EIB_2000,?alias,<%fts_shutter_up>,<%fts_shutter_down>
attr rg_12220_1 commands   {'state' => 'trigger ntfy_rg $DEVICE $READING',  'rg_12220_1.fts_shutter_up' => 'set $DEVICE off',  'rg_12220_1.fts_shutter_down' => 'set $DEVICE on'}

das würde dann nicht mehr funktionieren. Das reading 'set' existiert natürlich nicht. Mit einem reset@$DEVICE kann man die Variable auch wieder resetten.
nicht mehr.

Hier ein List der vollständigen rg.

Internals:
   DEF        <Beleuchtung>,<Jalousie>
EIB_1106:?alias,state,set@EIB_2000,?alias,<%fts_shutter_up>,<%fts_shutter_down>,set@EIB_2005,<%fts_blade_arc_close_00>,<%fts_blade_arc_close_100>
EIB_1104:?alias,state,set@EIB_2001,?alias,<%fts_shutter_up>,<%fts_shutter_down>,set@EIB_2006,<%fts_blade_arc_close_00>,<%fts_blade_arc_close_100>
EIB_2002:<>,<>,?alias,<%fts_shutter_up>,<%fts_shutter_down>,set@EIB_2007,<%fts_blade_arc_close_00>,<%fts_blade_arc_close_100>
EIB_2003:<>,<>,?alias,<%fts_shutter_up>,<%fts_shutter_down>,set@EIB_2008,<%fts_blade_arc_close_00>,<%fts_blade_arc_close_100>
EIB_2004:<>,<>,?alias,<%fts_shutter_up>,<%fts_shutter_down>,set@EIB_2009,<%fts_blade_arc_close_00>,<%fts_blade_arc_close_100>
   NAME       rg_12160_1
   NR         886
   NTFY_ORDER 50-rg_12160_1
   STATE      Initialized
   TYPE       readingsGroup
   mayBeVisible 1
   CHANGETIME:
   Content:
     EIB_1104   1
     EIB_1106   1
     EIB_2002   1
     EIB_2003   1
     EIB_2004   1
   Content2:
     EIB_2000   1
     EIB_2001   1
     EIB_2005   1
     EIB_2006   1
     EIB_2007   1
     EIB_2008   1
     EIB_2009   1
   DEVICES:
     ARRAY(0x6c31f70)
     ARRAY(0x6e50d28)
     ARRAY(0x740d6f8)
     ARRAY(0x741be78)
     ARRAY(0x7320a10)
     ARRAY(0x741b6f8)
   DEVICES2:
     ARRAY(0x6c31f70)
     ARRAY(0x6e50d28)
     ARRAY(0x740d6f8)
     ARRAY(0x741be78)
     ARRAY(0x7320a10)
     ARRAY(0x741b6f8)
     ARRAY(0x6e572a8)
     ARRAY(0x7198870)
     ARRAY(0x7423038)
     ARRAY(0x73acaa0)
     ARRAY(0x719b5a0)
     ARRAY(0x7199810)
     ARRAY(0x4582610)
   Fhem:
     lastDefChange 83
     last_update 1417692815.35412
   Helper:
     DEF
     nameStyle  {($READING eq "Beleuchtung" ||$READING eq "Jalousie" )?'style="font-size:20px;text-align:center;color:RoyalBlue"'  :'style="font-size:16px"'}
     valueStyle style="font-size:16px"
     Commands:
       rg_12160_1.fts_blade_arc_close_00 set $DEVICE off
       rg_12160_1.fts_blade_arc_close_100 set $DEVICE on
       rg_12160_1.fts_shutter_down set $DEVICE on
       rg_12160_1.fts_shutter_up set $DEVICE off
       state      trigger ntfy_rg $DEVICE $READING
     Valuecolumns:
       Beleuchtung colspan="2"
       Jalousie   colspan="5"
     Valueicon:
       state.off  li_wht_off
       state.on   li_wht_on
       state.undefined li_wht_on
Attributes:
   DbLogExclude .*
   commands   {'state' => 'trigger ntfy_rg $DEVICE $READING',  'rg_12160_1.fts_shutter_up' => 'set $DEVICE off',  'rg_12160_1.fts_shutter_down' => 'set $DEVICE on',  'rg_12160_1.fts_blade_arc_close_00' => 'set $DEVICE off',  'rg_12160_1.fts_blade_arc_close_100' => 'set $DEVICE on'}
   group      Visualisierung
   nameStyle  {($READING eq "Beleuchtung" ||$READING eq "Jalousie" )?'style="font-size:20px;text-align:center;color:RoyalBlue"'  :'style="font-size:16px"'}
   noheading  1
   nolinks    1
   nonames    1
   room       1.2.160:Montageleiter
   valueColumns {'Beleuchtung' => 'colspan="2"',  'Jalousie' => 'colspan="5"'}
   valueIcon  {'state.on' => 'li_wht_on',  'state.undefined' => 'li_wht_on',  'state.off' => 'li_wht_off' }
   valueStyle style="font-size:16px"

Hast du eine Idee wie man das ganze nun einfach lösen könnte? Vorher wurde das Device ja einfach brav überschrieben. Vielleicht kann man ja einen Befehl zum neusetzen des Devices einbauen. Z.B. ein zweites <device>: in der Zeile.

Grüße
Igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

justme1968

ich bin nicht sicher das ich das problem verstehe.

vorher war es so das ein ...,reading@device,... für ein device das nicht vorhanden war nichts getan hat. das ist jetzt immer noch so.

dazugekommen ist jetzt das man ...,!reading@!device,... schreiben kann um etwas anzuzeigen obwohl es reading und device nicht gibt. ohne die ! sollte sich nichts geändert haben.

was genau funktioniert nicht mehr bzw. wie sollte es stat dessen funktionieren.

kannst du das ganze bitte mit ein oder zwei dummys und einer readingsGroup nachstellen?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

igami

Hallo Andre,


define rg_12220_1 readingsgroup EIB_1106:?alias,state,set@EIB_2000,?alias,<%fts_shutter_up>,<%fts_shutter_down>
attr rg_12220_1 commands   {'state' => 'trigger ntfy_rg $DEVICE $READING',  'rg_12220_1.fts_shutter_up' => 'set $DEVICE off',  'rg_12220_1.fts_shutter_down' => 'set $DEVICE on'}

Hier wird erst alias und State vom "eigentlichen" Device angezeit.
set@EIB_2000 würde ja das reading set anzeigen, es existiert jedoch nicht
nun der Trick
?alias liefert nun den alias vom EIB_2000, da $DEVICE immernoch EIB_2000 ist und nicht zurück gesetzt wurde
<%fts_shutter_up> und <%fts_shutter_down> sind in den commands so angelegt, dass sie on bzw. off setzen.

Was mir als Lösung einfällt wäre mit ! zu arbeiten, ist aber mehr Aufwand als vorher.

Ich hoffe es ist verständlich was ich meine.

Grüße
Igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

justme1968

achso...

das das device nicht zurück gesetzt wurde ist aber wirklich ein fehler gewesen. der sollte nicht drin bleiben weil er deinige andere dinge unmöglich macht. das ! würde hier auch nicht helfen.

du kannst aber einfach ?alias@EIB_2000 schreiben. und im mapping für die beiden shutter icons den device namen auch direkt rein schreiben.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

igami

Habe es nun folgendermaßen gelöst, muss halt bei jedem 'Button' das @ angeben

Internals:
   DEF        <Beleuchtung>,<Jalousie>
EIB_1106:?alias,state,?alias@EIB_2000,!up@EIB_2000,!down@EIB_2000,!00@EIB_2005,!100@EIB_2005
EIB_1104:?alias,state,?alias@EIB_2001,!up@EIB_2001,!down@EIB_2001,!00@EIB_2006,!100@EIB_2006
EIB_2002:<>,<>,?alias,!up,!down,!00@EIB_2007,!100@EIB_2007
EIB_2003:<>,<>,?alias,!up,!down,!00@EIB_2008,!100@EIB_2008
EIB_2004:<>,<>,?alias,!up,!down,!00@EIB_2009,!100@EIB_2009
   NAME       rg_12160_1
   NR         886
   NTFY_ORDER 50-rg_12160_1
   STATE      Initialized
   TYPE       readingsGroup
   mayBeVisible 1
   CHANGETIME:
   Content:
     EIB_1104   1
     EIB_1106   1
     EIB_2002   1
     EIB_2003   1
     EIB_2004   1
   Content2:
     EIB_2000   1
     EIB_2001   1
     EIB_2005   1
     EIB_2006   1
     EIB_2007   1
     EIB_2008   1
     EIB_2009   1
   DEVICES:
     ARRAY(0x7229ba8)
     ARRAY(0x727fb20)
     ARRAY(0x46f4f00)
     ARRAY(0x7416600)
     ARRAY(0x6fd92e8)
     ARRAY(0x725ea60)
   DEVICES2:
     ARRAY(0x7229ba8)
     ARRAY(0x727fb20)
     ARRAY(0x46f4f00)
     ARRAY(0x7416600)
     ARRAY(0x6fd92e8)
     ARRAY(0x725ea60)
     ARRAY(0x6fddd80)
     ARRAY(0x6ffd498)
     ARRAY(0x6fd9fb8)
     ARRAY(0x7197fd8)
     ARRAY(0x757ae98)
     ARRAY(0x6eda578)
     ARRAY(0x7581ab0)
     ARRAY(0x741b428)
     ARRAY(0x7198768)
     ARRAY(0x7198870)
     ARRAY(0x740d440)
     ARRAY(0x6fae368)
     ARRAY(0x4520ae8)
     ARRAY(0x756a1c0)
   Fhem:
     lastDefChange 93
     last_update 1417696055.34435
   Helper:
     DEF
     nameStyle  {($READING eq "Beleuchtung" ||$READING eq "Jalousie" )?'style="font-size:20px;text-align:center;color:RoyalBlue"'  :'style="font-size:16px"'}
     valueStyle style="font-size:16px"
     Commands:
       00         set $DEVICE off
       100        set $DEVICE on
       down       set $DEVICE on
       state      trigger ntfy_rg $DEVICE $READING
       up         set $DEVICE off
     Valuecolumns:
       Beleuchtung colspan="2"
       Jalousie   colspan="5"
     Valueicon:
       00         fts_blade_arc_close_00
       100        fts_blade_arc_close_100
       down       fts_shutter_down
       state.off  li_wht_off
       state.on   li_wht_on
       state.undefined li_wht_on
       up         fts_shutter_up
Attributes:
   DbLogExclude .*
   commands   {'state' => 'trigger ntfy_rg $DEVICE $READING',  'up' => 'set $DEVICE off',  'down' => 'set $DEVICE on',  '00' => 'set $DEVICE off',  '100' => 'set $DEVICE on'}
   group      Visualisierung
   nameStyle  {($READING eq "Beleuchtung" ||$READING eq "Jalousie" )?'style="font-size:20px;text-align:center;color:RoyalBlue"'  :'style="font-size:16px"'}
   noheading  1
   nolinks    1
   nonames    1
   room       1.2.160:Montageleiter
   valueColumns {'Beleuchtung' => 'colspan="2"',  'Jalousie' => 'colspan="5"'}
   valueIcon  {'state.on' => 'li_wht_on',  'state.undefined' => 'li_wht_on',  'state.off' => 'li_wht_off', 'up' => 'fts_shutter_up', 'down' => 'fts_shutter_down', '00' => 'fts_blade_arc_close_00', '100' => 'fts_blade_arc_close_100' }
   valueStyle style="font-size:16px"

War doch gar nicht so schlimm wie gedacht ;)

Grüße
Igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

justme1968

die buttons würde ich vermutlich lösen in dem ich mir im command mapping für up und down über ein lookup das device besorgen würde das zur zeile gehört.

wenn du das in eine eigene sub steckst kannst du die auch für den alias wieder verwenden.

die readingsGroup würde dann etwas so aussehen:

define rg_12160_1 readingsGroup <Beleuchtung>,<Jalousie> EIB_110(6|4):?alias,state,?alias@{DeviceOf($DEVICE)},!up,!down,!00,!100 EIB_200(2|3|4):<>,<>,?alias,!up,!down,!00,!100
attr rg_12160_1 {'state' => 'trigger ntfy_rg $DEVICE $READING',  'up' => 'set DeviceOf($DEVICE) off',  'down' => 'set DeviceOf2($DEVICE) on',  '00' => 'set DeviceOf2($DEVICE) off',  '100' => 'set DeviceOf2($DEVICE) on'}


und etwas in der art:
my %device_mapping = ( 'EIB_1106' => 'EIB_2000', 'EIB_1104' => 'EIB_2001' );
my %device_mapping2 = ( 'EIB_1106' => 'EIB_2005', 'EIB_1104' => 'EIB_2006',  'EIB_2002' => 'EIB_2007', ...);
sub DeviceOf($){
my ($DEVICE) = @_;
return $device_mapping{$DEVICE};
sub DeviceOf2($){
my ($DEVICE) = @_;
return $device_mapping2{$DEVICE};


d.h. die zuordnung der devices die zusammen gehören wird ein mal in 99_myUtils gemacht und in der readingsGroup immer wieder verwendet. wenn sich etwas ändert ist nur eine stelle zu ändern.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Simon74

Hätte gerne eine Übersicht im Floorplan für die Homematic Fensterkontakte. (Aliasname und Icon für Offen oder geschlossen)
Wie kann nach Attribut subType -> threeStateSensor filtern ?
So gehts nicht:
.*:?subType=threeStateSensor

justme1968

#939
readingsGroup kann zur zeit nur auf internals filtern. nicht auf attribute.

du kannst aber über ein passendes ValueFormat dann weiter filtern.

also readingsGroup auf TYPE=CUL_HM:state,?subType

und dann für valueFormat undef zurück liefern wenn der subType ne "threeStateSensor" ist und "&nbsp" sonst.

das icon beikommst du über valueIcon %devStateIcon

gruß
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Simon74

Danke, funktioniert bis auf die Filterfunktion, wenn ich das richtig verstanden habe müsste sich valueFormat wie folgt aussehen:
{ return undef if ( $VALUE eq ReadingsVal("subType","threeStateSensor","") ); return "&nbsp";}
Bekomme dann jedoch trotzdem alle Devices.

justme1968

#941
{ return undef if ( $READING eq "subType" && $VALUE ne "threeStateSensor" ); return $VALUE}

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Simon74

Auch mit diesm ValueFormat bekomme ich seltsamerweise alle Devices

justme1968

lass dir mal mit { return ">$READING< >$VALUE<"; } in die readingsGroup schreiben welche werte tatsächlich da sind.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

#944
mir ist übrigens noch eine vereinfachung eingefallen:

- definiere die readingGroup nur auf state (also ohne subtype)

- valueFormat etwas in der art:
{ return undef if ( AttrVal( $DEVICE", "subType","") ne "threeStateSensor" ); return $VALUE;}

dann musst du dich nicht um die zusätzliche spalte für das subtype attribut kümmern.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968