visualapproach / WiFi-remote-for-Bestway-Lay-Z-SPA

Hack - ESP8266 as WiFi remote control for Bestway Lay-Z spa Helsinki
GNU General Public License v3.0
301 stars 74 forks source link

HWchecker 0.2 results #11

Closed 877dev closed 4 years ago

877dev commented 4 years ago

Hi @visualapproach

Here's my results, again no lights at all on the display, I plugged it in a minute or two, then pressed all the buttons.

When removing the device the lights come immediately back on with the current temperature showing.

Testing on DSP side HV1-4 I have 20KOhms between them, so I don't think there's a short.

rawdata.zip

Thank you

visualapproach commented 4 years ago

u have a multimeter with diode check?

877dev commented 4 years ago

Yes it's a Fluke 115 meter

visualapproach commented 4 years ago

Good. Disconnect device from pump and display. Put fluke in diode mode. Put red lead on an LVx and black on the corresponding HVx. Meter should show a value, like 500. Switch red and black. It should give no reading (or OC). Do that for all display lines

877dev commented 4 years ago

image

Display & CIO sides give same readings/

Red to black: LV1 to HV1 0.552V LV2 to HV2 0.558V LV3 to HV3 0.541V LV4 to HV4 0.547V

Black to red: LV1 to HV1 OL LV2 to HV2 OL LV3 to HV3 OL LV4 to HV4 OL

I have a cheap logic analyzer, is it worth hooking i up to my display data/clock/cs outputs? Currently sat on my desk, it's raining outside here in the UK typically :)

visualapproach commented 4 years ago

I have a cheap logic analyzer, is it worth hooking i up to my display data/clock/cs outputs? Currently sat on my desk, it's raining outside here in the UK typically :)

YES, absolutely!

visualapproach commented 4 years ago

Same here btw. And now it's beer o'clock, but I'll check in here during the evening

877dev commented 4 years ago

Screenshot 2020-08-28 17 38 29 image

Had a quick look, the file was saved using Sigrok if you use it? No connection to CIO, analyzer connected to DISP connections: D0 - DSP_DATA D1 - DSP_CLK D2 - DSP_CS D3 - AUDIO

877_traces.zip

You can see some activity when booting up, sound signal shows. But after that, nothing. When pressing buttons on the web interface, they show in serial monitor, but no pulses on the trace.

877dev commented 4 years ago

Same here btw. And now it's beer o'clock, but I'll check in here during the evening

Yes some time off would be nice, I have food on the way ;) Enjoy your beer(s) :)

visualapproach commented 4 years ago

Thx, just to doublecheck, is LV 3.3V and GND connected?

877dev commented 4 years ago

Yes LV is 3.3V and all grounds connected.

visualapproach commented 4 years ago

Maybe analyze directly on the esp pins (LV side)

877dev commented 4 years ago

Yes ok, I will try that next 👍

visualapproach commented 4 years ago

Ok I checked the .sr file and it seems OK! Are you kidding me, or is it really not showing anything the first 5 seconds (the data shows activity in 5 secs). Abandon the LV analysis and analyze the lines between CIO and DSP without the ESP device. Lets see if there is anything weird going on.

877dev commented 4 years ago

I'm definitely not kidding I'm afraid. There is the initial flurry of signals then nothing..

This is what I'm doing:

Turning power off to the pump. Connect the ESP device inline. Turning power on to pump. The startup melody plays. No lights on display, not even power light. Nothing shows on LCD at all.

Abandon the LV analysis and analyze the lines between CIO and DSP without the ESP device. Lets see if there is anything weird going on.

You mean on the pump itself, no ESP connected inline? I have already done that a while ago, here's a trace I took of unlocking the buttons:

locked to unlocked.zip

D3 is the audio beep when the unlock button was pressed.

visualapproach commented 4 years ago

OK I like a challenge, but this is annoying. Data is getting through, except for button requests. That would indicate SW is the culprit rather than HW. But why does it work for other people then? I need too sleep on this. Did you sample the checker version or the full v1.26?

877dev commented 4 years ago

I'm using full 1.26 and that's the trace I posted above. Yes very annoying! Strange that @carverhaines is getting the same results as me, maybe some difference in protocol?

It's strange how the message data is getting through, but not being written to the screen. Would a button request be stopping the screen from initializing?

I can do more trace files over the weekend if you need, for now maybe a good nights sleep will help.

Thanks so far for the help!!

visualapproach commented 4 years ago

You are welcome. Regarding carver Haines I think it’s because he hasn’t scared the pixies enough. I mean 110v ... pfft ;) (No offense ch) If you could sample hwchecker 0.2 for comparison it might help. Good night

LavaTiger99 commented 4 years ago

