Rinnai Heating/Cooling Wifi Module

It may be something with connectivity loss, as it seems to only affect certain setups. I think the easiest way is to see if I can detect it and send a packet to fix it

Hi again,
if it helps at all, I captured the debug of when it lost Comms (for 2 minutes) and I couldn’t get the HA to control the Heating again until I set the time on the NC-6…

Logs are here Dropbox - Sep 7 rinnai.log.zip - Simplify your life

Log pointers:
All good till
Line 53 - Lost connection
Line 633 - Connection re-established but now with ERROR

ERROR (Thread-3 (receiver)) [pyrinnaitouch.receiver] Couldn’t decode JSON (probably HELLO), skipping (AttributeError("‘NoneType’ object has no attribute ‘group’"))#033[0m

Error continues
Line 1732 - Automation run to turn on heating at 5:20AM
But the heating did not come on.

Line 1819 - Me waking up, trying to turn on heating via HA
No response in HA, so I power cycle the WIFI module.

Line 1846 - Wifi module is back online
still getting same ERROR

Line 1858 - I reboot Wifi Access point.

Line 8451 - Wifi Module back online.
but still getting same ‘ERROR’

Line 8652 - {“DY”: “THU”, “TM”: “23:20”
Line 8676 - “DY” and “TM” correct again after I have set the NC-6 which was flashing the incorrect time.

Line 8679 - with “DY” and “TM” correct, ‘ERROR’ has gone and all working as expected.

Comments:
‘ERROR’ first seen after Comms loss at Line 636
however DY and TM values appear correct, But did the NC-6 actually lose the time with this Connection Loss
and ‘ERROR’ is due to incorrect time on NC-6 ? despite Connection only lost for 2 minutes.

Very interesting.

Some observations:

  1. the unit lost contact a few times, however after it came back the first time, it had lost the time setting. Interestingly enough, it seems to still know the time, but it wants it to be set/confirmed. There’s a part of the package that remembers the last time and wants input, even though the unit time keeps going.
  2. Initially, after getting back in contact, the time starts at Mon 00:00, before getting it’s original time (Thu 23:20) back.

I think we could detect the time setting mode in the OSS module (ST: C, MD: N) and there is a STM part of the JSON that is completely undocumented, which MAY be the part we can send back to set the time (it really just hast the time and a parameter SV (save??). (“STM”: {“DY”: “THU”, “TM”: “23:20”, “SV”: “N” })

I assume this is just a hack for your specific unit. I actually now get the impression the unit may lose power. Either internally, or externally. Do you have a UPS?

Hi, thanks for your analysis and thoughts.
I gather STM is Set TiMe and agree SV is likely SaVe.
Would be interesting if that can be sent to a unit after it lost power for any reason to ensure the time is in sync with HA time, that maybe would kick the likes of my unit in the guts to work after its hiccup.
I dont have a UPS to put the module behind, but I do have it behind a smart switch, and that switch never loses power, very possible the wifi module maybe loses power internally, I have had my doubts on this module since the day I took it out if its box, as the wifi reception is woefull, but assumed just a terrible design, sadly they are not cheap so replacing it for a chance a replacement would be no different has not been high on my list.
If you think you can create some code that may kick it into action after a hiccup,that would be brilliant!
Curiously this go to time set mode has only happenned for maybe the last 6 months, and I have had it for around 5yrs now, but always had an issue with it dropping off wifi, I wonder if that has always been a internal power failure!

I’ll have a look at it over the weekend if I can. Are you ok to install from a branch for testing?
I do think your unit has some faults… mine isn’t great, but they are design flaws (the whole module feels like one bug hack at times due to that design), but it’s reliably bad and has decent reception.

Cheers! Yes I’d be happy to test it from a branch.
Maybe one of these days I’ll lash out and buy another unit. Mmm

Yeh “back in the day” we playde aorund with STM a bit, but no-one could get it to work …

I think I figured it out.

@groutley can you try the following on your system:

  1. Change the time on your unit to something obviously wrong (like 45 minutes out or so)
  2. Disconnect the unit from all connections, i.e. home assistant (I disabled and reboot) as well as the app
  3. copy the below code into an empty file, let’s call it rinnai-touch-settime.py
  4. execute the following command: python rinnai-touch-settime.py <unit-ip-address>

You should see the time being set to the correct time and the unit going back into the mode it’s supposed to be in.

Lastly, if this worked (works here), please also try to run the command in point 4 with your unit already (manually triggered) in time setting mode.

If that does it, I should be able to add this to the codebase.

Here’s the code:

import socket
import time
import argparse
from datetime import datetime

parser = argparse.ArgumentParser()
parser.add_argument("hostIP", help='Rinnai Touch Host IP address')

args = parser.parse_args()

print(args)

# Touch Box IP address
port = 27847
touchIP = args.hostIP

# create an ipv4 (AF_INET) socket object using the tcp protocol (SOCK_STREAM)
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# connect the client
print("Connecting ...")
client.connect((touchIP, port))
time.sleep(0.2)
response = client.recv(4096)
print(response)

# setup some basic commands
setTime = 'N000001{"SYST": {"OSS": {"ST": "C"}}}'
now = datetime.now()
day = now.strftime("%a").upper()
timeval = now.strftime("%H:%M")
newTime = 'N000002{"SYST": {"STM": {"DY": "'+day+'", "TM": "'+timeval+'"}}}'
saveTime1 = 'N000003{"SYST": {"STM": {"SV": "Y"}}}'

def SendToTouch(client,cmd):
    """Send the command and return the response."""
    print("DEBUG: {}".format(cmd))
    response = "NA"
    client.send(cmd.encode())
    response = client.recv(4096)
    return response

SendToTouch(client,setTime);
time.sleep(1);
SendToTouch(client,newTime);
time.sleep(1);
SendToTouch(client, saveTime1);
time.sleep(1);

client.close()

Hi team, bought this wifi module last year and only got around to installing it the other day but I’ve been having issues getting the Rinnai Touch App to work - always got stuck at “Initialising” after a million manual WIFI resets/trying different devices etc.

Currently have a Carrier Ducted AC - and controlled by a Brivis NC-3 controller (which I recently had to replace because the original controller dial wheel stopped working).

I’ve tried the HA Rinnai Touch integration but no dice - but seemed to be causing alot of network communication - 300kbps down/100kbps up. I forgot to check the logs but was frustrated that nothing was working so I just uninstalled it.

Home Assistant Core
Socket timed out, renewing connection (OSError(9, 'Bad file descriptor'))
9:41:01 PM – (ERROR) /usr/local/lib/python3.11/site-packages/pyrinnaitouch/receiver.py - message first occurred at 9:40:53 PM and shows up 1530 times
Couldn't send empty command (connection): (OSError(9, 'Bad file descriptor'))
9:41:01 PM – (ERROR) /usr/local/lib/python3.11/site-packages/pyrinnaitouch/receiver.py - message first occurred at 9:40:53 PM and shows up 1529 times

Now after going through this thread I’ve found out the module is “working” from trying the the javascript status commands posted by @Mantorok in 2020, but can never seem to get the AC to do anything. i.e commands seem to be sent through but no response.

Now I’m testing with the homebridge plugin through HA via Portainer. And it looks like I can get the status without issues however the commands seem to not work:

[9/23/2023, 3:35:51 PM] [Rinnai Touch] Set PowerState to 'F' is invalid due to module's current Status
[9/23/2023, 3:35:51 PM] [Rinnai Touch] Circulation Fan: Setting characteristic 'RotationSpeed' to '100'
[9/23/2023, 3:35:51 PM] [Rinnai Touch] Set PowerState to 'F' is invalid due to module's current Status
[9/23/2023, 3:35:51 PM] [Rinnai Touch] Set FanState to 'Z' is invalid due to module's current Status
[9/23/2023, 3:35:51 PM] [Rinnai Touch] Set FanState to 'Z' is invalid due to module's current Status
[9/23/2023, 3:35:51 PM] [Rinnai Touch] Set FanSpeed to '16' is invalid due to module's current Status

After going through the documentation, I realised my system is:

"AVM": {"HG": "N"	 "EC": "N"	 "CG": "N"	 "RA": "Y"	 "RH": "Y"	 "RC": "Y" }	

Which refers to Reverse Cycle AC, Reverse Cycle Heating and Reverse Cycle Cooling.

Are any of these addons for Homebridge or HASS compatible with Reverse Cycle?

Thankyou kindly…

Have you tried the latest version of the HA integration? A lot of change was done O. The network end and a few other things, especially functions I didn’t have myself.

If you can follow the instructions on GitHub and enable debug logging I may be able to help see if it would work

Yeah I got the integration through HACS. I’ve just cleared it out now, should I try Installation for Testing method on Github?

Latest version on HACS should be fine. GitHub has the instructions how to get debug logs.

Reinstalled the integration
Disabled it - Re-enabled it

2023-09-25 01:51:20.440 DEBUG (MainThread) [custom_components.rinnaitouch] Removing controller with IP: 192.168.0.123
2023-09-25 01:51:20.442 DEBUG (MainThread) [custom_components.rinnaitouch.climate] removing entity from hass
2023-09-25 01:51:28.457 DEBUG (MainThread) [custom_components.rinnaitouch] Get controller with IP: 192.168.0.123
2023-09-25 01:51:28.459 DEBUG (SyncWorker_6) [pyrinnaitouch.connection] Creating new client...
2023-09-25 01:51:28.520 DEBUG (SyncWorker_6) [pyrinnaitouch.connection] Client connection created: ('192.168.0.123', 27847)
2023-09-25 01:51:28.525 DEBUG (SyncWorker_6) [pyrinnaitouch.connection] Connected to ('192.168.0.123', 27847)
2023-09-25 01:51:28.525 DEBUG (SyncWorker_6) [pyrinnaitouch.system] Client Connection: <socket.socket fd=89, family=2, type=1, proto=0, laddr=('192.168.0.161', 35406), raddr=('192.168.0.123', 27847)>/False
2023-09-25 01:51:28.559 ERROR (Thread-7 (receiver)) [pyrinnaitouch.receiver] Couldn't decode JSON (probably HELLO), skipping (AttributeError("'NoneType' object has no attribute 'group'"))
2023-09-25 01:51:28.720 INFO (MainThread) [custom_components.rinnaitouch.climate] Set up RinnaiTouch entity 192.168.0.123
2023-09-25 01:51:28.720 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Ext. temp sensor entity name: sensor.outside_temperature
2023-09-25 01:51:28.720 DEBUG (MainThread) [custom_components.rinnaitouch.climate] Ext. temp sensor reports: 12.1
2023-09-25 01:51:29.416 DEBUG (Thread-7 (receiver)) [pyrinnaitouch.receiver] Sequence: 0 Json: [{"SYST": {"CFG": {"MTSP": "N", "NC": "00", "DF": "N", "TU": "C", "CF": "1", "VR": "0183", "CV": "0010", "CC": "043", "ZA": "                ", "ZB": "                ", "ZC": "                ", "ZD": "                " }, "AVM": {"HG": "N", "EC": "N", "CG": "N", "RA": "Y", "RH": "Y", "RC": "Y" }, "OSS": {"DY": "MON", "TM": "01:49", "BP": "Y", "RG": "Y", "ST": "N", "MD": "R", "DE": "N", "DU": "N", "AT": "999", "LO": "N" }, "FLT": {"AV": "N", "C3": "000" } } },{"RCOM": {"CFG": {"ZUIS": "Y", "ZAIS": "N", "ZBIS": "N", "ZCIS": "N", "ZDIS": "N", "SZ": "N", "IF": "Y", "IV": "N", "PS": "N", "DG": "W" }, "OOP": {"ST": "F", "FL": "00", "SN": "N" }, "GSS": {"FC": "N", "EA": "F", "ES": "F", "NR": "01" }, "SAD": {"ID": "01", "HT": "N", "CL": "N", "IF": "F", "CP": "F", "RV": "F", "AX": "F", "DF": "F", "EO": "F", "FC": "N", "LK": "N" }, "APS": {"AV": "N" }, "ZUS": {"AE": "N", "MT": "999" }, "ZAS": {"AE": "N", "MT": "999" }, "ZBS": {"AE": "N", "MT": "999" }, "ZCS": {"AE": "N", "MT": "999" }, "ZDS": {"AE": "N", "MT": "999" } } }]
2023-09-25 01:51:29.417 DEBUG (Thread-6 (poll_loop)) [pyrinnaitouch.system_status] Unknown mode
2023-09-25 01:51:29.417 ERROR (Thread-6 (poll_loop)) [pyrinnaitouch.system_status] Couldn't decode JSON (exception), skipping (UnknownModeException('Unknown mode, this is not going well.'))
2023-09-25 01:51:40.446 DEBUG (Thread-7 (receiver)) [pyrinnaitouch.receiver] Sequence: 0 Json: [{"SYST": {"CFG": {"MTSP": "N", "NC": "00", "DF": "N", "TU": "C", "CF": "1", "VR": "0183", "CV": "0010", "CC": "043", "ZA": "                ", "ZB": "                ", "ZC": "                ", "ZD": "                " }, "AVM": {"HG": "N", "EC": "N", "CG": "N", "RA": "Y", "RH": "Y", "RC": "Y" }, "OSS": {"DY": "MON", "TM": "01:50", "BP": "Y", "RG": "Y", "ST": "N", "MD": "R", "DE": "N", "DU": "N", "AT": "999", "LO": "N" }, "FLT": {"AV": "N", "C3": "000" } } },{"RCOM": {"CFG": {"ZUIS": "Y", "ZAIS": "N", "ZBIS": "N", "ZCIS": "N", "ZDIS": "N", "SZ": "N", "IF": "Y", "IV": "N", "PS": "N", "DG": "W" }, "OOP": {"ST": "F", "FL": "00", "SN": "N" }, "GSS": {"FC": "N", "EA": "F", "ES": "F", "NR": "01" }, "SAD": {"ID": "01", "HT": "N", "CL": "N", "IF": "F", "CP": "F", "RV": "F", "AX": "F", "DF": "F", "EO": "F", "FC": "N", "LK": "N" }, "APS": {"AV": "N" }, "ZUS": {"AE": "N", "MT": "999" }, "ZAS": {"AE": "N", "MT": "999" }, "ZBS": {"AE": "N", "MT": "999" }, "ZCS": {"AE": "N", "MT": "999" }, "ZDS": {"AE": "N", "MT": "999" } } }]
2023-09-25 01:51:40.448 DEBUG (Thread-6 (poll_loop)) [pyrinnaitouch.system_status] Unknown mode
2023-09-25 01:51:40.448 ERROR (Thread-6 (poll_loop)) [pyrinnaitouch.system_status] Couldn't decode JSON (exception), skipping (UnknownModeException('Unknown mode, this is not going well.'))

Tomorrow I’ll get the output from when I turn on the AC manually via the controller.

Very cool. I’ve never seen these coffee and they are not in the documentation I’ve seen. RCOM seems to be the reverse cycle equivalent of the mode days I know. Can probably imply what most of this may mean. I will have a look tomorrow how much aligns.

What mode is this in?

Manual Mode - Heating 25C

[{"SYST": {"CFG": {"MTSP": "N", "NC": "00", "DF": "N", "TU": "C", "CF": "1", "VR": "0183", "CV": "0010", "CC": "043", "ZA": "                ", "ZB": "                ", "ZC": "                ", "ZD": "                " }, "AVM": {"HG": "N", "EC": "N", "CG": "N", "RA": "Y", "RH": "Y", "RC": "Y" }, "OSS": {"DY": "MON", "TM": "12:48", "BP": "Y", "RG": "Y", "ST": "N", "MD": "R", "DE": "N", "DU": "N", "AT": "999", "LO": "N" }, "FLT": {"AV": "N", "C3": "000" } } },{"RCOM": {"CFG": {"ZUIS": "Y", "ZAIS": "N", "ZBIS": "N", "ZCIS": "N", "ZDIS": "N", "SZ": "N", "IF": "Y", "IV": "N", "PS": "N", "DG": "W" }, "OOP": {"ST": "N", "FL": "00", "SN": "N" }, "GSO": {"OP": "M", "SP": "25", "AM": "H", "EM": "F", "IF": "N", "AO": "N" }, "GSS": {"FC": "N", "EA": "F", "ES": "F", "NR": "01", "AT": "W", "AZ": "W" }, "SAD": {"ID": "01", "HT": "Y", "CL": "N", "IF": "N", "CP": "N", "RV": "N", "AX": "F", "DF": "F", "EO": "F", "FC": "N", "LK": "N" }, "APS": {"AV": "N" }, "ZUO": {"UE": "Y" }, "ZAO": {"UE": "N" }, "ZBO": {"UE": "N" }, "ZCO": {"UE": "N" }, "ZDO": {"UE": "N" }, "ZUS": {"AE": "N", "MT": "999" }, "ZAS": {"AE": "N", "MT": "999" }, "ZBS": {"AE": "N", "MT": "999" }, "ZCS": {"AE": "N", "MT": "999" }, "ZDS": {"AE": "N", "MT": "999" } } }]

Manual - Cooling 20C

 [{"SYST": {"CFG": {"MTSP": "N", "NC": "00", "DF": "N", "TU": "C", "CF": "1", "VR": "0183", "CV": "0010", "CC": "043", "ZA": "                ", "ZB": "                ", "ZC": "                ", "ZD": "                " }, "AVM": {"HG": "N", "EC": "N", "CG": "N", "RA": "Y", "RH": "Y", "RC": "Y" }, "OSS": {"DY": "MON", "TM": "12:49", "BP": "Y", "RG": "Y", "ST": "N", "MD": "R", "DE": "N", "DU": "N", "AT": "999", "LO": "N" }, "FLT": {"AV": "N", "C3": "000" } } },{"RCOM": {"CFG": {"ZUIS": "Y", "ZAIS": "N", "ZBIS": "N", "ZCIS": "N", "ZDIS": "N", "SZ": "N", "IF": "Y", "IV": "N", "PS": "N", "DG": "W" }, "OOP": {"ST": "N", "FL": "00", "SN": "N" }, "GSO": {"OP": "M", "SP": "20", "AM": "C", "EM": "F", "IF": "N", "AO": "N" }, "GSS": {"FC": "N", "EA": "F", "ES": "F", "NR": "01", "AT": "W", "AZ": "W" }, "SAD": {"ID": "01", "HT": "N", "CL": "Y", "IF": "N", "CP": "F", "RV": "N", "AX": "F", "DF": "F", "EO": "F", "FC": "N", "LK": "N" }, "APS": {"AV": "N" }, "ZUO": {"UE": "Y" }, "ZAO": {"UE": "N" }, "ZBO": {"UE": "N" }, "ZCO": {"UE": "N" }, "ZDO": {"UE": "N" }, "ZUS": {"AE": "N", "MT": "999" }, "ZAS": {"AE": "N", "MT": "999" }, "ZBS": {"AE": "N", "MT": "999" }, "ZCS": {"AE": "N", "MT": "999" }, "ZDS": {"AE": "N", "MT": "999" } } }]

Manual Heating/Cooling 20C

[{"SYST": {"CFG": {"MTSP": "N", "NC": "00", "DF": "N", "TU": "C", "CF": "1", "VR": "0183", "CV": "0010", "CC": "043", "ZA": "                ", "ZB": "                ", "ZC": "                ", "ZD": "                " }, "AVM": {"HG": "N", "EC": "N", "CG": "N", "RA": "Y", "RH": "Y", "RC": "Y" }, "OSS": {"DY": "MON", "TM": "12:50", "BP": "Y", "RG": "Y", "ST": "N", "MD": "R", "DE": "N", "DU": "N", "AT": "999", "LO": "N" }, "FLT": {"AV": "N", "C3": "000" } } },{"RCOM": {"CFG": {"ZUIS": "Y", "ZAIS": "N", "ZBIS": "N", "ZCIS": "N", "ZDIS": "N", "SZ": "N", "IF": "Y", "IV": "N", "PS": "N", "DG": "W" }, "OOP": {"ST": "N", "FL": "00", "SN": "N" }, "GSO": {"OP": "M", "SP": "20", "AM": "D", "EM": "F", "IF": "N", "AO": "N" }, "GSS": {"FC": "N", "EA": "F", "ES": "F", "NR": "01", "AT": "W", "AZ": "W" }, "SAD": {"ID": "01", "HT": "N", "CL": "Y", "IF": "N", "CP": "F", "RV": "N", "AX": "F", "DF": "F", "EO": "F", "FC": "N", "LK": "N" }, "APS": {"AV": "N" }, "ZUO": {"UE": "Y" }, "ZAO": {"UE": "N" }, "ZBO": {"UE": "N" }, "ZCO": {"UE": "N" }, "ZDO": {"UE": "N" }, "ZUS": {"AE": "N", "MT": "999" }, "ZAS": {"AE": "N", "MT": "999" }, "ZBS": {"AE": "N", "MT": "999" }, "ZCS": {"AE": "N", "MT": "999" }, "ZDS": {"AE": "N", "MT": "999" } } }]

Fan Mode On ONLY

[{"SYST": {"CFG": {"MTSP": "N", "NC": "00", "DF": "N", "TU": "C", "CF": "1", "VR": "0183", "CV": "0010", "CC": "043", "ZA": "                ", "ZB": "                ", "ZC": "                ", "ZD": "                " }, "AVM": {"HG": "N", "EC": "N", "CG": "N", "RA": "Y", "RH": "Y", "RC": "Y" }, "OSS": {"DY": "MON", "TM": "12:55", "BP": "Y", "RG": "Y", "ST": "N", "MD": "R", "DE": "N", "DU": "N", "AT": "999", "LO": "N" }, "FLT": {"AV": "N", "C3": "000" } } },{"RCOM": {"CFG": {"ZUIS": "Y", "ZAIS": "N", "ZBIS": "N", "ZCIS": "N", "ZDIS": "N", "SZ": "N", "IF": "Y", "IV": "N", "PS": "N", "DG": "W" }, "OOP": {"ST": "Z", "FL": "08", "SN": "N" }, "GSS": {"FC": "N", "EA": "F", "ES": "F", "NR": "01" }, "SAD": {"ID": "01", "HT": "N", "CL": "N", "IF": "N", "CP": "F", "RV": "F", "AX": "F", "DF": "F", "EO": "F", "FC": "N", "LK": "N" }, "APS": {"AV": "N" }, "ZUO": {"UE": "Y" }, "ZAO": {"UE": "N" }, "ZBO": {"UE": "N" }, "ZCO": {"UE": "N" }, "ZDO": {"UE": "N" }, "ZUS": {"AE": "N", "MT": "999" }, "ZAS": {"AE": "N", "MT": "999" }, "ZBS": {"AE": "N", "MT": "999" }, "ZCS": {"AE": "N", "MT": "999" }, "ZDS": {"AE": "N", "MT": "999" } } }]

Schedule Mode - Heating 29C
Wake Period 10am
Leave Period 2pm

 [{"SYST": {"CFG": {"MTSP": "N", "NC": "00", "DF": "N", "TU": "C", "CF": "1", "VR": "0183", "CV": "0010", "CC": "043", "ZA": "                ", "ZB": "                ", "ZC": "                ", "ZD": "                " }, "AVM": {"HG": "N", "EC": "N", "CG": "N", "RA": "Y", "RH": "Y", "RC": "Y" }, "OSS": {"DY": "MON", "TM": "12:57", "BP": "Y", "RG": "Y", "ST": "N", "MD": "R", "DE": "N", "DU": "N", "AT": "999", "LO": "N" }, "FLT": {"AV": "N", "C3": "000" } } },{"RCOM": {"CFG": {"ZUIS": "Y", "ZAIS": "N", "ZBIS": "N", "ZCIS": "N", "ZDIS": "N", "SZ": "N", "IF": "Y", "IV": "N", "PS": "N", "DG": "W" }, "OOP": {"ST": "N", "FL": "08", "SN": "N" }, "GSO": {"OP": "A", "SP": "29", "AM": "H", "EM": "F", "IF": "F", "AO": "N" }, "GSS": {"FC": "N", "EA": "F", "ES": "F", "NR": "01", "AT": "W", "AZ": "S" }, "SAD": {"ID": "01", "HT": "Y", "CL": "N", "IF": "N", "CP": "N", "RV": "N", "AX": "F", "DF": "F", "EO": "F", "FC": "N", "LK": "N" }, "APS": {"AV": "N" }, "ZUO": {"UE": "Y" }, "ZAO": {"UE": "N" }, "ZBO": {"UE": "N" }, "ZCO": {"UE": "N" }, "ZDO": {"UE": "N" }, "ZUS": {"AE": "N", "MT": "999" }, "ZAS": {"AE": "N", "MT": "999" }, "ZBS": {"AE": "N", "MT": "999" }, "ZCS": {"AE": "N", "MT": "999" }, "ZDS": {"AE": "N", "MT": "999" } } }]

Thank you so much for the help so far…

Its a Carrier Aircon Ducted Aircon hooked up to a Brivis NC3 (which is recently replaced the original controller).

@funtastix OMG you are a certified genious!
Yes in both scenarios the python script corrected the time on the NC-6
In the 2nd scenario, taking it out of time set mode to normal state with the correct time displayed.

Output from my tests (if it helps at all)


➜  ~ python rinnai-touch-settime.py 192.168.37.195
Namespace(hostIP='192.168.37.195')
Connecting ...
b'*HELLO*'
DEBUG: N000001{"SYST": {"OSS": {"ST": "C"}}}
DEBUG: N000002{"SYST": {"STM": {"DY": "MON", "TM": "14:21"}}}
DEBUG: N000003{"SYST": {"STM": {"SV": "Y"}}}
➜  ~ python rinnai-touch-settime.py 192.168.37.195
Namespace(hostIP='192.168.37.195')
Connecting ...
b'*HELLO*'
DEBUG: N000001{"SYST": {"OSS": {"ST": "C"}}}
DEBUG: N000002{"SYST": {"STM": {"DY": "MON", "TM": "14:22"}}}
DEBUG: N000003{"SYST": {"STM": {"SV": "Y"}}}
➜  ~ 

Will be brilliant if that automatically fixes my rogue touch whenever it decides to drop its brains!
Thank you so much for your efforts on this.
Glen

1 Like

This looks doable @murphy123 . I’ll have a look over the next few weeks. A fair bit of mapping to do.

New problem: with that new knowledge, I want to use this to correct my time automatically (which 1. Is always fast, 2. For DST). This means, the way to approach this would be:

  1. Don’t update the last mode (heater is still heating)
  2. Have a sensor that can detect time setting mode
  3. Have a service that can set the time (and exit time setting mode, basically what the script does)

Then you can make an automation based on the sensor and service call.

Will that work?

Mate you’re a legend!! Looking forward to it!

Sounds good to me, I can certainly try to make an automation based off a sensor, and the added bonus of Automatic DST change would be “fantastix” :wink: