Seite in Bearbeitung - hier entsteht eine Schritt-für-Schritt-Anleitung mit aktuellem build von v-controld.
An dieser Stelle ein ganz herzliches Dankeschön in die Schweiz! Ohne die Hilfe mit den Adressen wäre mancher zusätzliche Abend versaut gewesen ;-)

Offene / zu prüfende Punkte in rot.
Stand 30.07.2014 ceteris paribus
30.07.2014

30.07.2014 update von vito.xml - Set-Befehle und Get-Befehle für KA6 und KA7 und KA8 eingefügt
KA6 Erweiterte Sparschaltung
KA7 Mischersparfunktion
KA8 Heizkreis mit Mischer M2 bewirkt Anforderung auf interne Umwälzpumpe

14.01.2013 update von vito.xml - Set-Befehle und Get-Befehle für FA und FB M2 eingefügt
getKFAM2 setKFAM2 "KFA_KonfiUeberhoehungVTSollM2" 0-50%
getKFBM2 setKFBM2 "KFB_KonfiDauerUeberhoehungVTSollM2" 0-300 Minuten

13.10.2012 update von vito.xml - Set-Befehle für Raumsoll M2 Adressen korrigiert und für M1 eingefügt
04.10.2012 update von vito.xml - Befehl "setUmschaltventil" eingefügt

20.01.2012 Neue version von vcontrold und vclient.exe (0.98)
14.11.2011 update von vito.xml - Befehl "getKA3_KonfiFrostgrenzeM1_GWG" eingefügt (Codierung 2 Parameter A3)
update von vito.xml - Befehl "setKA3_KonfiFrostgrenzeM1_GWG" eingefügt (Codierung 2 Parameter A3)

27.10.2011 update von vito.xml - Befehl "getAnlagenschema" eingefügt
27.10.2011 update von vito.xml - Units für Niveau M1 berichtigt
26.10.2011 update von vito.xml - Adressen für Niveau M1und Neigung M1 für Device 20CB VScotHO1 ergänzt

Inhaltsverzeichnis:

  • Beschreibung
    • Vcontrold
    • XML-Konfiguration & Standardpfade
    • Voraussetzungen



  • Installationsanleitung
  1. cygwin installieren
  2. cygwin konfigurieren
  3. Path in Windows editieren (cygwin hinzufügen)
  4. vcontrold-Verzeichnis aufbauen
  5. rrd-Datenbank erzeugen
  6. Manuel testen
  7. automatischen Betrieb mit Scheduler einrichten
  8. Watchdog für vcontrold und wichtige Dienste.

  • Visualisierung mit Apachen und rrd einrichten


  • Fehlersuche und "Stolperfallen".


Beschreibung vcontrold - Daemon für Vito Kommunikation


vcontrold ist ein in C geschriebener Daemon, der die Kommunikation mit der Vito-Steuerung übernimmt.
Die Konfiguration erfolgt über XML-Dateien.
Der Daemon bietet eine ASCII-Socketschnittstelle, die mit telnet oder dem vclient (Erklärung) Programm angespochen werden kann.

Hier der Abzug des Archivs mit vcontrold.exe und vlient.exe vom 20.01.2012 zum direkten Download:


Hier der Abzug des Archivs mit vcontrold.exe und vlient.exe vom 28.09.2011 zum direkten Download:

Der Quelltext kann im SVN heruntergeladen werden. SVN

Die Konfiguration des Programms wird in zwei XML-Dateien vorgenommen:

vcontrold.xml : Programmspezifische Definitionen
vito.xml: Definition der Kommandos und Devices.
Der Standardpfad für diese Dateien ist der Ordner, in dem auch die vcontrold.exe liegt. Zum Beispiel C:\vcontrold.


XML-Dateien (vito.xml und vcontrold.xml)
(getestet bei Vitotronic 200 VScotHO1und Vitotronic 200KW1)
Achtung richtiges Device muss in vcontrold.xml manuell gesetzt werden, Voreinstellung derzeit 20CB =
Vitotronic 200 VScotHO1


Stand 30.07.2014 update von vito.xml - Set-Befehle und Get-Befehle für
KA6 Erweiterte Sparschaltung
KA7 Mischersparfunktion
KA8 Heizkreis mit Mischer M2 bewirkt Anforderung auf interne Umwälzpumpe
eingefügt


