Page 1 of 1

V_HVAC_FLOW_STATE and V_HVAC_FLOW_MODE not supported

Posted: Saturday 03 October 2015 21:22
by Reydri
I am using MySensors 1.5
I am working on a HVAC Thermostat sensor. I noticed the Setpoint Heat and Cool work fine, but it does not seem Domoticz currently support V_HVAC_FLOW_STATE and V_HVAC_FLOW_MODE types. To me it looks like it is something required in order to make a full HVAC Thermostat solution.

Here's what the log says (so I'm reporting it :)!)

2015-10-03 15:07:23.955 MySensors: Node: 9, Sketch Name: HVAC Thermostat
2015-10-03 15:07:23.963 MySensors: Node: 9, Sketch Version: 1.0
2015-10-03 15:07:23.979 (MySensors Gateway) Thermostat (Setpoint Heat)
2015-10-03 15:07:23.986 (MySensors Gateway) Thermostat (Setpoint Cool)
2015-10-03 15:07:23.994 Error: MySensors: Unhandled sensor (sub-type=21), please report with log!
2015-10-03 15:07:24.003 Error: MySensors: Unknown/Invalid sensor type (46)
2015-10-03 15:07:43.986 (MySensors Gateway) Temp (Thermostat Temp)

In fact, it would be cool if Domoticz also had a widget already for HVAC Thermostat, with temperature control, flow mode and state, current temperature (and humidity?) all in one widget, instead of individual widget for Set Points, etc.

Re: V_HVAC_FLOW_STATE and V_HVAC_FLOW_MODE not supported

Posted: Saturday 03 October 2015 21:50
by pj-r
Can you post your sketch? Someone could make the implementation based on that. I have my house renovating project going on an it will take month or two. I could try to make needed changes after that. I have similar project coming. Im going to "interface" my ventilatin and air-to-water heat pump wiht mysensors and modbus.

Re: V_HVAC_FLOW_STATE and V_HVAC_FLOW_MODE not supported

Posted: Saturday 03 October 2015 22:24
by Reydri
Thanks for the quick reply.

My sketch is not completed yet, I was just testing what wasn't working a while ago, and noticed MySensors now have HVAC types, and saw some commits to Domoticz a while ago and thought everything was working now, so I made a small sketch to confirm if everything works before I go too far...

Basically I only do stuff in the setup function at this point, presenting my sensor and sending dummy values so that Domoticz can register the sensors.
It only works fine for SETPOINT_HEAT and SETPOINT_COOL.
I also would have reported eventually V_HUM since I am using a DHT sensor and it has humidity... but for now I am testing without this. I would have presented it under a different child ID since it does not seem to be part of MySensors HVAC standard (only V_TEMP is it seems).

