Giter VIP home page Giter VIP logo

vcontrold's Introduction

🔥 openv

Im OpenV Wiki finden sich Baupläne, Beschreibungen, Software, Informationen und Projekte rund um Viessmann Heizungssteuerungen.

Die Issues können ähnlich einem Diskussionsforum genutzt werden.

en

The OpenV Wiki is about DIY projects, software, and information concerning Viessmann® heating controllers.

The Issues are to be used like a bulletin board / forum in this Github repo.

vcontrold's People

Contributors

h0nig avatar hmueller01 avatar jmue avatar l3u avatar leifnel avatar lobmeyer avatar nexx512 avatar philverh avatar schmaller avatar speters avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vcontrold's Issues

setPumpeStatusZirku return OK but changes nothing

Hi! This is a great and very helpful project. Works perfect for reading parameters.
I can set some parameters (like setTempWWsoll) but not able to set setPumpeStatusZirku.
When I send setPumpeStatusZirku 0 command I get OK, but then when I read state of getPumpeStatusZirku it is still 1 and not 0.
I have Vitotronic 200 KW5, device ID="2098". Installed latest vcontrol just few day ago.
Debug output below:

vctrld>setPumpeStatusZirku 0
DEBUG:Sat Jan  9 11:29:53 2021 : Befehl: setPumpeStatusZirku 0
DEBUG:Sat Jan  9 11:29:53 2021 : 0 -> 00
DEBUG:Sat Jan  9 11:29:53 2021 : >SEND: 04
DEBUG:Sat Jan  9 11:29:53 2021 : >FRAMER: no preset result
DEBUG:Sat Jan  9 11:29:53 2021 : Warte auf 05
DEBUG:Sat Jan  9 11:29:53 2021 : <RECV: 05 (670.0 ms)
DEBUG:Sat Jan  9 11:29:53 2021 : >SEND: 01
DEBUG:Sat Jan  9 11:29:53 2021 : >SEND: F4
DEBUG:Sat Jan  9 11:29:53 2021 : >SEND: 08
DEBUG:Sat Jan  9 11:29:53 2021 : >SEND: 46
DEBUG:Sat Jan  9 11:29:53 2021 : >SEND: 01
DEBUG:Sat Jan  9 11:29:53 2021 : >SEND: 00
DEBUG:Sat Jan  9 11:29:53 2021 : >FRAMER: no preset result
DEBUG:Sat Jan  9 11:29:53 2021 : <RECV: len=1 00 (30.0 ms)
DEBUG:Sat Jan  9 11:29:53 2021 : <RECV: received 00
DEBUG:Sat Jan  9 11:29:53 2021 : 00 -> OK
DEBUG:Sat Jan  9 11:29:53 2021 : OK
OK
vctrld>getPumpeStatusZirku
DEBUG:Sat Jan  9 11:30:14 2021 : Befehl: getPumpeStatusZirku
DEBUG:Sat Jan  9 11:30:14 2021 : >SEND: 04
DEBUG:Sat Jan  9 11:30:14 2021 : >FRAMER: no preset result
DEBUG:Sat Jan  9 11:30:14 2021 : Warte auf 05
DEBUG:Sat Jan  9 11:30:15 2021 : <RECV: 05 (330.0 ms)
DEBUG:Sat Jan  9 11:30:15 2021 : >SEND: 01
DEBUG:Sat Jan  9 11:30:15 2021 : >SEND: F7
DEBUG:Sat Jan  9 11:30:15 2021 : >SEND: 08
DEBUG:Sat Jan  9 11:30:15 2021 : >SEND: 46
DEBUG:Sat Jan  9 11:30:15 2021 : >SEND: 01
DEBUG:Sat Jan  9 11:30:15 2021 : >FRAMER: no preset result
DEBUG:Sat Jan  9 11:30:15 2021 : <RECV: len=1 01 (20.0 ms)
DEBUG:Sat Jan  9 11:30:15 2021 : <RECV: received 01
DEBUG:Sat Jan  9 11:30:15 2021 : 01 -> 1
DEBUG:Sat Jan  9 11:30:15 2021 : 1
1```

Permission problem on Gentoo

Hi :-)

First of all, vcontrold is now part of the official Gentoo Linux repositories (and I maintain the ebuild).

Then: As I installed vcontrold 0.98.5 (via the newly introduced ebuild) on my Raspberry Pi, I ran into some problems that did not exist before. This is most probably due to the privilege dropping patches introduced recently.

The daemon would start but then exit due to the group "dialout" not being there. I added the group, and the daemon started like before. But when I tried to query it, it exited due to missong permission of the device file attached to my optical link adapter. In my case, it's /dev/ttyAMA0, owned by root:uucp with the permissions crw-rw----. I changed (for now) the permissions to crw-rw-rw-, and after that, vcontrold ran as before (I was using v0.98.3 before).

I'm not sure how to handle this. Could you explain to me what exactly has been changed and what happens? Probably, the ebuild has to add groups and/or users when installing vcontrold. Or I have to patch the config so that it runs out of the box.

Thanks for all help!

Cheers, Tobias

Probleme mit der Integration bei Vitoligno 300P

Hallo,
bereits vor einigen Jahren hatte ich die Software auf meinem Pi funktionsfähig laufen und es hat sich seitdem an der Hardware auch nichts geändert.
Ich wollte damals eine simple Integration in OpenHab, da ich damals noch keine Erfahrung mit "eigenen Lösungen" hatte.
Da diese Software hier meine Präferierte war, bin ich jetzt wieder zurück ;)
Nun zum Problem:
Ich besitze eine Vitoligno 300P und möchte sie ansteuern mit dem Protokoll. Laut meinen Informationen handelt es sich um ein 300er Protokoll, was aktiv ist.
Die Installation an sich Funktioniert und Vcontrold läuft auch im telnet.
Sobald ich allerdings einen Befehl wie "getTempA" eingebe, stützt telnet sofort ab.
Das ganze passiert sowohl mit den xml_p300 als auch mit den alten xml dateien mit KW2 oder GWG (was ja bei diesem Kessel auch garnicht funktionieren sollte)
Hat vielleicht jemand eine Idee woran es hier liegen könnte?
falls ihr mehr Infos braucht, schreibt einfach! Ich versuche alles zur Verfügung stellen zu können.

binary issues with alpine linux - musl libc

Hello,

I hope for someone with better experiences in programming c.

Currently vcontrold is running fine on my host system. If I compile it in an alpine linux based container, it compiles fine too. But the final binary has some string length calculation issues in the parser.c

in the function

compilePtr buildByteCode(commandPtr cPtr, unitPtr uPtr)

at then end during the while end condition check

        sendPtr += strlen(cmd) + 1;
    } while (*sendPtr);

we produce some kind of pointer overflow to leave the while loop. This works fine on a normal suse or fedora. But not an a musl/alpine based linux.

to demonstrate what I mean I added some additional log entries.

        logIT(LOG_INFO, "        sendPtr: %s, strlen(sendPtr): %d, strlen(cmd): %d", sendPtr, strlen(sendPtr), strlen(cmd));
        sendPtr += strlen(cmd) + 1;
        logIT(LOG_INFO, "        => sendPtr: %s, strlen(sendPtr): %d", sendPtr, strlen(sendPtr));
    } while (*sendPtr);

on my host system I get log messages like

[12557] Tue May 26 18:04:54 2020 : BuildByteCode: SEND 00 01 0A 82 01;RECV 1 RT
[12557] Tue May 26 18:04:54 2020 :         Token: 3 Hexlen: 5, Unit: 
[12557] Tue May 26 18:04:54 2020 :         sendPtr: SEND 00 01 0A 82 01;RECV 1 RT, strlen(sendPtr): 29, strlen(cmd): 19
[12557] Tue May 26 18:04:54 2020 :         => sendPtr: RECV 1 RT, strlen(sendPtr): 9
[12557] Tue May 26 18:04:54 2020 :         Token: 2 Hexlen: 1, Unit: RT
[12557] Tue May 26 18:04:54 2020 :         sendPtr: RECV 1 RT, strlen(sendPtr): 9, strlen(cmd): 9
[12557] Tue May 26 18:04:54 2020 :         => sendPtr: , strlen(sendPtr): 0

but in my container I get

[487] Tue May 26 15:58:58 2020 : BuildByteCode: SEND 00 01 0A 82 01;RECV 1 RT
[487] Tue May 26 15:58:58 2020 :         Token: 3 Hexlen: 5, Unit: 
[487] Tue May 26 15:58:58 2020 :         sendPtr: SEND 00 01 0A 82 01;RECV 1 RT, strlen(sendPtr): 29, strlen(cmd): 19
[487] Tue May 26 15:58:58 2020 :         => sendPtr: RECV 1 RT, strlen(sendPtr): 9
[487] Tue May 26 15:58:58 2020 :         Token: 2 Hexlen: 1, Unit: RT
[487] Tue May 26 15:58:58 2020 :         sendPtr: RECV 1 RT, strlen(sendPtr): 9, strlen(cmd): 9
[487] Tue May 26 15:58:58 2020 :         => sendPtr: 82 01;RECV 1 RT, strlen(sendPtr): 15
[487] Tue May 26 15:58:58 2020 :         Token: 0 Hexlen: 0, Unit: 
[487] Tue May 26 15:58:58 2020 :         sendPtr: 82 01;RECV 1 RT, strlen(sendPtr): 15, strlen(cmd): 5
[487] Tue May 26 15:58:58 2020 :         => sendPtr: RECV 1 RT, strlen(sendPtr): 9
[487] Tue May 26 15:58:58 2020 :         Token: 2 Hexlen: 1, Unit: RT
[487] Tue May 26 15:58:58 2020 :         sendPtr: RECV 1 RT, strlen(sendPtr): 9, strlen(cmd): 9
[487] Tue May 26 15:58:58 2020 :         => sendPtr: , strlen(sendPtr): 0

later the process is crashing with

[487] Tue May 26 15:58:58 2020 : BuildByteCode: SEND 00 01 A3 8F 01;RECV 1 PR
[487] Tue May 26 15:58:58 2020 :         Token: 3 Hexlen: 5, Unit: 
[487] Tue May 26 15:58:58 2020 :         sendPtr: SEND 00 01 A3 8F 01;RECV 1 PR, strlen(sendPtr): 29, strlen(cmd): 19
[487] Tue May 26 15:58:58 2020 :         => sendPtr: RECV 1 PR, strlen(sendPtr): 9
[487] Tue May 26 15:58:58 2020 :         Token: 2 Hexlen: 1, Unit: PR
[487] Tue May 26 15:58:58 2020 :         sendPtr: RECV 1 PR, strlen(sendPtr): 9, strlen(cmd): 9
[487] Tue May 26 15:58:58 2020 :         => sendPtr: hexlen;RECV $len $A, strlen(sendPtr): 19
[487] Tue May 26 15:58:58 2020 :         Token: 0 Hexlen: 0, Unit: 
[487] Tue May 26 15:58:58 2020 :         sendPtr: hexlen;RECV $len $A, strlen(sendPtr): 19, strlen(cmd): 6
[487] Tue May 26 15:58:58 2020 :         => sendPtr: RECV $len $A, strlen(sendPtr): 12
[487] Tue May 26 15:58:58 2020 :         Token: 2 Hexlen: 0, Unit: $A
[487] Tue May 26 15:58:58 2020 : Unit $A not defined

I have the feeling that musl libc is not so strict in memory boundaries like glibc

has anyone an explanation for that? If I combine the while condition with a length check it works on alpine too.

vclient sends additional error note

Hi,
If I am using the command line prompt of vcontrold I get a correct communication:

pi@raspberrypi:~ $ telnet localhost 3002
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
vctrld>getVitoTempAussen
6.200000 °C
vctrld>

But if I do it with vclient I get always such error information. Finally I get also the requested value.
Because I have problems to move values in RRDB I assume it can be a reason.

pi@raspberrypi:~ $ vclient -h 127.0.0.1 -p3002 - c getVitoTempAussen
SRV ERR: command unknown
SRV ERR: command unknown
-:
server error
c:
server error
getVitoTempAussen:
6.200000 °C
pi@raspberrypi:~ $

I have already changed the protocol KW2 to P300. But it is the same. Does somebody has an idea?
Regards, Uwe

Discussion: To do list

Hi :-)

First of all, I would recommend that all development and communication is done in English. Viessmann heatings are not only sold in Germany, and if we speak German here, we probably alienate possible foreign developers. I think everybody willing to work on this code speaks at least a bit English.

So, here's what I think that has to be done, please tell me what you think:

Moving the documentation

All wiki pages should be moved here (from openv/openv) and translated to English.

Changing the build system

Done:-)

Reworking the sources

Formatting

I think the sources need a more uniform appearance, speaking of coding style (indentation etc.). I'd propose to stick to the kdelibs/Qt coding style, as this one is clean and easy to read and write.

I would firstly format all sources with

astyle --style=kr --add-one-line-brackets --pad-header --pad-comma --align-pointer=name --pad-oper vcontrold.c

and then do some fine tuning.

Same thing for the XML files. I would give them a nice and consistent look via

xmllint --format

and then do some fine tuning by hand.

At this point, nothing in the sources would have been changed, only the formatting.

Reworking the documentation

I would suggest to convert the manpages to something more maintainable like ReStructuredText and then compile a manpage from them when building the package. The rst tools come with such a tool by default. I'm a big fan of rst and think it's way better than the other ones around (including Markdown).

Compiling the documentation could be made conditional via cmake. If we have the tools we need, the docs are built (and probably installed). If not, then not. I am doing this exact thing (but with a HTML conversion, not man – still, it's the very same thing) already with another of my projects and it works fine.

Translation

I would translate all German messages and variable names to their English counterpart. For the very same reasons I'm writing in English here (see above).

Same for manpages, readmes etc.

Probably, one should also translate the German-English mix command names of the vito.xml file (e. g. getTempA should be getTempO etc.).

(Re-)Unify the development

We should try to collaborate with

Someone's working on the code there, and most probably, the changes are meaningful. We should all work on the "official" code here, which finally made it out of sf/svn.

FRAMER: framer_reset_actaddr framer_current_addr = FRAMER_NO_ADDR (was FFFF)

Hello,
I am currently trying to get some values out of my Vitotronic 200 KW2. For this I have a self-made IR Connector which works well with my ESP8266.

But at the moment I try to start with vcontrold and have some problems.

When I try to to get a value from my Vitotronic vcontrold returns the following error:

vctrld>getCtrlId
DEBUG:Thu Oct 21 14:49:14 2021 : Command: getCtrlId
DEBUG:Thu Oct 21 14:49:14 2021 : >SENT: 04
DEBUG:Thu Oct 21 14:49:14 2021 : >FRAMER: no preset result
DEBUG:Thu Oct 21 14:49:14 2021 : Waiting for 05
DEBUG:Thu Oct 21 14:49:15 2021 : <RECV: 05 (1210.0 ms)
DEBUG:Thu Oct 21 14:49:15 2021 : >SENT: 01
DEBUG:Thu Oct 21 14:49:15 2021 : >SENT: F7
DEBUG:Thu Oct 21 14:49:15 2021 : >SENT: 00
DEBUG:Thu Oct 21 14:49:15 2021 : >SENT: F9
DEBUG:Thu Oct 21 14:49:15 2021 : >SENT: 07
DEBUG:Thu Oct 21 14:49:15 2021 : >FRAMER: no preset result
DEBUG:Thu Oct 21 14:49:17 2021 : <RECV: len=1 05 (2240.0 ms)
DEBUG:Thu Oct 21 14:49:19 2021 : <RECV: read error 11
DEBUG:Thu Oct 21 14:49:19 2021 : <RECV: received 05
DEBUG:Thu Oct 21 14:49:19 2021 : >FRAMER: framer_reset_actaddr framer_current_addr = FRAMER_NO_ADDR (was FFFF)
DEBUG:Thu Oct 21 14:49:19 2021 : >FRAMER: read failure
DEBUG:Thu Oct 21 14:49:19 2021 : Error in recv, terminating
DEBUG:Thu Oct 21 14:49:19 2021 : Error executing getCtrlId

newbie problem: access to USB device quits daemon

I followed the instructions here:
https://github.com/openv/openv/wiki/vcontrold-mit-Raspberry-Pi

And I struggle on several points:

  • i cannot found any "serial_short" number on my USB adapter
  • I can use id_product instead, this seems also be a unique number, my file 70-lesekopf.rules looks then like:
    SUBSYSTEMS=="usb", ATTRS{idProduct}=="7523", SYMLINK+="vitoir0"

but still the telnet session gets closed by a simple getTempA:

looks then like this:

vctrld>debug on
vctrld>getTempA
DEBUG:Thu Oct 18 07:03:14 2018 : Befehl: getTempA
DEBUG:Thu Oct 18 07:03:14 2018 : Process 1899 tries to aquire lock
DEBUG:Thu Oct 18 07:03:14 2018 : Process 1899 got lock
DEBUG:Thu Oct 18 07:03:14 2018 : >FRAMER: open device t: ST ProtocolID 00
DEBUG:Thu Oct 18 07:03:14 2018 : Fehler getaddrinfo: t:Name or service not known
Connection closed by foreign host.

Can someone help me to fix that?

vcontrold als Nodes in Node-RED

Hello,

would it be possible to port vcontrold as nodes in Node-RED? Has anyone looked into this before? I would love it as it would open up your cool project to a wider audience. I'm still shying away from installing vcontrold after reading here and there, it looks too complex for me and I am afraid of failing. Further processing of data including MQTT connection is just much more flexible with Node-RED.

Many thanks and respect for what you have done here,
Timo

===

Hallo,

wäre es möglich vcontrold als Nodes in Node-RED zu portieren? Hat sich damit schon mal jemand beschäftigt? Ich würde es toll finden, da es euer cooles Projekt einer breiten Öffentlichkeit zugänglich macht. Ich scheue mich nach dem lesen hier und dort noch vor der Implementierung, da es für mich zu komplex aussieht und ich habe Angst, zu scheitern. Die Weiterverarbeitung der Daten inkl. MQTT-Anbindung ist durch Node-RED einfach deutlich flexibler.

Vielen Dank und Respekt für das was ihr hier geleistet habt,
Timo

vcontrold hängt sporadisch - usb-Problem?

Hallo zusammen,
habe vcontrold nach der Anleitung https://openv.wikispaces.com/vcontrold+mit+Raspberry+Pi installiert und komme auch damit nun recht gut klar. Mittels viessmann-Adapter konnte ich die Heizung auch in ioBroker einbinden. Leider "hängt sich" vcontrold sporadisch auf (mal nach 4-5 Std - mal nach 3-4 Tagen). Anschließend hilft nur ein Neustart des vcontrold-raspi.

Hier meine Konfiguration:
1 raspi 3B+ mit ioBroker
1 raspi 3B+ mit vcontrold und Original Optolink Kabel aus original Vitoconnect 100 Typ OPTO1 und Software "2018-06-27-raspbian-stretch-lite.zip"

Auf dem raspi mit vcontrold:
vctrld>version
Version: 0.98.2_IPv6 mittlerweile geupdatet auf version 0.98.6-1-g96c2a55

Meine Vito habe ich mit dem Windows-Programm v-control1_2_5.exe zuvor ausgelesen:
Anlage mit V200 KW6B wird als "VScotH01" in log-Datei angegeben, hieraus ID "20CB" ermittelt per Geräteliste unter openv

Folgendes habe ich versucht - leider ohne Besserung:

  • vom Pi1 auf Pi3B+ gewechselt
  • SD Karte erneuert
  • Netzgerät auf 2 A getauscht
  • Software mehrmals neu installiert gemäß Anleitung und aktualisiert
  • Autostart von vcontrold entfernt - starte jetzt nur noch nach Neustart des raspi mit Befehl "vcontrold"
  • Raspi und Software erneut nstalliert - diesmal ohne die Schritte von https://openv.wikispaces.com/vcontrold+mit+Raspberry+Pi
  • ioBroker mit viessmann-Adapter entfernt
  • vcontrold auf version 0.98.6-1-g96c2a55 geupdatet

Beim "Aufhängen" der vcontrold scheint es wohl am USB-Port zu liegen - hier habe ich immer den Optolink-Adapter auf mehrere USB connected:

Fehlerfall 27.09.18: (ohne Autostart, Vito zuvor mit vcontrold gestartet!):
root@raspberrypi:
dmesg | grep "now attached"
[ 3.997639] usb 1-1.1.2: cp210x converter now attached to ttyUSB0
[ 515.526622] usb 1-1.1.2: cp210x converter now attached to ttyUSB1
[ 3626.433020] usb 1-1.1.2: cp210x converter now attached to ttyUSB1
[ 3627.710916] usb 1-1.1.2: cp210x converter now attached to ttyUSB1
root@raspberrypi:~#

Beim Neustart sieht es folgendermaßen aus:
root@raspberrypi: dmesg | grep "now attached"
[ 3.367114] usb 1-1.1.2: cp210x converter now attached to ttyUSB0

Danach funktioniert vcontrold problemlos bis zum nächsten "aufhängen".

Hier noch meine udevadm info direkt nach reboot:


root@raspberrypi:~# sudo udevadm info --name=/dev/ttyUSB0 --attribute-walk

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/ttyUSB0/tty/ttyUSB0':
KERNEL=="ttyUSB0"
SUBSYSTEM=="tty"
DRIVER==""

looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/ttyUSB0':
KERNELS=="ttyUSB0"
SUBSYSTEMS=="usb-serial"
DRIVERS=="cp210x"
ATTRS{port_number}=="0"

looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0':
KERNELS=="1-1.1.2:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="cp210x"
ATTRS{authorized}=="1"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceClass}=="ff"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bInterfaceProtocol}=="00"
ATTRS{bInterfaceSubClass}=="00"
ATTRS{bNumEndpoints}=="02"
ATTRS{interface}=="CP2102 USB to UART Bridge Controller"
ATTRS{supports_autosuspend}=="1"

looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2':
KERNELS=="1-1.1.2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bMaxPower}=="100mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bcdDevice}=="0100"
ATTRS{bmAttributes}=="80"
ATTRS{busnum}=="1"
ATTRS{configuration}==""
ATTRS{devnum}=="4"
ATTRS{devpath}=="1.1.2"
ATTRS{devspec}==" (null)"
ATTRS{idProduct}=="ea60"
ATTRS{idVendor}=="10c4"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="Silicon Labs"
ATTRS{maxchild}=="0"
ATTRS{product}=="CP2102 USB to UART Bridge Controller"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="removable"
ATTRS{serial}=="0001"
ATTRS{speed}=="12"
ATTRS{urbnum}=="16"
ATTRS{version}==" 1.10"

looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1':
KERNELS=="1-1.1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceProtocol}=="02"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bMaxPower}=="2mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bcdDevice}=="0bb3"
ATTRS{bmAttributes}=="e0"
ATTRS{busnum}=="1"
ATTRS{configuration}==""
ATTRS{devnum}=="3"
ATTRS{devpath}=="1.1"
ATTRS{idProduct}=="2514"
ATTRS{idVendor}=="0424"
ATTRS{ltm_capable}=="no"
ATTRS{maxchild}=="3"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="fixed"
ATTRS{speed}=="480"
ATTRS{urbnum}=="41"
ATTRS{version}==" 2.00"

looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1':
KERNELS=="1-1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceProtocol}=="02"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bMaxPower}=="2mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bcdDevice}=="0bb3"
ATTRS{bmAttributes}=="e0"
ATTRS{busnum}=="1"
ATTRS{configuration}==""
ATTRS{devnum}=="2"
ATTRS{devpath}=="1"
ATTRS{idProduct}=="2514"
ATTRS{idVendor}=="0424"
ATTRS{ltm_capable}=="no"
ATTRS{maxchild}=="4"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="unknown"
ATTRS{speed}=="480"
ATTRS{urbnum}=="27"
ATTRS{version}==" 2.00"

looking at parent device '/devices/platform/soc/3f980000.usb/usb1':
KERNELS=="usb1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{authorized}=="1"
ATTRS{authorized_default}=="1"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{bConfigurationValue}=="1"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceProtocol}=="01"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bMaxPower}=="0mA"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bcdDevice}=="0414"
ATTRS{bmAttributes}=="e0"
ATTRS{busnum}=="1"
ATTRS{configuration}==""
ATTRS{devnum}=="1"
ATTRS{devpath}=="0"
ATTRS{idProduct}=="0002"
ATTRS{idVendor}=="1d6b"
ATTRS{interface_authorized_default}=="1"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="Linux 4.14.69-v7+ dwc_otg_hcd"
ATTRS{maxchild}=="1"
ATTRS{product}=="DWC OTG Controller"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="unknown"
ATTRS{serial}=="3f980000.usb"
ATTRS{speed}=="480"
ATTRS{urbnum}=="26"
ATTRS{version}==" 2.00"

looking at parent device '/devices/platform/soc/3f980000.usb':
KERNELS=="3f980000.usb"
SUBSYSTEMS=="platform"
DRIVERS=="dwc_otg"
ATTRS{busconnected}=="Bus Connected = 0x1"
ATTRS{buspower}=="Bus Power = 0x1"
ATTRS{bussuspend}=="Bus Suspend = 0x0"
ATTRS{devspeed}=="Device Speed = 0x0"
ATTRS{driver_override}=="(null)"
ATTRS{enumspeed}=="Device Enumeration Speed = 0x1"
ATTRS{fr_interval}=="Frame Interval = 0x1d4b"
ATTRS{ggpio}=="GGPIO = 0x00000000"
ATTRS{gnptxfsiz}=="GNPTXFSIZ = 0x01000306"
ATTRS{gotgctl}=="GOTGCTL = 0x001c0001"
ATTRS{gpvndctl}=="GPVNDCTL = 0x00000000"
ATTRS{grxfsiz}=="GRXFSIZ = 0x00000306"
ATTRS{gsnpsid}=="GSNPSID = 0x4f54280a"
ATTRS{guid}=="GUID = 0x2708a000"
ATTRS{gusbcfg}=="GUSBCFG = 0x20001700"
ATTRS{hcd_frrem}=="HCD Dump Frame Remaining"
ATTRS{hcddump}=="HCD Dump"
ATTRS{hnp}=="HstNegScs = 0x0"
ATTRS{hnpcapable}=="HNPCapable = 0x1"
ATTRS{hprt0}=="HPRT0 = 0x00001005"
ATTRS{hptxfsiz}=="HPTXFSIZ = 0x02000406"
ATTRS{hsic_connect}=="HSIC Connect = 0x1"
ATTRS{inv_sel_hsic}=="Invert Select HSIC = 0x0"
ATTRS{mode}=="Mode = 0x1"
ATTRS{mode_ch_tim_en}=="Mode Change Ready Timer Enable = 0x0"
ATTRS{rd_reg_test}=="Time to read GNPTXFSIZ reg 10000000 times: 1660 msecs (166 jiffies)"
ATTRS{regdump}=="Register Dump"
ATTRS{regoffset}=="0xffffffff"
ATTRS{regvalue}=="invalid offset"
ATTRS{rem_wakeup_pwrdn}==""
ATTRS{remote_wakeup}=="Remote Wakeup Sig = 0 Enabled = 0 LPM Remote Wakeup = 0"
ATTRS{spramdump}=="SPRAM Dump"
ATTRS{srp}=="SesReqScs = 0x1"
ATTRS{srpcapable}=="SRPCapable = 0x1"
ATTRS{wr_reg_test}=="Time to write GNPTXFSIZ reg 10000000 times: 300 msecs (30 jiffies)"

looking at parent device '/devices/platform/soc':
KERNELS=="soc"
SUBSYSTEMS=="platform"
DRIVERS==""
ATTRS{driver_override}=="(null)"

looking at parent device '/devices/platform':
KERNELS=="platform"
SUBSYSTEMS==""
DRIVERS==""


Im Fehlerfall erhalte ich bei
root@raspberrypi:~# sudo udevadm info --name=/dev/ttyUSB0 --attribute-walk
device node not found

USB1 liefert dann ein Ergebnis:

root@raspberrypi:~# sudo udevadm info --name=/dev/ttyUSB1 --attribute-walk


Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/ttyUSB1/tty/ttyUSB1':
KERNEL=="ttyUSB1"
SUBSYSTEM=="tty"
DRIVER==""

looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0/ttyUSB1':
KERNELS=="ttyUSB1"
SUBSYSTEMS=="usb-serial"
DRIVERS=="cp210x"
ATTRS{port_number}=="0"

looking at parent device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.1/1-1.1.2/1-1.1.2:1.0':
KERNELS=="1-1.1.2:1.0"
....
nd noch einiges mehr ....
....


Wäre schön, wenn mir jemand helfen könnt.
Viele Grüße
Micky14

Write logic

While reading through the code, I noticed some strange behaviour in the io.c module, and more specifically in the my_send function used to write commands to the vito IR interface.
What I noticed is that before trying to write something to the IR interface (output queue), a call is made to read any pending characters in the input, followed by a call to tcflush the INPUT queue, before writing to the output queue without checking the return code. Indeed the my_send function is hardcoded to return success in the form of "1" instead of returning a value depending on the result of the write. In the remainder of the vcontrold project (framer.c and parser.c), the my_send function is called and the return value is evaluated to check the success of the write ...

I have been running for some time now with an altered io.c, where I :

  • removed the low level read to flush the input queue
  • changed the tcflush parameter to flush both Input and Output of the IR interface
  • changed the write logic to return the number of bytes written, or 0 in case of error.

I do not have a lot of experience with github, so I'll need to do some reading on how to propose those changes for inclusion in the project.

P300 set_addr bug using unit off

P300 set_addr is still not fully working. While
vclient -h localhost:3002 -c "setGwgBetriebsart_M2 Heizen und WW"
works
vclient -h localhost:3002 -c "unit off" -c "setGwgBetriebsart_M2 1"
sets 2 (Heizen und WW with my vcontrold.xml definition instead of 1 = Nur WW)
So it looks like the buffer gets not filled correct in case of unit off (so it is the content of the last command). Need to look into this in more detail.

[27273] Fri Nov 17 18:22:09 2017 : Command: setGwgBetriebsart_M2 Heizen und WW
[27273] Fri Nov 17 18:22:09 2017 : Process 27273 tries to aquire lock
[27273] Fri Nov 17 18:22:09 2017 : Process 27273 got lock
[27273] Fri Nov 17 18:22:09 2017 : >FRAMER: open device /dev/vitoir0 ProtocolID 41
[27273] Fri Nov 17 18:22:09 2017 : Configuring serial interface /dev/vitoir0
[27273] Fri Nov 17 18:22:09 2017 : >SEND: 04
[27273] Fri Nov 17 18:22:09 2017 : <RECV: len=1 05 (420.0 ms)
[27273] Fri Nov 17 18:22:09 2017 : <RECV: received 05
[27273] Fri Nov 17 18:22:09 2017 : >FRAMER: closed
[27273] Fri Nov 17 18:22:09 2017 : >SEND: 16
[27273] Fri Nov 17 18:22:09 2017 : >SEND: 00
[27273] Fri Nov 17 18:22:09 2017 : >SEND: 00
[27273] Fri Nov 17 18:22:09 2017 : <RECV: len=1 06 (10.0 ms)
[27273] Fri Nov 17 18:22:09 2017 : <RECV: received 06
[27273] Fri Nov 17 18:22:09 2017 : >FRAMER: opened
[27273] Fri Nov 17 18:22:09 2017 : Heizen und WW -> 02
[27273] Fri Nov 17 18:22:09 2017 : >SEND: 41
[27273] Fri Nov 17 18:22:09 2017 : >SEND: 06
[27273] Fri Nov 17 18:22:09 2017 : >SEND: 00
[27273] Fri Nov 17 18:22:09 2017 : >SEND: 02
[27273] Fri Nov 17 18:22:09 2017 : >SEND: 33
[27273] Fri Nov 17 18:22:09 2017 : >SEND: 23
[27273] Fri Nov 17 18:22:09 2017 : >SEND: 01
[27273] Fri Nov 17 18:22:09 2017 : >SEND: 02
[27273] Fri Nov 17 18:22:09 2017 : >SEND: 61
[27273] Fri Nov 17 18:22:09 2017 : <RECV: len=1 06 (20.0 ms)
[27273] Fri Nov 17 18:22:09 2017 : <RECV: received 06
[27273] Fri Nov 17 18:22:09 2017 : >FRAMER: addr was still active FE06
[27273] Fri Nov 17 18:22:09 2017 : >FRAMER: Command send
[27273] Fri Nov 17 18:22:09 2017 : >FRAMER: no preset result
[27273] Fri Nov 17 18:22:09 2017 : <RECV: len=1 41 (20.0 ms)
[27273] Fri Nov 17 18:22:09 2017 : <RECV: received 41
[27273] Fri Nov 17 18:22:09 2017 : <RECV: len=1 05 (0.0 ms)
[27273] Fri Nov 17 18:22:09 2017 : <RECV: received 05
[27273] Fri Nov 17 18:22:09 2017 : <RECV: len=5 01 (0.0 ms)
[27273] Fri Nov 17 18:22:09 2017 : <RECV: len=1 5F (10.0 ms)
[27273] Fri Nov 17 18:22:09 2017 : <RECV: received 01 02 33 23 01 5F
[27273] Fri Nov 17 18:22:09 2017 : 00 -> OK
[27273] Fri Nov 17 18:22:09 2017 : OK
[27273] Fri Nov 17 18:22:09 2017 : Command: quit
[27273] Fri Nov 17 18:22:09 2017 : >SEND: 04
[27273] Fri Nov 17 18:22:09 2017 : <RECV: len=1 06 (20.0 ms)
[27273] Fri Nov 17 18:22:09 2017 : <RECV: received 06
[27273] Fri Nov 17 18:22:09 2017 : >FRAMER: closed
[27273] Fri Nov 17 18:22:09 2017 : Process 27273 released lock
[27273] Fri Nov 17 18:22:09 2017 : Closed connection (fd:5)

One more thing is not correct. >FRAMER: addr was still active FE06 is a LOG_ERR which should be avoided. I still do not fully understand the need/use of the framer_set_actaddr(), framer_preset_result() code.

Vitoladens No getTempVListM3 function

Hi everyone, I just upgraded my Vitoladens 300 C with another heating circuit which I believe is M3. I wanted to check the actual temperature of the "Vorlauf" for this circuit, i.e. the temperature that is sent from the heating into the house.

There is a getTempVLsollM3 command which allows me to read out the "configured" temperature but no way to read out the actual (measured) temperature.

Is there any way I can find out how to add this myself or did anyone already find this and it just did not make its way into the vito.xml file?

Thank you for your help!

Regards,
Heiko

Cant set temperature for M2 | no Option to set temperature

Hey guys,

the vcontrold runs fine but i cant set the room temperature für my M2 circuit:

vclient -c 'setTempRaumNorSollM2 22'
SRV ERR: command unknown
setTempRaumNorSollM2 22:
server error

... there was no option for it in the vito.xml.

Try to create it myself withoput luck :(

Bug in frame.c when setting cycletime

Using the master branche :
vctrld>setIntervalleLundiChauffage 06:00 22:00
ERR: >FRAMER: addr was still active FE06

FRAMER: Command send
FRAMER: unexpected length 8 08
Fehler recv, Abbruch
Fehler beim ausfuehren von setIntervalleLundiChauffage 06:00 22:00

And for vcontrold :

vcontrold.xml.txt
vito.xml.txt
[31602] Wed Jan 3 12:17:54 2018 : TCP socket 3002 geoeffnet
[31602] Wed Jan 3 12:18:08 2018 : Client verbunden 192.168.1.108:33488 (FD:5)
[31602] Wed Jan 3 12:18:17 2018 : Befehl: setIntervalleLundiChauffage 06:00 22:00
[31602] Wed Jan 3 12:18:17 2018 : Process 31602 tries to aquire lock
[31602] Wed Jan 3 12:18:17 2018 : Process 31602 got lock
[31602] Wed Jan 3 12:18:17 2018 : >FRAMER: open device /dev/ttyAMA0 ProtocolID 41
[31602] Wed Jan 3 12:18:17 2018 : konfiguriere serielle Schnittstelle /dev/ttyAMA0
[31602] Wed Jan 3 12:18:17 2018 : >SEND: 04
[31602] Wed Jan 3 12:18:17 2018 : <RECV: len=1 06 (10.0 ms)
[31602] Wed Jan 3 12:18:17 2018 : <RECV: received 06
[31602] Wed Jan 3 12:18:17 2018 : >FRAMER: closed
[31602] Wed Jan 3 12:18:17 2018 : >SEND: 16
[31602] Wed Jan 3 12:18:17 2018 : >SEND: 00
[31602] Wed Jan 3 12:18:17 2018 : >SEND: 00
[31602] Wed Jan 3 12:18:19 2018 : <RECV: len=1 05 (1980.0 ms)
[31602] Wed Jan 3 12:18:19 2018 : <RECV: received 05
[31602] Wed Jan 3 12:18:19 2018 : >SEND: 16
[31602] Wed Jan 3 12:18:19 2018 : >SEND: 00
[31602] Wed Jan 3 12:18:19 2018 : >SEND: 00
[31602] Wed Jan 3 12:18:19 2018 : <RECV: len=1 06 (20.0 ms)
[31602] Wed Jan 3 12:18:19 2018 : <RECV: received 06
[31602] Wed Jan 3 12:18:19 2018 : >FRAMER: opened
[31602] Wed Jan 3 12:18:19 2018 : Cycle Time: 06:00 -> [30]
[31602] Wed Jan 3 12:18:19 2018 : Cycle Time: 22:00 -> [B0]
[31602] Wed Jan 3 12:18:19 2018 : >SEND: 41
[31602] Wed Jan 3 12:18:19 2018 : >SEND: 0D
[31602] Wed Jan 3 12:18:19 2018 : >SEND: 00
[31602] Wed Jan 3 12:18:19 2018 : >SEND: 02
[31602] Wed Jan 3 12:18:19 2018 : >SEND: 20
[31602] Wed Jan 3 12:18:19 2018 : >SEND: 00
[31602] Wed Jan 3 12:18:19 2018 : >SEND: 08
[31602] Wed Jan 3 12:18:19 2018 : >SEND: 30
[31602] Wed Jan 3 12:18:19 2018 : >SEND: B0
[31602] Wed Jan 3 12:18:19 2018 : >SEND: FF
[31602] Wed Jan 3 12:18:19 2018 : >SEND: FF
[31602] Wed Jan 3 12:18:19 2018 : >SEND: FF
[31602] Wed Jan 3 12:18:19 2018 : >SEND: FF
[31602] Wed Jan 3 12:18:19 2018 : >SEND: FF
[31602] Wed Jan 3 12:18:19 2018 : >SEND: FF
[31602] Wed Jan 3 12:18:19 2018 : >SEND: 11
[31602] Wed Jan 3 12:18:19 2018 : <RECV: len=1 06 (70.0 ms)
[31602] Wed Jan 3 12:18:19 2018 : <RECV: received 06
[31602] Wed Jan 3 12:18:19 2018 : >FRAMER: addr was still active FE06
[31602] Wed Jan 3 12:18:19 2018 : >FRAMER: Command send
[31602] Wed Jan 3 12:18:19 2018 : >FRAMER: no preset result
[31602] Wed Jan 3 12:18:19 2018 : <RECV: len=1 41 (0.0 ms)
[31602] Wed Jan 3 12:18:19 2018 : <RECV: received 41
[31602] Wed Jan 3 12:18:19 2018 : <RECV: len=1 05 (0.0 ms)
[31602] Wed Jan 3 12:18:19 2018 : <RECV: received 05
[31602] Wed Jan 3 12:18:19 2018 : <RECV: len=5 01 (0.0 ms)
[31602] Wed Jan 3 12:18:19 2018 : <RECV: len=1 30 (10.0 ms)
[31602] Wed Jan 3 12:18:19 2018 : <RECV: received 01 02 20 00 08 30
[31602] Wed Jan 3 12:18:19 2018 : >FRAMER: unexpected length 8 08
[31602] Wed Jan 3 12:18:19 2018 : Fehler recv, Abbruch
[31602] Wed Jan 3 12:18:19 2018 : Fehler beim ausfuehren von setIntervalleLundiChauffage 06:00 22:00

vcontrold becomes unresponsive after some failed requests

I just noticed the following:

Today, the heating engineer did some maintaing on my heating. He removed the optolink adapter for an hour or so. I have a Raspberry Pi running that requests some data each five minutes, so some requests wil have failed in that time.

Even after replugging the adapter, I could not request any data anymore, although the daemon was apparently still running. After restarting the daemon, everything worked normally again.

So I think something goes wrong when a lot of requests fail? Surely not a severe issue, but probably something we want to fix.

Cheers, Tobias

Meaning of "SYNC (NOT OK)" return status?

Hi guys,

when trying to set warm water temperature (setTemWWsoll) on my Vitodens200, I am receiving a "SYNC (NOT OK)" result. What is the meaning of this return code?

Thanks in advance
Best regards
DBa

Installation on Raspberry: Protocoll P300 undefined

Hi, I'm trying to setup my new vitovalor with openv. I have a RPi 3 and USB-connected cable. I follow installation instructions from this wiki and from here

Unfortunately I cannot get the vcontrold to start, it stops with the following error codes. What am I missing?
Regards, Florian

[6166] Sat Sep 29 11:30:24 2018 : started vcontrold version 0.98.6-1-g96c2a55

[6166] Sat Sep 29 11:30:24 2018 : Protocol P300 not defined

Make failed. A lot warnings on RaspiZeroW and Raspi3

Hallo,

i have problems with compiling on RaspiZeroW and Raspi3. Please help.
I used this instructions: https://github.com/openv/openv/wiki/vcontrold-mit-Raspberry-Pi

My pi's are all on latest buster with all updates.

root@raspi3fhem:~/openv/vcontrold-code/vcontrold# make
gcc -DPACKAGE_NAME=\"vcontrol\" -DPACKAGE_TARNAME=\"vcontrol\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"vcontrol\ 1.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"vcontrol\" -DVERSION=\"1.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETDB_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SEM_H=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DRETSIGTYPE=void -DHAVE_ALARM=1 -DHAVE_BZERO=1 -DHAVE_GETHOSTBYNAME=1 -DHAVE_SOCKET=1 -DHAVE_STRCHR=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -I.   -I/usr/include/libxml2  -g -O2 -c -o vclient.o vclient.c
vclient.c: In function ‘main’:
vclient.c:178:6: warning: ‘strncat’ specified bound 1 equals source length [-Wstringop-overflow=]
      strncat(commands, ",", 1);
      ^~~~~~~~~~~~~~~~~~~~~~~~~
vclient.c:251:5: warning: ‘strncat’ specified bound 1 equals source length [-Wstringop-overflow=]
     strncat(commands, ",", 1);
     ^~~~~~~~~~~~~~~~~~~~~~~~~
gcc -DPACKAGE_NAME=\"vcontrol\" -DPACKAGE_TARNAME=\"vcontrol\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"vcontrol\ 1.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"vcontrol\" -DVERSION=\"1.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETDB_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SEM_H=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DRETSIGTYPE=void -DHAVE_ALARM=1 -DHAVE_BZERO=1 -DHAVE_GETHOSTBYNAME=1 -DHAVE_SOCKET=1 -DHAVE_STRCHR=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -I.   -I/usr/include/libxml2  -g -O2 -c -o client.o client.c
client.c: In function ‘sendCmdFile’:
client.c:152:3: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
   strncpy(ptr->cmd,line,strlen(line)-1);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
client.c:152:25: note: length computed here
   strncpy(ptr->cmd,line,strlen(line)-1);
                         ^~~~~~~~~~~~
client.c: In function ‘sendCmds’:
client.c:171:3: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
   strncpy(ptr->cmd,sptr,strlen(sptr));
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc -DPACKAGE_NAME=\"vcontrol\" -DPACKAGE_TARNAME=\"vcontrol\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"vcontrol\ 1.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"vcontrol\" -DVERSION=\"1.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETDB_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SEM_H=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DRETSIGTYPE=void -DHAVE_ALARM=1 -DHAVE_BZERO=1 -DHAVE_GETHOSTBYNAME=1 -DHAVE_SOCKET=1 -DHAVE_STRCHR=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -I.   -I/usr/include/libxml2  -g -O2 -c -o common.o common.c
common.c: In function ‘logIT’:
common.c:65:2: warning: implicit declaration of function ‘vasprintf’; did you mean ‘vsprintf’? [-Wimplicit-function-declaration]
  vasprintf(&print_buffer, string, arguments);
  ^~~~~~~~~
  vsprintf
gcc -DPACKAGE_NAME=\"vcontrol\" -DPACKAGE_TARNAME=\"vcontrol\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"vcontrol\ 1.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"vcontrol\" -DVERSION=\"1.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETDB_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SEM_H=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DRETSIGTYPE=void -DHAVE_ALARM=1 -DHAVE_BZERO=1 -DHAVE_GETHOSTBYNAME=1 -DHAVE_SOCKET=1 -DHAVE_STRCHR=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -I.   -I/usr/include/libxml2  -g -O2 -c -o socket.o socket.c
socket.c: In function ‘openSocket’:
socket.c:61:2: warning: implicit declaration of function ‘asprintf’; did you mean ‘vsprintf’? [-Wimplicit-function-declaration]
  asprintf(&port, "%d", tcpport);
  ^~~~~~~~
  vsprintf
gcc -DPACKAGE_NAME=\"vcontrol\" -DPACKAGE_TARNAME=\"vcontrol\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"vcontrol\ 1.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"vcontrol\" -DVERSION=\"1.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETDB_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SEM_H=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DRETSIGTYPE=void -DHAVE_ALARM=1 -DHAVE_BZERO=1 -DHAVE_GETHOSTBYNAME=1 -DHAVE_SOCKET=1 -DHAVE_STRCHR=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -I.   -I/usr/include/libxml2  -g -O2 -c -o io.o io.c
io.c: In function ‘waitfor’:
io.c:296:3: warning: ‘strncat’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
   strncat(hexString,dummy,strlen(dummy));
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc  -g -O2   -o vclient vclient.o client.o common.o socket.o io.o  -lxml2
gcc -DPACKAGE_NAME=\"vcontrol\" -DPACKAGE_TARNAME=\"vcontrol\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"vcontrol\ 1.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"vcontrol\" -DVERSION=\"1.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETDB_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SEM_H=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DRETSIGTYPE=void -DHAVE_ALARM=1 -DHAVE_BZERO=1 -DHAVE_GETHOSTBYNAME=1 -DHAVE_SOCKET=1 -DHAVE_STRCHR=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -I.   -I/usr/include/libxml2  -g -O2 -c -o vsim.o vsim.c
vsim.c: In function ‘logIT’:
vsim.c:40:2: warning: implicit declaration of function ‘vasprintf’; did you mean ‘vsprintf’? [-Wimplicit-function-declaration]
  vasprintf(&print_buffer, string, arguments);
  ^~~~~~~~~
  vsprintf
gcc  -g -O2   -o vsim vsim.o socket.o  -lxml2
gcc -DPACKAGE_NAME=\"vcontrol\" -DPACKAGE_TARNAME=\"vcontrol\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"vcontrol\ 1.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"vcontrol\" -DVERSION=\"1.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETDB_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SEM_H=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DRETSIGTYPE=void -DHAVE_ALARM=1 -DHAVE_BZERO=1 -DHAVE_GETHOSTBYNAME=1 -DHAVE_SOCKET=1 -DHAVE_STRCHR=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -I.   -I/usr/include/libxml2  -g -O2 -c -o vcontrold.o vcontrold.c
gcc -DPACKAGE_NAME=\"vcontrol\" -DPACKAGE_TARNAME=\"vcontrol\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"vcontrol\ 1.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"vcontrol\" -DVERSION=\"1.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETDB_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SEM_H=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DRETSIGTYPE=void -DHAVE_ALARM=1 -DHAVE_BZERO=1 -DHAVE_GETHOSTBYNAME=1 -DHAVE_SOCKET=1 -DHAVE_STRCHR=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -I.   -I/usr/include/libxml2  -g -O2 -c -o parser.o parser.c
parser.c: In function ‘expand.part.1’:
parser.c:472:6: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
      strncpy(ePtr,cPtr->unit,strlen(cPtr->unit));
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
parser.c:467:5: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
     strncpy(ePtr,string,strlen(string));
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
parser.c:462:5: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
     strncpy(ePtr,string,strlen(string));
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
parser.c:505:4: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
    strncpy(ePtr,mFPtr->command,strlen(mFPtr->command));
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc -DPACKAGE_NAME=\"vcontrol\" -DPACKAGE_TARNAME=\"vcontrol\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"vcontrol\ 1.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"vcontrol\" -DVERSION=\"1.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETDB_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SEM_H=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DRETSIGTYPE=void -DHAVE_ALARM=1 -DHAVE_BZERO=1 -DHAVE_GETHOSTBYNAME=1 -DHAVE_SOCKET=1 -DHAVE_STRCHR=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -I.   -I/usr/include/libxml2  -g -O2 -c -o framer.o framer.c
gcc -DPACKAGE_NAME=\"vcontrol\" -DPACKAGE_TARNAME=\"vcontrol\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"vcontrol\ 1.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"vcontrol\" -DVERSION=\"1.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETDB_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SEM_H=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DRETSIGTYPE=void -DHAVE_ALARM=1 -DHAVE_BZERO=1 -DHAVE_GETHOSTBYNAME=1 -DHAVE_SOCKET=1 -DHAVE_STRCHR=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -I.   -I/usr/include/libxml2  -g -O2 -c -o xmlconfig.o xmlconfig.c
xmlconfig.c: In function ‘parseUnit’:
xmlconfig.c:617:5: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow
]
     strncpy(ePtr->text,chrPtr,strlen(chrPtr));
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc -DPACKAGE_NAME=\"vcontrol\" -DPACKAGE_TARNAME=\"vcontrol\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"vcontrol\ 1.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"vcontrol\" -DVERSION=\"1.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETDB_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SEM_H=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DRETSIGTYPE=void -DHAVE_ALARM=1 -DHAVE_BZERO=1 -DHAVE_GETHOSTBYNAME=1 -DHAVE_SOCKET=1 -DHAVE_STRCHR=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -I.   -I/usr/include/libxml2  -g -O2 -c -o arithmetic.o arithmetic.c
gcc -DPACKAGE_NAME=\"vcontrol\" -DPACKAGE_TARNAME=\"vcontrol\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"vcontrol\ 1.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"vcontrol\" -DVERSION=\"1.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETDB_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SEM_H=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DRETSIGTYPE=void -DHAVE_ALARM=1 -DHAVE_BZERO=1 -DHAVE_GETHOSTBYNAME=1 -DHAVE_SOCKET=1 -DHAVE_STRCHR=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -I.   -I/usr/include/libxml2  -g -O2 -c -o unit.o unit.c
gcc -DPACKAGE_NAME=\"vcontrol\" -DPACKAGE_TARNAME=\"vcontrol\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"vcontrol\ 1.0\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" -DPACKAGE=\"vcontrol\" -DVERSION=\"1.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_FCNTL_H=1 -DHAVE_NETDB_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYSLOG_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SEM_H=1 -DHAVE_FORK=1 -DHAVE_VFORK=1 -DHAVE_WORKING_VFORK=1 -DHAVE_WORKING_FORK=1 -DRETSIGTYPE=void -DHAVE_ALARM=1 -DHAVE_BZERO=1 -DHAVE_GETHOSTBYNAME=1 -DHAVE_SOCKET=1 -DHAVE_STRCHR=1 -DHAVE_STRERROR=1 -DHAVE_STRSTR=1 -I.   -I/usr/include/libxml2  -g -O2 -c -o semaphore.o semaphore.c
gcc  -g -O2   -o vcontrold vcontrold.o parser.o framer.o io.o common.o socket.o xmlconfig.o arithmetic.o unit.o semaphore.o  -lxml2
root@raspi3fhem:~/openv/vcontrold-code/vcontrold#

vclient <ip:port> not accepted anymore

Since version 0.98.8:

$ vclient -h 127.0.0.1:3002 -c getSystemTime -v
Host: 127.0.0.1:3002 Port: 3002
[2308] Mon Jan 6 22:51:16 2020 : Error in getaddrinfo: 127.0.0.1:3002:Name or service not known

Possibly this issue is introduced with commit #52.
No issue when omitting port in host ip or using -h 127.0.0.1 -p 3002.

vcontrold in Cygwin-shell returns "Parse error: Found no blanks: RECVC"

At the moment I am trying to use vcontrold on Windows10 64-bit in a Cygwin-shell. In this Cygwin-shell the vcontrold is compiled by issuieing the following commands in the given order (partially following the instructions from https://github.com/openv/openv/wiki/Vcontrold-Kompilieren):

  1. Installation of Cygwin64-bit with some additional packages like libxml2-devel (2.9.4-2) and adding paths to the system environment.
    $ uname -a
    gives
    CYGWIN_NT-10.0 SurfacePro3 2.10.0(0.325/5/3) 2018-02-02 15:16 x86_64 Cygwin

  2. Cloning the latest release of vcontrold from https://github.com/openv/vcontrold.git by
    $ git clone https://github.com/openv/vcontrold.git
    $ cd vcontrold
    and switching to the latest release by
    $ git checkout -b v0.98.5

  3. Preparing the build with
    $ mkdir build; cd build
    $ cmake -MANPAGES=OFF ..
    returns

-- The C compiler identification is GNU 6.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found LibXml2: /usr/lib/libxml2.dll.a (found version "2.9.4")
-- Found rst2man: /cygdrive/c/Anaconda3/Scripts/rst2man.py
-- Configuring done
-- Generating done
-- Build files have been written to: /home/Christian/vcontrold/build
  1. Then issue make by
    cmake --build .
    returns
Scanning dependencies of target UpdateVersion
[  5%] Updating version header.
-- Updating version information to 0.98.5-4-g7106a53 ...
[  5%] Built target UpdateVersion
Scanning dependencies of target vcontrold
[ 10%] Building C object CMakeFiles/vcontrold.dir/src/io.c.o
[ 15%] Building C object CMakeFiles/vcontrold.dir/src/common.c.o
[ 20%] Building C object CMakeFiles/vcontrold.dir/src/xmlconfig.c.o
[ 25%] Building C object CMakeFiles/vcontrold.dir/src/parser.c.o
[ 30%] Building C object CMakeFiles/vcontrold.dir/src/socket.c.o
[ 35%] Building C object CMakeFiles/vcontrold.dir/src/semaphore.c.o
[ 40%] Building C object CMakeFiles/vcontrold.dir/src/framer.c.o
[ 45%] Building C object CMakeFiles/vcontrold.dir/src/unit.c.o
[ 50%] Building C object CMakeFiles/vcontrold.dir/src/arithmetic.c.o
[ 55%] Building C object CMakeFiles/vcontrold.dir/src/vcontrold.c.o
[ 60%] Linking C executable vcontrold.exe
[ 60%] Built target vcontrold
Scanning dependencies of target vclient
[ 65%] Building C object CMakeFiles/vclient.dir/src/common.c.o
[ 70%] Building C object CMakeFiles/vclient.dir/src/socket.c.o
[ 75%] Building C object CMakeFiles/vclient.dir/src/io.c.o
[ 80%] Building C object CMakeFiles/vclient.dir/src/client.c.o
[ 85%] Building C object CMakeFiles/vclient.dir/src/vclient.c.o
[ 90%] Linking C executable vclient.exe
[ 90%] Built target vclient
Scanning dependencies of target man
[ 95%] Converting vcontrold.rst from ReStructuredText into manpage vcontrold.1.gz
C:\Anaconda3\python.exe: can't open file '/cygdrive/c/Anaconda3/Scripts/rst2man.py': [Errno 2] No such file or directory
[100%] Converting vclient.rst from ReStructuredText into manpage vclient.1.gz
C:\Anaconda3\python.exe: can't open file '/cygdrive/c/Anaconda3/Scripts/rst2man.py': [Errno 2] No such file or directory
[100%] Built target man
  1. Testing vcontrold with
    $ vcontrold -x ../xml/300/vcontrold.xml
    yields a bunch of these errors
...
[3396] Sat Feb 17 10:59:34 2018 : Parse error: Found no blanks: RECV3
[3396] Sat Feb 17 10:59:34 2018 : Parse error: Found no blanks: RECV3
[3396] Sat Feb 17 10:59:34 2018 : Parse error: Found no blanks: RECVC
[3396] Sat Feb 17 10:59:34 2018 : Unit SC not defined

With debug mode enabled the result looks like this
$ vcontrold -x ../xml/300/vcontrold.xml -g
yields (excerpt)

[9236] Sat Feb 17 11:02:44 2018 :         Token: 3 Hexlen: 5, Unit:
[9236] Sat Feb 17 11:02:44 2018 :         Token: 5 Hexlen: 1, Unit: UN
[9236] Sat Feb 17 11:02:44 2018 :         Token: 2 Hexlen: 1, Unit: SR
[9236] Sat Feb 17 11:02:44 2018 :         Token: 0 Hexlen: 0, Unit:
[9236] Sat Feb 17 11:02:44 2018 :         Token: 2 Hexlen: 13, Unit:
[9236] Sat Feb 17 11:02:44 2018 : BuildByteCode: SEND 00 01 37 D4 01;RECV 1 ST
[9236] Sat Feb 17 11:02:44 2018 :         Token: 3 Hexlen: 5, Unit:
[9236] Sat Feb 17 11:02:44 2018 :         Token: 2 Hexlen: 1, Unit: ST
[9236] Sat Feb 17 11:02:44 2018 :         Token: 0 Hexlen: 0, Unit:
[9236] Sat Feb 17 11:02:44 2018 : Parse error: Found no blanks: RECV3

The same parse errors occur when I use the files from a working vcontrold on a raspberry pi. Any ideas?

How to use setaddr

Hi, could somebody help me to understand how to use the setaddr command, in particular how to pass the value to write using the command line? I only found very few examples for the set, what I finally use is the following command line:

vclient -h 127.0.0.1 -p 3002 -m -c 'setLueftBetrArtRaw 2' -v

Using the verbose mode, the output is the following:

option -v

Host: 127.0.0.1 Port: 3002
setLueftBetrArtRaw 2.value 0.000000

So the value 2 seems to be interpreted as a part of the command itself and independent from that, the value is always 0. What is the correct way to use vclient when I want to pass a value for a setaddr command?

This is the configuration I'm using, in fact I only modified vito.xml

extract from vcontrold.xml

<unit name='Status'>
      <abbrev>ST</abbrev>
      <calc get='V' set='V'/>
      <type>char</type>
      <entity></entity>
</unit>

<command name="setaddr">
     <send>SEND 00 02 $addr $hexlen BYTES;RECV 1 SR</send>
</command>

extract from vito.xml

<command name="setLueftBetrArtRaw" protocmd="setaddr">
      <addr>B005</addr>
      <len>1</len>
      <unit>ST</unit>
      <description>Betriebsart Lueftung</description>
</command>

Data format not suitable for heterogenous product families?!

The current data format is not well suited for heterogenous product families.

I had a closer look at the feature set/supported functions of various Viessmann devices.
Data is based on investigations of the Viessmann VitoSoft Demo.

similarity-500marked
similarity_a3.pdf

Whileas the family of GWG marked on the bottom right seem to be quite uniform, the more recent family of Viessmann devices marked on the top, which are more important to the common vcontrold user, is quite heterogenous.

Currently, the XML config excludes devices when a device does not support a function.
This should be changed to an inclusion scheme.

Runtime für Windows

Hallo!

Gibt es eine Möglichkeit vcontrold und vclient unter Windows laufen zu lassen?
Mit cygwin kommt ein Fehler 7b und es läuft nicht.

Gibt es evtl ein neues binary?

Error in manpage about the serial-device option?

According to the manpage, the device file to use can be set using the <serial-device> tag. I currently have:

<serial>
    <tty>/dev/ttyAMA0</tty>
</serial>

If I change it to

<serial-device>/dev/ttyAMA0</serial-device>

vcontrold crashes with a segfault. Looking into the sources, the xml config apparently does not know about a serial-device tag. If this is actually the case, we either should process this tag (which would be a meaningful thing imo, as the current serial tag is apparently always followed by a tty tag and nothing else, so exchaning this for a serial-device tag would be less complicated), or we should change the manpage.

I just didn't want to correct the manpage without asking first if I'm correct.

Cheers, Tobias

Tagging a "real" release

Apparently, the rework is okay, ahd some other stuff has been fixed as well?

What about tagging and creating a "real" release? E. g. with version number 0.99? I was working on a Gentoo ebuild for vcontrold, and it would of course be much nicer to reference a real release than some git ID.

What do you think?

setSystemTime fails because of bufsize not set

setSysTime (unit.c)
does currently not allow any parameter but creates the string itself.

However, calling fails with only one byte of the string transmitted.
'bufsitze' would normally give the length of the entered command line,
but is zero in this forced case.
Now string2chr gets an incorrect number (zero) of bytes to convert.
(string2char always returns a single byte and count 1, even on bufsize zero ...)

Setting bufsize to 8 mitigates the issue:

    bufsize = 8;
    return string2chr(systime, sendBuf, bufsize);

or

    return string2chr(systime, sendBuf, 8);

Pull #49 opened on 25 Nov 2018 by nexx512 "Implemented setSystemTime "
also correctly calls with '8', so whatever comes first ... :-)

Best regards,
Igor

extend 10 byte limitation

There are many functions defined at same address but different byte position. From Vitosoft 300 Demo/ xml files I got the following addresses:

HK_AktuelleBetriebsartA1M1~0x2500

<Description>@@viessmann.eventtype.HK_AktuelleBetriebsartA1M1.description</Description>

<DataType>Dropdown</DataType>

<SDKDataType>Int</SDKDataType>

<AccessMode>Read</AccessMode>

<Conversion>NoConversion</Conversion>

<ConversionFactor>0</ConversionFactor>

<ConversionOffset>0</ConversionOffset>

<Address>0x2500</Address>

<FCRead>Virtual_READ</FCRead>

<FCWrite>undefined</FCWrite>

<Parameter>Byte</Parameter>

<BlockLength>22</BlockLength>

<BytePosition>1</BytePosition>

<ByteLength>1</ByteLength>

<BitPosition>0</BitPosition>

<BitLength>0</BitLength>

HK_AufheiztimerA1M1~0x2500

<Description>@@viessmann.eventtype.HK_AufheiztimerA1M1.description</Description>

<SDKDataType>Double</SDKDataType>

<Unit>ecnUnit.Sekunden</Unit>

<AccessMode>Read</AccessMode>

<Conversion>Div10</Conversion>

<Address>0x2500</Address>

<FCRead>Virtual_READ</FCRead>

<FCWrite>undefined</FCWrite>

<Parameter>Byte</Parameter>

<BlockLength>22</BlockLength>

<BytePosition>2</BytePosition>

<ByteLength>4</ByteLength>

<BitPosition>0</BitPosition>

<BitLength>0</BitLength>

<OptionList>NoLogging</OptionList>

So beside from different data and conversion type there are differences in the byte position and length. Currently it is not possible to read byte 12 of blocklength of 22. From /wiki/vcontrold.xml I understand that B0...B9 is possible. I would like to have the optionto read up to 90 bytes (max value for block length defined in viessmann config)?

To read block length of 22 and the specific byte length and position I adjusted "arithmetic.c" to accept at least 22 bytes. I'm evertyhing but a programmer, so I bet you will find a better way to implement it.
arithmetic_22byte.c.txt

Anyone being able to read out solar pump speed?

At 6552 the status of the solar pump can be read (apparently only first byte). However I have not been able to get the actual speed (of the PWM control) from this address (second byte). I tried using different unit descriptions, but result is alway 0 %.

In the main display of the device (343-F) the percentage of the solar pump is shown in the service menu.

Anyone having had success with the speed read-out? Maybe at another address?

threads + bulkexec

as mentioned in #1 https://github.com/thelsing/vcontrold/ has very interesting changes

  • added multitheading for concurrent usage of many clients
  • added bulkexec command to exec more than one command
  • changed configuration format (to make conversion from Vitosoft Datapoints easier)

Device 204D not defined

Hi,

I have set up vcontrold on my rpi4. Everything works except that my device is reported as not defined when I start vcontrol.

I have the following:

Vitotronic 200 | 204D | 300,KW2 | Vitotronic 200 (WO1C) | Wärmepumpenregelung (Vitocal 2xx-G/3xx-G mit Vitotronic 200 (Typ WO1C)

Is this device too new (nearly three years old)?

Wiki update needed: wiki/vcontrold-mit-Raspberry-Pi

Punkt 6: Service starten (inkl. automatischer Start)

update-rc.d vcontrol start 99 2 3 4 5 . stop 99 0 1 6 .
**update-rc.d: warning: start and stop actions are no longer supported; falling ba                           ck to defaults**
```
Wie muss der abgeänderte Befehl lauten? Komme hier aktuell nicht weiter...

Issue with frame.c confirmed with the last version ...

on pi :
508 wget https://github.com/openv/vcontrold/releases/download/v0.98.4/vcontrold_0.98.4-40_armhf.deb
509 ls
510 dpkg -i vcontrold_0.98.4-40_armhf.deb
511 /usr/sbin/vcontrold -x vcontrold.xml -g -n

On remote :
assyrium@Gandalf:~$ telnet 192.168.1.2 3002
Trying 192.168.1.2...
Connected to 192.168.1.2.
Escape character is '^]'.
vctrld>version
Version: 0.98.4
vctrld>setIntervalleLundiChauffage 05:00 20:00
ERR: >FRAMER: addr was still active FE06

FRAMER: Command send
FRAMER: unexpected length 8 08
Fehler recv, Abbruch
Fehler beim ausfuehren von setIntervalleLundiChauffage 05:00 20:00
vctrld>

....

getError0..9

Die Uhrzeit des Rückgabewertes ist immer um 1 Stunde zu früh datiert. Die Systemzeit der Heizung wird korrekt zurück gegeben.

using setaddr causes vcontrold crash P300 and 20C8

hi,

I checked things multiple times but as soon as I try to use setaddr I am receiving 'Received SIGPIPE' and vcontrold is repeating that message unlimited times.