Just got home from work. Tried this new checker. No lights on the display, gave it about 30 seconds incase it was booting up, then pushed buttons in this order w/ 1 second pause in between: PWR, Lock, Timer, Bubbles, C/F, Heat, circulate, down, up.

My data looks about the same as @877dev , so I don't think we can blame my wimpy 110V power. https://pastebin.com/raw/kDrQagFn

@visualapproach:

But why does it work for other people then?

Does it? Have you confirmed this with anyone?

Totally shooting in the dark, but is it possible each pump/display have some sort of encryption key that encodes & decodes the signals to each other, so that people can't just go buy a replacement display for example and fix their own pump, would have to buy a new one or get manufacturer to fix instead?

LavaTiger99 commented 4 years ago

Second example, plugging in ESP after pump already on and running: https://pastebin.com/raw/mgjrbxm8 Get some lights on and gibberish on LCD

visualapproach commented 4 years ago

@carverhaines

Does it? Have you confirmed this with anyone?

Yes. And I have tested it on two pumps myself.

I don't think it's encrypted because the data that is working is consistent with the protocol.

Let's see @877dev 's analysis file first. 877- take notes of which analyzer channel is on what cable pin and corresponding ESP PIN please. I'm thinking like this: If there is proper signals reaching the display without it working, it can be because of following reasons.

  1. Pins connected to wrong line.
  2. Timing requirement is different on this particular device (not likely because my tests indicates a broad tolerance in data rate)
  3. Device is broken (in which case it wouldn't work without the ESP)
  4. Severe electromagnetic noise. (You don't live in a transformer station or radio broadcast center I suppose) There may be more reasons but that's what I could think of.
877dev commented 4 years ago

I was going to say I am sure @visualapproach would have checked it works on his own pump! :) I also have two pumps, a result of Bestway's warranty procedure!

I'm pretty sure the data is not encrypted as well, as I was able to check the data bits against the datasheet and they matched.

Here is the trace from the HWchecker 0.2, not connected to pump. None of the button in the web interface do anything, and no message shows up in serial monitor when pressed (maybe intended with this hwchecker version).

Screenshot 2020-08-29 13 04 18 877_trace_hwchecker0.2.zip

As the analyzer is picking up the data signal correctly from the ESP, we are happy there is no issues with the wrong pins being used/hardware issues on that end?

I can do some real traces on the pump soon after I finished my chores :D

visualapproach commented 4 years ago

I was going to say I am sure @visualapproach would have checked it works on his own pump! :) I also have two pumps, a result of Bestway's warranty procedure!

hehe ... thanks!

None of the button in the web interface do anything, and no message shows up in serial monitor when pressed (maybe intended with this hwchecker version).

Correct, it's minimalistic. Webserver is only running to deliver the data file.

As the analyzer is picking up the data signal correctly from the ESP, we are happy there is no issues with the wrong pins being used/hardware issues on that end?

No and no :-). It seems you used too low sample rate. Can you redo it with at least 100 KHz? And by the second "no" I'm thinking that either data is good. In that case the most probable cause is wrong line to wrong pin. (From my point of view. I bet you have checked over and over again.) In the other case, if data is corrupt, it would still most likely be caused by hardware, like a bad cable or similar. To make me stop nagging about the cables beeing wrong: Write down ESP Pin# - LLC LV# - LLC HV# ----Connector to DSP Pin # DATA CHANNEL# stick your analyzer at the asterisk It's not that I don't trust you. It's from my own experience. I need to do this to myself when things keep fightning me :-).

I can do some real traces on the pump soon after I finished my chores :D

Super!

visualapproach commented 4 years ago

SPI

877dev commented 4 years ago

Here's a new hwchecker 0.2 analyzer file with 250kHz sample this time:

hwchecker_0.2_250kHz.zip

One thing I realised and hope is not causing the issue, as you keep asking about wiring. I did not exactly follow your pinouts, mine is as below. But according to the info it should be fine. I did change the code to match my new pinouts...

D1 Mini Layout - NEW my colours ESP pin outs NEW - Copy

` //877dev pins wired: //Right hand connector with male pins, to display

const int DATA_DSP_PIN = D1; const int CLK_DSP_PIN = D2; const int CS_DSP_PIN = D3; const int AUDIO_OUT_PIN = D4;

//Left hand connector with female sockets, to CIO main computer

const int DATA_CIO_PIN = D5; const int CLK_CIO_PIN = D6; const int CS_CIO_PIN = D7; `

