Danfoss/devolo Thermostat MT2650 u. Danfoss RS Room Sensor

Begonnen von Ralf, 07 Oktober 2016, 18:03:43

Vorheriges Thema - Nächstes Thema

A.Harrenberg

Hi,

also ich bin leider auch kein Fachmann für DOIF oder notify... (und mir ist nicht klar warum Du dein Thermostat nicht selber auf die Wunschtemperatur regeln lässt...)

Aber soweit ich weiß triggert DOIF nur einmal, falls eine Bedingung erfüllt, danach erst dann wieder wenn die andere erfüllt ist. Falls jetzt hier mal durch das testen ein Event ausgelöst wurde kommt erst mal keins bis sich der Status ändert. Das ist eigentlich ganz gut, ansonsten würdest Du bei jeder Änderung bzw. Update der Sensortemperatur erneut einen Befehl an das Thermostat schicken.

Problem ist hier aber auch das das Thermostat ja ein Batteriegerät mit WakeUp ist. Ich würde das so machen das ich ein Notify auf die WakeUp-Notification des Thermostat mache, dann in dem Notify schaue ob die Temperatur größer oder kleiner 21 ist und dann entsprechend den Befehl an das Thermostat absetzen. Das würde verhindern das sich da Befehle auf dem WakeUp-Stack stapeln die hin-und-herschalten wollen, falls sich zwischen den WakeUpIntervallen die Temperatur um die Schwelle bewegt.

Wie genau so ein Notify aussehen müsste kann ich Dir aber auch nicht so fehlerfrei dahersagen, dafür müsste ich auch nachschauen und probieren...

define WU-Kueche notify OG_KUE_Thermostat:wakeup:.* set OG_KUE_Thermostat setpointHeating 17
So wäre das mit einem festen Befehl, anstelle des Befehls muss da jetzt eine IF Abfrage rein...

define WU-Kueche notify OG_KUE_Thermostat:wakeup:.* {
if (ReadingsNum ("OG_KUE_Sensor","temperature",99) >= 21.0) {
    fhem("set OG_KUE_Thermostat_Steuerung setpointHeating 17")
} else {
   fhem("set OG_KUE_Thermostat_Steuerung setpointHeating 25")
}
}


Das ist jetzt aber nur aus dem Bauch und nicht getestet. Damit sollte jedesmal wenn das Thermostat aufwacht und auch bereit ist einen neuen Befehl entgegenzunehmen der Setpoint entsprechend der Abfrage gesetzt werden.

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

tomspatz

Meine Meinung:
Die LC-13 haben ja intern schon einen Regel Algorithmus. Ich habe selbst diese im Einsatz.
Da eine Heizung je nachdem wo im Raum die "Wunschtemperatur" abgefragt wird eh recht träge ist, würde ich diese DOIF Spielerei nicht einsetzten.
Es lässt sich ja relativ einfach in kurzer Zeit feststellen, wann es MIR mit der Raumtemperatur "passt".
Und damit meine ich NICHT 20.00 am Thermostat eingestellt sondern so lange diese Einstellung in kleinen Schritten verändern bis es MIR wohlig ist.
Dabei spielt es dann keine Geige ob die Einstellung 15.00 C oder 24.00 C ist, MIR muss es schön sein.
Diesen selbst ermittelten Wert dann als setpointHeating absetzen und fertig. Den Rest der Regelung übernimmt das Thermostat selbst.

LG
Tom

Nordmann

Hallo Tom,

erst einmal danke für Eure Tipps.
Mein Thermostat in der Küche ist ziemlich doof verbaut -> unten kopfüber an der Heizung und mit Display nach unten, sodass mann weder das Display ablesen, noch die Tasten richtig bedienen kann.
Aber aus baulichen Gründen ging es nicht anders; kann man auch nicht ändern.
Außerdem möchte ich auch die Steuerung einbauen, dass der Thermostat runterregelt, wenn die Terrassentür offen ist, bzw. das Fenster.
In einer weiteren Ausbaustufe kommt dann noch ein Heizplan dazu, mit Ferienplaner etc.
Aber davon bin ich im Augenblick noch Meilenweit entfernt.  ::) ::) ::) ::)

