Raumregler Temperatur an Eltako FAE14SSR

Begonnen von KingPin, 25 Dezember 2013, 18:26:12

Vorheriges Thema - Nächstes Thema

KingPin

Habe ein Problem mit dem  roomSensorControl.05 ich will die Temperatur von meinem FTUTH55D Beziehen. (zum Testen Später über 1-wire Temperatursensoren)
Sobalt ich manuel den sollwert setze mit desired-temp aktualisiert sich die ist Temperatur aber er überträgt nicht automatisch die ist und soll werte. Daher geht nach 15min die FAE14SSR in fehler Betrieb bis ich wieder manuel einen wert setze.
Laut beschreibung vom roomSensorControl.05 soll der sich verhalten wie ein FTUT55D und spätestens alle 15min die werte übertragen und sofort bie änderung der ist temp um  1C° und mehr.

Was mus ich in der cfg änder damit es Funktioniert?

define WZ_RR EnOcean FFDEB381   <- Raumregler FTUTH55D
attr WZ_RR manufID 00D
attr WZ_RR room Wohnzimmer
attr WZ_RR subType roomSensorControl.05
define FileLog_WZ_RR FileLog ./log/WZ_RR-%Y.log EnO_sensor_FFDEB381
attr FileLog_WZ_RR logtype text
attr FileLog_WZ_RR room Wohnzimmer

define Heizung_WZ EnOcean FFEE1D02 <- FHEM Raumregler
attr Heizung_WZ manufID 00D
attr Heizung_WZ room Wohnzimmer
attr Heizung_WZ subType roomSensorControl.05
attr Heizung_WZ temperatureRefDev WZ_RR

daredevil

#1
Ich nutze zwar Eltako FHK12, diese sollten sich aber ähnlich verhalten.
Der Fehlermode sollte erst nach 60 Minuten ohne empfangenes Paket aktiviert werden.

Ich sende bei jeder Änderung der Temperatur ein Rawpaket Folgendermaßen:

define temp_change notify EnO_sensor_01005DF3:temperature.* {\ <-- hier deinen Sensor eintragen
my $D2 = sprintf("%%02X",ReadingsVal("EnO_sensor_01005DF3","sensor2",51));;\ <-- Sollwert
my $D1 = sprintf("%%02X",ReadingsVal("EnO_sensor_01005DF3","sensor3",98));;\ <-- Istwert
fhem("set eg_wz_FTR55_RAW 4BS 00".$D2.$D1."0F 30")}


Dazu musst du dir noch eine Raw-funktion in der Art erstellen:
define eg_wz_FTR55_RAW EnOcean FFA79914 <-- deine FHEM ID gleich mit der bereits im Aktor bei dir eingelernt
attr eg_wz_FTR55_RAW room EG_WZ
attr eg_wz_FTR55_RAW subType raw
define FileLog_eg_wz_FTR55_RAW FileLog ./log/eg_wz_FTR55_RAW-%Y.log eg_wz_FTR55_RAW
attr FileLog_eg_wz_FTR55_RAW logtype text
attr FileLog_eg_wz_FTR55_RAW room EG_WZ


Diese werden nicht regelmäßig durchgeführt. Aber mindestens einmal pro Stunde. Und dies ist absolut ausreichend.

KingPin

Bei dem Befehl
set eg_wz_FTR55_RAW 4BS 00".$D2.$D1."0F 30"

kommt
Wrong parameter, choose 4BS <data 4 Byte hex> [status 1 Byte hex]

define WZ_RR EnOcean FFDEB381
attr WZ_RR manufID 00D
attr WZ_RR room Wohnzimmer
attr WZ_RR subType roomSensorControl.05
define FileLog_WZ_RR FileLog ./log/WZ_RR-%Y.log EnO_sensor_FFDEB381
attr FileLog_WZ_RR logtype text
attr FileLog_WZ_RR room Wohnzimmer

define Heizung_WZ EnOcean FFEE1D02
attr Heizung_WZ manufID 00D
attr Heizung_WZ room Wohnzimmer
attr Heizung_WZ subType roomSensorControl.05
attr Heizung_WZ temperatureRefDev WZ_RR

