FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: mcbo am 10 November 2014, 17:19:05

Titel: HM-CC-RT-DN in Struktur nur bedingt umschalten
Beitrag von: mcbo am 10 November 2014, 17:19:05
Hallo,

ich habe 6 Stück "HM-CC-RT-DN" Heizkörperthermostatventile in eine Struktur gesteckt.

define Heizung_Mode structure Heizung sz_hz_Clima wz_hz_Clima kue_hz_Clima leni_hz_Clima henri_hz_Clima bad_hz_Clima

Über eine Bluetooth - Anwesenheitserkennung, schalte ich den Modus der HK-Ventile,
zwischen "controlManu 15" und "controlMode auto", um.

sub
Heizung_off_Sub()
{
if ((Value("presence_Alle_iPhones") eq "0"))
{ fhem("set Heizung_Mode controlManu 15")};
}


sub
Heizung_on_Sub()
{
if ((Value("presence_Alle_iPhones") eq "1") )
{ fhem("set Heizung_Mode controlMode auto")};
}


Jetzt würde ich gerne nur bei den Thermostaten, in der Struktur, den Modus umschalten,
die nicht im "Party-Modus" sind.
Kann ich das über die Struktur lösen?
Oder muß ich für jeden Thermostaten ein eigens Script schreiben.

Gruß

Marcel
Titel: Antw:HM-CC-RT-DN in Struktur nur bedingt umschalten
Beitrag von: justme1968 am 11 November 2014, 11:47:20
du kannst ein [FILTER=...] einbauen.

schau mal in der commandref nach devspec und bei structure wie das an die devices durchgereicht wird.

gruß
  andre
Titel: Antw:HM-CC-RT-DN in Struktur nur bedingt umschalten
Beitrag von: mcbo am 11 November 2014, 16:41:59
Da stehe ich irgendwie auf dem Schlauch  :-[

Hat jemand ein Codebeispiel für mich?


Danke

Marcel
Titel: Antw:HM-CC-RT-DN in Struktur nur bedingt umschalten
Beitrag von: marvin78 am 11 November 2014, 16:45:33
Hast du denn den Tipp

Zitatschau mal in der commandref [...]

beherzigt? Da stehen sogar Beispiele drin.
Titel: Antw:HM-CC-RT-DN in Struktur nur bedingt umschalten
Beitrag von: mcbo am 11 November 2014, 16:57:56
Habe ich mehrfach studiert aber nicht so richtig verstanden.

Wenn ich z.B.: set Heizung_Mode FILTER=controlMode=manual
eingebe, müssten in der Struktur nur alle HM-CC-RT-DN sein, die sich im manuellen Modus befinden?

Oder wie muß ich den Filter verstehen?
Titel: Antw:HM-CC-RT-DN in Struktur nur bedingt umschalten
Beitrag von: justme1968 am 11 November 2014, 17:00:23
fast. das ist die syntax für ein device. die syntax für die structure ist etwas anders weil sich der filter nicht auf die structure sonder auf die devices in der structure bezieht.

gruß
  andre
Titel: Antw:HM-CC-RT-DN in Struktur nur bedingt umschalten
Beitrag von: mcbo am 11 November 2014, 17:22:46
Du lässt mich aber ganz schön zappeln.  :'(

OK so?
Zitatset Heizung_Mode [FILTER=controlMode=manual]

Wie kann ich mir dann das gefilterte Ergebnis anzeigen lassen?

Mit "list Heizung_Mode" ?
Titel: Antw:HM-CC-RT-DN in Struktur nur bedingt umschalten
Beitrag von: justme1968 am 11 November 2014, 22:25:25
wieder fast :) da fehlt fehlt ja noch das kommando. also etwa so:set Heizung_Mode [FILTER=controlMode=manual] controlManu 15

in erster näherung bekommst du die liste mit list TYPE=CUL_HM:FILTER=controlMode=manualam besten sieht man es aber man verbose auf 5 stellt und/oder inform timer verwendet und einfach die strucure schaltet.


du musst immer unterscheiden zwischen der version ohne [] die die devices filtert auf die das set selber greift und der version mit [] die nicht direkt auf ein device angewendet wird sondern die von der structure durchgereicht werden soll.

das ganze ist im prinzip auch kombinierbar:set Heizung_.*:FILTER=xyz=abc [FILTER=controlMode=manual] controlManu 15das würde aus mehreren Heizung.* structure die jenigen auswählen bei denen xyz=abc ist und dann das controlManu  nur auf die devices in diesen structure los lassen bei denen der controllMode=manual ist.
Titel: Antw:HM-CC-RT-DN in Struktur nur bedingt umschalten
Beitrag von: mcbo am 12 November 2014, 19:10:04
@justme1968

Danke, das ist genau das, was ich gesucht habe.
Habe es jetzt so umgesetzt:

sub
Heizung_off_Sub()
{
if ((Value("presence_Alle_iPhones") eq "0"))
{ fhem("set Heizung_Mode [FILTER=controlMode!=.*party] controlManu 15")};
}

sub
Heizung_on_Sub()
{
if ((Value("presence_Alle_iPhones") eq "1"))
{ fhem("set Heizung_Mode [FILTER=controlMode!=.*party] controlMode auto")};
}


Wenn ein Thermostat im "party" oder "set_party" Modus ist, wird er bei der Abwesenheitsschaltung nicht beachtet.


Gruß

Marcel