pls find attached the vito.xml and vcontrold.xml(see next post...)

vcontrold -V                                                                                                                                               


vcontrold version 0.98.9-2-g09b789e

version should be latest...

This happens with following example:

sudo /usr/local/bin/vclient  -h 127.0.0.1 -p 3002  -c 'detail getVitoBetriebsartHK1,debug on,getVitoBetriebsartHK1'
detail getVitoBetriebsartHK1:
getVitoBetriebsartHK1: SEND 00 01 23 01 01;RECV 1 BA
	Unit: BetriebsArt (BA)
	  Type: enum
	  Get-Calc: (null)
	                                    Set-Calc: (null)
	 Einheit: (null)
	  Enum Bytes: 00 Text: WW
	  Enum Bytes: 01 Text: RED
	  Enum Bytes: 02 Text: NORM
	  Enum Bytes: 04 Text: H+WW FS
	  Enum Bytes: 03 Text: H+WW
	  Enum Bytes: 05 Text: ABSCHALT
	  Enum Bytes: <default> Text: UNKNOWN
debug on:

getVitoBetriebsartHK1:
DEBUG:Wed May 13 15:38:36 2020 : Command: getVitoBetriebsartHK1
DEBUG:Wed May 13 15:38:36 2020 : Process 29827 tries to aquire lock
DEBUG:Wed May 13 15:38:36 2020 : Process 29827 got lock
DEBUG:Wed May 13 15:38:36 2020 : >FRAMER: open device /dev/ttyUSB0 ProtocolID 41
DEBUG:Wed May 13 15:38:36 2020 : Configuring serial interface /dev/ttyUSB0
DEBUG:Wed May 13 15:38:36 2020 : >SENT: 04
DEBUG:Wed May 13 15:38:38 2020 : <RECV: len=1 05 (1920.0 ms)
DEBUG:Wed May 13 15:38:38 2020 : <RECV: received 05
DEBUG:Wed May 13 15:38:38 2020 : >FRAMER: framer_reset_actaddr framer_current_addr = FRAMER_LINK_STATUS(05) (was FFFF)
DEBUG:Wed May 13 15:38:38 2020 : >FRAMER: closed
DEBUG:Wed May 13 15:38:38 2020 : >SENT: 16
DEBUG:Wed May 13 15:38:38 2020 : >SENT: 00
DEBUG:Wed May 13 15:38:38 2020 : >SENT: 00
DEBUG:Wed May 13 15:38:38 2020 : <RECV: len=1 06 (10.0 ms)
DEBUG:Wed May 13 15:38:38 2020 : <RECV: received 06
DEBUG:Wed May 13 15:38:38 2020 : >FRAMER: framer_reset_actaddr framer_current_addr = FRAMER_NO_ADDR (was FE05)
DEBUG:Wed May 13 15:38:38 2020 : >FRAMER: opened
DEBUG:Wed May 13 15:38:38 2020 : >SENT: 41
DEBUG:Wed May 13 15:38:38 2020 : >SENT: 05
DEBUG:Wed May 13 15:38:38 2020 : >SENT: 00
DEBUG:Wed May 13 15:38:38 2020 : >SENT: 01
DEBUG:Wed May 13 15:38:38 2020 : >SENT: 23
DEBUG:Wed May 13 15:38:38 2020 : >SENT: 01
DEBUG:Wed May 13 15:38:38 2020 : >SENT: 01
DEBUG:Wed May 13 15:38:38 2020 : >SENT: 2B
DEBUG:Wed May 13 15:38:38 2020 : <RECV: len=1 06 (20.0 ms)
DEBUG:Wed May 13 15:38:38 2020 : <RECV: received 06
DEBUG:Wed May 13 15:38:38 2020 : >FRAMER: framer_set_actaddr framer_current_addr = 0123 (was FFFF)
DEBUG:Wed May 13 15:38:38 2020 : >FRAMER: Command send
DEBUG:Wed May 13 15:38:38 2020 : >FRAMER: no preset result
DEBUG:Wed May 13 15:38:38 2020 : <RECV: len=1 41 (10.0 ms)
DEBUG:Wed May 13 15:38:38 2020 : <RECV: received 41
DEBUG:Wed May 13 15:38:38 2020 : <RECV: len=1 06 (0.0 ms)
DEBUG:Wed May 13 15:38:38 2020 : <RECV: received 06
DEBUG:Wed May 13 15:38:38 2020 : <RECV: len=1 01 (0.0 ms)
DEBUG:Wed May 13 15:38:38 2020 : <RECV: len=1 01 (0.0 ms)
DEBUG:Wed May 13 15:38:38 2020 : <RECV: len=1 23 (0.0 ms)
DEBUG:Wed May 13 15:38:38 2020 : <RECV: len=1 01 (10.0 ms)
DEBUG:Wed May 13 15:38:38 2020 : <RECV: len=1 01 (0.0 ms)
DEBUG:Wed May 13 15:38:38 2020 : <RECV: len=1 04 (0.0 ms)
DEBUG:Wed May 13 15:38:38 2020 : <RECV: len=1 31 (10.0 ms)
DEBUG:Wed May 13 15:38:38 2020 : <RECV: received 01 01 23 01 01 04 31
DEBUG:Wed May 13 15:38:38 2020 : >FRAMER: framer_reset_actaddr framer_current_addr = FRAMER_NO_ADDR (was 0123)
DEBUG:Wed May 13 15:38:38 2020 : 04 -> H+WW FS
DEBUG:Wed May 13 15:38:38 2020 : H+WW FS
H+WW FS

