Vitotronic binding and dependencies still actively maintained?

It’s a rather old thread, but nevertheless it might be interesting for someone who owns a Viessmann heating, that I built the integration of our Vitodens 333-f heating using these coponents:

  • vcontrold running on a Raspberry Pi zero W with the optolink adapter attached via USB.
  • Reading the desired data from the adapter is done from a bash script vclient_mqtt.sh, running every 5 minutes via crontab:
#!/bin/bash
#set -x
#----------------------------------------------------------------------------------------
# Forward get results from vclient (part of vcontrold package) as JSON via mosquitto_pub 
#----------------------------------------------------------------------------------------
#mqtt_host=raspi4
mqtt_host=ds218plus
mqtt_client=$HOSTNAME
mqtt_sessionExp=30
vcontrold_host=atlantis:3002
if [[ $1 == "" ]] 
then 
	set $cmdlist = cmd_a
else
	set $cmdlist = cmd_$1
fi
echo cmdlist=$cmdlist

cmd_a='getSystemTime,getIsEinmalladung,getBetriebArt,getUmschaltventil,getLeistungIst,getWWUWPNachlauf,getVolStrom,getBrennerStunden1,getBrennerStarts,getBrennerStatus,getTempA,getTempAged,getTempKist,getTempKsoll,getTempVLsollM1,getTempVListM1,getNeigungM1,getNiveauM1,getTempRL17A,getTempAbgas,getPumpeStatusM1,getPumpeStatusIntern,getPumpeDrehzahlIntern,getPumpeStatusSp,getTempRaumNorSollM1,getTempRaumRedSollM1,getTempWWsoll,getTempWWist,getTempSpu,getTempStp'

#inaktiv: ,getTempKOffset

echo ON  | mosquitto_pub -i $mqtt_client -h $mqtt_host -t heizung/avail -l -x $mqtt_sessionExp
mosquitto_pub -i $mqtt_client -h $mqtt_host -t heizung/vclient/lock -m "ON" -x $mqtt_sessionExp

