@jeshab described it perfectly…
The combination of the ThermostatMode and the ThermostatOperatingMode creates a matrix of options.
You can assign 4 different values to the ThermostatMode - SAFE,NIGHT,DAY & COMFORT
and change the ThermostatOperatingMode between HEATING & COOLING
Creating in effect 8 different modes of operation.
Jeshab described it as 2 thermostat modes, each with 4 presets.
Which in Alexa terms was perfect.
So…
I have all the Velbus side of things working perfectly and with Jeshab’s assistance, Alexa seems to be happy too.
What I can’t do yet is get Google Assistant’s incoming commands to be mapped to something that the Velbus (binding) is happy with, (IE, Values that are valid for the thermostats)
So to go through your comments…
Unlike the Alexa metadata that can be mapped and Alexa informed as to the Presets and Modes that are available, we must accept whatever Google understands and map it to whatever our brand of thermostats accept.
(I could be very wrong here)
Either of the following is right
That is the Google mode (heat) being sent to the Velbus thermostat.
The following line in the log is the Thermostat rejecting that command and resetting to SAFE
(Everything is READ/WRITE)
This is where the confusion is
The ThermostatOperatingMode can be either HEATING or COOLING
Whereas the ThermostatMode can be any of the 4 options, SAFE,NIGHT,DAY or COMFORT
String MiddleBedroomGP2_ThermostatMode "Middle Bedroom Thermostat mode" ( MiddleBedroomGP2_Thermostat ) { channel="velbus:vmbgp2:VelbusNetworkBridge:17:thermostat#MODE", ga="thermostatMode" [ modes="off=SAFE,eco=NIGHT,on=DAY,heat=COMFORT" , lang="en" , ordered=true ] , alexa="ModeController.mode" [friendlyNames="@Setting.Preset", supportedModes="SAFE=Safe,NIGHT=Night,DAY=Day,COMFORT=Comfort"]} // Accepts SAFE,NIGHT,DAY,COMFORT
String MiddleBedroomGP2_ThermostatOperatingMode "Middle Bedroom Thermostat operating mode" ( MiddleBedroomGP2_Thermostat ) { channel="velbus:vmbgp2:VelbusNetworkBridge:17:thermostat#OPERATINGMODE" , alexa="ThermostatController.thermostatMode" [COOL="COOLING",HEAT="HEATING"] } // Accepts HEATING & COOLING
The behaviour that you’ll see in the Velbus panel is that when in HEATING mode, the HEATER channel is “PRESSED” when the target temperature is ABOVE the current temperature
Whereas in COOLING mode the COOLER channel is PRESSED when the Target temperature is BELOW the Current temperature.
(It’s possible to create a kind of AUTO mode by assigning actions to the Thermostat Alarm channels and the OperatingMode, where if the Current temperature is +10° above the target, the unit changes to COOLING and another where if the Current Temperature is -10°c below the target temperature the unit changes to HEATING mode)