Wenn ich jetzt die erste "Einstiegs Variante" von Andreas setzte define H_Steuerung_KU notify OG_KUE_Thermostat:wakeup:.* set OG_KUE_Thermostat setpointHeating 17
passiert noch nichts. Ich nehme mal an, dass das so ist weil beim wakeup immer nur notification steht, also hier auch keine Änderung zu verzeichnen ist.
Ich habe mal das Listing beigefügt.
Internals:
   DEF        f1df7bc3 27
   IODev      ZWAVE1
   NAME       OG_KUE_Thermostat
   NR         193
   STATE      active
   TYPE       ZWave
   ZWaveSubDevice no
   homeId     f1df7bc3
   isWakeUp   1
   nodeIdHex  1b
   Readings:
     2016-10-09 18:34:06   CMD             ZW_APPLICATION_UPDATE
     2016-10-16 22:05:25   UNPARSED        CLOCK 0381033f
     2016-10-18 18:30:40   battery         63 %
     2016-10-18 18:30:40   ccsOverride     no, unused
     2016-10-09 14:01:44   clock           none 00:02
     2016-10-09 14:00:13   model           Danfoss Z Thermostat 014G0013
     2016-10-09 14:00:13   modelConfig     danfoss/z.xml
     2016-10-09 14:00:13   modelId         0002-0005-0004
     2016-10-16 13:50:41   neighborList    ZWAVE1 OG_WZ_Rauchmelder Steckdose EG_Sirene EG_Flur_h_Repeater
     2016-10-18 18:30:40   setpointTemp    25.00 C heating
     2016-10-16 15:12:14   state           active
     2016-10-18 18:30:42   timeToAck       0.059
     2016-10-18 18:30:42   transmit        OK
     2016-10-18 18:30:40   wakeup          notification
     2016-10-09 14:05:37   wakeupReport    interval 1800 target 1
   SendStack:
     get:131b0280022551
Attributes:
   IODev      ZWAVE1
   classes    BATTERY CLIMATE_CONTROL_SCHEDULE CLOCK MANUFACTURER_SPECIFIC MULTI_CMD PROTECTION THERMOSTAT_SETPOINT VERSION WAKE_UP MARK CLIMATE_CONTROL_SCHEDULE CLOCK MULTI_CMD
   icon       temp_control
   room       OG_Kueche,ZWave
   vclasses   BATTERY:1 CLIMATE_CONTROL_SCHEDULE:1 CLOCK:1 MANUFACTURER_SPECIFIC:1 MULTI_CMD:1 PROTECTION:2 THERMOSTAT_SETPOINT:2 VERSION:1 WAKE_UP:2
   verbose    5


Die zweite Variante
define H_Steuerung_KUE notify OG_KUE_Thermostat:wakeup:.* {
if (ReadingsNum ("OG_KUE_Sensor","temperature",99) >= 21.0) {
    fhem("set OG_KUE_Thermostat setpointHeating 17")
} else {
   fhem("set OG_KUE_Thermostat setpointHeating 25")
}
}


wirft mir folgende Fehlermeldung aus:
Unknown command if, try help.
Unknown command fhem("set, try help.
Unknown command }, try help.
Unknown command fhem("set, try help.
Unknown command }, try help.
Unknown command }, try help.


Mir gehts ein wenig wie Goethe Faust
Zitat"Da stehe ich nun ich armer Tor und bin so klug als wie zuvor"

tomspatz

Hi Nordmann
ME ist das "if" im notify ganz fehl am Platz.
Lese dir bitte die WiKi zum LC-13 durch. Dein wakeupInterwal 1800 ist viel zu lang. Das Thermostat reagiert dann ja nur alle 30 Minuten auf das was du ihm schickst.
Glaube das du dich in diese Richtung schon ganz schön reingefressen hast.

Ein dummy zum Werte setzten, ein notify darauf, fertig.

LG und viel Spass

Tom

Nordmann

Hallo Tom,

