Modul zur Anbindung Viessmann Heizung (Vitotronic 200 KW1)

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

Vorheriges Thema - Nächstes Thema

Gunther

#195
mit "1" steht folgendes im Log:

2014.03.19 12:25:14 5: VCONTROL: Setze sendstr
2014.03.19 12:25:14 5: VCONTROL: send '01F7551E01'
2014.03.19 12:25:14 5: SW: �U
2014.03.19 12:25:14 5: VCONTROL_READ
2014.03.19 12:25:14 5: VCONTROL: VCONTROL_Read '00'
2014.03.19 12:25:14 5: VCONTROL: receive 'aktuelle_Stufe : 0'
2014.03.19 12:25:14 5: Triggering Viessmann (2 changes)
2014.03.19 12:25:14 5: Notify loop for Viessmann aktuelle_Stufe: 0


und

2014.03.19 12:28:17 5: VCONTROL: send '01F7551E01'
2014.03.19 12:28:17 5: SW: �U
2014.03.19 12:28:17 5: VCONTROL_READ
2014.03.19 12:28:17 5: VCONTROL: VCONTROL_Read '01'
2014.03.19 12:28:17 5: VCONTROL: receive 'aktuelle_Stufe : 1'
2014.03.19 12:28:17 5: Triggering Viessmann (2 changes)
2014.03.19 12:28:17 5: Notify loop for Viessmann aktuelle_Stufe: 1



Meine Vermutung dazu, dass der Brenner von Stufe 0 = aus auf die 1. der zwei möglichen Stufen springt (=Stufe 1). Würde der Brenner auf die höhere Stufe schalten, würde Stufe 2 angezeigt.

Der Brenner ist laut Log so geschaltet worden:

2014.03.19 12:24:40 5: VCONTROL: send '01F7084201'
2014.03.19 12:24:40 5: SW: �B
2014.03.19 12:24:40 5: VCONTROL_READ
2014.03.19 12:24:40 5: VCONTROL: VCONTROL_Read '00'
2014.03.19 12:24:40 5: VCONTROL: receive 'Brenner : off'
2014.03.19 12:24:40 5: Triggering Viessmann (1 changes)
2014.03.19 12:24:40 5: Notify loop for Viessmann Brenner: off

2014.03.19 12:27:40 5: VCONTROL: send '01F7084201'
2014.03.19 12:27:40 5: SW: �B
2014.03.19 12:27:40 5: VCONTROL_READ
2014.03.19 12:27:40 5: VCONTROL: VCONTROL_Read '01'
2014.03.19 12:27:40 5: VCONTROL: receive 'Brenner : on'
2014.03.19 12:27:40 5: Triggering Viessmann (1 changes)
2014.03.19 12:27:40 5: Notify loop for Viessmann Brenner: on

2014.03.19 12:30:46 5: VCONTROL: send '01F7084201'
2014.03.19 12:30:46 5: SW: �B
2014.03.19 12:30:46 5: VCONTROL_READ
2014.03.19 12:30:46 5: VCONTROL: VCONTROL_Read '01'
2014.03.19 12:30:46 5: VCONTROL: receive 'Brenner : on'
2014.03.19 12:30:46 5: Triggering Viessmann (1 changes)
2014.03.19 12:30:46 5: Notify loop for Viessmann Brenner: on


Sieht so aus, als wenn mit Zeitversatz geloggt wird. Die Frage ist, wie ich herausbekomme, ob das wirklich die Stufe ist und wie es bei Stufe 2 aussieht.
Wie bekomme ich das in die Readings. Musst Du etwas dafür tun?
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

Gunther

Beobachte mal weiter:

Brennerstufe:

2014.03.19 12:49:41 5: VCONTROL: receive 'aktuelle_Stufe : 1'
2014.03.19 12:50:57 5: VCONTROL: receive 'aktuelle_Stufe : 1'
2014.03.19 12:52:40 5: VCONTROL: receive 'aktuelle_Stufe : 0'
2014.03.19 12:53:58 5: VCONTROL: receive 'aktuelle_Stufe : 0'
2014.03.19 12:55:37 5: VCONTROL: receive 'aktuelle_Stufe : 0'
2014.03.19 12:56:53 5: VCONTROL: receive 'aktuelle_Stufe : 0'
2014.03.19 12:58:41 5: VCONTROL: receive 'aktuelle_Stufe : 0'
2014.03.19 13:00:03 5: VCONTROL: receive 'aktuelle_Stufe : 0'
2014.03.19 13:01:37 5: VCONTROL: receive 'aktuelle_Stufe : 0'
...
2014.03.19 13:11:53 5: VCONTROL: receive 'aktuelle_Stufe : 0'
2014.03.19 13:13:41 5: VCONTROL: receive 'aktuelle_Stufe : 1'
...
2014.03.19 13:17:58 5: VCONTROL: receive 'aktuelle_Stufe : 1'
2014.03.19 13:19:41 5: VCONTROL: receive 'aktuelle_Stufe : 0'
...
2014.03.19 13:26:54 5: VCONTROL: receive 'aktuelle_Stufe : 0'


