Neues Modul readingsGroup

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

Vorheriges Thema - Nächstes Thema

justme1968

@Pjg: ich kann das problem nicht reproduzieren. bitte zeig mir mal ein list von Bahnhofstrasse und schau mal ob es mit einem anderen style auch passiert.

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

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

Roaster

Zitat von: justme1968 am 27 September 2014, 12:51:27
klar geht das einfacher. nicht die hash version verwenden sondern per perl if/elsif schauen ob es incomming, outgoing, ... ist und den icon namen zurück liefern.
Andre, du kannst mich jetzt schlagen oder vielleicht auch einfach weiterhelfen  8)

Ich habe das nun auf verschiedene Art und Weise probiert, aber es klappt bei mir nicht. Ich habe grundsätzlich ein Verständnisproblem, wenn ich mir die verschiedenen Möglichkeiten Coding direkt in den Attributen der readingsGroup einzufügen. Wenn ich mir den Wikieintrag so betrachte, dann gibt es für mich (als Laie) zig verschieden Mlglichkeit hier was eigenes einzubauen - zumindest hat es für mich den Anschein.

Ich habe so etwas in der Art probiert:
attr Anrufliste2 valueIcon { if ( $VALUE =~ "incoming" ) ? "phone_ring_in@green" }
und weiteres Conding, das ich versucht habe aus anderen gefundenen Schnipseln zusammen zu bauen.

Im Wiki finde ich beispielsweise so etwas:
attr rg valueFormat {($VALUE eq '1')?"fts_window_roof":"fts_window_roof_open_2"}
Dies betrifft zwar das Format, aber ich dachte, so ähnlich kann ich auch bei valueIcon vorgehen. Ich ging davon aus, dass $VALUE den Wert der jeweiligen Spalte und Zeile enthält und in meinem Fall incoming, outgoing und so weiter liefert, das ich dann durch einnen Symbolnamen ersetzen kann - funktioniert aber nicht.

Dann habe ich, auch aus dem Wiki, noch folgendes genommen
attr culRSSI valueStyle {return undef if($READING =~ m/TIME/); ($VALUE <= -85)?'style="color:red"':($VALUE <= -80)?'style="color:yellow"':undef}
Natürlich auch wieder auf das Attribut valueIcon umgemünzt, aber das gelang mmir auch wieder nicht so richtig.

Ich denke ich habe das Grundprinzip der readingsGroup und von $VALUE und $READING nich nicht richtig verstanden und wie man Perl-Code an entsprechender Stelle einbauen kann.

Vielleicht kann man den Wiki-Eintrag für eigenen Perl-Code bei valueIcon bei Gelegenheit ergänzen?

Gruß,
Michael

justme1968

#662
in etwa so:attr Anrufliste2 valueIcon { if ( $VALUE =~ "incoming_noconnect" ) { return "phone_ring_in@red";}; if ( $VALUE =~ "incoming" ) { return "phone_ring_in@green";} }

aber ich würde empfehlen es so zu machen:
eine sub in 99_myUtils.pm das das icon liefert:sub myPhoneIcon($)
{
  my($value) = @_;
  Log 3, $value;

  my $icon = "phone_ring_in";
  $icon = "phone_ring_out" if( $value =~ /outgoing/ );

  my $color = "green";
  $color = "red" if( $value =~ m/noconnect/ );

  Log 3, $icon ."@". $color;
  return $icon ."@". $color;
}


und in der readingsGroup nur die sub aufrufen:attr Anrufliste2 valueIcon {myPhoneIcon($VALUE);}

die Log... zeilen kannst du dann raus schmeißen wenn es so geht wie du willst.

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

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

dancatt

Hallo,
der letzte Post passt ja fast zu meinem Problem. Da mir die Definition von "valueIcon" zu viel wird, wollte ich dies auch in eine sub auslagern. Aber irgendwie funktioniert das nicht. Es wird leider nur der Wert angezeigt.


sub readingGroupValueIcon($$$) {
  my($DEVICE,$READING,$VALUE) = @_;
  Log 3, "readingGroupValueIcon() Device: '".$DEVICE."' READING: '".$READING."' VALUE: '".$VALUE."'";
 
  if($READING eq "controlMode") {
    return 'sani_heating_automatic@green'  if $VALUE eq "auto";
    return 'sani_heating_automatic@orange' if $VALUE eq "set_auto";
    return 'sani_heating_manual@red'       if $VALUE eq "manual";
    return 'sani_heating_manual@orange'    if $VALUE eq "set_manual";
  }
}


attr rg_Heizungswerte valueIcon { readingGroupValueIcon($DEVICE,$READING,$VALUE);; }
oder
attr rg_Heizungswerte valueIcon { readingGroupValueIcon($DEVICE,$READING,$VALUE); }

