Modul zur Anbindung Viessmann Heizung (Vitotronic 200 KW1)

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

Vorheriges Thema - Nächstes Thema

Bastelbernd

Hallo Reiner
du hast recht.Habe so etwas ähnliches für meine MICROSPS geschrieben.
Sende aber nur einen String und die MICROSPS sendet mir die Antwort in einem String zurück,
schreibt die Readings in ein Dummy und schließt das Device wieder.
# microsps
sub
msps
{

use IO::Socket::INET;

my ($socket,$client_socket);
$socket = new IO::Socket::INET (
    PeerHost => '192.168.178.1',
    PeerPort => '3001',
    Proto => 'tcp',
) or die "ERROR in Socket Creation : $!\n";

#print "TCP Connection Success.\n";
my ($datas,$data,$Tuu1,$Tuu2,$Tuu3);
# send MICROSPS command getdevices
$datas = ":aa1056000B006401a5\r\n";
$socket->send($datas);
sleep (2);

$socket->recv($data,1024);
my $datar = substr($data,10,52);
$datar =~ s/\s+//g;
my ($T1,$T2,$T3,$T4,$T5,$W1,$W2,$Tu1,$Tu2,$Tu3)= split(',', $datar, 10);

#print "Received from Server : $datar\n";
#print "T2 : $T2\n";
if ($Tu1 == 1) {
$Tuu1 = "auf";
}
else {
$Tuu1 = "zu";
}

if ($Tu2 == 1) {
$Tuu2 = "auf";
}
else {
$Tuu2 = "zu";
}

if ($Tu3 == 1) {
$Tuu3 = "auf";
}
else {
$Tuu3 = "zu";
}
fhem "set microsp $datar";
fhem "setreading microsp T1 $T1";
fhem "setreading microsp T2 $T2";
fhem "setreading microsp T3 $T3";
fhem "setreading microsp T4 $T4";
fhem "setreading microsp T5 $T5";
fhem "setreading microsp W1 $W1";
fhem "setreading microsp W2 $W2";
fhem "setreading microsp Tuer1 $Tuu1";
fhem "setreading microsp Tuer2 $Tuu2";
fhem "setreading microsp Tuer3 $Tuu3";
$socket->close();

#print "socket closed\n";
return undef;
}
1;

so etwa könnte man das auch hier machen.Müßte man irgendwie in das Modul  schreiben.
Aber leider fehlt  mir da noch die Erfahrung so etwas zu schreiben.
Vielleicht hat Adam dazu noch eine Idee.
PS. Bis jetzt lauft das Modul fehlerfrei. :D

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

Adam

Hallo Bernd, Hallo Reiner,

das microsps Beispiel ist für ein FHEM Modul schon zu tief!

Man sollte besser das FHEM Framework nutzen, sprich Devio.pm Routinen, den Rest macht dann fhem.pl für einen.
Ich habe mir das immer in anderen Modulen abgeschaut, bzw in Devio.pm selber.

Das dürfte eigentlich nicht so schwierig sein, ich schaue es mir an, wenn ich Zeit habe.
Ich kann aber nicht testen, ich habe nur ein USB Device!

Gruß
Adam

Adam

Hallo zusammen,

ich habe das Modul nun auch auf Log3 umgestellt.

Die Routine VCONTROL_3ByteParse() habe ich in VCONTROL_2BytePercentParse() umbenannt und muss dann mit dem String
"2BytePercent" für ein Commando angeben werden.

Ich finde es passender, da es ja auch nur 2 Byte sind! Wer es nutzt müsste es also umbenennen.
Ich hoffe das ist für Euch OK.

Aktuelles Modul wie immer im ersten Post, aktualisiert.

Adam

Hallo Reiner, Hallo Bernd

und alle die mal die LAN Variante probieren wollen.

Ob es wirklich so einfach ist, wie ich mir das denke weiß ich nicht?  :-\
Das müsstet Ihr bitte mal probieren, ich habe nur einen USB Adapter.

Mit der hier angehängten Version kann man es dann mal probieren mit :

define <name> VCONTROL IP:Port [<intervall>]

Da bin ich mal gespannt.

kvo1

Hallo Adam

Du bist ja echt schnell  ;)
Leider muß ich hier in Ermangelung entsprechender Hardware vorerst passen.
Aber Deinen Version von heute (Log3) werde ich heute noch einspielen / testen.

klaus

@Reiner
Zitat... aber ist dieses Modul nicht der Hammer :-)
definitiv !
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,

bist wirklich schnell.Werde LAN-Variante morgen mal testen.
Die andere Version von Heute lauft bis jetzt perfekt. :D

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

fischle

