phord/Jarvis

Readout not working

Closed this issue · 10 comments

I was able to set up my 8266 to communicate with Adafruit and it will move my desk, however, I cannot get debug telemetry from the telnet server. I modified slightly to run report() with the preset command handle and it shows:

Height: 0
Preset: 0
Keys: 0

My desk is weighted on one side and needs calibrating often. I was hoping to figure out when it shows error and ASR and handle MQTT messages some other way. Any assistance on detecting this and getting the debug output would be great.

phord commented

Sounds like your UART isn't working right. Can you confirm the data pins are sending data somehow? Do you have an o-scope or a logic analyzer?

I did some troubleshooting and it is getting the UART value, but it is not prefixed with 0xF1. All the desk serial object is picking up the 1 1 0 height information repeating with the last receipt is . It is not moving from SYNC.

phord commented

Do you have the same controller? There is another serial data "mode" observed coming from the controller sometimes. Maybe your controller is using that mode. Read the discussion there to see if it matches what you see.

If so, you'll probably need to make quite a few changes in my code to get it to work. And it won't be easy. This code was pretty sloppy; it is mostly a reverse-engineering exercise and some MQTT messaging.

I guess that it is the other one, JCB35N2-PA32-V2. However, I did order it with a programmable keypad. It seems like this other protocol is a lot simpler. My wake sends F5 then 1 1 0 FC (where 0 + FC is the height in inches) a ton of time then ends the stream with 1 5.

In my fork, I added serial commands to be able to set preset as well as clear error and re-level. looks like I will have to adopt/implement the other protocol to get the height information. I am not a C++ dev, but would you be interested in a PR to what I can fit in?

Desk wake output:
Trying 192.168.x.x... Connected to 192.168.x.x. Escape character is '^]'. Connected to Jarvis F5 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 1 0 FC 1 5

phord commented

Yes, I would be interested in seeing a PR to interpret this stream.

It seems like most of the interesting values are 4 Bytes in length. Except for the Wake and the end of stream. So looks like using a state machine on those 4 bytes would be good enough for the needed information. I haven't snooped on the controller yet, but would be interesting on how it does things.

Height report: 1 1 X Y (X*256 + Y = Desk Height in the native units * 10)

ASR: 1 4 x01 xAA (Leveling needed, Constantly streams height and then this code)
EO8: 1 2 x80 x00 (Control box error code)
LOC: 1 2 x00 x80 (Locked desk control)

Wake code: F5
End of stream: 1 5

Sometimes I disconnect my handset and connect the controller it will go into an unknow state (???) then lock the desk height. I assume this is when the handset has a session open and the desk locks the position for safety.
???: 1 6 0 0

I can't figure out to programmatically lock/unlock the controls and I won't have a logic analyzer until a month from now. If you have time/don't mind see what happens when you do this? hopefully it is just an electrical control. from the keypad, it should just be holding the memory key for ~ 5 seconds.

phord commented

On my unit, the handset control-lock does not involve the desk controller in any way as far as I can tell. When I lock the handset, the display shows a 🔒 icon and it stops sending any commands to the desk controller except to wake the display (HS3). It never sends any kind of "LOCK" command to the desk controller. In fact, I can unlock the handset simply by power-cycling it.

I checked your serial output in the earlier message and confirmed it matches what I saw from my FullyCB2C-A desk controller. That is, F5 01 01 {height} 01 01 {height} 01 01 {height} ... 01 01 {height} 01 05

Does your handset have a display? Does it turn off after the 01 05 is received? Does it have any "locked" indicator?

Where do the codes come from that you listed, ASR, EO8 and LOC? Are those displayed on the handset?

I have been mostly using a cut cable for my troubleshooting, but I have a proper passthrough breakout board and logic analyzer to look at the handset and controller interaction further after vacation.

LOC is what the handset shows when its locked.
ASR (on the handset) or Reset (in the uplift manual) is the programming mode to set limits and units.
EO8 is displayed on the handset and in the manual as a general error code.

Feature added in PR #27. Closing issue.