Neues Modul readingsGroup

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

Vorheriges Thema - Nächstes Thema

justme1968

das sind keine readings sondern internals an die du nicht direkt ran kommst und die sich ändern wenn am DOIF modul intern etwas geändert wird.

du musst auch bei jedem neuen timer den du dem einen bestehendesn DOIF hinzufügst wieder deine readingsGroup anpassen weil ein neues reading für den timer hinzu kommt wieder mit einem neuen namen und du musst wieder die zuordnung machen wischen reading und benennung. du hast also mindestens drei stellen mit verteilter information die du immer von hand synchron halten musst.

ich glaube wirklich das du dir einen gefallen tust wenn du nicht alle timer ins gleiche device packst sondern pro timer bzw. eigenständiger aufgabe einen eigenen timer verwendest. egal ob das DOIF oder WeekdayTimer ist. das macht es auch für dich langfristig viel einfachere wartbar. du kannst z.b. jeden timer getrennt per disable deaktivieren wenn manche nur im winter gebraucht werden. du kannst dann z.b. den alias oder das comment attribut jedes timers verwenden um z.b. den titel unter der er in der readingsGroup angezeigt werden soll oder andere individuelle zusatz information abzulegen. das alles (und noch mehr) geht nicht wenn du alles in ein einziges device mit einer riesen schlage von else zweigen verpackst.

es ist immer einfacher zuerst sauber zu trennen (hier nach zweck des timers) und dann automatisch zusammen zu fassen als erst mal alles in einen topf zu schmeißen (ein timer mit dutzenden von bedingungen die eigentlich garnierst miteinander zu tun haben) und dann zu versuchen das automatisch wieder zu trennen.

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

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

moonsorrox

Ok also heute Abend wird es jede Menge zu basteln geben... die Timer die noch dazu kommen die kommen in ein eigenes Devices. Das momentane device hört ja auf den Namen di_Aussenlampe, dass nächste dann di_Aussenlampe_zufall, dass hatte ich schon mal so getrennt... Das meintest du sicher..?
Habe nur noch keine DEF die mir zusagt, soll ja ein Zufallsschalter werden, aber ich denke es wird der RandomTimer, der gefällt mir am besten...!
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

dancatt

Zitat von: justme1968 am 25 November 2014, 23:22:47
@dancatt: das sollte eigentlich wie bisher gehen. ich habe es mit ein paar einfachen readingsGroups nachgestellt und hatte keine probleme. kannst du bitte auch mal etwas einfaches definieren. z.b. nur define rg readingsGroup <abc>,<%on>

Ich habe das Problem gefunden.
Die Ermittlung des ValueFormates habe in in die Utils ausgelagert. Als Default wird immer $VALUE zurückgeliefert. Dies könnte auch null oder sonst was sein. Wenn ich dies entferne dann funzt alles wieder. Dieses Verhalten hatte ich zumindest mal nicht vor dem Update.


sub rgValueFormat($$$)
{
  my($DEVICE,$READING,$VALUE) = @_;
  my $TYPE = getType($DEVICE);
  Log 3, "rgValueFormat() TYPE: '".$TYPE."' DEVICE: '".$DEVICE."' READING: '".$READING."' VALUE: '".$VALUE."'";
 
  if($TYPE eq "CUL_HM") {
    return "%0.1f &deg;C"   if($READING eq "desired-temp");
 
    return "%0.1f &deg;C"   if($READING eq "measured-temp");

    return "%0.1f %%"       if($READING eq "humidity");
 
    return "%0.1f %%"       if ($READING eq "ValvePosition");

    # Falls beide Readings existieren und der aktuelle Reading = "battery", dann diesen ignorieren
    return undef            if( $READING eq "battery" && ReadingsVal($DEVICE,"batteryLevel", undef) );
  }
  elsif ($TYPE eq "SYSMON") {
    return "%0.1f &deg;C"   if($READING eq "cpu_temp_avg");

    return "%0.1f MHz"      if($READING eq "cpu1_freq");
  }
  elsif ($TYPE eq "holiday") {
    if ($DEVICE eq "holiday_Abfall") {

    }
  }
  elsif ($TYPE eq "PRESENCE") {
 
  }
 
  return $VALUE;
}
Cubietruck: FHEM-Server 6.0

Homematic: HM-USB-CFG2, HM-CFG-LAN, HM-LC-SW1-FM, HM-LC-Sw1-Pl-DN-R1, HM-CC-RT-DN, HM-TC-IT-WM-W-EU, HM-SEC-SC-2, HM-SEC-SD, HM-PB-6-WM55

MarcelK

Da das Posting im Update Thread wohl untergegangen ist hier nochmal meine Anfrage:

Am Ende von readingsGroup_2html kommen folgende zwei Zeilen:

  $ret .= sprintf("<tr class=\"%s\">", ($row&1)?"odd5":"even");
  $ret .= "<td colspan=\"99\"><div style=\"color:#ff8888;text-align:center\">updates disabled</div></td></tr>" if( $disable > 0 );

