HM-CC-RT-DN peer

Begonnen von rufus999, 14 Dezember 2013, 14:56:10

Vorheriges Thema - Nächstes Thema

rufus999

Hallo zusammen,

ich wollte gern meine beiden HM-CC-RT-DN verbinden um nicht immer an beiden die Temperatur zu ändern. Im Forum habe ich ein Beitrag gefunden der folgenden Befehl nutzt.

set HZ_Wohnz_ClimaTeam peerChan 0 EZ_Heizung_ClimaTeam single

Danach habe ich noch folgenden Befehl abgesetzt:

set EZ_Heizung_ClimaTeam peerChan 0 HZ_Wohnz_ClimaTeam single

Somit dachte ich, egal an welchen der beiden Thermostate ich etwas einstelle, der andere bekommt die Daten auch. Doch leider passiert da garnichts. Beide Thermostate stehen auf manuel. Ändere ich die Temperatur bei einem wird diese nicht übertragen. Umgekehrt auch nicht. Ich habe schon ca. 15 Minuten gewartet aber nichts passiert bei dem anderen Thermostat. Ich ändere auch immer nur die Temp am Stellrad und nicht über fhem!

In den Anhängen findet ihr ein Paar infos über meine Config. Hat jemand vielleicht einen Tipp oder muss ich noch etwas einstellen?

Gruss

rufus999

martinp876

Hallo Rufus,

das peering sieht korrekt aus. Ich hatte ein ähnliches Problem - einer der gepeerten RTs hat gesendet, der andere nicht. Empfangen haben beide.
Ich habe die Lust verloren und es über notifies gemacht. Da synce ich temp und mode.
Grund war:
- das synchen hat nur bei einem Funktioniert - ein individuellen Problem
- das synchen funktioniert nur beim Verstellen am Handrad - wenn man von der Zentrale verstellt oder im Automode klappt es nicht - HM prinzip.

Dennoch - ärgerlich, dass ich es noch nicht gefunden habe.

Gruss Martin

Mr. P

Zitat von: rufus999 am 14 Dezember 2013, 14:56:10set HZ_Wohnz_ClimaTeam peerChan 0 EZ_Heizung_ClimaTeam single
Täusche ich mich, oder müsste man nicht unterschiedliche Channels miteinander peeren?
Greetz,
   Mr. P

martinp876

macht FHEM intern für RTs

rufus999

Hallo Martin,

okay danke für deine Info. Ist zwar schade das es nicht klappt, aber hättest du vielleicht ein kleines Codeschnipsel für mich wie das mit dem notify klappen sollte? So ganz perl sicher bin ich mir da nicht.
Meinst du denn das in naher Zukunft vielleicht noch etwas zu diesem Problem gefunden wird?

Gruss

rufus999

martinp876

Hi,

keine Ahnung, wann es gefunden wird. Ich hatte schon einen reset gemacht und direkt gepeert - hat bei meinen RTs nichts geholfen - einer ging, der andere nicht.

Hier der Code - da er mehr abdeckt als das direkte peering habe ich die Prio deutlich runter gesetzt.

Wenn man die Namen der RTs intelligent vergibt könnte man mit einem notiy auskommen. So in der Art,
h_<room>_<no>_Clima

oder man setzt ein attribut für die Gruppierung. Solange man mit wakeup (2,5min delay) zufrieden sollte es ok sein


Gruss Martin

define h_ab_team_temp notify h_.*_Clima:desired-temp.* {\
  if ($EVTPART1 ne ReadingsVal("h_hk1_Clima","desired-temp","")){\
    fhem "set h_hk1_Clima desired-temp $EVTPART1"}\
  if ($EVTPART1 ne ReadingsVal("h_hk2_Clima","desired-temp","")){\
    fhem "set h_hk2_Clima desired-temp $EVTPART1"}\
  }
