One wire sniffing - how to? possibly RS232

Hi all

I have a geyser installed at the house. At the geyser is a controller box which handles the temperature, the pump to circulate the water, the time/date functions. Out of this box is a wire with 3 cores which leads to a panel with buttons where you can program the geyser controller box.

The wires are a live 12V, a ground and a data wire which is 5V.

My goal:

I want to be able to replace the panel with buttons with an esp8266 device so i can control with MQTT.

Question:

How can i sniff this 5V data wire to extract the data? I know that it is one long HEX string but i need to extract this string.

Im not sure what protocol it is but im assuming right now that its RS232.

Any help on DIY devices, code would be helpful.

Thanks

Hi all

I have a geyser installed at the house. At the geyser is a controller box which handles the temperature, the pump to circulate the water, the time/date functions. Out of this box is a wire with 3 cores which leads to a panel with buttons where you can program the geyser controller box.

The wires are a live 12V, a ground and a data wire which is 5V.

My goal:

I want to be able to replace the panel with buttons with an esp8266 device so i can control with MQTT.

Question:

How can i sniff this 5V data wire to extract the data? I know that it is one long HEX string but i need to extract this string.

Im not sure what protocol it is but im assuming right now that its RS232.

Any help on DIY devices, code would be helpful.

Thanks

at 5 volts, it's not RS232, possibly ascii 8N1, but could be anything... I would start by looking at it on an oscilloscope to see if there is a pattern. There isn't usually a continuous data feed, so it should be fairly simple to capture the whole waveform and determine 1 bit. From there, you can possibly figure out where a start and stop bit might be. It may be possible to determine the bit rate. Some oscilloscopes can also decipher serial communication, and some can even try to determine the protocol, but be prepared for a lot of false guesses. Once you've got something that looks like data, it could be encrypted...

bad idea to cross post.

You need to sample the signals on the wire in order to determine the protocols in use, and it is a great help to have a visual record of the entire signal period.

If you don't have access to an oscilloscope, a laptop running Audacity can be used, as described in this tutorial.

You will need to reduce the input voltage on the laptop audio input to about 1V, using an approximate 5:1 voltage divider on the audio input to the laptop, for example with 4.7K/1.2K resistors.

Don't forget to connect the grounds.

@jackkitley

TOPIC MERGED.
Do NOT cross post.

You may want to READ THIS for future reference.
It will help you get the best out of the forum.

Bob.

So the panel that you want to replace has buttons and is used to "program" the geyser controller box.

You need to define exactly what the panel does e.g. how many buttons does it have what do they do, is there a display on the panel, is the 5V signal used to send info to the panel or to get commands from it. Is there a circuit diagram, what does the 12V connect to, what does the 5V connect to?

ardly:
So the panel that you want to replace has buttons and is used to "program" the geyser controller box.

You need to define exactly what the panel does e.g. how many buttons does it have what do they do, is there a display on the panel, is the 5V signal used to send info to the panel or to get commands from it. Is there a circuit diagram, what does the 12V connect to, what does the 5V connect to?

It has a power, up and down arrows and a set button.

Im trying to hack the device so i can mimic what it does and replicate it on a esp8266 device so i can integrate into home assistant.

There is a display on the panel. There is the temp, days of the week and time of heating. If the geyser is currently heating a flame icon flashes. There is also the pump icon which is represented with a spanner icon.

The 12V powers the panel.
The 5V plugs into the panel along with the ground wire.

Further than that is a mystery.

Data i got with OneWire.h library

0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00

0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0x80

0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

0x10, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00

0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80

0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

No use i guess.

https://imge.to/i/vkqgWw

The MAKE and MODEL of what you currently have in place may be a great help in working out what format the code strings are.

Quite often people have already hacked something like this.

Bob.

No use I guess.

You need to put that data into context; when did you get which data? When it's idle? When you pressed a button? Does the same button always give the same result?

Data i got with OneWire.h library

Are completely useless.

jackkitley:
Data i got with OneWire.h library

OneWire.h is a library to integrate Dallas/Maxim 1-Wire® chips into your arduino projects. I has no use in this case. Just because there is only a data wire, consider that ground is likely signal return. You can try a RS-232 to TTL adapter, along with a terminal program and a serial port on your PC. Trying different common protocols might get lucky.