Stand 14.01.2013 update von vito.xml - Set-Befehle und Get-Befehle für FAund FB M2 eingefügt
getKFAM2 setKFAM2 "KFA_KonfiUeberhoehungVTSollM2" 0-50%
getKFBM2 setKFBM2 "KFB_KonfiDauerUeberhoehungVTSollM2" 0-300 Minuten


Stand 13.10.2012
update von vito.xml -Set-Befehle für Raumsoll M2 Adressen korrigiert und für M1 eingefügt


Stand 04.10.2012
update von vito.xml - Befehl "setUmschaltventil" eingefügt Aufgrund dieses Threads angepasst


Stand vom 14.11.2011
update von vito.xml - Befehl "getKA3_KonfiFrostgrenzeM1_GWG" eingefügt (Codierung 2 Parameter A3)
update von vito.xml - Befehl "setKA3_KonfiFrostgrenzeM1_GWG" eingefügt (Codierung 2 Parameter A3)


Stand vom 27.10.2011
27.10.2011 update von vito.xml - Befehl "getAnlagenschema" eingefügt
27.10.2011 update von vito.xml - Units für Niveau M1 berichtigt




Voraussetzungen:

  • Hardware, am besten ein Notebook mit geringem Stromverbrauch und gutem Akku. (Getestet ist alles Beschriebene auf 2 Panasonic Toughbooks CF72 mit jeweils Intel PIII 843 MHz und 384MB RAM.)
  • Internetzugang
  • Ein Router der Dyndns unterstützt (z.B. Fritz Box)
  • Dnydns-Client (und Konto)
  • Feste IP-Adresse des Servers eingestellt<serveradresse> Netzwerkkarte einstellen
  • Optolink-Adapter
  • Etwas Geduld und Ruhe um Schritt für Schritt das ganze aufzubauen. (Wenn was klemmt, ruhig mal einen Tag Pause einlegen).


Nomenklatur:
<serveradresse> (IP-Adresse des PC auf dem der vcontrold-Deamon läuft)*
<clientadresse> (IP-Adresse des PC auf dem der vclient läuft)*

  • bei mir laufen Server und Clientkomponenten alle auf einem Blech! Das spart Strom.



INSTALLATIONSANLEITUNG:

1. cygwin runterladen und installieren.
zusätzlich zum Standart benötigte Pakete: cygrunsrv und libxml2

2. cygserver einrichten:
dazu cygwin starten und eingeben:
  • cygserver-config alle Fragen mit ja beantworten.
überprüfen ob der Server läuft mit
  • net start | grep cyg
  • CYGWIN cygserver <--- das ist die ausgabe wenn der server gestartet ist ansonsten mit
  • net start cygserver cygserver starten. (das kann man auch in der Systemsteuerung machen unter Verwaltung->Dienste da taucht der cygserver dann natürlich auch auf)
<Funktionstest>
3. Path in Windows editieren
wie hier beschrieben: http://vlaurie.com/computers2/Articles/environment.htm
den Pfad zum cygwin\bin Verzeichnis hinzufügen:
zum Beispiel C:\cygwin\bin

Bisher nur getestet unter Windows XP, andere sollten auch laufen, vorausgesetzt Cygwin wird unterstützt.

vcontrold-Verzeichnis aufbauen:

1. Verzeichnis C:\vcontrold anlegen.

2. die beiden Zip-Dateien von oben:
  • vcontrold-v0.98.zip
  • <DATUM>_vito.zip
ins Verzeichnis C:\vcontrold entpacken.

die Devices sind ganz oben in der Vito.xml gelistet:
<vito>
<devices>
<device ID="2098" name="V200KW2" protocol="KW2"/>
<device ID="2053" name="GWG_VBEM" protocol="GWG"/>
<device ID="20CB" name="VScotHO1" protocol="KW2"/>
<device ID="2094" name="V200KW1" protocol="KW2"/>
</devices>

Adressen / Netzwerksegment und Device in der vcontrold.xml anpassen:

vcontrold.xml

<config>
<serial>
<tty>/dev/ttyS0</tty>
</serial>
<net>
<port>3002</port>
<allow ip='127.0.0.1'/>
<allow ip='192.167.40.0/24'/>
</net>
<logging>
<file>vcontrold.log</file>
<syslog>n</syslog>
<debug>n</debug>
</logging>
<device ID="20CB"/>
</config>



