vcontrold

Sönke J. Peters edited this page Nov 15, 2017 · 23 revisions

vcontrold - Linux 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 Programm angespochen werden kann.

Der Quelltext kann unter openv/vcontrold @GitHub heruntergeladen werden. Im dortigen Repository findet man auch eine Anleitung zum Kompilieren Gentoo-User können ein ebuild samt init-Script unter Bug #574964 finden.

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

Der Standardpfad für diese Dateien ist /etc/vcontrold.

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

Aufruf:

vcontrold [-x xml-file] [-d ] [-l ] [-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-.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 : Detailinformationen zum Kommando

: Führe Kommando aus

close: schließe Kommunikationskanal zur Anlage (wird nach 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 neu ausgewertet

Bei Kommandos, die setaddr verwenden, können so die Hex Werte beim Aufruf mit angegeben werden.


vctrld>unit off
DEBUG:Sun Mar  2 14:44:32 2008 : Befehl: unit off
vctrld>settempWW 01 FF
DEBUG:Sun Mar  2 14:44:41 2008 : Befehl: settempWW 01 FF
DEBUG:Sun Mar  2 14:44:41 2008 : ClI Net: verbunden 192.168.1.112:3000 (FD:7)
DEBUG:Sun Mar  2 14:44:41 2008 : >SEND: 04
DEBUG:Sun Mar  2 14:44:41 2008 : Warte auf 05
DEBUG:Sun Mar  2 14:44:41 2008 : <RECV: 06
DEBUG:Sun Mar  2 14:44:44 2008 : <RECV: 05
DEBUG:Sun Mar  2 14:44:44 2008 : >SEND: 01
DEBUG:Sun Mar  2 14:44:44 2008 : >SEND: F4
DEBUG:Sun Mar  2 14:44:44 2008 : >SEND: 08
DEBUG:Sun Mar  2 14:44:44 2008 : >SEND: 04
DEBUG:Sun Mar  2 14:44:44 2008 : >SEND: 02
DEBUG:Sun Mar  2 14:44:44 2008 : >SEND: 01
DEBUG:Sun Mar  2 14:44:44 2008 : >SEND: FF


Beispielsession:


$ 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.


Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.