In die sub gelangt man aber erst garnicht.

Hat jemand eine Ahnung?`

Vielen Dank.
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

justme1968

nimm mal  bitte die version von hier:http://forum.fhem.de/index.php/topic,27218.msg203485.html#msg203485. wenn das noch nicht geht schreib es mal bitte so:attr rg_Heizungswerte valueIcon {"{ readingGroupValueIcon($DEVICE,$READING,$VALUE); }"}

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

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

dancatt

Super. Die neue Version funktioniert. kommt die mit dem nächsten Update?
Danke noch für die schnelle Antwort.
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

dancatt

Gibt es eine Möglichkeit eines "entweder oder" für meinen Fall bei "batteryLevel|battery"?
Dann könnte man den doppelten Eintrag von "Wohnzimmer Wohnzimmer_Wandthermostat" entfernen. Dieses Device hat nämlich das Reading battery UND batteryLevel.


define rg_Batteriewerte readingsGroup \bWohnzimmer_Heizung\b|\bWohnzimmer_Wandthermostat\b|\bKinderzimmer_Heizung\b|\bKinderzimmer_Fenster\b:batteryLevel|battery
attr rg_Batteriewerte nameStyle style="font-weight:bold"
attr rg_Batteriewerte room Status
attr rg_Batteriewerte alias Batteriewerte
attr rg_Batteriewerte mapping %ROOM %ALIAS
attr rg_Batteriewerte sortDevices 1
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

justme1968

das geht nicht direkt. aber du kannst dir ein valueFormat bauen das bei den zeilen die du ignorieren willst ein undef zurück gibt. zum beispiel in dem du prüfst ob das device beide readings hat.

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

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

Pjg

Es liegt tatsächlich am Style.
Ich verwende ios7, da kommt die Leerzeile. Bei den anderen nicht.
Und nun?
Wo muss ich da Eingreifen um die weg zu bekommen?
BananaPI, CUL 433, Somfy RTS, Hue LWL001, Hue LWB004, HM-CFG-LAN, HM-LC-SW2-FM

Pjg

Jetzt aber:
wenn ich die Zeit raus nehme (notime), dann bekomme ich auch bei ios7 keine Leerzeile mehr.
Es gibt also eine unterschiedliche Anzahl von Zeichen pro Zeile?
BananaPI, CUL 433, Somfy RTS, Hue LWL001, Hue LWB004, HM-CFG-LAN, HM-LC-SW2-FM

cotecmania

Hallo,

ich versuche jetzt schon eine Weile mit dem Wiki ein festes Icon vorne in jede Zeile meiner ReadingsGroup zu bekommen, schaffe es aber nicht.
Es handelt sich um Funksteckdosen von ELRO (IT) die nur das Reading "state" haben.

Definition (Alias und state erscheint) :
define RG_Steckdosen readingsGroup TYPE=IT:state
attr RG_Steckdosen mapping %ALIAS
attr RG_Steckdosen notime 1

Bei diesem Ansatz erscheint zwar das Icon aber kein Alias mehr :
define RG_Steckdosen readingsGroup TYPE=IT:<%ge_wht_steckdose>,state

Das geht auch nicht :
attr RG_Steckdosen mapping <%ge_wht_steckdose> %ALIAS

Hat jemand eine Lösung hierzu ?

Danke im Voraus
FHEM auf RaspberryPI B (buster)
2xCUL868 für MAX/Slow_RF, HM-LAN, JeeLink
MAX!/HM-Thermostate, FS20/HM-Rolladenschalter, FS20-EM, LevelJet-Ölstandsmessung, PCA301, IT, KM271, IPCAM, FireTAB10 FTUI

justme1968

#671
das geht zum beispiel so:define RG_Steckdosen readingsGroup TYPE=IT:<%ge_wht_steckdose>,<{AttrVal($DEVICE,"alias",$DEVICE)}>,state

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

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

cotecmania

FHEM auf RaspberryPI B (buster)
2xCUL868 für MAX/Slow_RF, HM-LAN, JeeLink
MAX!/HM-Thermostate, FS20/HM-Rolladenschalter, FS20-EM, LevelJet-Ölstandsmessung, PCA301, IT, KM271, IPCAM, FireTAB10 FTUI

dancatt

Zitat von: justme1968 am 29 September 2014, 07:36:06
das geht nicht direkt. aber du kannst dir ein valueFormat bauen das bei den zeilen die du ignorieren willst ein undef zurück gibt. zum beispiel in dem du prüfst ob das device beide readings hat.

gruß
  andre

Das habe ich gemacht. Sollte dann das Modul diese Zeile automatisch ignorieren oder muss ich da noch was machen?
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

justme1968

undef ohne anführungszeichen.

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

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