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
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
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
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
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
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
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
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 (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
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