I profusely apologise if this is the cause :( I wonder if @caverhaines has done the same as me?

Maybe I need to bite the bullet and build 'exactly' as per your diagram!

visualapproach commented 4 years ago

I can't see any obvious errors with that layout. To rule out one more thing - while I check out the file, you could verify that the connectors is not connected backwards. (reconnect the original cables without ESP. Mark pin 1 (5V) on both cables. Reconnect to your device and check that it is correct) I know it sounds stupid but sh*t happens and also @faboaic admitted that's what happened to him (due to my poor description). BTW, the DATA lines are bidirectional (INPUT AND OUTPUT)

visualapproach commented 4 years ago

@877dev I'm sorry but unless you put the connector backwards it beats me! Data file checks out perfectly fine and yet, the display doesn't answer.

877dev commented 4 years ago

Photo I took a while ago showing pinouts: Pin outs

Photo of connector between DISP and CIO, cable markings match my colours: 2020-06-30 14 50 00

877dev commented 4 years ago

@877dev I'm sorry but unless you put the connector backwards it beats me! Data file checks out perfectly fine and yet, the display doesn't answer.

I'm going blind double checking but it seems ok, I will have a cuppa then head down the garden to plug in for real and check the 5V/GND connections. Then after that I will try and get some analyzer reading from the display end with my janky test cable ;)

I kinda hope it is something stupid I am doing!!

PS- if cable was backwards then I would not hear the melody surely..

Test cable to connect analyzer in series (connector block underneath black tape): IMG_0597 IMG_0598 IMG_0599

877dev commented 4 years ago

Hmm double and triple checked my wiring, even got my spare pump head on the desk and it's the same (melody plays, but no display at all). I notice my Wemos is giving out 4.6V, not the full 5V. Could this be the issue? Although the pump provides the 5V in normal running, so not so sure..

It would be good to check the volts on the DISP_DATA/DISP_CLK/DISP_CS lines when connected to the pump, to see what volts are being output.

Also maybe something to do with the pin current limit on the Wemos, maybe the 1K resistors are not a good idea.

But.....it's raining again :)

877dev commented 4 years ago

SUCCESS!!!!!!!!!!!!!!!!!!!!!!!!! Ok so I know I am kinda just talking to myself now :)

So I quickly built a breadboard with a NodeMCU and level converter on just the display side, and it worked first time - so happy!

So maybe something with the Wemos is does not like, not enough current, resistors making it worse, etc...

Thank you @visualapproach for your patience and help!

working

visualapproach commented 4 years ago

High five! Thank you for sharing the good news! Maybe @carverhaines can solve his problem too now. Good work

faboaic commented 4 years ago

So maybe something with the Wemos is does not like, not enough current, resistors making it worse, etc...

Glad it works for you, now.

My wemos d1 mini works perfectly. I used 820 ohm resistors, because I did not find 1k at that moment.

877dev commented 4 years ago

High five! Thank you for sharing the good news! Maybe @carverhaines can solve his problem too now. Good work

Yes hopefully, thanks for all the help!

So maybe something with the Wemos is does not like, not enough current, resistors making it worse, etc...

Glad it works for you, now.

My wemos d1 mini works perfectly. I used 820 ohm resistors, because I did not find 1k at that moment.

Thank you, I wonder if removing the resistors would fix the issue. Or maybe it was changing the pins that it did not like, I can try that as well.

But for now at least I know it works! :)

877dev commented 4 years ago

Update- removed the resistors on my original board and that works too! So it must’ve been the resistors limiting the current so much that the display could not register the signal. I guess.

I will try with maybe 500ohm resistors when I have more time.

visualapproach commented 4 years ago

Okay, very weird! But good that you discovered that. The best explanation I can come up with is this: When digital pin on ESP is LOW the 1K resistor forms a voltage divider with the 10K pullup resistor on the LV side. This would give some 0.5-0.6 V as LOW signal at the display. The logic analyzer interprets that as a 0, but the display may require 0.4V to count it as 0. Long cables acts as resistors also which may pronounce the issue.

LavaTiger99 commented 4 years ago

@visualapproach, @877dev, YES! I took out the resistors and volia! It works!

Screenshot_20200830-175924 (Small)

Is it safe to run like this without the resistors?

visualapproach commented 4 years ago

@carverhaines Excellent! Thanks for sharing your success. Is it safe to omit the resistors? I updated the readme with some info but the short answer is yes. No guarantees given, but I don't have them in my circuit and I sleep at night.

877dev commented 4 years ago

@carverhaines great news!

I tried adding 1K resistors with my nodemcu breadboard setup, and that worked perfectly. So it seems something specific to the Wemos board in my case. There are many Wemos clones out there, so there might be differences with results.

LavaTiger99 commented 4 years ago

I have a LoLin nodemcu v1.0, looks the same as yours, not using a wemos. I'm going to let it be for now :)