Hallo,
bei der Suche nach der Ursache, warum meine Tageswerte nicht aktualisiert werden, ist mir aufgefallen, dass manchmal nicht die komplette Antwort eingelesen wird - daraus resultiert, dass die Werte nicht korrekt umgerechnet werden. Wie man sieht, wurden die letzten beiden 00 erst bei der zweiten Abfrage eingelesen.

Ich vermute, dass nach der Anfrage zu schnell der Puffer des USB-Seriell Wandlers ausgelesen wurde (und noch nicht alle Daten da waren). Die wurden dann verarbeitet - natürlich ohne Erfolg. Ist es möglich, dass nach dem Anfragen von Daten eine gewissen Mindest-Zeit gewartet wird, bis der Puffer ausgelesen wird?


2014.03.04 00:01:01 5: VCONTROL: VCONTROL_Read '05'
2014.03.04 00:01:01 5: VCONTROL: send '01F7757404'
2014.03.04 00:01:01 5: SW: ÷ut
2014.03.04 00:01:01 5: VCONTROL_READ
2014.03.04 00:01:01 5: VCONTROL: VCONTROL_Read 'e62200'
2014.03.04 00:01:01 5: VCONTROL: receive 'OelverbrauchGesamt : '
2014.03.04 00:01:01 5: VCONTROL_READ
2014.03.04 00:01:01 5: VCONTROL: VCONTROL_Read '00'
2014.03.04 00:01:04 5: VCONTROL_READ
2014.03.04 00:01:04 5: VCONTROL: VCONTROL_Read '05'
2014.03.04 00:01:04 5: VCONTROL: send '01F7651501'
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

kvo1

Hallo Adam,

