[patch] Neuer DPT20.102 HVAC Mode

Begonnen von JoeALLb, 26 September 2018, 11:35:52

Vorheriges Thema - Nächstes Thema

JoeALLb

Hallo Andi,

anbei die Daten für einen DPT 20.102, den ich für meine Heizungssteuerung benötige.
Bitte um Aufnahme ;-)
Habs soweit getestet, der Heizungsaktor meldet auch schön den Wechsel zurück. Der Gira Homeserver und MDT-Aktoren nutzen die selben Werte,
lediglich 0 (Auto)  fällt bei beiden weg. Da ETS es jedoch anbietet, habe ich das mit dazu aufgenommen....

--- FHEM/10_KNX.hvac.pm 2018-09-26 11:30:04.528963931 +0200
+++ FHEM/10_KNX.pm 2018-09-26 11:30:30.632799638 +0200
@@ -216,6 +216,9 @@
#date and time
"dpt19" => {CODE=>"dpt19", UNIT=>"", FACTOR=>undef, OFFSET=>undef, PATTERN=>qr/(((3[01]|[0-2]?[0-9]).(1[0-2]|0?[0-9]).(19[0-9][0-9]|2[01][0-9][0-9]))_((2[0-4]|[0?1][0-9]):(60|[0?1-5]?[0-9]):(60|[0?1-5]?[0-9])))|(now)/i, MIN=>undef, MAX=>undef},

+ # HVAC mode, 1Byte
+ "dpt20.102"        => {CODE=>"dpt20", UNIT=>"", FACTOR=>1, OFFSET=>0, PATTERN=>qr/((auto)|(comfort)|(standby)|(economy|night)|(protection|frost|heat))$/i, MIN=>undef, MAX=>undef, SETLIST=>"Auto,Comfort,Standby,Economy,Protection"},
+
# Color-Code
"dpt232"        => {CODE=>"dpt232", UNIT=>"", FACTOR=>undef, OFFSET=>undef, PATTERN=>qr/[0-9a-f]{6}/i, MIN=>undef, MAX=>undef, SETLIST=>"colorpicker"}
);
@@ -1865,6 +1868,20 @@
$numval = 0;
}

+ # HVAC 1Byte
+       elsif ($code eq "dpt20")
+        {
+
+                $numval = "00" if ($value =~ m/Auto/i);
+                $numval = "01" if ($value =~ m/Comfort/i);
+                $numval = "02" if ($value =~ m/Standby/i);
+                $numval = "03" if ($value =~ m/Economy/i);
+                $numval = "04" if ($value =~ m/Protection/i);
+
+                #get hex representation
+ $hexval = sprintf("00%.2x",($numval));
+        }
+
#RGB-Code
elsif ($code eq "dpt232")
{
@@ -2114,6 +2131,19 @@
$state = sprintf("%02d.%02d.%04d_%02d:%02d:%02d", $day, $month, $year, $hours, $mins, $secs);
}

+       elsif ($code eq "dpt20")
+        {
+        #recive from bus
+                #get numeric value
+                $numval = hex ($value);
+
+                $state = "Auto" if ($numval >=0);
+                $state = "Comfort" if ($numval >=1);
+                $state = "Standby" if ($numval >=2);
+                $state = "Economy/Night" if ($numval >=3);
+                $state = "Protection/Frost/Heat" if ($numval >=4);
+        }
+

#RGB-Code
elsif ($code eq "dpt232")


sG
Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Andi291

Abend!

Das will ich nicht aufnehmen. Mit den Aufzählungs-DPT steh ich auf Kriegsfuß. Das ist jede Menge Code und ich hab eh schon Sorgen mit der Lesbarkeit...

Da würd ich Dich bitten, bei der Patchvariante zu bleiben oder aber nen DPT5 als Basis herzunehmen, auf die numerischen Werte zu steuern, und die Belegung mit Bedeutungen erst im letzten Arbeitsschritt zu machen.
Geht auch Prima, wenn Du Dir das als eigene Funktion in den myUtils anlegst.

