Modul zur Anbindung Viessmann Heizung (Vitotronic 200 KW1)

Begonnen von Adam, 15 Februar 2014, 18:17:35

Vorheriges Thema - Nächstes Thema

Gunther

So, die Timer für WW und Heizung werden auch sauber ausgelesen.

Einen Set für Sonntag auf Heizung habe ich so ausprobiert:
set Viessmann TIMER HZ,SO,07:20,22:50,--,--,--,--,--,--

Das Reading sieht so aus:
TIMER_1_SO 07:20-22:50/-----/-----/-----/ 2014-03-06 23:18:32

Also super!
FHEM@Proxmox@Nuc: TabletUI als User-Interface (4 Wandtablets) / IOs per ser2net gekapselt
Homematic: Heizung, Fenster, Bewegung | Jeelink: Temperatur | Z-Wave: Bewegung, Temperatur | FS20: Temperatur, Fenster | Viessmann-Heizung eingebunden

kvo1

Hi Gunther, Du hier  ;)

ZitatDie ID habe ich in Deinem Konfig-File leider nicht gefunden

Die ID braucht es hier nicht , Du mußt Deiner Werte einfach so anpassen ....ggf aus den XML´s raussuchen.!


@ADAM  Man kann an dieser Stelle nur den HUT vor Dir ziehen , echt Klasse , auch das Du gleich auf so
einfache Wünsche (wie von mir ) eingehst.  ;)
Ich werde das also testen und berichten!

Danke und weiter so !

Klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

kvo1

Hallo Adam, das ist einfach genial !

die neue Version ist eingespielt und angepasst !
Bisher keine Fehler , lass das heute Nacht mal laufen (wobei da eh nix passiert  ;D )

Bis denne
Klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Adam

Moin Moin,

ich war gestern abend recht zuversichtlich, dass die 2ByteParse Methode, die ja hauptsächlich für die Temperaturen genutzt wird,
nun funktioniert.
Musste aber heute morgen feststellen, das die Temperaturwerte bei mir nicht plausibel sind.
Ich möchte die Funktion wieder zur ürsprünglichen Version ändern.

Wie sieht das bei Euch aus?
Irgendjemand hatte Probleme bei einem Wert mit negativen Zahlen?? Oder?
Dann sollten wir uns eher das nochmal genauer anschauen und dafür eine gesonderte Parse Methode bereitstellen!?
Was sagt Ihr?

@Gunther:
Das da ein Techniker was einstellen muss für den Oelverbrauch weiss ich nichts von? Bei mir war der Wert direkt verfügbar.
Ich meine dazu aber mal was in meiner Bedienungsanleitung gelesen zu haben!? Ich werde sie am Wochenende mal raussuchen!
Wobei ich KW1 habe, weiss nicht ob das ein Unterschied macht.

Das Deine Temperaturen nicht sauber angezeigt werden, kann an dem obigen Problem liegen,
würde erstmal auf die Kommentare der anderen warten, bis ich das wieder zurück drehe!

Wie Klaus bereits schreibt habe ich bisher keine ID in der Datei vorgesehen.
Wenn wir in Zukunft mal für verschiedene IDs funktionierende Konfigs haben,
dann kann man überlegen, ob es nicht Sinn macht diese noch mit anzugeben,
damit neue User es einfacher haben.
Aber bis dahin werden wir wohl noch optimieren und testen müssen  ;)

Adam

@Gunther: Ich habe da noch was auf meinem Rechner gefunden  ;D

Im Anhang findest Du die Serviceanleitung für eine Vitotronic200 TypKW2,
danach bin ich vor Jahren (ohne FHEM) mal vorgegangen um den Oelverbrauch am Gerät direkt anzuzeigen:

Ich habe dazu die Codierung 26 auf 1 gesetzt.

Seite 85 Beschreibung der Codierung 26.
Seite 82 beschreibt wie das geht.

Da das nur in der Serviceanleitung steht muss das wohl normalerweise der Techniker machen.
Bei mir war eh keine Garantie mehr drauf und sie hat es überlebt  ;)

Du kannst ja zumindest mal schauen ob bei Dir z.Zt. die Codierung 26 auf 0 steht,
dann ist klar warum kein Oelverbrauch auszulesen ist.
Den müsstest Du dann auch am Gerät sehen, wenn er gemessen wird!

Viel Glück!

kvo1

Hallo Adam,

ich habe das eben auch festgestellt !

siehe Anlage

klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Adam

Hi Klaus,

ändere doch 2ByteParse mal in:

sub VCONTROL_2ByteParse($$)
{
  my $hexvalue = shift;
  my $divisor = shift;

  return hex(substr($hexvalue,2,2).substr($hexvalue,0,2))/$divisor;
}


Müssen mal rausfinden, wer damit bei welchem Wert Probleme hatte?
Aber ich denke diese ursprüngliche Art ist für die Temps die richtige.
Zumal die in der Heizung wohl nicht negativ werden ;)

höchstend die AussenTemp

kvo1

Hi Adam

sieht schon besser aus , ich lass das mal laufen!

siehe Anlage

klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

Bastelbernd

Hallo Adam
Die Lösung mit 2ByteParse war ja von

fischle
Zitat
sub VCONTROL_2ByteParse($$)
{
  my $hexvalue = shift;
  my $divisor = shift;

  #return hex(substr($hexvalue,2,2).substr($hexvalue,0,2))/$divisor;
  return unpack('s', pack('S',hex(substr($hexvalue,2,2).substr($hexvalue,0,2))))/$divisor;
}
das funktioniert beim mir bis jetzt richtig.

Du hast ja im Modul geschrieben
return unpack('s', pack('S', hex(hex(substr($hexvalue,2,2).substr($hexvalue,0,2)))))/$divisor;
und das funktioniert nicht.
Aber ich glaube dazu kann "fischle" mehr sagen,da er eine Wärmepumpe hat
die mehr negative Werte anzeigt.

