Neues Modul readingsGroup

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

Vorheriges Thema - Nächstes Thema

Simon74

#945
So funktioniert die ReadingsGroup der Homematic Fensterkontakte:

define FensterRG readingsGroup TYPE=CUL_HM:state
attr FensterRG nameStyle 1
attr FensterRG noheading 1
attr FensterRG notime 1
attr FensterRG mapping %ALIAS:
attr FensterRG valueFormat { return $VALUE if ( AttrVal( $DEVICE, "subType","") eq "threeStateSensor" );; return undef }
attr FensterRG valueIcon %devStateIcon



fruit

#946
I believe I need something similar to the above for a valueStyle string but I can't get my head around it so any help welcome

attr rg_Heating valueStyle { if ($VALUE eq "00"){'style="visibility:hidden"'}elsif($READING eq "valveposition" && $VALUE == 0){ 'style="color:blue"' }elsif( $READING eq "valveposition" && $VALUE >= 0 ){ 'style="color:red;;;;;;;;font-weight:bold"' }elsif( $READING eq "temperature" && $VALUE > 23 ){ 'style="color:red"' }else{ 'style="color:black"' } }

Feel free to follow up in German if you prefer

kvo1

Hallo Simon74

Außer Du hast noch einen 3-Kanal-Funk-Schließerkontakt-Interface HM-SCI-3-FM ,
der hat den gleichen SubTyps .... müsste man noch filtern !

kvo1
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

kvo1

#948
wenn das "model" gleich ist ...dann so

define FensterRG readingsGroup TYPE=CUL_HM:state
attr FensterRG nameStyle 1
attr FensterRG alias Fenster- / Türstatus
attr FensterRG notime 1
attr FensterRG mapping %ALIAS:
attr FensterRG valueFormat { return $VALUE if ( AttrVal( $DEVICE, "model","") eq "HM-SEC-SC-2" );; return undef }
attr FensterRG valueIcon %devStateIcon



kvo1
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Tommy82

Hi, ich habe heute diesen Fehler im Log:
2014.12.10 19:45:32.880 1: PERL WARNING: Argument "-" isn't numeric in sprintf at ./FHEM/33_readingsGroup.pm line 651.
In 651 steht:
Zitat$v = sprintf( $value_format, $v );

Was ist falsch?


Andere frage, wie kann ich das aktuelle Datum und die aktuelle Zeit in einer readingsGroup ausgeben?

Danke
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

justme1968

#950
du hast vermutlich irgendein valueFormat definiert das ein numerisches reading erwartet und der wert ist aber nur ein - .

was möchtest du mit
der zeit genau tun? wenn du willst das sie sich live aktualisiert muss die zeit in einem reading stehen und dort aktualisiert werden.

wenn es die beim aufruf aktuelle zeit sein soll reicht ein ...,<{TimeNow()}>,...

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

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

Simon74

#951
Ich habe nach Anleitung vom Wiki die ReadingsGroup für Enigma nachgebaut.
Was hier manchmal stört sind die überlangen "Aktuell" (currentTitle), und "Nächstes" (eventname_next).
Kann man per Readingsgroup die Strings schneiden ?

Schön wäre eine max. Länge, und wenn davor ein " - " kommt, dann dort schon abschneiden



justme1968

das kannst du über ein passendes valueFomat doch einfach selber machen.

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

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

Simon74

Danke für valueFormat Hinweis, habe nun die Sub meinen Bedürfnissen angepasst.

Zunächst auf 70 Zeichen begrenzen, und dann noch von rechts nach " - " suchen und dort schneiden, scheint zu funktionieren

###############################################################################
# Receiver Status (ReadingsGroup)
###############################################################################
sub wzReceiverRGvalueFormat($$$)
{
  my ($DEVICE,$READING,$VALUE) = @_;

  if($READING eq 'eventtitle') {
    my $STRING = substr($VALUE, 0, 70);
    #return $STRING;
    return substr($STRING,0,rindex($STRING,' - ')+1);
  } elsif( $READING eq 'eventtitle_next') {
    my $STRING = substr($VALUE, 0, 70);
    #return $STRING;
    return substr($STRING,0,rindex($STRING,' - ')+1);
  } elsif( $READING eq 'volume' ) {
    if( ReadingsVal($DEVICE, "mute", "") eq "on") {
      return "mute";
    } else {
      return "%i %%";
    }
  }
}

Avatar

Seit dem letzten update habe ich immer folgende Fehlermeldung beim Start von FHEM im Log:
"Global symbol $READING requires ....."

Grundsätzlich läuft alles dann. Hat dies mit dem ValueFormat zu tun, hat sich da etwas geändert?

Ein ValueFormat definition ist zum bsp:
{ if ( $READING =~ m/B./ ) { return substr($VALUE,6,10)." um ".substr($VALUE,0,5);;}}

Grüsse
Eric

justme1968

kommt die meldung nur beim start?

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

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

Avatar

Ja die kommt nur bei start. und bei jedem definierten Reading.

Grüsse
Eric

justme1968

ich denke ich weiß woran es liegt. bitte versucht mal das ganze valueStyle attribut in einfache ' zu stecken. also so: '{...}'
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Tommy82

#958
Zitat von: justme1968 am 10 Dezember 2014, 22:39:23
du hast vermutlich irgendein valueFormat definiert das ein numerisches reading erwartet und der wert ist aber nur ein - .

