phord/Jarvis

IKEA MITTZON not receiving commands

Closed this issue · 18 comments

I bought a pair of IKEA MITTZON Desks and I'm testing this protocol. I can read the desk position when I manually move it via the handset but when I send commands nothing happens. It's worth pointing out that I'm using the RJ-12 port not the RJ-45 port. Through the FCC files, I can see that Jiecang has a new BT adapter that uses 5 pins so I checked the 5'th wire and it reads 3.3V. This wire is labelled in the BT adapter as "BKG". I'm not sure how to proceed from here since I don't own a BT adapter myself other than use the RJ45 port, but if someone can provide help I would rather use the RJ12 port.

Link for the BT adapter I'm talking about:
https://fcc.report/FCC-ID/2ANKDJCP35NBLT1
(Not sure if this BKG pin is relevant to my problem)

I had a bit of a poke at the rj12 port for the Desky project here. Maybe a little info is relevant.
https://community.home-assistant.io/t/desky-standing-desk-esphome-works-with-desky-uplift-jiecang-assmann-others/383790/23?u=mahko_mahko

Not sure if the info would still be relevant to new controller/ dongle versions. Sounds like things may have changed.

Google tells me BKG might be Bulk Ground (common ground).

Sorry for the inconvenience, I just forgot to connect the ground of my pico to the desk, was just connected via usb and the TX RX, when I connected the rj12 ground to the pico, it worked fine

I think I found some more commands by the way, I'll confirm my findings and share

@phord

image

I didn't check everything but I think you lack at least the Stop cmd, I haven't tested, but this must be a cmd in some desks

imageerror

Possible some relevant info on errors?

Nice finds. How did you determine those commands?

I decompiled the app and searched

Very nice work on that!
My desk stops if it's in motion and you press any button.
I might revisit the rj12 port sometime in light of this...
Is there a "go to ad hoc height x" command?

Could you paste commands as text please to make things slightly easier?

From my understanding the protocol in the rj12 port is not as complete, so not everything that is possible with the rj45 port is possible on the rj 12, but it works for me for what I want and seems safer since the manufacturer uses this port for this effect, Im running a raspberry pi pico w with esphome

I can paste let me check my pc, just gonna take some time

I don't believe the rj45 port has a "go to x" command either - you have to roll your own.

The Desky ESPHome project implements one but you lose the "soft start/stop" that the presets have (which is nice), and we didn't figure that out yet.

I think i can figure that one out when i have time and also a sync function since i have 2

Here's the codes
public static final String cmdDown = "F1F10200027E";
public static final String cmdFetchAllTime = "F1F1AA00AA7E";
public static final String cmdFetchHeightRange = "F1F10C000C7E";
public static final String cmdFetchHeightValue = "F1F10700077E";
public static final String cmdFetchHighestLowestLimit = "F1F12000207E";
public static final String cmdFetchStandTime = "F1F1A60100A77E";
public static final String cmdGotoMemory1 = "F1F10500057E";
public static final String cmdGotoMemory2 = "F1F10600067E";
public static final String cmdGotoMemory3 = "F1F12700277E";
public static final String cmdMemory1 = "F1F10300037E";
public static final String cmdMemory2 = "F1F10400047E";
public static final String cmdMemory3 = "F1F12500257E";
public static final String cmdPatch = "F1F1A000A07E";
public static final String cmdStop = "F1F12B002B7E";
public static final String cmdUp = "F1F10100017E";

I was curious so i think i found how to send the desk to a desired height but i haven't tested, this is interesting nevertheless
Screenshot_20240525_023206_Samsung Internet

If this does what i think it does, should fix the soft stop problem about go to height, but i haven't tested at this point

@Pereira98 are you aware of this ESPHome project?

Maybe we can look to extend it?

I'm a key user (thread OP) but not the developer of the custom component.

https://community.home-assistant.io/t/desky-standing-desk-esphome-works-with-desky-uplift-jiecang-assmann-others/383790?u=mahko_mahko

