Hallo zusammen,
ich möchte in einer readingsgroup den Status von zwei Devices in einer Zeile darstellen. Versucht habe ich es mit:
define RG_Rauchmelder.KG readingsGroup < >,<Alarm>,<Rauchalarm> Rauchmelder.Status.Alarm.KG.*:state,Rauchmelder.Status.Rauchalarm.KG.*:state
Leider wird immer nur der erste Wert angezeigt, die Position an der der zweite Werte erscheinen soll bleibt leer.
Wie bekomme ich den zweiten Wert auch angezeigt? Ist mein ganzer Ansatz falsch?
Danke!
Naja, fast richtig. Versuche es einmal so:
define RG_Rauchmelder.KG readingsGroup <>,<Alarm>,<Rauchalarm> Rauchmelder.Status.Alarm.KG.*:state,state@Rauchmelder.Status.Rauchalarm.KG.*
Funktioniert leider auch nicht :(
Testweise hab ich mal define RG_Rauchmelder.KG readingsGroup <>,<Alarm>,<Rauchalarm> Rauchmelder.Status.Alarm.KG.*:state,state@Rauchmelder.Status.Rauchalarm.Flur
versucht, das funktioniert ohne Probleme. Irgendwie "mag" die ReadingsGroup wohl das * am Ende nicht. Andere Versuche mit state@Rauchmelder\.Status\.Rauchalarm\.[a-zA-Z0-9]*
mit oder ohne {} haben mich leider auch nicht zum Ziel geführt. Kann ich irgendwie automatisch genau das hinten dran hängen, in was das erste Sternchen aufgelöst wurde?
Schreib dir eine Sub die den Device Namen ersetzt (s.u.) und in der readingsGroup machst du dann ein
define RG_Rauchmelder.KG readingsGroup <>,<Alarm>,<Rauchalarm> Rauchmelder.Status.Alarm.KG.*:state,state@{Alarm2Rauchalarm($DEVICE)}
sub Alarm2Rauchalam($){
my $device = shift;
$device =~ s/Alarm/Rauchalarm/g;
return $device
}
Ist ungetestet, aber von der Idee her sollte es funktionieren, wenn es zu jedem Alarm Device ein "gleichnamiges" Rauchalarm Device gibt.
@stromer-12: device namen hinter dem @ kann man nicht als regex angeben. der name muss zu genau einem konkreten device passen.
@igami: ja. genau so geht das. so wird in jeder device zeile das zu $DEVICE passende abgeleitete device gesucht und verwendet.
gruss
andre
Super! Funktioniert, danke!
Hi,
ich habe glaube ich gleiches Problem. Anzeigen möchte ich folgendes (ich bau mal eine Beispielzeile - es handelt sich um eine Heizungssteuerung):
Ist-Temperatur / Soll-Temperatur / HeizungAnOderAus
Meine "Geräte" heißen z.B.
Flur_T_Aktuell
Flur_T_Ziel
Flur_T_Heizung
So richtig toll wäre es noch, wenn ich die Heizung auch da gleich noch an oder aus schalten könnte ... aber das bekomm ich dann schon hin. Leider verstehe ich euren geposteten Code noch nicht so ganz. Aber bestimmt könnt ihr mir weiterhelfen ;-)
define <rg> readingsGroup Flur_T_Aktuell:state,state@Flur_T_Ziel,state@Flur_T_Heizung
aber bitte schau dir mal die beiträge vor und nach diesem hier an: http://forum.fhem.de/index.php/topic,14608.msg349632.html#msg349632 (http://forum.fhem.de/index.php/topic,14608.msg349632.html#msg349632). wenn deine devices dummys sind gilt auch für dich: du machst es dir unnötig schwer wenn du für jeden wert einen eigenen dummy und vor allem das gleiche reading (state) mit unterschiedlicher bedeutung verwendest.
gruss
andre
Toll, Danke - das funktioniert. Es sind halt alles verschiedene Sensoren
T_Aktuell ist LaCrosse, T_Ziel ist THRESHOLD und _Heizung ist ein Pilight-Switch ;-)
dann ist es ok :)
Ok, habe es probiert und es funktioniert - allerdings will ich ja nicht nur den Flur haben, sondern darunter die Zeile für die Küche und das Wohnzimmer etc. Wenn ich die Zeile kopiere, bekomme ich eine neue Readingsgroup... es soll aber doch alles in die Gleiche :-\
die schreibst du natürlich in die gleiche radingsGroup: define <rg> readingsGroup Flur_T_Aktuell:state, desired_value@Flur_T_Ziel,state@Flur_T_Heizung Wohnzimmer_T_Aktuell:state, desired_value@Wohnzimmer_T_Ziel,state@Wohnzimmer_T_Heizung ...
und wenn du im wiki schaust findest du auch ein beispiel wie du die devices automatisch zusammen suchen kannst. etwa so (ungetestet):define <rg> readingsGroup .*_T_Aktuell:temperature,desired_value@{$DEVICE=~s/Aktuell/Ziel/},state@{$DEVICE=~s/Aktuell/Heizung/}
gruss
andre
Hey, Danke! Was die Zeile machen soll hab ich sogar verstanden ;-) Ich bastel mal - geht zwar noch nicht, aber wird schon. Warum wurde weiter oben eine eigene Funktion erstellt und hier geht es Inline? Wenn ich die Zeile von dir richtig verstehe, müsste ich ohne die Funktion auskommen, obwohl es das gleiche ist was hier gemacht wird... oder?
weil eine eigene routine übersichtlicher ist wenn es länger wird und nicht immer ein einfaches suchen und ersetzen reicht. das suchen und ersetzen isst aber ungetestet. es kann z.b. sein das da noch ein return fehlt. oder, oder, ... und dann ist es schon wieder so lang das sich die routine lohnt. eine separate routine lässt sich auch einfacher debuggen da du sie auch von hand aufrufen kannst um zu sehen was genau passiert.
gruss
andre
ps: oben war noch ein leerzeichen zu viel.
Hi, das Leerzeichen hatte ich auch schon identifiziert. Leider geht es nicht und ich steh auf dem Schlauch. Die Funktion
=~ s/Suche/Ersetze/
macht doch folgendes: Suche mittels Regex nach dem Teil "Suche" und ersetze ihn durch Ersetze und gib das zurück in die Variable vor dem = - oder?
Der Übersichtlichkeit halber habe ich die folgenden beiden Funktionen in meine 99_myUtils.pm aufgenommen.
sub T_Aktuell_to_T_Ziel($){
my $device = shift;
$device =~ s/_T_Aktuell/_T_Ziel/g;
return $device
}
sub T_Aktuell_to_Heizung($){
my $device = shift;
$device =~ s/_T_Aktuell/_Heizung/g;
return $device
}
Meine fhem.conf sieht so aus:
define RG_Test readingsGroup .*_T_Aktuell:temperature,desired_value@{T_Aktuel_to_T_Ziel($DEVICE)},state@{T_Aktuel_to_Heizung($DEVICE)}
Leider zeigt er aber in der RG nur alle relevanten temperature Werte an. Desired_value und state werden nicht angezeigt. Hat jemand noch hinweise, worauf ich achten sollte?
Hallo Zusammen
Ich habe ein ähnliches Problem. Das automatische füllen der Readingsgroup funktioniert gut.
Ich hab allerdings auch noch die Buttons in der rg die das jeweilige device beeinflussen. Gibt es auch die Möglichkeit die comments Funktion an die jeweilige zeile anzupassen.
Die rg sieht so aus
define rgtemp2 readingsGroup <%temp_temperature>,<>,<AUF>,<AB>,<Soll-Wert>,<Ist-Wert>\
*._Solltemp:,<>,<%control_arrow_upward>,<%control_arrow_downward>,state,state@{Alarm2Rauchalarm($DEVICE)}\
attr rgtemp2 commands {'rgTemp2.control_arrow_upward' => 'set Wohnzimmer_Solltemp_Auf Trigger' , 'rgTemp2.control_arrow_downward' => 'set Wohnzimmer_Solltemp_Ab Trigger'}
attr rgtemp2 room Test
mir ist klar das die comments so nicht funktionieren aber ich habe auch keine Ahnung wie man das Lösen kann
Freue mich auf etwas Hilfe
Grüße
was ist die comments funktion? was genau meinst du bzw. hast du vor?
gruss
andre
Ich nutze FHEM als Visualisierung für einige Siemens Logo8 mit dem S7 Modul.
Möchte eine rg bauen mit der ich die Temperatur mehrerer heizkreise einstellen kann die an der Logo angeschlossen sind.
Die Taster mit den comments sind auf netzwerkeingänge gelegt die von der Logo verarbeitet werden.
Die rg soll je Raum folgendes ermöglichen
Taster Temp hoch / runter./solltemperatur (aus der Logo eingelesen) /aktuell Temperatur ( auch eingelesen)
So kann ich den Wert auch mit einem Hardware Taster ändern und bekomme immer den korrekten Wert in FHEM angezeigt
Hoffe das ist halbwegs verständlich
Grüße Sebastian
Hallo zusammen
Ich habe zu meinem Problem inzwischen eine Lösung gefunden die Ich hier kurz vorstellen möchte.
Habe diese Variante jetzt für Heizungen und Dimmer verwendet die von der Logo verarbeitet werden.
define rgtemp2 readingsGroup <%temp_temperature>,<>,<AUF>,<AB>,<Soll-Wert>,<Ist-Wert>\
*._Solltemp:,<>,<%control_arrow_upward>,<%control_arrow_downward>,state,state@{_Solltemp2_Isttemp($DEVICE)}\
\
attr rgtemp2 commands {'rgtemp2.control_arrow_upward' => 'set $DEVICE_Auf Trigger' , 'rgtemp2.control_arrow_downward' => 'set $DEVICE_Ab Trigger'}
Zusätzlich gibt es noch einen Eintrag in 99_MyUtils.
sub _Solltemp2_Isttemp($){
my $device = shift;
$device=~ s/_Solltemp/_Isttemp/g;
return $device
}
Damit sieht die readingsgroup aus wie auf dem angefügten Bild.
Jetzt lässt sich für jedes Modul über die Taster die Temperatur einstellen die auf der Logo verarbeitet wird und dann wieder als Analogreading eingelesen wird.
Ist etwas umständlich macht es aber möglich immer den aktuellen stand der Logo in FHEM zu sehen auch wenn der wert anderweit geändert wird.