when I try to set this e.g. to WW only:

sudo /usr/local/bin/vclient  -h 127.0.0.1 -p 3002  -c 'detail setVitoBetriebsartHK1,debug on,setVitoBetriebsartHK1 WW'
[28066] Wed May 13 10:55:28 2020 : timeout wait:vctrld>
[28066] Wed May 13 10:55:28 2020 : Error communicating with the server

log output:

[23675] Wed May 13 10:36:45 2020 : >SENT: 04
[23675] Wed May 13 10:36:45 2020 : <RECV: len=1 06 (10.0 ms)
[23675] Wed May 13 10:36:45 2020 : Received SIGPIPE
[23675] Wed May 13 10:36:45 2020 : Received SIGPIPE
[23675] Wed May 13 10:36:45 2020 : Received SIGPIPE
[23675] Wed May 13 10:36:45 2020 : Received SIGPIPE
[23675] Wed May 13 10:36:45 2020 : Received SIGPIPE
[23675] Wed May 13 10:36:45 2020 : Received SIGPIPE
[23675] Wed May 13 10:36:45 2020 : Received SIGPIPE

greetings and thanks for tips and help!
ori

Vcontrold without dependency on libxml2 as shared library?

Hi,

I'm trying to get vcontrold running on a Homematic CCU3 which is raspbian based. However if I use the precompiled binaries from the release page, I run into the missing library libxml2.so.2