define temp_change notify WZ_RR :temperature.* {\
my $D2 = sprintf("%%02X",ReadingsVal("WZ_RR","setpointTemp",51));;\
my $D1 = sprintf("%%02X",ReadingsVal("WZ_RR","temperature",98));;\
fhem("set eg_wz_FTR55_RAW 4BS 00".$D2.$D1."0F 30")}

define eg_wz_FTR55_RAW EnOcean FFEE1D02
attr eg_wz_FTR55_RAW room Wohnzimmer
attr eg_wz_FTR55_RAW subType raw
define FileLog_eg_wz_FTR55_RAW FileLog ./log/eg_wz_FTR55_RAW-%Y.log eg_wz_FTR55_RAW
attr FileLog_eg_wz_FTR55_RAW logtype text
attr FileLog_eg_wz_FTR55_RAW room Wohnzimmer

daredevil

define temp_change notify WZ_RR :temperature.* {\<-- leerzeichen zwischen WZ_RR:temperature.* entfernen
my $D2 = sprintf("%%02X",ReadingsVal("WZ_RR","setpointTemp",51));;\ <-- dort bitte sensor2 stehen lassen
my $D1 = sprintf("%%02X",ReadingsVal("WZ_RR","temperature",98));;\ <-- dort bitte sensor3 stehen lassen
fhem("set eg_wz_FTR55_RAW 4BS 00".$D2.$D1."0F 30")}


Es werden die RAW Werte benötigt und setpointTemp und temperature sind bereits die umgerechneten Werte.
Formel läßt sich aus der Enocean Doku für das EEP2.5 Protocol entnehmen. Ansonsten poste doch bitte einmal die Eventtypes für dein Thermostat.
Diese kann auch die Feuchte übermitteln oder eventuell verschiebt sich dann bei den Werten etwas.

KingPin

Hier einmal evetn vom raumregler

2013-12-26 18:04:57 EnOcean WZ_RR T: 19.9 SPT: 20.4 NR: 0
2013-12-26 18:04:57 EnOcean WZ_RR nightReduction: 0
2013-12-26 18:04:57 EnOcean WZ_RR setpointTemp: 20.4
2013-12-26 18:04:57 EnOcean WZ_RR temperature: 19.9

daredevil

gib oben in der Eingabezeile im Webinterface einmal get eventTypes list + enter ein und Poste mal das, was bei deinem Raumsensor geliefert wird.
e

KingPin

EnO_sensor_FFDEB381 sensor1: .*
EnO_sensor_FFDEB381 sensor2: .*
EnO_sensor_FFDEB381 sensor3: .*
EnO_sensor_FFDEB381 setpointTemp: .*
EnO_sensor_FFDEB381 teach-in: EEP A5.*.* Manufacturer: Eltako
EnO_sensor_FFDEB381 temperature: .*

daredevil

#7
Die Funktion als solches müsste dann eigentlich funktionieren, wenn du setpointTemp und temperature mit sensor2 u. senser3 ersetzt hast.
Wenn du die FHEM.cfg speicherst, wird dann noch eine Fehlermeldung ausgegeben?

Wie ist dein Sensor nun benannt, EnO_sensor_FFDEB381 oder WZ_RR?

KingPin

#8
So scheint jetzt zu Funktionieren.

Zitat2013-12-26 20:15:13 EnOcean eg_wz_FTR55_RAW RORG: 4BS
2013-12-26 20:15:13 EnOcean eg_wz_FTR55_RAW dataSent: 0033620F
2013-12-26 20:15:13 EnOcean eg_wz_FTR55_RAW statusSent: 30
2013-12-26 20:15:13 EnOcean eg_wz_FTR55_RAW 30
2013-12-26 20:15:13 EnOcean EnO_sensor_FFDEB381 T: 19.5 SPT: 20.4 NR: 0
2013-12-26 20:15:13 EnOcean EnO_sensor_FFDEB381 nightReduction: 0
2013-12-26 20:15:13 EnOcean EnO_sensor_FFDEB381 setpointTemp: 20.4
2013-12-26 20:15:13 EnOcean EnO_sensor_FFDEB381 temperature: 19.5