augenscheinlich läuft das (was ich so auf die Schnelle testen konnte)...
habe mal die LOG´s hochgedreht .... kann das nicht wirklich deuten... das Fehler
2014.03.05 00:24:09 5: VCONTROL_READ
2014.03.05 00:24:09 5: VCONTROL: VCONTROL_Read '05'
2014.03.05 00:24:09 5: VCONTROL: send '01F7088A02'
2014.03.05 00:24:09 5: SW: ��
2014.03.05 00:24:09 5: VCONTROL_READ
2014.03.05 00:24:09 5: VCONTROL: VCONTROL_Read 'c3'
2014.03.05 00:24:09 5: VCONTROL: VCONTROL_Read receive_len < 4, c3
2014.03.05 00:24:09 5: VCONTROL_READ
2014.03.05 00:24:09 5: VCONTROL: VCONTROL_Read '80'
2014.03.05 00:24:09 5: VCONTROL: receive 'BrennerStarts : 32963'
2014.03.05 00:24:12 5: VCONTROL_READ
2014.03.05 00:24:12 5: VCONTROL: VCONTROL_Read '05'
2014.03.05 00:24:12 5: VCONTROL: send '01F7A38F01'
2014.03.05 00:24:12 5: SW: ���
2014.03.05 00:24:12 5: VCONTROL_READ
2014.03.05 00:24:12 5: VCONTROL: VCONTROL_Read '00'
2014.03.05 00:24:12 5: VCONTROL: receive 'BrennerLeistung : 0'
2014.03.05 00:24:15 5: VCONTROL_READ
2014.03.05 00:24:15 5: VCONTROL: VCONTROL_Read '05'
2014.03.05 00:24:15 5: VCONTROL: send '01F7766002'
2014.03.05 00:24:15 5: SW: �v`
2014.03.05 00:24:15 5: VCONTROL_READ
2014.03.05 00:24:15 5: VCONTROL: VCONTROL_Read '00'
2014.03.05 00:24:15 5: VCONTROL: VCONTROL_Read receive_len < 4, 00
2014.03.05 00:24:15 5: VCONTROL_READ
2014.03.05 00:24:15 5: VCONTROL: VCONTROL_Read '00'
2014.03.05 00:24:15 5: VCONTROL: receive 'PumpeDrehzahl : '
2014.03.05 00:24:18 5: VCONTROL_READ
2014.03.05 00:24:18 5: VCONTROL: VCONTROL_Read '05'
2014.03.05 00:24:18 5: VCONTROL: send '01F7230101'
2014.03.05 00:24:18 5: SW: �#
2014.03.05 00:24:18 5: VCONTROL_READ
2014.03.05 00:24:18 5: VCONTROL: VCONTROL_Read '04'
2014.03.05 00:24:18 5: VCONTROL: receive 'state : H+WW FS'
2014.03.05 00:24:21 5: VCONTROL_READ
2014.03.05 00:24:21 5: VCONTROL: VCONTROL_Read '05'
2014.03.05 00:24:21 5: VCONTROL: send '01F7230301'
2014.03.05 00:24:21 5: SW: �#
2014.03.05 00:24:21 5: VCONTROL_READ
2014.03.05 00:24:21 5: VCONTROL: VCONTROL_Read '00'
2014.03.05 00:24:21 5: VCONTROL: receive 'state_party : off'
2014.03.05 00:24:24 5: VCONTROL_READ
2014.03.05 00:24:24 5: VCONTROL: VCONTROL_Read '05'
2014.03.05 00:24:24 5: VCONTROL: send '01F7230201'

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 Fischle,

es sieht mir so aus, als hättest Du meinen Patch mit dem "PARTIAL" nicht eingespielt!?

Wenn im ersten Rutsch also Read nicht alle Bytes empfangen werden,
müsste ein Log wie bei Klaus zu sehen sein, dass die receive_len kleiner als die Anzahl zu erwarteten Bytes ist.
Beispiel:

2014.03.05 00:24:09 5: VCONTROL: VCONTROL_Read receive_len < 4, c3

Dann wird noch ein Read gemacht und die Bytes aneinander gehangen.

Das fehlt mir in Deinem Log!?
Ich kann bei mir erstmal keinen Fehler finden/nachstellen.
Kannst Du Deine Version noch mal gegen die aktuelle aus dem ersten Post vergleichen.

@Klaus: so sieht das gut aus!

Danke, Adam

kvo1

Hi Adam,

Zitat2014.03.05 00:24:09 5: VCONTROL: VCONTROL_Read '05'
2014.03.05 00:24:09 5: VCONTROL: send '01F7088A02'
2014.03.05 00:24:09 5: SW: ��
2014.03.05 00:24:09 5: VCONTROL_READ
2014.03.05 00:24:09 5: VCONTROL: VCONTROL_Read 'c3'
2014.03.05 00:24:09 5: VCONTROL: VCONTROL_Read receive_len < 4, c3
2014.03.05 00:24:09 5: VCONTROL_READ
2014.03.05 00:24:09 5: VCONTROL: VCONTROL_Read '80'
2014.03.05 00:24:09 5: VCONTROL: receive 'BrennerStarts : 32963'

bedeutet das, dass
auf die Abfrage der adresse 088A nur c3 zurückkommt , dann nochmal gefragt wird und 80 zurückkommt
Daraus wird dann c380 = 32963  Brennerstarts ???

EDIT
ich glaube ich habe hier eine falsche Länge (Anzahl Byte ) müßte wohl 4 sein ?
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

Zitatbedeutet das, dass
auf die Abfrage der adresse 088A nur c3 zurückkommt , dann nochmal gefragt wird und 80 zurückkommt
Daraus wird dann c380 = 32963  Brennerstarts

Ja das stimmt!
Das ist die Anzahl der Brennerstarts, die Deine Heizung in Ihrem Leben bereits gemacht hat.
Einen anderen Wert liefert die Heizung nicht.

Deswegen gibt es einen täglichen Startwert, um ständig die Differenz zu ermitteln und somit einen aktuellen Tageswert!

Da ich den empfangenen String entpacke, werden aus den 2Byte dann 4 Zeichen und das Modul wartet bis es 4 Zeichen zusammen hat.
(VCONTROL_Read receive_len < 4, c3)

Gruß
Adam

ReinerZ

Hallo Adam,

die LAN Variante kann ich leider erst am Wochenende testen, Dienstreise :-( ...
Hatte mir schon DEVIO und ZWDongle angesehen, um die VCONTROL anzupassen.

Da warst Du jetzt deutlich schneller, besten Dank :-)

Gruß

Reiner

kvo1

Hallo Adam

laut http://openv.wikispaces.com/Adressen

müßte doch für die Brennerstart (auf Adr. 0x088A)  4 Byte sein.

Dann müßte doch im Log statt ..........send '01F7088A02'

send '01F7088A04' stehen ...

also (m)ein Konfigfehler ??

oder steh ich auf der Leitung ?
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

Jetzt verstehe ich unser Dilemma  ::)

Habe aber leider keine Lösung,
ich bin nämlich nach der vcontrol.xml Datei gegangen, die bei mir funktioniert

und da steht drin:


<command name='getBrennerStarts' protocmd='getaddr'>
             <addr>088A</addr>
             <len>2</len>
             <unit>CO</unit>
             <description>Ermittle die Brennerstarts</description>
</command>


Müsste man vielleicht mal ausprobieren, was denn für zusätzliche 2 Byte von der Heizung kommen,
wenn man 4 abfragt!?

Wenn ich mir die Plots aber anschaue, und dort mal zähle wie oft der Brenner auf on steht,
dann passt das zumindest zu der Differenz, die das Modul bisher ermittelt !?

fischle

Hallo Adam,
danke für die schnelle Rückantwort, ich habe in der tat noch eine ältere Version des Moduls, werde heute Abend mal zusammenmergen.
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