Wenn ich das richtig verstehe öffnet die erste eine neue Tabellen-Zeile die eventuell das "Updates disabled" aufnehmen soll. Dies ist aber nicht mit einem if ( $disable > 0) abgesichert, ist das ein Bug? In den meisten Themes fällt das nicht auf, aber im IOS6 Theme erzeugt das eine deutliche Leerzeile am Ende.

Grüße, Marcel

justme1968

@dancatt: hab den fehler gefunden. ist ab morgen behoben.

@MarcelK: ist auch behoben.

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

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

MarcelK


Bkel

Vielleicht kann mir jemand helfen, mit der Kanone readingsgroup einen Spatzen zu erlegen ?

Ich kontrolliere über eine PRESENCE-Definition einen Server, der über powercmd gestartet und heruntergefahren werden kann. Funktioniert auch und mit webcmd wird es auch kilckbar. Jetzt hätte ich gerne statt "power on" und "power off" klickbare icons. Meine "Recherchen" haben gezeigt, dass das mit webcmd nicht geht und zu readingsGroup geführt.

define p_sv2 PRESENCE lan-ping 192.168.2.20
attr p_sv2 event-on-change-reading 1
attr p_sv2 powerCmd "/opt/fhem/etc/sv2_control.sh %ARGUMENT"
attr p_sv2 room EDV
attr p_sv2 webCmd power on:power off

define server_status readingsGroup p_sv2:state,<%general_an>,<%general_aus>
attr server_status commands {'general_an' => 'set $DEVICE power on', 'general_aus' => 'set $DEVICE power off'}
attr server_status mapping {'p_sv2' => 'sv2 192.168.2.20'}
attr server_status notime 1
attr server_status room EDV
attr server_status valueIcon {'state.absent' => 'rc_RED', 'state.present' => 'rc_GREEN'}


Ich bekomme eine schöne Darstellung des Server-Status und der Icons. Mein wahrscheinllich naiver Versuch, diese mit den Befehlen zu koppeln, scheitert aber.

Hat jemand einen sonntäglichen Tipp für mich?

Gruß
Boris

igami

Zitat von: Bkel am 30 November 2014, 11:48:02
Hat jemand einen sonntäglichen Tipp für mich?
Meines wissens nach musst du den namen der rg vor den commands angeben, bin aber nicht ganz auf dem laufendem was die updates in letzter ZEit angeht.

attr server_status commands {'server_status.general_an' => 'set $DEVICE power on', 'server_status.general_aus' => 'set $DEVICE power off'}


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

#923
wenn du auf den wert eines readings mappen willst muss der name des readings davor stellen. bei den <%..> icons ist das der name der readingsGroup.

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

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

Bkel


Bkel

Vielleicht kann mir nochmal jemand helfen? Scheitere wahrscheinlich an PERL.

Gegeben sind 2x PRESENCE WLANst00 und WLANst01 und die dazugehörigen Schaltsteckdosen WLANsw00 und WLANsw01


define WLAN readingsGroup <%WLAN-Status>,<%it_wifi> WLAN..st:state,state@{$DEVICE=~s/st/sw/;;$DEVICE;;},<%general_an>,<%general_aus>
attr WLAN commands {'WLAN.general_an' => 'set {$DEVICE=~s/st/sw/;;$DEVICE;;} on','WLAN.general_aus' => 'set {s/st/sw/$DEVICE} off'}
attr WLAN mapping {'WLAN00st' => 'WLAN EG','WLAN01st' => 'WLAN OG'}
attr WLAN room EDV
attr WLAN valueIcon {'state.absent' => 'it_wifi@red','state.present' => 'it_wifi@green','state.on' => 'general_an@green','state.off' => 'general_aus@red'}


Die Anzeige der states von WLANst und WLANsw und der Icons für ein und aus funktioniert.
Jetzt würde ich gerne über das Attribut commands das abgeleitete Device schalten und scheitere daran.
Wahrscheinlich passt der einfach aus der Def. übernommene Ausdruck nicht.

justme1968

wenn du perl code im mapping hat muss es mit '{ anfangen und mit }' aufhören.

also etwas in der art: '{$DEVICE=~s/st/sw/;;"set $DEVICE on"}'

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

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

Tommy82

Hi,
ich habe seit heute im Log diesen Fehler
Zitat2014.12.02 12:48:07.235 1: PERL WARNING: Use of uninitialized value $htmlTxt in pattern match (m//) at ./FHEM/33_readingsGroup.pm line 715.
In Zelle 715 steht:
Zitatif( $htmlTxt =~ m/<td colspan='2'>(.*)<\/td>/s ) {

Was ist das Problem?

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

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

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

Elektrolurch

Hallo Andre,

war jetzt drei Wochen offline und habe gestern das Update der rg eingespielt. Leider scheint die Ergänzung, die ich vorgeschlagen habe, verlorengegangen zu sein:
Per valueFormat auch dann etwas auszugeben, wenn für das reading ein Attribut "commands" definiert ist.

Hintergrund: Hinter dem Menü (Temperatur) z.B. noch "Grad C" (die Werteinheit) in der gleichen Zelle auszugeben.

In diesem Fall enthält valueFormat für das reading eine Konstante.

Gruß


Elektrolurch
configDB und Windows befreite Zone!