Readingsgroup - Link zum Raum des Devices

Begonnen von ZeitlerW, 30 November 2017, 11:50:03

Vorheriges Thema - Nächstes Thema

ZeitlerW

Hallo zusammen,

ich habe mehrere Temperatursensoren in einer Readingsgroup.

Ich möchte nun an jeder Zeile einen Link einführen, der per Click den Raum öffnet, in dem das Device angelegt ist. Also etwa so:
Temperatursensoren readingsGroup <%control_building_empty>, <%temp_temperature>, <%batterie> Sensor_70B3D580.*:Temperatur,BatteryLevel,<http://fhem.local/fhem?room=%ROOM>

Kann mir jemand bei der Erstellung des Links helfen?

Vielen Dank
Wolfgang


ZeitlerW

Hallo zusammen,

das funktioniert mit einem festen Ziel und zwar über:
define temperatures readingsGroup Aussentemperatur:temperature,humidity,<%time_graph>
attr temperatures valuePrefix {'temperatures.time_graph' => '<a href="fhem?room=Aussentemperatur">'}



@Justme1968

Ich würde den Zielraum gerne dynamsch steuern wollen (Da meine Sensoren in verschiedenen Räumen sind). Leider funktionier folgender Aufruf nicht:
define temperatures readingsGroup Aussentemperatur:temperature,humidity,<%time_graph>
attr temperatures valuePrefix {'temperatures.time_graph' => '<a href="fhem?room=$ROOM">'}



Weiterhin würde ich das auch über den ALIAS - steuern wollen: also
attr temperatures valuePrefix {'temperatures.time_graph' => '<a href="fhem?room=$ALIAS">'}

Hast Du eine Idee?

lG
Wolfgang

justme1968

variablen in einfachen anführungszeichen werden von perl nicht interpoliert. d.h. du musst entweder doppelte anführungszeichen verwenden oder eine perl routine aufrufen die dann den passenden string zurück liefert.

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

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

ZeitlerW

Hallo Andre,

ich gebe zu, daß ich ein ziemlicher Anfänger im Thema bin. Ich habe nun eine sub in 99_myUtils:

attr temperatures valuePrefix {(sendroom($ROOM)}

Dann kommt allerdings

Global symbol "$ROOM" requires explicit package name at (eval 1857) line 1.

Fragen über Fragen

lG
Wolfgang

ZeitlerW

Hallo Andre,

---- Nachtrag ---

wenn ich folgendes mache:
attr temperatures valuePrefix {'temperatures.time_graph' => '<a href="fhem?room=$VALUE">'}

dann wird auch das 'richtige' html ausgegeben und der link lautet:    ipoffhem/room=22.5 (da $VALUE 22.5)

kann es sein, daß bei valuePrefix nur $VALUE und nicht $ROOM, $ALIAS, etc. definiert sind?

lG
Wolfgang

justme1968

ja. sorry. das stimmt. valuePrefix kann nur $DEVICE, $READING, $VALUE und $NUM. alles andere musst du dir selber besorgen. room über AttrVal auf perl ebene.

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

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

ZeitlerW

Hallo zusammen,

ja das war die Lösung:

In der ReadingsGroup
attr temperatures valuePrefix {(sendroom($DEVICE)}

In der 99_myUtils.pm
sub sendroom($) {
my ($device) =@_;
my $htmlcode ="<a href=\"fhem?room=".AttrVal($device,"room","")."\">";
return $htmlcode;

}


Vielen Dank!
lG
Wolfgang

uli2

Hallo Wolfgang,

danke für den Tipp dass es hier einen neuen Thread gibt
mich wundert allerdings dass du schreibst, dass der folgende Code funktioniert

define temperatures readingsGroup Aussentemperatur:temperature,humidity,<%time_graph>
attr temperatures valuePrefix {'temperatures.time_graph' => '<a href="fhem?room=Aussentemperatur">'}


bei mir funktioniert das eben gerade nicht, siehe https://forum.fhem.de/index.php/topic,38391.msg721872.html#msg721872
mein Ziel war eigentlich dass der Link auf den Raum beim Klick auf das Chart Icon aufgerufen wird, das tut aber irgendwie gar nicht.

das einzige was bei mir funktioniert ist

define temperatures readingsGroup Aussentemperatur:temperature,humidity,<%time_graph>
attr temperatures valuePrefix {'temperature' => '<a href="fhem?room=Aussentemperatur">'}


dann muss man allerdings auf den Temperaturwert klicken um in den neuen Raum zu kommen, nicht auf das Chart Icon.

Gruss
Uli


choetzu

Zitat von: ZeitlerW am 04 Dezember 2017, 15:23:19
Hallo zusammen,

ja das war die Lösung:

In der ReadingsGroup
attr temperatures valuePrefix {(sendroom($DEVICE)}

In der 99_myUtils.pm
sub sendroom($) {
my ($device) =@_;
my $htmlcode ="<a href=\"fhem?room=".AttrVal($device,"room","")."\">";
return $htmlcode;

}


Vielen Dank!
lG
Wolfgang

Guten Abend, das ist super hilfreich!! Danke!!
Wenn das Device aber 2 Räume hat, gehts nicht!
Kann man das irgendwie fixen dass bei mehreren Räumen der erste genommen wird?
Wär das Pünktchen auf dem i ;)
Danke, c
Raspi3, EnOcean, Zwave, Homematic