Parallel dazu sieht der Zustand Brenner an und aus so aus:

2014.03.19 12:49:03 5: VCONTROL: receive 'Brenner : on'
...
2014.03.19 12:52:02 5: VCONTROL: receive 'Brenner : on'
2014.03.19 12:53:25 5: VCONTROL: receive 'Brenner : off'
...
2014.03.19 13:11:20 5: VCONTROL: receive 'Brenner : off'
2014.03.19 13:13:03 5: VCONTROL: receive 'Brenner : on'
...
2014.03.19 13:17:25 5: VCONTROL: receive 'Brenner : on'
2014.03.19 13:19:04 5: VCONTROL: receive 'Brenner : off'
...
2014.03.19 13:26:20 5: VCONTROL: receive 'Brenner : off'


Sieht schonmal gut aus. D.h. für mich, dass die aktuelle Stufe mit dem Brenner-Schaltzustand übereinstimmt.
Ich frage mich dazu gerade, ob ich durch Anheben der Raumtemperatur auf 30°C oder Anheben der Vorlauftemberatur den Brenner dazu bringe in die höhere Stufe zu springen. Habt Ihr dazu eine Idee?
Jetzt würde ich die Stufe natürlich gerne in die Readings bekommen. Wenn Du mir erklärst ob und wie ich das machen kann, tue ich das. Mehr als Copy&Paste ist ohne mein Perl-KnowHow allerdings nicht drin...  :P


Zwischendurch gibt es "unvollständige" (?) Logs:
2014.03.19 13:04:37 5: VCONTROL_READ
2014.03.19 13:04:37 5: VCONTROL: VCONTROL_Read '05'
2014.03.19 13:04:37 5: VCONTROL: Setze sendstr
2014.03.19 13:04:37 5: VCONTROL: send '01F7551E01'
2014.03.19 13:04:37 5: SW: �U
2014.03.19 13:04:37 5: SW: �


Ist das normal?
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

Gunther

Oh, gerade gesehen: Die aktuelle Stufe ist nun in den Readings... :-)

Versuche diese mal zu loggen und zu sehen, was passiert. Mir wären jetzt natürlich mal -10°C lieb um Stufe 2 zu testen...
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

Gunther

schon wieder ich:

Folgendes klappt und kann meiner Meinung nach in die cfg mit aufgenommen werden:


POLL, 01F7551E01, 1Byte , 1     , aktuelle_Stufe      , -
POLL, 01F7088604, 4Byte , 3600  , Stunden_Stufe_1     , day
POLL, 01F708A304, 4Byte , 3600  , Stunden_Stufe_2     , day


Die Readings sehen so aus:

Stunden_Stufe_1 4837.88 2014-03-19 14:57:27
Stunden_Stufe_1DayStart 4837.86 2014-03-19 14:57:27
Stunden_Stufe_1Today 0.02 2014-03-19 14:57:27
Stunden_Stufe_2 4.23 2014-03-19 14:57:30
Stunden_Stufe_2DayStart 4.23 2014-03-19 14:57:30
Stunden_Stufe_2Today 0.00 2014-03-19 14:57:30


Zur Erklärung. Bei meiner Vitotronik 300 KW3 (mit 22KW Kessel) gibt es zwei Brennerstufen. Die höhere wird anscheinend fast nie benötigt. Ich checke die Zahlen später mal an der Steuerung.
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

#199
Hallo Gunter,

ZitatFolgendes klappt und kann meiner Meinung nach in die cfg mit aufgenommen werden:
ja , aber nur in Deine  ;)

Die CFG - Datei ist ja genau dafür gemacht, das jeder SEINE Werte dort einträgt.... so is mein Verständnis ?
Nicht jeder hat zwei Brennerstufen.

Aber Du bist schon auf einem guten Weg  :D ... nur Mut zum Experimentieren und mehr GEDULD.
(ich sitz da schon Wochen ... wenn man das vcontrold - Thema mit zählt).

ZitatAnheben der Raumtemperatur auf 30°C
Das wäre meiner Frau ganz Recht  ;D

viel Spass und Glück weiterhin.

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

@Joachim

ZitatAktiven Hub dazwischen

läuft den ganzen Tag schon stabil  :D