was möchtest du mit
der zeit genau tun? wenn du willst das sie sich live aktualisiert muss die zeit in einem reading stehen und dort aktualisiert werden.

wenn es die beim aufruf aktuelle zeit sein soll reicht ein ...,<{TimeNow()}>,...

gruß
  andre

Hi Andre,
ich habe folgendes valueFormat
{ VU_UltimoRGvalueFormat($DEVICE,$READING,$VALUE);; }
Ist da was falsch?

Ich möchte das Datum und die Uhrzeit gerne auf einem FP darstellen. Sie soll sich live aktualisieren. Wie kann ich das machen?

Danke

Bekomme im Log auch noch folgende Fehler:
2014.12.14 01:12:32.852 3: VU_UltimoRG: Global symbol "$DEVICE" requires explicit package name at (eval 44) line 1, <$fh> line 1374.
Global symbol "$READING" requires explicit package name at (eval 44) line 1, <$fh> line 1374.
Global symbol "$VALUE" requires explicit package name at (eval 44) line 1, <$fh> line 1374.

2014.12.14 01:12:32.854 3: VU_UltimoRG: Global symbol "$READING" requires explicit package name at (eval 45) line 1, <$fh> line 1375.
Global symbol "$VALUE" requires explicit package name at (eval 45) line 1, <$fh> line 1375.
Global symbol "$READING" requires explicit package name at (eval 45) line 1, <$fh> line 1375.
Global symbol "$VALUE" requires explicit package name at (eval 45) line 1, <$fh> line 1375.
Global symbol "$READING" requires explicit package name at (eval 45) line 1, <$fh> line 1375.
Global symbol "$DEVICE" requires explicit package name at (eval 45) line 1, <$fh> line 1375.


die rd sieht so aus:
Internals:
   DEF        VU_Ultimo:,<Aktuell>,eventtitle,<Rest>,eventremaining_hr,<Dauer>,eventduration_hr VU_Ultimo:<Beschreibung>,eventdescription VU_Ultimo:,<Nächste>,eventtitle_next,<Start>,eventstart_next_hr,<Dauer>,eventduration_next_hr VU_Ultimo:,<HDD Kapazität>,hdd1_capacity,<Frei>,VU_Ultimo:hdd1_free VU_Ultimo:,<Lautstärke>,volume,<HDD>,hdd1_capacity,<Frei>,hdd1_free
   NAME       VU_UltimoRG
   NR         260
   NTFY_ORDER 50-VU_UltimoRG
   STATE      Initialized
   TYPE       readingsGroup
   mayBeVisible 1
   Content:
     VU_Ultimo  1
   Content2:
   DEVICES:
     ARRAY(0x217eee8)
     ARRAY(0x206c0a8)
     ARRAY(0x206c090)
     ARRAY(0x2069e00)
     ARRAY(0x217f0e0)
   Fhem:
     lastDefChange 3
     last_update 1418515957.99301
   Helper:
     DEF
     mapping    &nbsp
     valueFormat { VU_UltimoRGvalueFormat($DEVICE,$READING,$VALUE);; }
     valueStyle { if($READING eq "hdd1_free" && $VALUE < 200){ 'style="color:red"' }elsif( $READING eq "hdd1_free" && $VALUE < 500 ){ 'style="color:orange"' }elsif( $READING eq "volume" && ReadingsVal($DEVICE, "mute", "") eq "on" ){ 'style="color:red"' }else{ 'style="color:green"' } }
     Valuecolumns:
       eventdescription colspan="4"
Attributes:
   fp_Reciever 317,167,0,
   mapping    &nbsp
   noheading  1
   nostate    1
   notime     1
   valueColumns { eventdescription => 'colspan="4"' }
   valueFormat { VU_UltimoRGvalueFormat($DEVICE,$READING,$VALUE);; }
   valueStyle { if($READING eq "hdd1_free" && $VALUE < 200){ 'style="color:red"' }elsif( $READING eq "hdd1_free" && $VALUE < 500 ){ 'style="color:orange"' }elsif( $READING eq "volume" && ReadingsVal($DEVICE, "mute", "") eq "on" ){ 'style="col
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

fhainz

Ich hab das Problem auch, bei jeder ReadingsGroup mit valueStyle oder valueFormat.

2014.12.14 10:31:45.236 3: rg_allgTemperaturen: Global symbol "$DEVICE" requires explicit package name at (eval 119) line 1, <$fh> line 1863.
Global symbol "$READING" requires explicit package name at (eval 119) line 1, <$fh> line 1863.
Global symbol "$VALUE" requires explicit package name at (eval 119) line 1, <$fh> line 1863.

2014.12.14 10:31:45.236 3: rg_allgTemperaturen: Global symbol "$DEVICE" requires explicit package name at (eval 120) line 1, <$fh> line 1864.
Global symbol "$READING" requires explicit package name at (eval 120) line 1, <$fh> line 1864.
Global symbol "$VALUE" requires explicit package name at (eval 120) line 1, <$fh> line 1864.


Zitat von: justme1968 am 13 Dezember 2014, 12:34:08
ich denke ich weiß woran es liegt. bitte versucht mal das ganze valueStyle attribut in einfache ' zu stecken. also so: '{...}'

Mit valueStyle '{...}'  verschwindet die Meldung das Styling ist aber auch weg. Zusätzlich muss ich auch valueFormat in '{...}' stecken damit auch die 2. Meldung weg ist.

Grüße