JoeALLb

puh..... das vermundert mich jetzt.
Das ist ein ofizieller DPT aus dem Standard, also nichts besonderes. Warum soll es im Fronten komplex werden, nur damit im Backend einmalig ein paar fertig geschriebene Codezeilen weniger enthalten sind? Außerdem ist das ja ein sehr abgekapselter Codebereich, also keine komplexe Änderung an verschiedenen Codeteilen...

Ich nutze die myUtils aus Grundsatz nicht, denn die macht das Synchronisieren zwischen mehreren Installationen schrierig. Mein Ansatz ist, dass alles Wichtige in der fhem.cfg enthalten sein soll, und damit fahre ich ziemlich gut!
Ich hoffe also weiterhin auf Aufnahme. Zumal es auch ggf. weitere Anfragen von anderen Usern unterbinden kann, die sich fragen, warum es diesen DPT nicht gibt....


sG Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

EIB-Fan

Hallo Andi,

habe die MDT-Glastaster. Diese nutzen auch den DPT 20.102.

Bin da Joes Meinung. Würde mich freuen, wenn du das mit aufnimmst. ::)

Gruß Jens

homa

Hallo auch Andi!

Bin zwar neu hier und mache gerade erst meine ersten Schritte mit FHEM - tolles System was Du/Ihr da gebaut habt! Danke.
Ich schließe mich der Meinung von Joe und Jens an, bitte füge den DPT-20 hinzu.
Nutze auch gerade die Raumthermostate von Merten und nutze den Workaround wie von Dir beschrieben mit DPT-5. Habe dabei aber das Problem, dass ich Fehler im Log bekomme. Siehe auch im anderen Thread: https://forum.fhem.de/index.php/topic,92117.msg848485.html#msg848485
Zudem ist die Lesbarkeit in der fhem.cfg so auch nicht so toll.

Grüße
Matthias

Andi291

Dafür wird halt die Lesbarkeit im Modul schlechter - aber das ist ja nur mein Problem :-)

Seufz...Ja, mach ich irgendwann...

Hellcastle

Zitat von: Andi291 am 23 Oktober 2018, 20:19:39
Dafür wird halt die Lesbarkeit im Modul schlechter - aber das ist ja nur mein Problem :-)

Seufz...Ja, mach ich irgendwann...

Gibt es schon etwas neues wann das sein wird?

Gruß aus Aachen

moustic999

Is there any news regarding this patch ?
latest version does not seems to support it ?
it would be very useful.


appi

Hallo Andi
ich würde mich auch freuen wenn der DPT20.102 im Modul wäre und ich den exclude_from_update für dein KNX Modul wieder löschen könnte.

Danke und Gruss
Remo

Bucky2k


fred85

wäre echt toll! Ich würde gerne ein Device von EinEinfach nachbauen:
Internals:
   DEF        2/1/4:dpt5.001:ventilpostion:get