Gibt es eine Alternative dazu .. anderes Netzgerät direkt irgendwo am RPi eingespeist ?
(muss mal googlen)

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

Joachim

Moin kvo1,
ZitatGibt es eine Alternative dazu .. anderes Netzgerät direkt irgendwo am RPi eingespeist ?

ja:
http://www.forum-raspberrypi.de/Thread-info-stromversorgung-raspberry-pi

Meiner hängt z.B. an einem alten ATX-Netzteil mit Einspeisung über die GPIO-Pins
http://developer-blog.net/hardware/raspberry-pi-gpio-schnittstelle-teil-1/

Vorteil:
- stabile Einspeisung
- genug Power für USB
- Designfehler MicroUSB und nachfolgende Sicherung umgangen
- diverse weitere Spannungen z.B. für Fritzbox, 1-Wire, usw. vorhanden

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Adam

Hallo Gunther,

ich war länger offline, aber wie ich sehe, hast Du Dich ja tapfer durchgekämpft  ;)

Hier noch ein paar Anmerkungen von mir:


  • ja das mit der Konfig Datei ist so gedacht wie Klaus es beschrieben hat,
    wir haben ja alle unterschiedliche Heizungsanlagen und da machen halt unterschiedliche Werte Sinn!

  • ZitatSieht so aus, als wenn mit Zeitversatz geloggt wird.
    Das Modul liest ja nach einem einstellbaren Intervall die Werte aus der Heizung aus,
    default mäßig alle 3 Minuten. Es ist ja nicht so, dass wenn sich in der Heizung ein Wert ändert, Du es im Modul direkt angezeigt bekommst.
    Es könnte Dir also auch passieren, dass Deine Heizung gerade auf Stufe 2 ist, aber das Modul gerade keine Werte ausliest.
    Und wenn es wieder welche liest, die Stufe wieder auf 1 ist!
    Du kannst natürlich das Intervall kleiner machen, musst aber aufpassen, wie lange denn ein Poll Vorgang dauert.
    Bei mir dauert ein Durchgang ca. 1 minute

  • Wenn Du einen neuen Wert in die Konfigdatei aufnimmst, dann muss man üblicherweise nach einem Poll Durchlauf
    den Browser aktualisieren, damit das neue Reading angezeit wird. Extra was dafür tun muss man nicht!


Gruß
Adam

Adam

#203
Hallo zusammen,

ich bin wieder mal ein bisschen fleissig gewesen und habe das Modul ein bisschen erweitert:


  • Es gibt eine neue Parse Methode: DateParse, die im Konfigfile mit date benutzt werden kann
    z.B. für die Systemzeit:
    POLL, 01F7088E08, date,   1     , SystemZeit          , -

  • In der Konfigdatei kann man nun auch selber SET Befehle konfigurieren

    - Die Zeile muss mit SET beginnen.
    - Danach kommt der Name den man bei einem set Befehl nutzen möchte.
    - Danach kommt die Adresse der Heizung, die mit 01F4 beginnen muss,
      gefolgt von den 2 Byte der eigentlichen Adresse
      und 1 Byte Angabe wieviel Byte der zu setzende Wert hat
    - Danach kommt die Angabe einer der Conv Methoden 1ByteConv,2ByteConv,DateConv
      je nach Typ -> 1Byte oder 2Byte oder date
    - Die letzte Spalte wird nicht genutzt und muss mit - angeben werden

    So zwei Beispiele:

    1. Setzen der Warm Wasser Soll Temperatur

    Konfigdatei:
    SET, WWTEMP  , 01F4630001  , 1Byte      , -

    Aufruf in Fhemweb:
    set <devicename> WWTEMP 55

    2. Setzen der Systemzeit

    Konfigdatei:
    SET, SYSTIME , 01F4088E08  , date       , -

    Aufruf in Fhemweb:
    set <devicename> SYSTIME 21.03.2014_21:35:00

    (Bei date muss das Format DD.MM.YYYY_HH:MM:SS eingehalten werden)

  • Der Monat in der Update-Time war bisher falsch, habe ich korrigiert

Wer es mal testen mag sehr gerne!!
Habe bei mir bereits diverse Werte verstellt.
Heizung läuft immer noch  ::)

Hier mal die Version, wenn Ihr mir positives Feedback gebt,
werde ich es dann wie üblich in den ersten Post stecken.

###Update 24.03.2014
Habe die Version in den ersten Post verschoben!

Gruß
Adam

fischle

Hallo Adam,
vielen Dank für die Fleissige Pflege des Moduls.

Meinst du, du wirst in dem Modul auch die Ölstandsberechnung irgendwann wieder mit aufnehmen?