meist Du den WIKI Eintraghttp://www.fhemwiki.de/wiki/Z-Wave
mit dem Eintrag:
Danfoss
DAN_LC-13 Heizungsthermostat LC-13 (014G0013)
Das Danfoss Heizungsthermostat LC-13 muss derzeit zur korrekten Funktion mit FHEM regelmäßig mit folgendem at abgefragt werden (Beitrag):

define Atdanfoss at +*00:30 get <name> battery


Wenn ja, das define habe ich auch schon gesetzt.

Meinst Du mit dummy:

define H_Steuerung_KUE_17 dummy
set OG_KUE_Thermostat setpointHeating 17

define H_Steuerung_KUE_25 dummy
set OG_KUE_Thermostat setpointHeating 25


Aber mit "notify drauf" komme ich noch nicht ganz klar, sprich blicke ich nicht  :-[


A.Harrenberg

Hi Nordmann,

sorry, die Definition für das notify muss in eine lange Zeile wenn Du das über das Eingabefeld machst,
define H_Steuerung_KUE notify OG_KUE_Thermostat:wakeup:.* { if (ReadingsNum ("OG_KUE_Sensor","temperature",99) >= 21.0) { fhem("set OG_KUE_Thermostat setpointHeating 17") } else { fhem("set OG_KUE_Thermostat setpointHeating 25") }}
ich hatte das nur zur besseren Lesbarkeit umgebrochen.

@Tom: Wieso meinst Du wäre das "if" da Fehl am Platz?

Meiner Meinung nach ist das die effektivste Variante um diese besondere Aufgabenstellung zu bewerkstelligen. Dadurch wird nur genau während des Notify einmal ein Befehl ausgelöst. Lösungen die während der Schlafphase Befehle erzeugen legen die auf den WakeUp-Stack, was evtl. zu unnötig vielen Übertragungen führt.

Insgesamt ist das natürlich alles nicht wirklich schön, wenn das aber mit der Einbauposition zusammenhängt... Ok...
Aber das Problem mit der Regelbarkeit wegen der "Totzeit" des Geräts bleibt bestehen. Und das wakeupinterval steht in direkten Zusammenhang mit dem Batterieverbrauch...

Gruß,
Andreas.

FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

tomspatz

Moin Andreas
Zitat@Tom: Wieso meinst Du wäre das "if" da Fehl am Platz?
http://fhem.de/commandref_DE.html#notify
In der Commandref steht es so nicht drin, probiert habe ich es so nicht.

Deine Idee den Befehl abzusenden, hört sich logisch an. Aber inwiefern ist das relevant gegenüber die auf den Sendstack sofort zu legen. Dieser wird ja auch beim WakeUp abgearbeitet.
Das wakeupInterwal habe ich auf 300 gesetzt. Damit ist das System nicht ganz so träge.
Die mitgelieferten Batterien bei den LC-13 hielten bei meinen 5 Räumen gut 8 Monate. Nachdem Batterie "low" gemeldet wurde noch 15 Tage bis Exitus.
Damit kann ich leben. ;)

Bevor ich nur alle 30 Minuten eine Änderung um 8 Grad einstellen kann, überlasse ich die Regelung den Thermostaten selbst, das können die ja.

@Nordmann
Den dummy meine ich so:
define HeizungReglerBuero dummy
attr HeizungReglerBuero setList state:4.00,4.50,5.00,5.50,6.00,6.50,7.00,7.50,8.00,8.50,9.00,9.50,10.00,10.50,11.00,11.50,12.00,12.50,13.00,13.50,14.00,14.50,15.00,15.50,16.00,16.50,17.00,17.50,18.00,18.50,19.00,19.50,20.00,20.50,21.00,21.50,22.00,22.50,23.00,23.50,24.00,24.50,25.00,25.50,26.00,26.50,27.00,27.50,28
attr HeizungReglerBuero stateFormat {sprintf(" %.1f °C",(ReadingsNum("HeizungReglerBuero","state",0)))}
attr HeizungReglerBuero webCmd state


