Neues Modul readingsGroup

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

Vorheriges Thema - Nächstes Thema

justme1968

#1350
@Elektrolurch: mir ging es bei dem beispiel auch eher darum das ich was zum testen habe. die eine zeile einfügen ist meiner meinung nach nur die halbe lösung. da das set kommando dann zwar keine fehler mehr liefert aber auch nichts tut. meine idee war ein setList wie beim dummy nachzurüsten so das die readingsGroup mit dem set auch etwas vernünftiges macht. also z.b. den status intern zu setzen so das er bei einem refresh auch wieder da ist.

@privat58: das temperature muss bei dir vermutlich eher TempSensor4 heissen. es ist einfach der name des readings das angezeigt wird. so in etwa wie du es geschrieben hat sollte es funktionieren. aber du hat bei den verschachtelten anführungszeichen noch ein problem. versuch es mal so:attr Bienen1 valueStyle { TempSensor4 => '{ReadingsVal($DEVICE,"BatterieSensor4","0")?"style=\"color:black\"":"style=\"color:red\""}' }testen kannst du das ganz einfach in dem du mit setreading das batterie reading von hand auf einen anderen wert setzt.

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

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

privat58

Danke Andre,
ein attr Bienen1 valueStyle { TempSensor4 => '{ReadingsVal($DEVICE,"BatterieSensor4","0")?"style=\"color:red\"":"style=\"color:black\""}' }
führte zum Erfolg.
Steffen

igami

Hallo andre,

ich benötige mal deine Hilfe bei einem Reading der Form <{perl}[@readings]>. In der Commandref steht weiterhin
Zitatif readings is given the perl expression will be reevaluated during longpoll updates.
.
Bedeutet dies, dass die perl expression nur aktualisiert wird, wenn das reading aktualisiert wird, ich die perl expression jedoch nicht über valueColumns oder so ansprechen kann?

Hier der konkrete Fall:

DEF
.*_Clima:<>,<{rg($DEVICE,'alias')}@alias>

valueColumns
{'alias' => 'colspan="2"'}

sub rg($$){
  my $device = shift;
  my $function = shift;
 
  my $room = AttrVal($device, 'room', 'unsorted');
 
  switch ($function) {
    case 'alias' {
      return (AttrVal($device, 'alias', $device));
    }
  }
}


Der Alias wird korrekt wiedergegeben, sofern vorhanden, nur geht er nicht über zwei Spalten.

Wie kann ich das beheben?

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 'alte' <{perl}[@readings]> variante hat einige einschränkungen was die formatierung angeht.

wenn ich deine sub richtig verstehe willst du einfach nur den alias ausgeben? warum zeigst du ihn nicht über ?alias an ?

alias ist sowieso kein reading und würde niemals per longpoll aktualisiert.

wenn du eigenen code einbauen möchtest ist es am besten du nimmst die neue !reading variante damit kannst du ein 'pseudo' reading anzeigen das es im device nicht geben muss. also z.b. !alias. das kannst du dann mit valueFormat formatieren und ich sonst alle anderen value attribute verwenden. auch valueColumns.

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

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

igami

Zitat von: justme1968 am 11 Mai 2015, 19:41:18
wenn ich deine sub richtig verstehe willst du einfach nur den alias ausgeben? warum zeigst du ihn nicht über ?alias an ?

Wenn alias nicht gesetzt ist gibt die sub den device Namen zurück.
Habe es nun mit dem pseudoreading gelöst

DEF
.*_Clima:<>,!alias

valueFormat
{'alias' => '{rg($DEVICE,"alias")}'}


Vielen Dank für die schnelle Hilfe.

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

ein {'alias' => '$ALIAS'} sollte schon reichen.

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

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

igami

Zitat von: justme1968 am 11 Mai 2015, 19:57:23
ein {'alias' => '$ALIAS'} sollte schon reichen.

Dann wird nur $ALIAS angezeigt, wenn es keinen alias gibt.

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

du hast recht. die version bei der das geht ist noch nicht eingecheckt...

sorry für das durcheinander.

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

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

igami

Nun habe ich doch noch einen kleinen Knackpunkt bei dem ich nicht weiter komme:

valueFormat
{'alias' => '<a href=/fhem?detail=$DEVICE>{rg($DEVICE,"alias")}</a>'


Ich möchte ja auch gerne auf das "reading" klicken können um zu dem device zu kommen. Wie muss ich denn hier vorgehen um nun als Linknamen den Perlrückgabewert zu erhalten?

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

etwas in der art:valueFormat {'alias' => '{"<a href=/fhem?detail=$DEVICE>". rg($DEVICE,"alias") ."</a>"}' }

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

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

Tommy82

Zitat von: justme1968 am 19 April 2015, 10:42:50
@Tommy82: du hast einen wert der nicht als zahl erkannt wird. du musst valueFormat entsprechend wählen das dieser fall getrennt berückichtigt wird.

gruss
  andre

Kannst du mir einen Tip wie ich "einfach" rausfinden kann bei welcher meiner rd's das Problem auftitt?

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

gloob

Gibt es eine Möglichkeit bei einer readingsGroup die Spaltenbreite vorzugeben? Es sieht ein wenig unschön aus wenn die erste Spalte mit dem Devicenamen immer unterschiedlich breit ist.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Elektrolurch

Hallo Andre,

habe noch eine Kleinigkeit gefunden:

Wenn man bspw

define myrg readingsGroup Thermostat:desired-temp
attr myrg commands {'desired-temp' => 'desired-temp:'}
attr myrg valueSuffix {'desired-temp' => '{($VALUE=~m/on|off/)?"":" °C"}'}

funktioniert das nicht.

Möchte bei Temperaturangaben hinter dem Auswahlmenü " °C" stehen haben, bei on oder off nichts.

Grund: $VALUE enthält leider nicht desired-temp, sondern den HTML-Ausdruck für das Menü.
Und da ist die gesamte Menüliste mit allen Werten drin, also auch on und off, so dass der Ausdruck immer "wwahr" ist.

Gruß

Elektrolurch
configDB und Windows befreite Zone!

Motivierte linke Hände

Ich muss leider diese Frage aus dem März nochmal hochholen, weil ich das wirklich nicht hinbekomme:

Zitat von: justme1968 am 06 März 2015, 11:54:22
@Motivierte linke Hände: in $ROW hast du die nummer der aktuellen zeile. wenn du dein alles ok ganz ans ende stellst und davor alle zeilen leer sind ist $ROW == 1 (oder 2 wenn du überschriften hast). wenn nicht wurde vorher eine zeile angezeigt und du kannst das alles ok weg lassen.

Im valueFormat steht aktuell

{ rg_Meldungen_valueFormat($DEVICE,$READING,$VALUE,$ROW); }

und rg_Meldungen_valueFormat sieht so aus:

sub rg_Meldungen_valueFormat($$$$) {
  my ($DEVICE,$READING,$VALUE,$ROW) = @_;
  Log 1, ("rg_Meldungen_valueFormat: Gerät $DEVICE, Value >$VALUE<, Readings >$READING<, Row >$ROW<");
  [...]
}


Wenn ich in diesem Sub nur die Inhalte der übergebenen Variablen logge, ist $ROW immer leer:

2015.06.14 10:40:59 1: rg_Meldungen_valueFormat: Gerät Fstr_Buero, Value >open<, Readings >state<, Row ><
2015.06.14 10:40:59 1: rg_Meldungen_valueFormat: Gerät Fstr_Gaestebad, Value >open<, Readings >state<, Row ><
2015.06.14 10:40:59 1: rg_Meldungen_valueFormat: Gerät Fstr_Garagentor, Value >closed<, Readings >state<, Row ><


@Andre: Kann ich $ROW nicht in valueFormat verwenden? Wenn nein, wie hattest Du Deinen Tipp oben gemeint, wo sollte ich das einbauen?

Danke für's Anschieben,
Christian
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

Elektrolurch

Hallo Andre,

die readingsGroup unterstützen ja auch die Anzeige von Attributen:

define attr_rg readingsGroup  fritzbox:?verbose

Was jetzt schön wäre, wenn man Attribute auch verändern könnte:

attr attr_rg commands {'verbose' => 'verbose:'}

und aus der attrlist des Moduls die Eingabe abgeleitet würde, ähnlich wie beim set-Befehl.

Hier also: verbose:0,1,2,3,4
eine Auswahlliste

Ich würde dies für nützlich und interessant halten.

Elektrolurch

P.S.:
Wird zu #1362 vom: 09 Juni 2015,  eine Anpassung geben oder muss ich einen Work-around basteln :-) ?

configDB und Windows befreite Zone!