vcontrold: error while loading shared libraries: libxml2.so.2: cannot open shared object file: No such file or directory

Without being an expert in compiling, is there a easy way to incorporate these libraries into vcontrold directly?

Thanks for any hints in the right direction.

Jan

vcontrold.log auto delete needed

I checked vcontrold.log after almost two years and its filesize grew to more than 6Gb. Is there an option what should be logged or an auto delete?

make DESTDIR=/usr/local install fails

Gets installed in /usr/local/usr/local/...

pi ~/src/vcontrold/build $ sudo make DESTDIR=/usr/local install
[  5%] Updating version header.
-- Updating version information to 0.98.5-4-gf3e0f20 ...
[  5%] Built target UpdateVersion
[ 35%] Built target vclient
[ 90%] Built target vcontrold
[100%] Built target man
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/usr/local/sbin/vcontrold
-- Installing: /usr/local/usr/local/bin/vclient
-- Installing: /usr/local/usr/local/share/man/man1/vcontrold.1.gz
-- Installing: /usr/local/usr/local/share/man/man1/vclient.1.gz

Problem with SET commands

Hi,

I have successfully installed VControld and and it actually works when it coms to reading things - like outside temperature, water temperature, water pump status, etc. The problem is that I am not able to perform any actions using GET commands - for example I failed running "setBetriebPartyM1 1" or "setPumpeStatusZirku 1". When I run set command I get:

vctrld>setBetriebPartyM1 1
ERR:
>FRAMER: Command send
<RECV: read timeout
>FRAMER: read failure
Fehler recv, Abbruch
Fehler beim ausfuehren von setBetriebPartyM1 1

I have Vitodens 200-W (B2HB) with Vitotronic 200 (HO2B). I used configuration files under "~/xml-32/xml_p300" and set DEVICE ID to "20CB".

Am I doing something wrong, or it's some general issue?

Sticky Bit not set for vcontrold

After
make
sudo make install

the vcontrold and vclient are build and installed.
The vcontrold is copied into "usr/local/sbin"
if vcontrold runs as daemon it tries to create a PID lock file in
/var/run/vcontrold.pid
However if the sticky bit is not set the code in vcontrold.c
sid = setsid();
has not effect and there might not be enough rights to create the PID file.
This happens especially when one creates a service file for systemctl
As a workaround set the sticky bit manually
sudo chmod +s /usr/local/sbin/vcontrold

As an improvement change "make install" appropriately.

[security] Allow IP list is not verified

Hi,

the list of allowed host is not verified anymore. The check was removed with commit 4acb431 in file socket.c:92. This is a security-critical bug as anyone with network acces is allowed to change heater settings.

Regards, Jens

compile errors on Mac OSX 10.15