2/2/4:dpt9.001:ist_temperatur:get
2/4/4:dpt9.001:soll_temperatur
2/3/4:dpt9.001:soll_temperatur_status:get
2/5/4:dpt20.102:soll_bet:riebsart
2/6/4:dpt20.102:ist_betriebssart:get
2/7/4:dpt16.000:diagnose:get
2/0/4:dpt1.003:zwangsstellung
   DEVNAME    BZ.Heizung
   FIRSTGADNAME ventilpostion
   FUUID      5d8e0112-f33f-80cb-7cc8-499bfa1b8a95e304
   GETSTRING  ist_temperatur:noArg soll_temperatur:noArg soll_temperatur_status:noArg soll_betriebsart:noArg zwangsstellung:noArg ventilpostion:noArg ist_betriebssart:noArg diagnose:noArg
   IODev      KNX
   KNX_MSGCNT 328
   KNX_RAWMSG C0110ew0210400
   KNX_TIME   2020-07-09 13:24:32
   LASTInputDev KNX
   MSGCNT     328
   NAME       BZ.Heizung
   NR         94
   NTFY_ORDER 50-BZ.Heizung
   SETSTRING  soll_temperatur:slider,-670760,13415,670760 soll_betriebsart:Auto,Comfort,Standby,Economy,Protection zwangsstellung:disable,enable
   STATE      Ist: 22.10 °C  Soll: 20.00 °C Ventilposition: 0 %
   TYPE       KNX
   GADDETAILS:
     diagnose:
       CODE       02704
       GROUP      2/7/4
       MODEL      dpt16.000
       NO         7
       OPTION     get
       RDNAMEGET  diagnose-get
       RDNAMEPUT  diagnose-put
       RDNAMESET 
       SETLIST   
     ist_betriebssart:
       CODE       02604
       GROUP      2/6/4
       MODEL      dpt20.102
       NO         6
       OPTION     get
       RDNAMEGET  ist_betriebssart-get
       RDNAMEPUT  ist_betriebssart-put
       RDNAMESET 
       SETLIST    :Auto,Comfort,Standby,Economy,Protection
     ist_temperatur:
       CODE       02204
       GROUP      2/2/4
       MODEL      dpt9.001
       NO         2
       OPTION     get
       RDNAMEGET  ist_temperatur-get
       RDNAMEPUT  ist_temperatur-put
       RDNAMESET 
       SETLIST    :slider,-670760,13415,670760
     soll_betriebsart:
       CODE       02504
       GROUP      2/5/4
       MODEL      dpt20.102
       NO         5
       OPTION     
       RDNAMEGET  soll_betriebsart-get
       RDNAMEPUT  soll_betriebsart-put
       RDNAMESET  soll_betriebsart-set
       SETLIST    :Auto,Comfort,Standby,Economy,Protection
     soll_temperatur:
       CODE       02404
       GROUP      2/4/4
       MODEL      dpt9.001
       NO         3
       OPTION     
       RDNAMEGET  soll_temperatur-get
       RDNAMEPUT  soll_temperatur-put
       RDNAMESET  soll_temperatur-set
       SETLIST    :slider,-670760,13415,670760
     soll_temperatur_status:
       CODE       02304
       GROUP      2/3/4
       MODEL      dpt9.001
       NO         4
       OPTION     get
       RDNAMEGET  soll_temperatur_status-get
       RDNAMEPUT  soll_temperatur_status-put
       RDNAMESET 
       SETLIST    :slider,-670760,13415,670760
     ventilpostion:
       CODE       02104
       GROUP      2/1/4
       MODEL      dpt5.001
       NO         1
       OPTION     get
       RDNAMEGET  ventilpostion-get
       RDNAMEPUT  ventilpostion-put
       RDNAMESET 
       SETLIST    :slider,0,1,100
     zwangsstellung:
       CODE       02004
       GROUP      2/0/4
       MODEL      dpt1.003
       NO         8
       OPTION     
       RDNAMEGET  zwangsstellung-get
       RDNAMEPUT  zwangsstellung-put
       RDNAMESET  zwangsstellung-set
       SETLIST    :disable,enable
   GADTABLE:
     02004      zwangsstellung
     02104      ventilpostion
     02204      ist_temperatur
     02304      soll_temperatur_status
     02404      soll_temperatur
     02504      soll_betriebsart
     02604      ist_betriebssart
     02704      diagnose
   Helper:
     DBLOG:
       ist_betriebssart-get:
         SYS.DBLog:
           TIME       1594291664.65899
           VALUE      Standby
       ist_temperatur-get:
         SYS.DBLog:
           TIME       1594293256.79397
           VALUE      22.10
       last-sender:
         SYS.DBLog:
           TIME       1594293872.3699
           VALUE      1/1/14
       soll_temperatur:
         SYS.DBLog:
           TIME       1594293736.75793
           VALUE      20.00
       soll_temperatur-get:
         SYS.DBLog:
           TIME       1594290772.77955
           VALUE      22.00
       soll_temperatur_status-get:
         SYS.DBLog:
           TIME       1594290772.72992
           VALUE      20.00
       soll_ventilposition:
         SYS.DBLog:
           TIME       1594293256.79397
           VALUE      40
       state:
         SYS.DBLog:
           TIME       1594293872.3699
           VALUE      0
       ventilpostion-get:
         SYS.DBLog:
           TIME       1594290592.74442
           VALUE      0
   READINGS:
     2020-07-09 09:18:59   diagnose-get    Wi H Standby 0
     2020-07-09 13:17:32   ist_betriebssart-get Standby
     2020-07-09 09:18:59   ist_betriebssart_alt Standby
     2020-07-09 13:24:16   ist_temperatur-get 22.10 °C
     2020-07-09 13:24:32   last-sender     1/1/14
     2020-07-09 09:18:59   soll_betriebsart-set Standby
     2020-07-09 13:24:32   soll_temperatur 20.00 °C
     2020-07-09 13:22:32   soll_temperatur-get 22.00 °C
     2020-07-09 09:18:59   soll_temperatur-set 22.00 °C
     2020-07-09 13:22:32   soll_temperatur_status-get 20.00 °C
     2020-07-09 13:24:32   soll_ventilposition 40
     2020-07-09 13:24:32   state           0 %
     2020-07-09 13:24:32   ventilpostion-get 0 %
     2020-07-09 09:18:59   zwangsstellung-set enable