Funtionstest: Command-Fenster öffnen und Pfad nach C:\vcontrold setzen:
cd C:\vcontrold
Deamon starten
Zweites Command-Fenster öffnen und Pfad nach C:\vcontrold setzen:
vclient.exe starten mit Befehl:

vclient -h 127.0.0.1:3002 -c 'getDevType'

(<serveradresse> entsprechend anpassen)

3. rrdtool runterladenund ins Verzeichnis C:\vcontrold extrahieren.

Im vcontrold-Verzeichnis befinden sich am Ende:
    • die vcontrold.exe (von dieser Seite)
    • vclient.exe (von dieser Seite)
    • vcontrold.xml (von dieser Seite)
    • vito.xml (von dieser Seite)
    • rrdupdate.exe
    • rrdcgi.exe

4. Die Batchdateien für Erzeugung und Betrieb der rrd-Datenbank ins Verzeichnis C:\vcontrold extrahieren.


rrd-Datenbank

Hierzu muß man die Zusammenhänge zwischen den Dateien verstehen.

3 (4) Dateien sind hier wichtig :

1. vc-command.txt ist die Liste der Befehle die man aufrufen möchte.
getTempA
getTempAged
getTempWWist
getTempWWsoll
getTempKsoll
getTempKist
getTempAbgas
getTempVLsollM2
getTempVListM2
getTempKol
getTempStp
getTempSpu
getTempRaumNorSollM2
getTempRaumRedSollM2
getBrennerStarts
getBrennerStunden1
unit off
getBetriebArt
getBetriebArtM2
unit on
getLeistungIst
getSolarStunden
getSolarLeistung
getPumpeStatusIntern
getPumpeStatusM2
getPumpeStatusSp
getPumpeStatusZirku
getPumpeStatusSolar
getExtSperren
getNeigungM2
getNiveauM2
getSystemTime

2. rrd-update.tmpl. ist das template mit dem Befehl und den Variablen um später die definierte Datenbank zu füttern (update)
es handelt sich um einen "Einzeiler"
rrdtool update vito.rrd N:$1:$2:$3:$4:$5:$6:$7:$8:$9:$10:$11:$12:$13:$14:$15:$16:$18:$19:$21:$22:$23:$24:$25:$26:$27:$28:$29:$30:$31:$32


Der Zusammenhang zwischen Datei 1 und 2 ist im Bild dargestellt, bitte mit rechter Maustaste in neuem Fenster öffnen!


3. der batch zum Erzeugen der datenbank selbst

CreateVitorrd_Step180.bat

4. die dynamisch erzeugte Update-Datei

update.bat




erzeugen:


rrd:

Zunächst sollte man sich klar machen, was man darstellen möchte und wie rrd die Datenpunkte verwurstet.
<hier noch genauere Angaben mit spezifischen Beispielen , z.B. AT alle 5 Minuten, MIN, MAX usw.>

RRA:
CF
xff
step
rows
Auflösung in Sec
Auflösung in h
Auflösung in d
Länge
Insgesamt Tage

AVERAGE

30
1
3600
1
0,041666667
1
0,04

MINIMUM

360
1
43200
12
0,5
1
0,5

MAXIMUM

720
1
86400
24
1
1
1

LAST

720
31
86400
24
1
31
31



720
365
86400
24
1
365
365



1440
31
172800
48
2
31
62



2160
30
259200
72
3
30
90

































Hier ist Step die Azahl RDPs (rawdatapoints, die einen cdp consolidated datapoint bilden)





rows ist die Anzahl CDPs die gehalten werden





Rem RRA:AVERAGE:0.5:720:31 720 Werte (alle 120 Sekunden) 720x120 = 1Tag werden im Schnitt zu einem ConsolidatedDataPoint CDP verarbeitet
Rem Anwendung durchschnittliche Tagestemperatur.Einen Monat lang


Zwischen den beiden Linien folgt der Text für ein Batch zum Erzeugen von vito.rrd
" ^" ist Zeilenumbruch


