mantorok1 / RinnaiTouchClient

Client for controlling a Rinnai Touch Module
MIT License
2 stars 0 forks source link

RinnaiTouchClient

Node.js Client for connecting to a Rinnai Touch Module (aka Rinnai Touch Wi-Fi Kit). The client can emit status updates from the module as well as allow you to send commands. It will automatically determine the IP address and port of the module so no need to assign a static/reserved IP address to the module.

The main goal of this client is to reliably and easily control the Rinnai Touch Module.

Known limitations

Documentation

Methods

Command Keys & Values

Commands to be sent to the Module must be in the following format:

{key: "value"}     eg. {Mode: "Cool"}
The following is a list of all the command keys and their allowed values. Key Description Values
Mode Sets the system mode Heat, Cool, Evap
HeatState Set Heating state On, Off, Fan
HeatFanSpeed Sets fan speed when HeatState = Fan 01 - 16
HeatOperation Set to Automatic (ie. schedule) or Manual Auto, Manual
HeatTemp Set Temperature (in Celcius) 08 - 30
HeatAutoMode Set Automatic mode Now, Advance, Override
HeatZoneA Enable Zone A Yes, No
HeatZoneB Enable Zone B Yes, No
HeatZoneC Enable Zone C Yes, No
HeatZoneD Enable Zone D Yes, No
CoolState Set Cooling state On, Off, Fan
CoolFanSpeed Sets fan speed when CoolState = Fan 01 - 16
CoolOperation Set to Automatic (ie. schedule) or Manual Auto, Manual
CoolTemp Set Temperature (in Celcius) 08 - 30
CoolAutoMode Set Automatic mode Now, Advance, Override
CoolZoneA Enable Zone A Yes, No
CoolZoneB Enable Zone B Yes, No
CoolZoneC Enable Zone C Yes, No
CoolZoneD Enable Zone D Yes, No
EvapState Set Evaporative Cooling state On, Off
EvapPump Switch pump on or off On, Off
EvapFan Switch fan on or off On, Off
EvapSpeed Set Fan Speed 01 - 16
EvapOperation Set to Automatic (ie. schedule) or Manual Auto, Manual

How to use

To use the RinnaiTouchClient class in your own app/project include it with the require function. eg.

var RinnaiTouchClient = require('./RinnaiTouchClient');

The class supports both callbacks and events.

Callback example - Set Rinnai to "Cooling" mode:

RinnaiTouchClient.createClient((client) => {
    client.send({Mode: "Cool"}, () => {
        client.close();
    });
});

Event example - Set Rinnai to "Heating" mode:

var client = RinnaiTouchClient.createClient();
client.on('ready', () => {
    client.send({Mode: "Heat"});
});
client.on('commandSent', () => {
    client.close();
});

Files

Core Library

The Core Library contains the classes required to connect to and control the Rinnai Touch Module

Demo - Simple Command Line tool

Command line format:

> node Rinnai [key value]

eg. To use the command line tool to retrieve the Module status execute without any parameters:

> node Rinnai
Connected: 192.168.1.3:27847
[{"SYST": {"CFG": {"MTSP": "N", "NC": "00", "DF": "N", "TU": "C", "CF": "1", "VR": "0183", "CV": "0010", "CC": "043", "ZA": "Bedrooms        ", "ZB": "Living Areas    ", "ZC": "                ", "ZD": "                " }, "AVM": {"HG": "Y", "EC": "N", "CG": "Y", "RA": "N", "RH": "N", "RC": "N" }, "OSS": {"DY": "SAT", "TM": "12:27", "BP": "Y", "RG": "Y", "ST": "N", "MD": "H", "DE": "N", "DU": "N", "AT": "999", "LO": "N" }, "FLT": {"AV": "N", "C3": "000" } } },{"HGOM": {"CFG": {"ZUIS": "N", "ZAIS": "Y", "ZBIS": "Y", "ZCIS": "N", "ZDIS": "N", "CF": "N", "PS": "Y", "DG": "W" }, "OOP": {"ST": "N", "CF": "N", "FL": "08", "SN": "N" }, "GSO": {"OP": "A", "SP": "22", "AO": "N" }, "GSS": {"HC": "N", "FS": "N", "GV": "N", "PH": "N", "AT": "L", "AZ": "R" }, "APS": {"AV": "N" }, "ZUO": {"UE": "N" }, "ZAO": {"UE": "Y" }, "ZBO": {"UE": "Y" }, "ZCO": {"UE": "N" }, "ZDO": {"UE": "N" }, "ZUS": {"AE": "N", "MT": "235" }, "ZAS": {"AE": "N", "MT": "235" }, "ZBS": {"AE": "N", "MT": "235" }, "ZCS": {"AE": "N", "MT": "235" }, "ZDS": {"AE": "N", "MT": "235" } } }]
Connection Closed

eg. To set Heating temperature to 22 degrees supply a command key and value:

> node Rinnai HeatTemp 22
Connected: 192.168.1.3:27847
Command sent
Connection Closed

Demo - Simple REST API

URL format:

http://localhost:8080/[key/value]

eg. To retrieve the current status

http://localhost:8080/

eg. To set Heating temperature to 22 degrees

http://localhost:8080/HeatTemp/22