attr h_ab_team_temp room Heating,notify
define h_ab_team_mode notify h_.*_Clima:mode.* {\
  if ($EVTPART1 ne ReadingsVal("h_hk1_Clima","mode","")){\
    if ($EVTPART1 =~ m/(auto|boost)/){\
      fhem "set h_hk1_Clima controlMode $EVTPART1"}\
   elsif($EVTPART1 eq 'manu'){\
      fhem "set h_hk1_Clima controlManu ".ReadingsVal("h_hk1_Clima","desired-temp","")}\
  }\
  if ($EVTPART1 ne ReadingsVal("h_hk2_Clima","mode","")){\
    if ($EVTPART1 =~ m/(auto|boost)/){\
      fhem "set h_hk2_Clima controlMode $EVTPART1"}\
   elsif($EVTPART1 eq 'manu'){\
      fhem "set h_hk2_Clima controlManu ".ReadingsVal("h_hk2_Clima","desired-temp","")}\
  }\
  }

rufus999

Hallo Martin,

danke für dein Script. Ich habe die Namen meiner beiden Thermostate etwas angepasst und das Script auch. Sieht jetzt so aus:

define Heizung_Team_temp notify HZ_.*_Clima:desired-temp.* {\
  if ($EVTPART1 ne ReadingsVal("HZ_Wohnz_Clima","desired-temp","")){\
    fhem "set HZ_Wohnz_Clima desired-temp $EVTPART1"}\
  if ($EVTPART1 ne ReadingsVal("HZ_Esszimmer_Clima","desired-temp","")){\
    fhem "set HZ_Esszimmer_Clima desired-temp $EVTPART1"}\
  }
attr Heizung_Team_temp room Heizung,notify
define Heizung_Team_mode notify HZ_.*_Clima:mode.* {\
  if ($EVTPART1 ne ReadingsVal("HZ_Wohnz_Clima","mode","")){\
    if ($EVTPART1 =~ m/(auto|boost)/){\
      fhem "set HZ_Wohnz_Clima controlMode $EVTPART1"}\
   elsif($EVTPART1 eq 'manu'){\
      fhem "set HZ_Wohnz_Clima controlManu ".ReadingsVal("HZ_Wohnz_Clima","desired-temp","")}\
  }\
  if ($EVTPART1 ne ReadingsVal("HZ_Esszimmer_Clima","mode","")){\
    if ($EVTPART1 =~ m/(auto|boost)/){\
      fhem "set HZ_Esszimmer_Clima controlMode $EVTPART1"}\
   elsif($EVTPART1 eq 'manu'){\
      fhem "set HZ_Esszimmer_Clima controlManu ".ReadingsVal("HZ_Esszimmer_Clima","desired-temp","")}\
  }\
  }


Aber irgendwie habe ich dabei einen ganz witzigen Effekt. Beide Thermostate stehen bei mir auf 19 Grad. Wenn ich nun das script in meine fhem.cfg einfüge und dann einen rereadcfg mache wird auch alles aktzeptiert. Jetzt ändere ich bei einem Thermostat am Stellrad die Temperatur auf 16 Grad. Nach ca. 3 Minuten hat dann auch der andere 16 Grad. Aber nochmals 3 Minuten später hat der Erste wieder 19 Grad und abermals 3 Minuten später sind alle beide wieder beim Einstiegswert von 19 Grad.

Komisch oder ?!

rufus999

so etwas steht jetzt ständig in der fhem.log:

2013.12.14 18:01:50 2: CUL_HM set HZ_Wohnz_Weather getConfig
2013.12.14 18:04:38 2: CUL_HM set HZ_Wohnz_Climate getConfig
2013.12.14 18:06:55 2: CUL_HM set HZ_Wohnz_Clima desired-temp 19
2013.12.14 18:07:12 2: CUL_HM set HZ_Wohnz_WindowRec getConfig
2013.12.14 18:07:12 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 20
2013.12.14 18:09:31 2: CUL_HM set HZ_Wohnz_ClimaTeam getConfig
2013.12.14 18:10:34 2: CUL_HM set Hz_Bad_Dach_ClimRT_tr desired-temp 22.0
2013.12.14 18:11:12 2: CUL_HM set Hz_Bad_Dach_ClimRT_tr desired-temp 22.0
2013.12.14 18:11:35 2: CUL_HM set HZ_Wohnz_remote getConfig
2013.12.14 18:12:16 2: CUL_HM set HZ_Wohnz_Clima desired-temp 20
2013.12.14 18:14:30 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 19
2013.12.14 18:14:35 2: CUL_HM set HZ_Wohnz_Clima desired-temp 20
2013.12.14 18:17:09 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 20
2013.12.14 18:19:34 2: CUL_HM set HZ_Wohnz_Clima desired-temp 19
2013.12.14 18:19:35 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 20
2013.12.14 18:22:13 2: CUL_HM set HZ_Wohnz_Clima desired-temp 20
2013.12.14 18:24:38 2: CUL_HM set HZ_Wohnz_Clima desired-temp 18.5
2013.12.14 18:24:46 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 19
2013.12.14 18:26:49 2: CUL_HM set HZ_Wohnz_Clima desired-temp 18.5
2013.12.14 18:29:49 2: CUL_HM set HZ_Wohnz_Clima desired-temp 19
2013.12.14 18:30:03 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 18.5
2013.12.14 18:35:06 2: CUL_HM set HZ_Wohnz_Clima desired-temp 18.5
2013.12.14 18:37:16 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 19
2013.12.14 18:37:23 2: CUL_HM set HZ_Wohnz_Clima desired-temp 18.5
2013.12.14 18:39:54 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 18.5
2013.12.14 18:42:17 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 18.5
2013.12.14 18:42:18 2: CUL_HM set HZ_Wohnz_Clima desired-temp 19
2013.12.14 18:44:26 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 18.5
2013.12.14 18:47:25 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 19
2013.12.14 18:49:28 2: CUL_HM set HZ_Wohnz_Clima desired-temp 18.5
2013.12.14 18:50:09 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 19
2013.12.14 18:52:39 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 18.5
2013.12.14 18:54:54 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 18.5
2013.12.14 18:55:11 2: CUL_HM set HZ_Wohnz_Clima desired-temp 19
2013.12.14 18:56:55 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 18.5
2013.12.14 18:59:46 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 19
2013.12.14 18:59:55 2: CUL_HM set HZ_Wohnz_Clima desired-temp 18.5
2013.12.14 19:04:24 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 18.5
2013.12.14 19:04:46 2: CUL_HM set HZ_Wohnz_Clima desired-temp 19
2013.12.14 19:12:15 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 19
2013.12.14 19:14:24 2: CUL_HM set HZ_Esszimmer_Clima desired-temp 19
2013.12.14 19:14:33 2: CUL_HM set HZ_Wohnz_Clima desired-temp 18.5

es scheint nicht auf zu hören ???

martinp876

Hi Rufus,

du solltest das Attribut
attr HZ_Wohnz_Clima event-on-change-reading .*

setzen.
das sollest du eigentlich überall einbauen, also bei allen entities überhaupt - damit du keine doppelten trigger erhältst. Dann sollte es klappen.
zumindest bei den _Clima brauchst du es, damit dieser notify klappt



Gruss Martin

rufus999

Hallo Martin,

danke für deinen Tipp. Nach setzen des event-on-change-reading funktioniert der sync eingentlich kanns ordenlich. Es kommt aber immer noch ein Fehler den ich nicht verstehe. Stelle ich bei einem der beiden Thermostate vom Modus manual auf auto um kommt im log folgendes:

2013.12.15 14:28:13 3: set HZ_Esszimmer_Clima controlMode set_auto : invalid set_auto:select of mode [auto|boost|day|night] or controlManu,controlParty
2013.12.15 14:28:13 3: Heizung_Team_mode return value: invalid set_auto:select of mode [auto|boost|day|night] or controlManu,controlParty
2013.12.15 14:28:13 2: CUL_HM set HZ_Wohnz_Clima controlMode auto
2013.12.15 14:28:13 2: CUL_HM set HZ_Wohnz_Clima desired-temp 21

Die Werte werden aber korrekt durchgereicht und auch beim anderem Thermostat gesetzt.
Was genau meint diese Meldung?

Gruss

rufus999

martinp876

Hallo Rufus999