Attributes:
   IODev      KNX
   alexaName  Heizung Badezimmer
   alexaRoom  Badezimmer
   alias      Heizung Badezimmer
   event-min-interval .*:3600
   event-on-change-reading .*
   genericDeviceType thermostat
   group      Heizung
   homebridgeMapping CurrentTemperature=ist_temperatur-get
TargetTemperature=soll_temperatur::soll_temperatur,minValue=16,maxValue=26,minStep=0.5,nocache=1
CurrentHeatingCoolingState=ist_betriebsart-get,values=Protection/Frost/Heat:0;;Standby:0;;Comfort:1;;Economy/Night:1;;cool:2,valud=off
TargetHeatingCoolingState=soll_betriebsart-set,values=Protection/Frost/Heat:0;;Standby:0;;Comfort:1;;Economy/Night:1;;cool:2;;Auto:3,cmds=OFF:soll_betriebsart+Protection;;HEAT:soll_betriebsart+Comfort;;AUTO:soll_betriebsart+Auto;;COOL:soll_betriebsart+Standby
   mqttName   Heizung
   mqttRoom   Badezimmer
   room       15_Badezimmer,80_Homekit,KNX
   stateFormat {'Ist: '.ReadingsVal($name, "ist_temperatur-get","").
'  Soll: '.ReadingsVal($name, "soll_temperatur_status-get", "").
' Ventilposition: '.ReadingsVal($name, "ventilpostion-get", "")}
   userReadings soll_temperatur
{
ReadingsVal($NAME,"soll_temperatur_status-get","")
},

soll_ventilposition
{
soll_ventilposition(ReadingsNum("$NAME","soll_temperatur-get",""),ReadingsNum("$NAME","ist_temperatur-get",""))
}

   webCmd     soll_temperatur
   widgetOverride soll_temperatur:16,16.5,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,22.5,23,23.5,24,24.5,25,25.5,26

Amenophis86

Letzer Besuch von Andi war im Feburar 2020, da wird das wohl eher nix mit dem Patch, oder? Habe nämlich auch gerade das Problem damit bekommen.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Amenophis86

Mag jemand seine gepatched Datei zur Verfügung stellen? Ich könnte zwar jetzt den Code komplett manuell einfügen aber vll. mag ja jemand was für die Allgemeinheit tun und seine Datei direkt zur Verfügung stellen :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Hauswart

#13
Siehe mein Beitrag hier: https://forum.fhem.de/index.php/topic,115122.msg1100325.html#msg1100325

Ich werde wohl die Tage eine gepatchte Datei dort zur Verfügung stellen.


Edit: Ist online.
1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)