Diesen horchst du mit einem notify ab:
define HeizungReglerNotifyBuero notify HeizungReglerBuero:* {
my $reglerwert =
ReadingsVal("HeizungReglerBuero","state","on");;\
fhem ("set ThermostatBuero thermostatSetpointSet $reglerwert");
}


Auf dein Begehren gehe ich leider gar nicht ein da es ME wenig Sinn macht. SORRY :-[

LG
Tom

A.Harrenberg

Moin Tom,
Zitat von: tomspatz am 19 Oktober 2016, 06:23:25
Moin Andreashttp://fhem.de/commandref_DE.html#notify
In der Commandref steht es so nicht drin, probiert habe ich es so nicht.
danke, die CommandRef kenne ich, aber kennst Du das Notify Wiki:)
Im Befehlsteil des Notify (bei FHEM allgemein) kann man über die geschweiften Klammer PERL Syntax verwenden, genauso wie Du das in Deinem Beispiel auch machst. Und "if" ist ganz normale Perl Syntax...
In dem Wiki ist das z.B. bei dem Beispiel zu Einfache_UND_Funktion so gemacht.

Zitat von: tomspatz am 19 Oktober 2016, 06:23:25
Deine Idee den Befehl abzusenden, hört sich logisch an. Aber inwiefern ist das relevant gegenüber die auf den Sendstack sofort zu legen. Dieser wird ja auch beim WakeUp abgearbeitet.
Du gehst davon aus das während der "Schlafphase" nur EIN Befehl erzeugt wird der dann auf dem Stack liegt. Ich gehe davon aus das bei der Methode die Nordmann hier nutzen möchte es durchaus möglich ist das bei einer Temperatur die um die Grenze schwankt auch MEHRERE Befehle nacheinander auf dem Stack landen. Das erhöht die Funklast und den Batterieverbrauch, wenn man das vermeiden kann, sollte man das immer tun...

Dein Vorschlag realisiert ja sehr schön eine Art "Fernbedienung" für die Solltemperatur, aber wenn durch den Einbauort und die Lage des Thermostaten dieser eben NICHT in der Lage ist die Temperatur selbst vernünftig zu regeln dann läuft das auch ins Leere. Im Ursprungsthema dieses Threads geht es z.B. genau darum das am Thermostaten eine Hitzestau entsteht und der dann > 30°C anzeigt obwohl der Raum noch kalt ist...

Falls der Themostat von Nordmann aber doch noch halbwegs regeln kann ist die Vorgabe einer Solltemperatur und Regeln über den Thermostaten auf jeden Fall um Klassen besser als so ein Zweipunktregler mit einer Totzeit von 5 Minuten ,-) Dann kann Nordmann Dein Beispiel gut nutzen.

Gruß,
Andreas
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

tomspatz

Hallo Andreas
Zitatdanke, die CommandRef kenne ich, aber kennst Du das Notify Wiki?  :)
Im Befehlsteil des Notify (bei FHEM allgemein) kann man über die geschweiften Klammer PERL Syntax verwenden, genauso wie Du das in Deinem Beispiel auch machst. Und "if" ist ganz normale Perl Syntax...
In dem Wiki ist das z.B. bei dem Beispiel zu Einfache_UND_Funktion so gemacht.
COOL, kannte ich nicht.

Meine "Fernbedienung" funktioniert allerdings sehr gut so, und die eigentliche Regelung machen die Thermostate tatsächlich.
Das notify triggert ja NUR eine Änderung des dummys, somit wird ja nur einmal traffic erzeugt. Es sei denn du stellst da permanent dran rum. Aber warum?
Die Totzeit ist allerdings bei Nordmann zwangsweise 30 Minuten, dann kommt das notify und setzt das Thermostat auf 25 Grad. Dummerweise Hitzestau innerhalb kurzer Zeit macht das Thermostat dicht und der Raum bleibt kühl.
30 Minuten später setzt das notify wieder 25 Grad ab. UND... juckt doch niemanden. Das Thermostat bedankt sich und schläft wieder ein. Spätestens dann schmeißt Seine Frau Ihn samt der sche... Steuerung raus.  ;)
Ich möchte die LC-13 nicht hochloben aber so funktioniert das halt zuverlässig ohne das man direkt ans Ventil zum regeln kommt.

