Nothing Precedes Matter

    node-red-contrib-ramp-thermostat

    0.8.3 • Public • Published

    ramp-thermostat

    NPM version

    A Node-RED contrib-node that emulates a programmable thermostat.

    Wikipedia Source: A programmable thermostat is a thermostat which is designed to adjust the temperature according to a series of programmed settings that take effect at different times of the day. Programmable thermostats may also be called clock thermostats.

    The ramp-thermostat controls an actuator depending on the current input temperature and the target temperature (setpoint). The target temperature is defined by a profile for a day period (00:00-23:59). A weekly or holiday setting can be achieved using several profiles.

    Configuration

    The target temperature is defined by a profile that provides the value depending on the current time 00:00-23:59. The profile consists of several points whose connections build a sequence of lines. The switching moment can be optimized by defining a gradient line like a ramp.

    A profile has at least 2 points and must start at 00:00 and end at 23:59.

    The hysteresis is used to prevent osciliation. The [+] value is added to the target and the [-] (absolute) value is subtracted from the target. Within this neutral zone no action accurs.

    Usage

    This node expects a numeric msg.payload containing the current temperature (number). The msg.topic should be set to setCurrent. It will calculate the target temperature depending on msg.payload at the current time and output 3 values:

    • state (boolean)
    • current temperature (number)
    • target temperature (number)

    The state (true/false) is used to control an actuator. The current and target temperature outputs can be wired e.g. into an ui_chart node.

    Runtime settings

    setTarget

    msg.topic: setTarget
    msg.payload: nn.n (number)

    The target will be valid until a new target or a profile is set again or until node-red is restarted.

    setHysteresisPlus

    msg.topic: setHysteresisPlus
    msg.payload: nn.n (number)

    The Hydteresis will be valid until a new hysteresis is set again or until node-red is restated.

    setHysteresisMinus

    msg.topic: setHysteresisMinus
    msg.payload: nn.n (number)

    The Hydteresis will be valid until a new hysteresis is set again or until node-red is restated.

    getProfile

    msg.topic: getProfile
    msg.payload: profile-name

    The profile object is sent to the output 3:

    msg.topic: getProfile
    msg.payload: {
      "name""profile-name",
      "points": [{
        "00:00": 18
      }{
        "04:00": 18
      }{
        "08:00": 20.5
      }{
        "12:00": 20.5
      }{
        "12:00": 19
      }{
        "12:30": 19
      }{
        "13:30": 20.5
      }{
        "19:00": 20.5
      }{
        "19:00": 18
      }{
        "23:59": 18
      }]
    }

    setProfile

    msg.topic: setProfile
    msg.payload: profile-name

    The profile-name is one of the existing profiles that are configured in the ramp-thermostat node.

    You can even define an input profile (JSON object) with more than 10 points:

    msg.topic: setProfile
    msg.payload: {
        "name""dining room",
        "points": [
            {"00:00": 18},
            {"03:00": 18},
            {"06:00": 18.5},
            {"08:00": 20},
            {"10:00": 20},
            {"11:00": 20.5},
            {"12:30": 20.5},
            {"12:30": 19.5},
            {"15:00": 19.5},
            {"17:00": 20.5},
            {"19:00": 20.5},
            {"19:00": 20},
            {"21:30": 20},
            {"21:30": 18},
            {"23:59": 18}
        ]
    }

    Examples

    rt-office3

    The profile is defined using 6 points:

    "time" : temp
     
    "00:00": 18.0
    "03:00": 18.0
    "06:00": 20.0
    "19:00": 20.0
    "20:00": 18.0
    "23:59": 18.0

    Install

    npm i node-red-contrib-ramp-thermostat

    DownloadsWeekly Downloads

    85

    Version

    0.8.3

    License

    none

    Unpacked Size

    48.1 kB

    Total Files

    6

    Last publish

    Collaborators

    • cflurin