When I try to compile vcontrold (current master), I get

[ 14%] Building C object CMakeFiles/vclient.dir/src/socket.c.o
/Users/hmueller/src/raspberry/vcontrold/src/socket.c:78:5: warning: implicit declaration of function 'asprintf' is invalid in C99 [-Wimplicit-function-declaration]
    asprintf(&port, "%d", tcpport);
    ^
/Users/hmueller/src/raspberry/vcontrold/src/socket.c:135:24: error: use of undeclared identifier 'NI_MAXHOST'
    char clienthost   [NI_MAXHOST];
                       ^
/Users/hmueller/src/raspberry/vcontrold/src/socket.c:136:24: error: use of undeclared identifier 'NI_MAXSERV'
    char clientservice[NI_MAXSERV];
                       ^
1 warning and 2 errors generated.

I use OSX Catalina with XCode. cmake from brew.
cmake outputs

(hmueller@mbp2)~/src/raspberry/vcontrold/build> cmake -DVSIM=ON -DMANPAGES=OFF -DCMAKE_INSTALLATION_PREFIX=/usr/local ..
-- The C compiler identification is AppleClang 11.0.0.11000033
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc
-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Found LibXml2: /usr/lib/libxml2.dylib (found version "2.9.4") 
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    CMAKE_INSTALLATION_PREFIX