LG
Tom

Ralf

Hi,

zwischenzeitlich ist mein begonnenes Thema von "Nordmann" etwas "zweckentfremdet" worden, was ich persönlich nicht so toll finde, da sein Problem nicht direkt etwas mit meiner Problemstellung zu tun hat. Man möge es mir also verzeihen, wenn ich wieder zu meinem Problem zurückkehre.

Kurze Zusammenfassung der Ausgangssituation:
Verbautes devolo Thermostat MT2650, das wegen extremen  Wärmestaus (31 °C) total abregelt, obwohl der der Raum erst 19 °C hat.
Installiertes Raumthermostat das die richtige Raumtemperatur anzeigt und die gewünschte Soll-Temperatur auch an das Heizkörperthermostat richtig überträgt, das aber wie bereits gesagt, ja selbst die IST-Temperatur misst und wegen Wärmestau viel zu früh abstellt. Ein extremes "hochdrehen" der Solltemperatur  geht auch nicht, da die MT2650 "nur" bis 28 °C gehen und das aber nicht reicht.

Lösungsansatz:
Es müsste eine Möglichkeit gefunden werden, dass nur die tatsächliche Raumtemperatur vom Raumthermostat genutzt wird, und das Heizkörperthermostat so lange heizt, bis diese erreicht worden ist.

Ich habe dazu Devolo, die ja dafür das Raumthermostat mit dem entsprechenden Heizkörperthermostat extra zu diesem genannten Zweck bewerben, angeschrieben und als Antwort erhalten:

"Die von Ihnen gewünschte Funktion wird von der Devolo Home Control Zentrale umgesetzt. Bitte fassen Sie die das Heizkörperthermostat und das Raumthermostat in eine Gruppe zusammen, welche dann von dem Raumthermostaten her über die Regel gesteuert werden. Damit sollte auch die Heizung hinter dem Schrank nicht frühzeitig zurück regeln."

Um zu testen ob das jetzt tatsächlich mit der "Devolo Home Control Zentrale" funktioniert, habe ich mir zu Testzwecken eine solche beschafft, und siehe da, das funktioniert tatsächlich.

Tja, aber eigentlich ist das jetzt nicht das gewünschte Ziel, da ich jetzt mit FHEM und Devolo Home Control zwei SmartHome-Zentralen am Laufen habe.

Was ich nicht verstehe ist, die Devolo Home Control Zentrale und die beiden Thermostate sind voll Z-Wave kompatibel und Devolo wirbt ja extra damit, dass sie Z-Wave als Standard nutzen und ich konnte ja auch beide Thermostate ohne Probleme in FHEM inkludieren.  Es müsste dann doch eigentlich auch möglich sein, die Regelung irgendwie im FHEM nach zu bilden?

Hat dazu irgendjemand eine Idee?

FHEM5.7@RaspPi3 |RaZberry|FIBARO FGWPE Wall Plug|devolo MT02648|Philio PST02-A|
Vision ZG8101 Garage Door|Danfoss RS Room Sensor|DanfossThermostat MT2650|
Popp 009105 Wall Plug Switch|Aeotec DSD31 Siren Gen5|FIBARO System FGS212 Switch 3kW|

A.Harrenberg

Hi,

also wenn die ganze Kommunikation nur über ZWave läuft musste man mal "sniffen" was an das Thermostat gesendet wird. Das ist mittlerweile ja mit einem USB-CUL möglich, aber nicht ganz trivial.

Ich gehe mal davon aus das man in der Devolo Home Zentrale nicht an irgendwelche aussagekräftigen Logfiles kommt, oder?
Gibt es in der Anleitung der Zentrale vielleicht irgendwelche Hinweise darauf wie die das machen?

Mir fehlt da ehrlich gesagt jegliche Idee wie das mit (den mir bekannten) ZWave-Klassen gemacht werden sollte. Das Problem das das Thermostat ja ein WakeUp-Gerät ist und damit nicht beliebig angesprochen werden kann bleibt ja weiterhin...

Außer sniffen fällt mir dazu nix ein.

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