rrdtool create vito.rrd --step 120 ^
DS:TempA:GAUGE:180:-50:100 ^
DS:TempAged:GAUGE:180:-50:100 ^
DS:TempWWist:GAUGE:180:0:100 ^
DS:TempWWsoll:GAUGE:180:0:100 ^
DS:TempKsoll:GAUGE:180:0:100 ^
DS:TempKist:GAUGE:180:0:100 ^
DS:TempAbgas:GAUGE:180:0:100 ^
DS:TempVLsollM2:GAUGE:180:0:100 ^
DS:TempVListM2:GAUGE:180:0:100 ^
DS:TempKol:GAUGE:180:-50:200 ^
DS:TempStp:GAUGE:180:0:100 ^
DS:TempSpu:GAUGE:180:0:100 ^
DS:TempRaumNorSollM2:GAUGE:180:0:100 ^
DS:TempRaumRedSollM2:GAUGE:180:0:100 ^
DS:BrennerStarts:GAUGE:180:0:1000000 ^
DS:BrennerStunden1:GAUGE:180:0:1000000 ^
DS:BetriebArt:GAUGE:180:0:5 ^
DS:BetriebArtM2:GAUGE:180:0:5 ^
DS:LeistungIst:GAUGE:180:0:100 ^
DS:SolarStunden:GAUGE:180:0:1000000 ^
DS:SolarLeistung:GAUGE:180:0:1000000 ^
DS:PumpeStatusIntern:GAUGE:180:0:10 ^
DS:PumpeStatusM2:GAUGE:180:0:10 ^
DS:PumpeStatusSp:GAUGE:180:0:10 ^
DS:PumpeStatusZirku:GAUGE:180:0:10 ^
DS:PumpeStatusSolar:GAUGE:180:0:10 ^
DS:ExtSperren:GAUGE:180:0:10 ^
DS:NeigungM2:GAUGE:180:0:10 ^
DS:NiveauM2:GAUGE:180:0:10 ^
DS:SystemTime:GAUGE:180:0:1000000 ^
RRA:LAST:0.5:1:2880 ^
RRA:AVERAGE:0.5:3:720 ^
RRA:AVERAGE:0.5:720:31 ^
RRA:MIN:0.5:12:2880 ^
RRA:MAX:0.5:12:2880 ^
RRA:AVERAGE:0.5:12:2880
RRA:MAX:0.5:180:365 ^

rem RRA:AVERAGE:0.5:720:31 720 Werte (alle 120 Sekunden) 720x120 = 1Tag werden im Schnitt zu einem ConsolidatedDataPoint CDP verarbeitet
Rem Anwendung durchschnittliche Tagestemperatur.Einen Monat lang
pause


<last update 04.10.2012>

Manuel testen

Nachdem die datenbank erzeugt wurde, lässt man einige male den update-batch laufen.
Je nach Wahl der RRA kann es einge Durchläufe dauern, bis im Diagramm Werte angezeigt und Kurven gezeichnet werden.


lesen diverser Werte
vclient -h 127.0.0.1:3002 -c 'getNiveauM1'
vclient -h 127.0.0.1:3002 -c 'getNeigungM1'
vclient -h 127.0.0.1:3002 -c 'getNeigungM2'
vclient -h 127.0.0.1:3002 -c 'getNiveauM2'
vclient -h 127.0.0.1:3002 -c 'getDevType'
vclient -h 127.0.0.1:3002 -c 'getAnlagenschema'
vclient -h 127.0.0.1:3002 -c 'getUmschaltventil'

setzen der WW-SollTemperatur mit debug modus=on
vclient -h 127.0.0.1:3002 -c 'detail setTempWWsoll,debug on,setTempWWsoll 52.0'
<hier noch geneuere Angaben zu den Ergebnissen, Output>

automatischen Betrieb mit Scheduler einrichten:

Weil man ja nicht die ganze Zeit klicken will, kann man den Betrieb automatisieren.
Ein freies Tool hierzu ist System Scheduler Wincron.

<hier noch geneuere Angaben mit spezifischen Beispielen welche Jobs wie oft.>
Ich lese alle 1-2 Minuten aus, da muß man probieren, was die Steuerung hergibt.


Visualisierung mit Apachen und rrd einrichten:

Installationspaket unter Apche herunterladen.
Installation starten.
Zielverzeichnis ändern zu C:\Apache (Keine Leerzeichen wg. batchbetrieb!)

htdocs Verzeichnis




Fehlersuche und "Stolperfallen":

§1 Sage Dir immer "Es kommt von UNIX her " das heißt Groß-/Kleinschreibung bei Befehlen und Kommandos beachten.
getWWtemp <>getWwtemp<>getwwtemp<>getWWTemp<>getwWtemp

§2 in den batch-Dateien für rrd müssen Formatierungen und Zeilenumbrüche eingehalten werden.