IFS=',' read -ra cmd_array <<< "$cmd_a"
#Print the split string
for c in "${cmd_array[@]}"
do
	result=`/usr/local/bin/vclient -h $vcontrold_host -c $c`
	#message=(${result// \\n/})
	message=(${result//\n/})
	echo ${message[1]}

	mosquitto_pub -i $mqtt_client -h $mqtt_host -t heizung/$c -m "${message[1]}" -x $mqtt_sessionExp
	sleep 0.01
	
done

cmd2='getTimerWWMo,getTimerWWDi,getTimerWWMi,getTimerWWDo,getTimerWWFr,getTimerWWSa,getTimerWWSo,getTimerM1Mo,getTimerM1Di,getTimerM1Mi,getTimerM1Do,getTimerM1Fr,getTimerM1Sa,getTimerM1So'

IFS=',' read -ra cmd_array <<< "$cmd2"
#Print the split string
for c in "${cmd_array[@]}"
do
	result=`/usr/local/bin/vclient -h $vcontrold_host -c $c`
	message=(${result//\\n/})
	#echo ${message[1]}
	mosquitto_pub -i $mqtt_client -h $mqtt_host -t heizung/$c -m "${message[1]} ${message[2]} ${message[3]} ${message[4]} ${message[5]} ${message[6]} ${message[7]} ${message[8]}" -x $mqtt_sessionExp
	sleep 0.01
	
done

mosquitto_pub -i $mqtt_client -h $mqtt_host -t heizung/vclient/lock -m "OFF" -x $mqtt_sessionExp
  • In openHAB I created this MQTT thing for the heating:
UID: mqtt:topic:ds218plus:heizung
label: Heizung MQTT Thing ds218plus
thingTypeUID: mqtt:topic
configuration:
  availabilityTopic: heizung/avail
  payloadAvailable: ON
bridgeUID: mqtt:broker:ds218plus
location: Keller
channels:
  - id: Aussentemperatur
    channelTypeUID: mqtt:string
    label: Außentemperatur
    description: null
    configuration:
      stateTopic: heizung/getTempA
  - id: Warmwassertemperatur_Ist
    channelTypeUID: mqtt:string
    label: Heizung Warmwassertemp. Ist
    description: null
    configuration:
      stateTopic: heizung/getTempWWist
  - id: Warmwassertemperatur_Soll
    channelTypeUID: mqtt:string
    label: Heizung Warmwassertemp. Soll
    description: null
    configuration:
      stateTopic: heizung/getTempWWsoll
  - id: Kesseltemperatur_Ist
    channelTypeUID: mqtt:string
    label: Heizung Kesseltemp. Ist
    description: null
    configuration:
      stateTopic: heizung/getTempKist
  - id: Kesseltemperatur_Soll
    channelTypeUID: mqtt:string
    label: Heizung Kesseltemp. Soll
    description: null
    configuration:
      stateTopic: heizung/getTempKsoll
  - id: Brennerstunden
    channelTypeUID: mqtt:string
    label: KesselBrennerstunden
    description: null
    configuration:
      stateTopic: heizung/getBrennerStunden1
  - id: Betriebsart
    channelTypeUID: mqtt:string
    label: Kessel Betriebsart
    description: null
    configuration:
      stateTopic: heizung/getBetriebArt
  - id: Brennerstatus
    channelTypeUID: mqtt:string
    label: Kessel Brennerstatus
    description: null
    configuration:
      stateTopic: heizung/getBrennerStatus
  - id: Kesseltemperatur_Offset
    channelTypeUID: mqtt:string
    label: Heizung Kesseltemp. Offset
    description: null
    configuration:
      stateTopic: heizung/getTempKOffset
  - id: Vorlauftemperatur_Ist
    channelTypeUID: mqtt:string
    label: Heizung Vorlauftemp. Ist
    description: null
    configuration:
      stateTopic: heizung/getTempVListM1
  - id: Vorlauftemperatur_Soll
    channelTypeUID: mqtt:string
    label: Heizung Vorlauftemp. Soll
    description: null
    configuration:
      stateTopic: heizung/getTempVLsollM1
  - id: Anlagenleistung
    channelTypeUID: mqtt:string
    label: Heizung Anlagenleistung
    description: null
    configuration:
      stateTopic: heizung/getLeistungIst
  - id: Ruecklauftemperatur
    channelTypeUID: mqtt:string
    label: Heizung Rücklauftemperatur
    description: null
    configuration:
      stateTopic: heizung/getTempRL17A
  - id: Speichertemperatur_Unten
    channelTypeUID: mqtt:string
    label: Heizung Speichertemp. Unten
    description: null
    configuration:
      stateTopic: heizung/getTempSpu
  - id: Speichertemperatur_Tiefpass
    channelTypeUID: mqtt:string
    label: Heizung Speichertemp. Tiefpass
    description: null
    configuration:
      stateTopic: heizung/getTempStp
  - id: Volumenstrom
    channelTypeUID: mqtt:string
    label: Heizung Volumenstrom
    description: null
    configuration:
      stateTopic: heizung/getVolStrom
  - id: Pumpe_StatusIntern
    channelTypeUID: mqtt:string
    label: Pumpe Status Intern
    description: null
    configuration:
      stateTopic: heizung/getPumpeStatusIntern
  - id: Pumpe_DrehzahlIntern
    channelTypeUID: mqtt:string
    label: Pumpe Drehzahl Intern
    description: null
    configuration:
      stateTopic: heizung/getPumpeDrehzahlIntern
  - id: Timer_WarmwasserMontag
    channelTypeUID: mqtt:string
    label: Timer Warmwasser Montag
    description: null
    configuration:
      stateTopic: heizung/getTimerWWMo
  - id: Umschaltventil
    channelTypeUID: mqtt:string
    label: Heizung Umschaltventil
    description: null
    configuration:
      stateTopic: heizung/getUmschaltventil
  - id: SystemTime
    channelTypeUID: mqtt:string
    label: Heizung Systemzeit
    description: null
    configuration:
      stateTopic: heizung/getSystemTime
  - id: Timer_M1Montag
    channelTypeUID: mqtt:string
    label: Timer Heizung Montag
    description: null
    configuration:
      stateTopic: heizung/getTimerM1Mo
  - id: Heizkurve_NeigungM1
    channelTypeUID: mqtt:string
    label: Heizkurve Neigung M1
    description: null
    configuration:
      stateTopic: heizung/getNeigungM1
  - id: Heizkurve_NiveauM1
    channelTypeUID: mqtt:string
    label: Heizkurve Niveau M1
    description: ""
    configuration:
      stateTopic: heizung/getNiveauM1
  - id: BetriebPartyM1
    channelTypeUID: mqtt:string
    label: Betriebsart Party M1
    description: null
    configuration:
      stateTopic: heizung/getBetriebPartyM1
  - id: TempPartyM1
    channelTypeUID: mqtt:string
    label: Temperatur Party M1
    description: null
    configuration:
      stateTopic: heizung/getTempPartyM1
  - id: TempAbgas
    channelTypeUID: mqtt:string
    label: Temperatur Abgas
    description: null
    configuration:
      stateTopic: heizung/getTempAbgas
  - id: Raumtemperatur_Soll
    channelTypeUID: mqtt:string
    label: Raumtemperatur Soll
    description: null
    configuration:
      stateTopic: heizung/getTempRaumNorSollM1
  - id: Raumtemperatur_Red_Soll
    channelTypeUID: mqtt:string
    label: Temperatur Heizung reduziert Soll
    description: null
    configuration:
      stateTopic: heizung/getTempRaumRedSollM1
  - id: Warmwasser_Einmalladung
    channelTypeUID: mqtt:number
    label: Warmwasser einmalige Speicherladung
    description: Ist einmalige Speicherladung aktiv? 0/1
    configuration:
      stateTopic: heizung/getIsEinmalladung
  - id: Brennerstarts
    channelTypeUID: mqtt:string
    label: Kessel Brennerstarts
    description: null
    configuration:
      stateTopic: heizung/getBrennerStarts
  - id: Aussentemperatur_ged
    channelTypeUID: mqtt:string
    label: Außentemperatur gedämpft
    description: null
    configuration:
      stateTopic: heizung/getTempAged

This environment is running successfully for about two years.

I also integrated sending set commands to the vcontrold process to be able change some parameters of the heating. The UI for this is simply built in a sitemap and later on adapted on a Sonoff NSPanel using the NXPanel solution for openHAB.

Regards, Christoph