rudolfkoenig

ZitatAußer sniffen fällt mir dazu nix ein.
Mir auch nicht, es sei denn die Herren von Devolo verraten, welche ZWave Befehle an dem Thermostat zu schicken sind.
Uns sollte auch sniffen auf USB-Level reichen. Ist etwas fummelig, erfordert aber keine Programmierkenntnisse.


A.Harrenberg

Hi Rudi,
Zitat von: rudolfkoenig am 23 Oktober 2016, 08:58:01
Mir auch nicht, es sei denn die Herren von Devolo verraten, welche ZWave Befehle an dem Thermostat zu schicken sind.
Uns sollte auch sniffen auf USB-Level reichen. Ist etwas fummelig, erfordert aber keine Programmierkenntnisse.
Soweit ich das verstehe ist die Zentrale aber eigenständig mit eigenem internen ZWave Modul und nur per Netzwerk angebunden. Daher wird hier sniffen auf USB-Level wohl nicht funktionieren oder verstehe ich hier was falsch?

Ich habe ehrlich gesagt meine Zweifel ob das wirklich über ZWave realisiert wird oder nicht vielleicht über ein 433MHz Signal... Zumindest aus der Thermostatklasse gibt es nichts mit dem man so etwas realisieren könnte. Und das Ding wacht ja auch nur alle x-Minuten auf...

@Ralf: Funktioniert die Regelung auch noch wenn Du das WakeUp-Interval auf sehr große Werte stellst? (Kannst Du das auslesen und in der Zentrale ändern?)

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

Ralf

Hi Andreas,

Devolo schreibt ganz klar, dass die Kommunikation über ZWave läuft und ich habe ja beide Thermostate vorher am FHEM über ZWave am laufen gehabt.

Habe ausserdem ja auch noch zwei Fenster/Tür Kontakte von Devolo über ZWave am FHEM laufen und es gibt auch eine Kompatibilitätsliste  http://www.smarthomecommunity.eu/wiki/index.php?title=Devolo_Home_Control_-_Kompatibilit%C3%A4tsliste von Devolo wo die Geräte aufgeführt sind, die mit der "Devolo Zentrale" laufen und da sind die gängigsten ZWave-Geräte aufgeführt.

An der Devolo Zentrale kann man bez. Kommunikation, WakeUp oder dergl. überhaupt nichts einstellen. Es gibt keinen direkten Zugriff auf die Zentrale.
Die Verbindung läuft ausschließlich über Web, mydevolo.com oder die App die auf Handy oder Tablet installiert werden kann.
Man kann sich das im Internet  unter https://hcdemo.devolo.net/?lang=de im "Demo-Haus" ansehen.

Tja, dachte auch daran die Kommunikation von der Zentrale "mit zu schneiden", aber mit was?

Werde mich da weiter schlau machen und halte Euch auf dem Laufenden..

Gruß

Ralf
FHEM5.7@RaspPi3 |RaZberry|FIBARO FGWPE Wall Plug|devolo MT02648|Philio PST02-A|
Vision ZG8101 Garage Door|Danfoss RS Room Sensor|DanfossThermostat MT2650|
Popp 009105 Wall Plug Switch|Aeotec DSD31 Siren Gen5|FIBARO System FGS212 Switch 3kW|

rudolfkoenig

ZitatSoweit ich das verstehe ist die Zentrale aber eigenständig mit eigenem internen ZWave Modul und nur per Netzwerk angebunden.
Sorry, war mir nicht bewusst, dass "devolo Home Control" ein Geraet ist, ich dachte, es ist nur Software. Das Geraet kann man auch bestimmt irgendwie hacken und dann das Gesendete protokollieren, der Aufwand ist aber deutlich hoeher und falls man keine Anleitung hat, erfordert Spezialwissen.
Der Aufwand fuer sniffen mit dem CUL ist sicher niedriger, weiss aber nicht, ob dieser Feature in FHEM zu haben Dir Wert ist, dafuer ein CUL zu besorgen.
Wenn es hilft: du wuerdest damit zu unserer Bildung was beitragen :)