FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: guna83 am 12 September 2015, 20:29:29

Titel: Mehrere Devices in einer Readingsgroup
Beitrag von: guna83 am 12 September 2015, 20:29:29
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!
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: stromer-12 am 12 September 2015, 22:20:26
Naja, fast richtig. Versuche es einmal so:

define RG_Rauchmelder.KG readingsGroup <>,<Alarm>,<Rauchalarm> Rauchmelder.Status.Alarm.KG.*:state,state@Rauchmelder.Status.Rauchalarm.KG.*
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: guna83 am 13 September 2015, 09:50:52
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?
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: igami am 13 September 2015, 10:16:32
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.
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: justme1968 am 13 September 2015, 10:45:07
@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
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: guna83 am 13 September 2015, 14:12:56
Super! Funktioniert, danke!
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: master7811 am 12 November 2015, 20:46:26
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 ;-)


Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: justme1968 am 12 November 2015, 22:05:50
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
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: master7811 am 13 November 2015, 09:15:59
Toll, Danke - das funktioniert. Es sind halt alles verschiedene Sensoren

T_Aktuell ist LaCrosse, T_Ziel ist THRESHOLD und _Heizung ist ein Pilight-Switch ;-)
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: justme1968 am 13 November 2015, 09:29:43
dann ist es ok :)
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: master7811 am 13 November 2015, 09:47:49
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 :-\
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: justme1968 am 13 November 2015, 09:58:44
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
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: master7811 am 13 November 2015, 10:25:58
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?
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: justme1968 am 13 November 2015, 10:29:04
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.
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: master7811 am 15 November 2015, 19:14:58
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?
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: skopel84 am 05 November 2016, 11:32:56
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
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: justme1968 am 05 November 2016, 13:17:53
was ist die comments funktion? was genau meinst du bzw. hast du vor?

gruss
  andre
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: skopel84 am 05 November 2016, 19:12:47
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
Titel: Antw:Mehrere Devices in einer Readingsgroup
Beitrag von: skopel84 am 08 November 2016, 15:34:36
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.