https://github.com/ssieb/custom_components/tree/master/components%2Fdesky

The custom component probably currently has a bug though with a new feature (support alternative protocol and auto protocol detection).

Don't mean to highjack this project but if you're using ESPHome too then collaboration could be cool.

Yes i can post more info on this but right now i dont have much time, i want to 3d print a case for the pico also, maybe in a few days i can work more on this

I was posting here because phord has great info on the desk and I mostly used the info that he provided, but i didnt use his code, I just made a esphome config

Once I have the time Ill compile my findings and share with you all

Yeah no prob at all. No rush. Agree the info here on this project is the best;)

I was curious so i think i found how to send the desk to a desired height but i haven't tested, this is interesting nevertheless Screenshot_20240525_023206_Samsung Internet

If this does what i think it does, should fix the soft stop problem about go to height, but i haven't tested at this point

I can confirm that this is the go to specific height command, and it does the soft stop thing, via the rj 12 port

for a height of 69,6cm the cmd would be [0xF1, 0xF1, 0x1B, 0x02, 0x02, 0xB8, 0xD7, 0x7E]
(i is in mm at least for my desk)

Also i think this cmd is to set the memories to specific heights regardless of the desk position, this one i havent tested but its a F1F1A cmd so its a patch cmd that means it changes settings of the desk controller

Screenshot_20240525_132725_Samsung Internet

I think they match mem 1 2 and 3 to Stand Sit Rest

The substring should be the height probably but i dont know the format, maybe its similar to the F1F11B cmd, the answer is in the code is just a matter of time

https://gitlab.com/pimp-my-desk/desk-control

I've started to compile the info I know here

I had an initial tinker @Pereira98 and can confirm these are working on my rj12 port.

button:
  - platform: uart
    name: "Raise"
    data: [0xF1, 0xF1, 0x01, 0x00, 0x01, 0x7e]
  - platform: uart
    name: "Stop"
    data: [0xF1, 0xF1, 0x2B, 0x00, 0x2B, 0x7E]
  - platform: uart
    name: "Lower"
    data: [0xF1, 0xF1, 0x02, 0x00, 0x02, 0x7e]
  - platform: uart
    name: "Go To Memory 1"
    data: [0xF1, 0xF1, 0x05, 0x00, 0x05, 0x7e]
  - platform: uart
    name: "Go To Memory 2"
    data: [0xF1, 0xF1, 0x06, 0x00, 0x06, 0x7e]
  - platform: uart
    name: "Go To Memory 3"
    data: [0xF1, 0xF1, 0x27, 0x00, 0x27, 0x7e]
  - platform: uart
    name: "Go To Memory 4"
    data: [0xF1, 0xF1, 0x28, 0x00, 0x28, 0x7e]

I had an initial tinker @Pereira98 and can confirm these are working on my rj12 port.

button:
  - platform: uart
    name: "Raise"
    data: [0xF1, 0xF1, 0x01, 0x00, 0x01, 0x7e]
  - platform: uart
    name: "Stop"
    data: [0xF1, 0xF1, 0x2B, 0x00, 0x2B, 0x7E]
  - platform: uart
    name: "Lower"
    data: [0xF1, 0xF1, 0x02, 0x00, 0x02, 0x7e]
  - platform: uart
    name: "Go To Memory 1"
    data: [0xF1, 0xF1, 0x05, 0x00, 0x05, 0x7e]
  - platform: uart
    name: "Go To Memory 2"
    data: [0xF1, 0xF1, 0x06, 0x00, 0x06, 0x7e]
  - platform: uart
    name: "Go To Memory 3"
    data: [0xF1, 0xF1, 0x27, 0x00, 0x27, 0x7e]
  - platform: uart
    name: "Go To Memory 4"
    data: [0xF1, 0xF1, 0x28, 0x00, 0x28, 0x7e]

I feel this is not the correct place for this discussion, I don't mean this repository but this issue page itself, so I'll continue the discussion in the HA Forum