Grüße

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

Adam

Hi Fabian,

ich habe sie in das allgemeine Modul nicht reingenommen, da der Oelstand ja nicht aus der Heizung auslesbar ist
und nicht alle eine Oelheizung haben.

Ich habe mir ein Dummy Oelstand angelegt,
diesem dann den Startwert gesetzt und mit einem Notify wird er dann automatisch gepflegt:


define Oelstand dummy

define oel.ntfy notify Heizung:OelverbrauchLastDay.* { \\
  my $newoel = $value{Oelstand} - $EVTPART1;;\\
  fhem "set Oelstand $newoel";;\\
}



Ansonsten müsste man sich was ausdenken woran das Modul weiss,
es dies pflegen sollte.

Bin mit der Lösung eigentlich zufrieden!?
Was sagst Du?

ReinerZ

Hallo Adam,

ich habe eine Ölheizung und mir eine entsprechende Hardware gebaut, damit ich den Heizölstand in Fhem einlesen kann.
Habe dazu das Protokoll vom USF100 Ultraschallsensor nachgebildet.
Läuft super und ich muss nicht mehr selber messen :-)

Näheres unter ...
http://www.fhemwiki.de/wiki/Ultraschallsensor_f%C3%BCr_Heiz%C3%B6ltank_mit_USF1000_Emulation

Gruß

Reiner

ReinerZ

Hallo Adam,

die Set Kommandos (zumindest  die ersten 7) kann man doch auch via setList state:AUS,HWW,WW,P-ON ... auswählen.
Wie ist denn da die Zuordnung zum cfg File ?  Würde gerne meinen separaten Heizkreis fürs Wohnzimmer auch auswählen können.

Geht das nicht, bei WWTEMP für die Temperatur noch einen Slider einzubauen und auch in setlist einzubauen ?

Gruß

Reiner


SET, WW      , 01F423010100, state      , -
SET, HWW     , 01F423010103, state      , -
SET, ABSCHALT, 01F423010105, state      , -
SET, S-OFF   , 01F423020100, state_spar , -
SET, S-ON    , 01F423020101, state_spar , P-OFF
SET, P-OFF   , 01F423030100, state_party, -
SET, P-ON    , 01F423030101, state_party, S-OFF
SET, WWTEMP  , 01F4630001  , 1Byte      , -
SET, K26     , 01F4572602  , 2Byte      , -
SET, URLON   , 01F4230908  , date       , -
SET, URLOFF  , 01F4231108  , date       , -
SET, SYSTIME , 01F4088E08  , date       , -
# Wohnzimmer M2
SET, WW_WZ   , 01F433010100, state_WZ   , -
SET, HWW_WZ  , 01F433010103, state_WZ   , -
SET, ABSCHALT_WZ, 01F433010105, state_WZ    , -
SET, S-OFF_WZ, 01F433020100, state_spar_WZ  , -
SET, S-ON_WZ , 01F433020101, state_spar_WZ  , P-OFF_WZ
SET, P-OFF_WZ, 01F433030100, state_party_WZ , -
SET, P-ON_WZ , 01F433030101, state_party_WZ , S-OFF_WZ


Adam

Hi Reiner,

Danke für den Link mit der Oelstandsmessung muss ich mir mal in ruhiger Stunde genauer anschauen.

Also wenn Du SET Kommandos hast, die im Prinzip vollständig sind,
also es muss z.B. kein Temperatur Wert mit übergeben werden,
dann ist beim SET die 4. Spalte in der Konfigdatei egal,
da nichts mehr Konvertiert werden muss.
(Da kannst Du alles hinschreiben ausser 1Byte,2Byte oder date)

also z.B.
SET, WW_WZ   , 01F433010100, state_WZ   , -

Damit Du dies dann im Reading state_WZ erhälst,
musst Du noch ein entsprechendes POLL Kommando mit Reading state_WZ erstellen:

also z.B.

POLL, 01F7330101, 1Byte,  state , state_WZ   , -

und wenn Du WW_WZ in die Setlist mit aufnimmst kannst Du im Web dann auch auswählen!!
So sollte es eigentlich funktionieren.

Wie das mit den Slidern funktioniert weiss ich nicht so genau!
Muss man sich mal anschauen.

ReinerZ

Wie findet dann von setList state:AUS,HWW,WW, ...
die Zuordung zu

SET, WW      , 01F423010100, state      , -
SET, HWW     , 01F423010103, state      , -
SET, ABSCHALT, 01F423010105, state      , -

statt?

Die Namen und die Reihenfolge ist doch anders ...

Woher weis der Menüpunkt unter Setlist state AUS, dass ABSCHALT auszuführen ist ?