The OP mentioned only a single data wire, which, based on the functionality described would seem to be some HALF-DUPLEX signalling...
This isn’t going to be easy for a beginner to fathom the protocol.

See if you can find an experienced friend to help.
It still may not be straightforward.

lastchancename:
The OP mentioned only a single data wire, which, based on the functionality described would seem to be some HALF-DUPLEX signalling...
This isn’t going to be easy for a beginner to fathom the protocol.

See if you can find an experienced friend to help.
It still may not be straightforward.

He mentioned RS232, which can operate at 5V, but said that there was a single data wire (plus ground).
Normally RS232 would have a transmit Tx wire, a receive Rx wire and a signal ground wire.

From the description so far it does sound as if there is a bidirectional information flow, since the panel is displaying information about the geyser and also sending controls to it. However there are only 2 wires the 5V signal wire plus ground. So yes the ciruit must be half-duplex.

The OP really needs to give a circuit diagram and @ballscrewbob 's request for the make and model of the equipment is spot on. With that info there is a good chance that there will be a technical manual that reveals all.

This is the manual for it:

Let me buy a raspberry pi today and install piscope on it do detect the format.

I see from a quick check most people say it does use a DS18B20 for the temperature reading.
So intercepting and reading that with regular arduino sketch would be quite simple. You could then just forward that data on to the geyser as normal.

What you do with the intercepted data would be up to you.

Ps. this particular geyser has come up a few times in the forum so if you want any further info hit the search option and type "geyserwise"

Bob.

This is the pattern im getting from the 5V data wire.

Attached is the file from piscope.

It can be opened in a text editor.

Sample data:

#piscope
#date 2019-12-03 18:43:19
0 100081FF
5 1000C1FF
10 100081FF
20 1000C1FF
25 100081FF
9963 1000C1FF
9968 100081FF
9978 1000C1FF
20019 100081FF
20024 1000C1FF
20034 100081FF
20039 1000C1FF
20044 100081FF
20054 1000C1FF
20059 100081FF
20064 1000C1FF
20069 100081FF
20094 1000C1FF
20099 100081FF
29985 1000C1FF
29995 100081FF
30000 1000C1FF
30010 100081FF
30015 1000C1FF
40054 100081FF
40059 1000C1FF
40070 100081FF
40075 1000C1FF
40080 100081FF
40085 1000C1FF
40090 100081FF
50005 1000C1FF
50015 100081FF
50020 1000C1FF
50030 100081FF
50035 1000C1FF
50045 100081FF
50050 1000C1FF
60090 100081FF
60095 1000C1FF
60100 100081FF
60105 1000C1FF
60115 100081FF
60120 1000C1FF
60125 100081FF
70023 1000C1FF
70028 100081FF
70038 1000C1FF
70043 100081FF
70053 1000C1FF
70063 100081FF
70068 1000C1FF
80093 100081FF
80098 1000C1FF
80108 100081FF
80113 1000C1FF
80118 100081FF
80128 1000C1FF
80133 100081FF
90048 1000C1FF
90053 100081FF
90078 1000C1FF
90083 100081FF
90088 1000C1FF
90098 100081FF
90103 1000C1FF
90113 100081FF
90118 1000C1FF
100159 100081FF
100164 1000C1FF
100174 100081FF
100184 1000C1FF
100189 100081FF
110098 1000C1FF
110103 100081FF
110113 1000C1FF
110118 100081FF
110123 1000C1FF
110148 100081FF
110153 1000C1FF
120193 100081FF
120203 1000C1FF
120208 100081FF
130124 1000C1FF
130129 100081FF
130134 1000C1FF
130139 100081FF
130149 1000C1FF
140213 100081FF
140223 1000C1FF
140228 100081FF
140238 1000C1FF
140243 100081FF
140253 1000C1FF

geyserwise.txt (1.41 MB)

I have found another manual, it is not much better though;
https://www.geyserwise.com/wp-content/uploads/2015/08/GeyserWise-Max-installers-manual-2015.07.011.pdf

It looks like we are taling about the "Display Unit" talking to the "C Box", the "Panel" is a solar panel.
Coms between the "Display Unit" and the "C Box" are bi-directional.

@jackkitley

To better present your information please read the following link.

Could you take a few moments to READ THIS.
It will help you get the best out of the forum.

Bob.