Another thing I am doing here is that I am setting values as float, even thought MySensors seems to have defined setpoint values to be integer (which does not make sense for celcius), but as I saw in another thread floats seem to work for Domoticz (I hope Domoticz contributors don't make the same mistake as Vera did where they defined everything as integer and were not able to change that at the time because of backward complexities... believe it or not, this is one of the reasons I had to get rid of my Vera)

Code: Select all

#include <SPI.h>
#include <MySensor.h>  

#define CHILD_ID_HVAC 0

MySensor gw;

MyMessage msgTemp(CHILD_ID_HVAC, V_TEMP);
MyMessage msgSetpointHeat(CHILD_ID_HVAC, V_HVAC_SETPOINT_HEAT);
MyMessage msgSetpointCool(CHILD_ID_HVAC, V_HVAC_SETPOINT_COOL);
MyMessage msgSetpointFlowState(CHILD_ID_HVAC, V_HVAC_FLOW_STATE);
MyMessage msgSetpointFlowMode(CHILD_ID_HVAC, V_HVAC_FLOW_MODE);

void setup()  
{ 
  gw.begin(incomingMessage, AUTO, true);

  gw.sendSketchInfo("HVAC Thermostat", "1.0");

  gw.present(CHILD_ID_HVAC, S_HVAC);
  
  gw.send(msgSetpointHeat.set(21.0, 1));
  gw.send(msgSetpointCool.set(21.0, 1));
  gw.send(msgSetpointFlowState.set("HeatOn"));
  gw.send(msgSetpointFlowMode.set("ContinuousOn"));
  
}

void loop()      
{  
  gw.process();
}

void incomingMessage(const MyMessage &message)
{
  if(message.sensor == CHILD_ID_HVAC)
  {
    if (message.type == V_HVAC_SETPOINT_HEAT) {
      Serial.println( "V_HVAC_SETPOINT_HEAT command received..." );
      
      Serial.println( message.data );
      
    }
    if (message.type == V_HVAC_SETPOINT_COOL) {
      Serial.println( "V_HVAC_SETPOINT_COOL command received..." );
      
      Serial.println( message.data );
      
    }
    if (message.type == V_HVAC_FLOW_STATE ) {
      Serial.println( "V_HVAC_FLOW_STATE command received..." );
      
      Serial.println( message.data );
      
    }
    if (message.type == V_HVAC_FLOW_MODE) {
      Serial.println( "V_HVAC_FLOW_MODE command received..." );
      
      Serial.println( message.data );
      
    }
  }
}

Re: V_HVAC_FLOW_STATE and V_HVAC_FLOW_MODE not supported

Posted: Saturday 03 October 2015 22:43
by Reydri
In my final project, I am also hoping to interface with my other sensors in the network.

I will augment the temperature network sensors with other sensors I have in each room, to provide a better temperature control and comfort (different temp in different rooms at different time of day). Also reading the outside temperature sensor to potentially set different heating stage level depending on temperature, while keeping a low fan speed (for noise comfort) in the furnace but setting water loop temperature higher as I can do that in my HVAC. Outside temp may also be used for automatic change over predictability and responsiveness, as well as very hot days where AC needs to run the entire day (not following peak power usage best practices...) to keep up.
I am also keeping in mind the ability for the HVAC thermostat to work even if the entire mysensors network is down in order to have no dependency for basic heating functionality which is critical when outside temp is -40, so the HVAC Thermostat will remain hard wired to the furnace controller. This controller is also another custom made mysensors device controlling the ECM motor, heat demand and AC. I did this one about 10 months ago and it works well so far.

Re: V_HVAC_FLOW_STATE and V_HVAC_FLOW_MODE not supported

Posted: Tuesday 15 March 2016 14:10
by pj-r
Question to gizmocuz:
Would this kinda funcitonality help domoticz to build up V_HVAC_FLOW_STATE & MODE switches as selector? Or would it be hard to make selector usable with mysensors?
https://github.com/mysensors/Arduino/issues/356

I forgot to add it needs the message type on presentation also. Otherwise domoticz wont know to what actuator send message since one child can contain more than one type.

So the arduino sketch could begin something like this:

Code: Select all

#define childHVAC 0;
...
char flowStateNames[][]={ "Off", "CoolOn", "HeatOn", "AutoChangeover",};
int flowStateValues[]={ 0, 10, 20, 30, };

char flowModeNames[][]={ "Auto", "ContinuousOn", "PeriodicOn",};
int flowModeValues[]={ 0, 10, 20, };
...
 void setup() {
...
  gw.presentcaps(childHVAC, V_HVAC_FLOW_STATE, flowStateValues, flowStateNames);
  gw.presentcaps(childHVAC, V_HVAC_FLOW_MODE, flowModeValues, flowModeNames);
}
...
This would give the user possibility to put anything there and domoticz could build up the selectors dynamically in code. Values would be used for communication and user could change names later on to what he/she ever wants.

For MySensors I think this would be a new message type? Do you think this would be a usefull idea?

Why I'm presenting this now... just got my heat pump(modbus) integrated to mysensors but domoticz didnt support these switch types:
MySensors: Unhandled sensor (sub-type=21), please report with log!
I'm using mysensors version 1.5 currently.