Edit: Sendet aber immer die Selben Daten auch wenn sich die Teemperatur Ändert.

So kann ich aber ja nur Daten eine Enocean TempSensors auswerten.
Wenn ich das richtig sehe speichert er das gesendete vom FTR55 und Sendet es erneut mit der FHEM ID an den aktor das jedesmal bei Temperaturänderung oder alle 60min.
Ich würde später aber für andere Räume gerne die sensoren über 1-Wire Temperaturfühler Steuern Da die enocean Raumfühler ja schon sehr Teuer sind oder Würde das Ähnlich Funktionieren?

daredevil

#9
Die Temperatur ist nicht immer gleich, allerdings wenn diese sich nur um 0,1 Grad nach oben oder unten ändert drückt sich das im RAW wert nicht unbedingt aus.
Du kannst dies auch mit anderen Sensoren durchführen. Dein Aktor versteht das EEP Protocol A5-10-06 und genau das sendest du über die jetzige Funktion.
Nur wenn du später 1Wire Sensoren verwenden möchtest, musst du den Istwert umrechnen in den RAW Wert den dein Aktor braucht. Den Sollwert setzt du dann über FHEM oder soll
dies auch an deinem 1Wire sensor passieren?

Am besten ließt du dir hierfür die EEP2.5 Doku durch, dort findest du den Aufbau des Paketes und die Formel zum umrechnen: http://www.enocean-alliance.org/eep/

EDIT: Du hattest Recht, der Wert ändert sich nicht stetig. Baue deine Funktion dementsprechend um:


define temp_change notify WZ_RR {\
my $D2 = sprintf("%%02X",(ReadingsVal("WZ_RR","setpointTemp",8)/(40/255)));;\
my $D1 = sprintf("%%02X",(ReadingsVal("WZ_RR","temperature",20)/(40/-255)+255));;\
fhem("set eg_wz_FTR55_RAW 4BS 00".$D2.$D1."0F 30")}

KingPin

Danke jetzt Funktionerts sendet unterschiedliche wärte wenn sich die temperatur ändert.

Sollwert möchte ich Über FHEM Setzen und ist wert vom 1-wire sensor beziehen.

mit dem Umrechnen verstehe ich noch nicht so ganz meinst du Diese Formel?
ZitatDevice value = Multipler * (rawValue - Range min) + Scale min

ich finde die irgendwie nicht ganz in der Programierung wieder.
ich gehe mal davon aus das mit  (40/-255)+255 Diese Formel gemeint ist oder?

daredevil

Yep, genauso ist es. Kannst du quasi für deine 1wire Lösung für Sollwert und Istwert genauso übernehmen.

KingPin

Die Programierung scheint ja nicht die Temperatur zu übertragen sonder die Ventilstellung oder wie sehe ich das wäre es nicht besser einfach nur die soll und ist Temperatur an den FAE14SSR zu Übermiteln?

woher kommen den die 255 ich habe bei Eltako mal gegukt  da steht FTR55  ist 0°c- 40°c     Soll 12°c - 28°C
oder interpretiert der Aktor daraus die Temperatur?

daredevil

#13
Es handelt sich auch um die Soll- und Isttemperatur, die Übertragen werden. Allerdings wird diese nicht im Realwert übertragen, sondern
als 8-Bit in Hex. Dafür gilt auch die Formel in der Doku in Verbindung mit dem Protokoll A5-10-06.

Scale Max - Scale Min / Range Max - Range Min = Multiplier

Device Value = Multiplier * ( rawValue - Range Min) + Scale Min

Für  EEP2.5 Protocol A5-10-06 gilt:
DB2.7...DB2.0 (Setpoint) Range = 0 - 255 und Scale = 0 - 40 (In der Doku 0 - 255 allerdings wird im FHEM setpointTemp geliefert, es wird aber setpoint benötigt, deshalb die andere Scale)
DB1.7...DB1.0 (Temperature) Range = 255 - 0 und Scale = 0 - 40

Setzt du nun die Werte dementsprechend in die Formel ein und stellst diese nach rawValue um, kommst du genau auf das,
was ich in die Funktion eingebaut habe. Hoffe ich konnte nun etwas Licht ins Dunkel bringen.