nun, es wird versucht, den mode auf "set_auto" zu setzen, was nicht geht, da der mode "auto" sein sollte.
Das kommt sicher daher, dass beim setzen markiert wird, dass der Wert nicht bestätigt ist, daher der set_ prefix. Danach kommt noch ein "auto", wenn es bestätigt ist - also aus den Device gelesen wurde. Das wird dann geschrieben.

das notify sollte also nur reagieren, wenn kein "set_" im kommando ist.
define Heizung_Team_mode notify HZ_.*_Clima:mode.* {\
  if ($EVTPART1 !~ m /set_/){\
    if ($EVTPART1 ne ReadingsVal("HZ_Wohnz_Clima","mode","")){\
      if ($EVTPART1 =~ m/(auto|boost)/){\
        fhem "set HZ_Wohnz_Clima controlMode $EVTPART1"}\
     elsif($EVTPART1 eq 'manu'){\
        fhem "set HZ_Wohnz_Clima controlManu ".ReadingsVal("HZ_Wohnz_Clima","desired-temp","")}\
    }\
    if ($EVTPART1 ne ReadingsVal("HZ_Esszimmer_Clima","mode","")){\
      if ($EVTPART1 =~ m/(auto|boost)/){\
        fhem "set HZ_Esszimmer_Clima controlMode $EVTPART1"}\
     elsif($EVTPART1 eq 'manu'){\
        fhem "set HZ_Esszimmer_Clima controlManu ".ReadingsVal("HZ_Esszimmer_Clima","desired-temp","")}\
    }\
  }\
  }

rufus999

Hallo Martin,

super vielen Dank! So läuft es.
Ich habe noch etwas versucht. Ich wollte die beiden Thermostate selber peeren. Also die Anlerntaste (Boost) drei sekunden drücken. Normalerweise sollte ja dann eine 30 erscheinen und nach unten zählen. Aber es erscheint nur kanns kurz die 30 und der Thermostat springt wieder zur vorherigen Anzeige zurück. Ist dass immer so wenn der Thermostat mit fhem gepairt ist? Kann man dann nur noch über fhem peeren?

Gruss

rufus999

martinp876

bei allen devices:
wenn du 'anlernen' drückst ist das Device ~30sec bereit zu empfangen. Sollte es etwas empfangen ist es danach 'fertig' und schaltet ab.

Also wenn FHEM etwas in der queue hat für das Device wartet es auf wakeup (also bei RTs - normalbetrieb). wenn nun ein Anlernen kommt schickt der RT eine message in die Welt. FHEM wird antworten und senden, was so gequeued ist. Wenn es fertig ist ist auch der RT fertig.

Manche devices schalten ihre 'Lampe' aus, wenn sich jemand gemeldet hat, andere erst, wenn alles übertragen ist.

Ist als normales verhalten. Wenn du den saft aus der HMLAN dose ziehst sollte der RT 30sec  auf Empfang bleiben
Gruss Martin

rufus999

Hallo Martin,

super danke für die Antwort. Ich werde mal testen.

Gruss

rufus999

newmats

Hallo zusammen,

euer Thread ist zwar schon ein wenig älter und ihr habt ja eine super Lösung gefunden, die ich auch noch einmal probieren werde.

Ich bin auf euren Thread aufmerksam geworden, weil ich das gleiche Problem hatte.

Nachdem ich das Forum leer gesucht habe, habe ich final folgenden Ansatz gefunden:

set Wohnzimmer.Heizung_ClimaTeam peerBulk Kueche.Heizung_ClimaTeam set
set Kueche.Heizung_ClimaTeam peerBulk Wohnzimmer.Heizung_ClimaTeam set


So funktioniert es bei mir super und beide Regler sind absolut und ohne Zeitversatz im Takt. Scheint wohl nur mit "peerBulk" zu laufen.

Eventuell hilft mein Hinweis ja noch anderen Suchenden.

VG

Matthias
Futro S300 mit Debian Server Wheezy und FHEM stable latest
HMLAN, HM-CC-RT-DN, HM-SEC-SC, HM-WDS40-TH-I, HM-LC-SW1-PL2, HM-PB-2-WM55, RC4, RC12,