Nach Tageswechsel
-  BrennerStundenToday 3.97999999999956 2014-03-07 09:34:19  :(

Was mir auch aufgefallen ist, das nach Abfrage der Timerwerte sich die Pollintervalle von 3 Minute auf 2 Minuten
verkürzt hatten. Da half nur Neustart. Ist das bei euch auch so ?

Gruß Bernd

   

   


FHEM auf Server mit Mainboard ASRock J3160B,Gehause Mini ITX E-3002+ SSD
Viessmann(optolink) HM-CFG-USB(HMLAN), PoKeys57E
Jeelik(Arduino)+LaCrosse, Nextion
Firmata+Arduino+1Wire+2xDS2423+IN+OUT
Electrolama zig-a-zig-ah!,Zigbee2MQTT

Bastelbernd

Hallo Adam
leider ist heute so etwas passiert
Use of uninitialized value in string ne at ./FHEM/99_VCONTROL.pm line 367.
Use of uninitialized value in string ne at ./FHEM/99_VCONTROL.pm line 367.
Use of uninitialized value in string ne at ./FHEM/99_VCONTROL.pm line 367.
Use of uninitialized value in string ne at ./FHEM/99_VCONTROL.pm line 367.
Use of uninitialized value in string ne at ./FHEM/99_VCONTROL.pm line 367.
2014.03.07 12:04:54 5: VCONTROL_READ
2014.03.07 12:04:54 5: VCONTROL: VCONTROL_Read '05'
2014.03.07 12:04:54 5: VCONTROL: Setze sendstr
2014.03.07 12:04:56 5: VCONTROL_READ
2014.03.07 12:04:56 5: VCONTROL: VCONTROL_Read '05'
2014.03.07 12:04:56 5: VCONTROL: Setze sendstr
2014.03.07 12:04:58 5: VCONTROL_READ
2014.03.07 12:04:58 5: VCONTROL: VCONTROL_Read '05'
2014.03.07 12:04:58 5: VCONTROL: Setze sendstr
2014.03.07 12:05:00 5: VCONTROL_READ


und es werden keine Daten mehr abgeholt. Hatte ich gestern auch schon einmal.
Hat einer eine Idee?
Halft nur Neustarten. :(

Gruß Bernd
FHEM auf Server mit Mainboard ASRock J3160B,Gehause Mini ITX E-3002+ SSD
Viessmann(optolink) HM-CFG-USB(HMLAN), PoKeys57E
Jeelik(Arduino)+LaCrosse, Nextion
Firmata+Arduino+1Wire+2xDS2423+IN+OUT
Electrolama zig-a-zig-ah!,Zigbee2MQTT

Raven

wg. Ölverbrauch und Kodierung

@Adam (&Gunter)
Korrekt! Und nochmals Danke Adam für Deinen Hinweis, daß der Ölverbrauch zuvor in der Kodierung parametrisiert werden muss (ich hatte Dich diesbzgl. auch gefragt).
Die Eintragung über das Menü ist einfach, ABER die Frage ist wirklich welcher Wert muß genommen werden? An anderer Stelle gab es hier im Forum den Hinweis, daß der Heizungstechniker den (ungefähren) Ölverbrauch in Abhängigkeit der verwendeten Düsengröße, Druck und noch andere Parameter in diversen Tabellen ablesen kann. Mein Heizungstechniker darauf angesprochen, verneinte aber diesen Lösungsansatz und meinte nur durch ,,Auslitern" könnte man den Ölverbrauch ermitteln. Dieser Prozeß wäre aber sehr aufwändig und er selbst hat das in seinen 20-25 Jahren Berufserfahrung bisher nur einmal gemacht..... Gut, daß hab ich mir dann geschenkt. Ich werde es mit einem groben Nährungsansatz (i.V.m. KW-Leistung der Anlage, Wirkungsgrad usw.) versuchen und dann im zweiten Step mal ausklüngeln welcher Wert für die Kodierung ich verwenden muss.

Zurück zum Modul!    Daumen hoch! Grandiose Unterstützung von Dir!
Cubietruck-Prod: HM-LAN, Heizung, Rolläden, Schalter, Viessmann (optolink)
Cubietruck-DEV:
Fritzbox 7490

kvo1

Bernd + Adam

läuft bestens seit heute morgen , keine Meldung (wie bei Bernd)  :)

klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

kvo1

Hallo Bernd (@Adam)

Zitatsub VCONTROL_2ByteParse($$)
{
  my $hexvalue = shift;
  my $divisor = shift;

  #return hex(substr($hexvalue,2,2).substr($hexvalue,0,2))/$divisor;
  return unpack('s', pack('S',hex(substr($hexvalue,2,2).substr($hexvalue,0,2))))/$divisor;
}


bei kommen hier dann neg. Werte raus....
return unpack('s', pack('S',hex(substr($hexvalue,2,2).substr($hexvalue,0,2))))/$divisor;

BrennerStarts         -32519      2014-03-07 20:31:48
BrennerStartsDayStart    33007      2014-03-07 20:31:48
BrennerStartsToday      -65526      2014-03-07 20:31:48



  return hex(substr($hexvalue,2,2).substr($hexvalue,0,2))/$divisor;   "like Adam"

BrennerStarts         33017      2014-03-07 20:34:29
BrennerStartsDayStart   33007      2014-03-07 20:34:29
BrennerStartsToday        10              2014-03-07 20:34:29

Da bin ich mehr für die zweiter Variante !
Vielleicht kann das noch jemand gegenprüfen (auch mal fhem shutdown restart  bzw. get HEIZUNG config)

Groß
klaus
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

fischle

Hallo,
ich habe mir das mal angeschaut, in der 2-Byte Parse ist auf jeden Fall ein doppeltes "hex(..." vor substr
falsch:

return unpack('s', pack('S', hex(hex(substr($hexvalue,2,2).substr($hexvalue,0,2)))))/$divisor;

richtig

return unpack('s', pack('S', hex(substr($hexvalue,2,2).substr($hexvalue,0,2))))/$divisor;


@Klaus,
kannst du bei dir mal noch das große Logging anschalten und mir die HEX-Werte zu den falschen Umrechnungen geben? Dann versuche ich das auch mal noch nachzustellen.
RPi,
- USB RS485 Adapter für Stromzähler DRS155M und SDM630M-DC (B+G E-Tech)
- Viesmann KO2B Heizung mit selbstbau Optolink Adapter
- Mi-Light WiFi-Bridge V4, WW/CW LED-Birne

fischle

Hallo Klaus,
ich habe mir dein Problem auch noch mal angeschaut, wenn man sich den Datenbereich von 2 Byte anschaut, wird das logisch.

2 Byte (ohne Vorzeichen) gehen von 0 bis 65636
Wenn man das Vorzeichen mit dabei hat geht der Wertebereich von −32.768 bis 32.767.

Mit deinen 33017 Brennerstarts bis du schon über dem Wertebereich der vorzeichenbehafteten Zahl. Ich denke, man sollte einfach 2 Parse funktionen machen. Eines für vorzeichenbehaftete Zahlen und eines für Zahlen die nur positv werden können.
z.B.

2ByteS
2ByteU

(signed und unsigned)

Gruß

Fabian
RPi,
- USB RS485 Adapter für Stromzähler DRS155M und SDM630M-DC (B+G E-Tech)
- Viesmann KO2B Heizung mit selbstbau Optolink Adapter
- Mi-Light WiFi-Bridge V4, WW/CW LED-Birne