-- Build files have been written to: /Users/hmueller/src/raspberry/vcontrold/build

Looking into /usr/include/netdb.h I see

#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
#define	NI_MAXHOST	1025
#define	NI_MAXSERV	32
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */

So it looks like _POSIX_C_SOURCE is defined and _DARWIN_C_SOURCE is not.

If I add
set (CMAKE_C_FLAGS "-D_DARWIN_C_SOURCE ${CMAKE_C_FLAGS}")
into CMakeLists.txt this error is gone. But this might not be correct for all platforms.

Bad realloc in vclient

assyrium@Viessmann:/opt/vcontrold-bin $ /usr/bin/vclient -V
vclient version 0.98.4
/usr/bin/vclient -h localhost -p 3002 -c commands
*** Error in `/usr/bin/vclient': double free or corruption (!prev): 0x006ccff8 ***
Abandon

an indice :
If I increase the size of receive buffer (ALLOCSIZE) to high value, the issue disappear ...

vcontrold for Windows?

Hi,
is there a vcontrold version for Windows too? Or how can I compile it as a windows .exe program.

Thanks Axel

vcontrold on OpenWrt

Hi,

I've tried to crosscompile the latest version of vcontrold to OpenWrt, but it appears the method described on https://github.com/openv/openv/wiki/vcontrold-auf-OpenWrt is not up-to-date. The Makefile for instance points to a not existing subversion link, but now OpenV has moved to Github. Also, the new way of compiling uses of 'cmake', whilst the method described in vcotrold-auf-OpenWrt uses the good old 'make'. Not being a Linux guru I did not succeed in reverting everything to 'make' or getting the 'cmake' to work, neither on my local virtual linux box, nor using Travis. Can anyone have a look at this and make vcontrol-auf-OpenWrt working again.
Btw, I got it working on a Raspi, but I prefer using a very low power OpenWrt box above a Raspi.

Thanks in advance

vcontrold error output

Currently I have a lot of communication problems with my vito. But this is another story.

I use vclient --host localhost --port 3002 -f vito-commands.txt -t vito-update.tmpl.py -x /dev/shm/vito-update.py to create a Python script with the data read from vito. If there is a communication error the corresponding value in vito-update.tmpl.py is replaced by e.g.

ERR: >FRAMER: could not close (3 attempts)
Error opening /dev/vitoir0

The problem is the line break which breaks execution of the Python script.
Because there are lots of data read out of vito it would be nice if the script runs despite the error. So it would be good if vcontrold does not output the error in that case (and leaves the value empty). I quickly tested this by setting errClass always to 99 in common.c::logIT(). But this should be done by a command line switch. Should I use an new switch like -q or should we use e.g. -vwhich is currently not really used (no error output to fd per default, only triggered by switch)?

Or is there another solution which I haven't seen?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.