§3 Eine Zwangstrennung des Routers erzeugt eine Lücke, wenn vclient.exe über das Netz (z.B. 192.168.178.1) geht anstatt über Loopback-Adresse 127.0.0.1 mit dem Deamon zu kommunizieren.

§4 wenn ein Set-Irgendwas abgesetzt wird, muß dahinter auch das Makro setaddress stehen. get mit getaddress, set mit setaddress. Passiert beim kopieren von Get-Befehlen und anschliessendem umfrickeln zu set schonmal.
___

Ein kill -1 <pid> bewirkt ein Neuladen der XML Dateien. Dies dient zum Laden geänderter Befehle und Protokolle, jedoch wird der Abschnitt <unix> nicht neu eingelesen.



Aufruf:
vcontrold [-x xml-file] [-d <device>] [-l <logfile>] [-p port] [-s] [-n] [-i] [-g]
-x Pfad zur XML Konfigurationsdatei (default /etc/vcontrold)
-d Device, entweder serielles Device oder IP-Adresse:Port bei Zugriff über ser2net
-l Log-Datei
-p TCP-Port, auf dem das CLI-Interface lauscht
-s Logging in syslog
-n kein fork, für Testzwecke
-i legt eine Datei /tmp/sim-<DevID>.ini an, die als Konfiguration für den Simulator vsim dient. Jeder Befehl wird im Format
gesendete Bytes = empfangene Bytes
protokolliert.
-g Debug Modus

CLI-Kommandos:
device: Name und ID des konfigurierten Devices
protocol: Name des Protokolls
commands: Für das device in der XML-Datei definierte Kommandos
detail <command>: Detailinformationen zum Kommando
<command>: Führe Kommando aus
close: schließe Kommunikationskanal zur Anlage (wird nach <command> offen gehalten)
debug on|off:Zeigt Debug Meldungen (Kommunikation mit der Anlage) an und wieder ab.
unit on|off: Schaltet implizite Umrechnung in die definierte Einheit aus und wieder an.
reload: Neuladen der XML Konfig Dateien, dabei werden nicht die Werte unter <unix> neu ausgewertet
Bei Kommandos, die setaddr verwenden, können so die Hex Werte beim Aufruf mit angegeben werden.

$ telnet 192.168.1.2 1234
Trying 192.168.1.2...
Connected to 192.168.1.2.
Escape character is '^]'.
vctrld>commands
gettempA: Ermittle die Aussentemeratur in Grad C
gettempWW: Ermittle die Warmwassertemepratur in Grad C
vctrld>detail gettempWW
gettempWW: SEND 04;WAIT 05;SEND 01 F7 08 04 02;RECV 02 UT
 Unit: Temperatur
 Type: short
 Calc: V/10
 Einheit: Grad Celsius
vctrld>gettempWW
54.299999 Grad Celsius
vctrld>unit off
vctrld>gettempWW
1F 02
vctrld>debug on
vctrld>gettempWW
DEBUG:Mon Feb 25 19:44:33 2008 : Befehl: gettempWW
DEBUG:Mon Feb 25 19:44:33 2008 : >SEND: 04
DEBUG:Mon Feb 25 19:44:33 2008 : Warte auf 05
DEBUG:Mon Feb 25 19:44:33 2008 : <RECV: 06
DEBUG:Mon Feb 25 19:44:36 2008 : <RECV: 05
DEBUG:Mon Feb 25 19:44:36 2008 : >SEND: 01
DEBUG:Mon Feb 25 19:44:36 2008 : >SEND: F7
DEBUG:Mon Feb 25 19:44:36 2008 : >SEND: 08
DEBUG:Mon Feb 25 19:44:36 2008 : >SEND: 04
DEBUG:Mon Feb 25 19:44:36 2008 : >SEND: 02
DEBUG:Mon Feb 25 19:44:36 2008 : <RECV: 1F
DEBUG:Mon Feb 25 19:44:36 2008 : <RECV: 02
1F 02
DEBUG:Mon Feb 25 19:44:36 2008 : Empfangen: 1F 02
vctrld>close
DEBUG:Mon Feb 25 19:44:52 2008 : Befehl: close
192.168.1.112:3000 geschlossen
vctrld>quit
DEBUG:Mon Feb 25 19:44:54 2008 : Befehl: quit
good bye!
DEBUG:Mon Feb 25 19:44:54 2008 : Verbindung beendet (fd:6)
Connection closed by foreign host.