Ulanzi Stream Deck D200 with Home Assistant

I bought this device just to mess around with it as a learning opportunity, and have been slowly figuring out how it talks to the app by decompiling a firmware update + decompiling the windows app + sniffing USB traffic. The only thing I haven’t done is take it apart yet.

Did you end up doing something similar and re-implement the USB protocol, or are you talking to the device in some other way? I am still figuring out stuff and haven’t started working on any real code, but am interested in seeing how your project works.

Very excited to see the code when it’s released!

1 Like

Yes I used Wireshark to sniff the USB traffic and then use Python to communicate with the deck. Luckily the communication is not encrypted and it’s really easy to understand.

I’ll release the project’s source code when it’s ready (2 more weeks?)

1 Like

Really appreciate the work you’re doing and very excited to see the first release of this.

This is why I love the HA community

2 Likes

Update: still working on the editor addon. Sorry for the slow progress because I’m busy with other things.

3 Likes

Update: successfully integrated the editor into Home Assistant UI. Next step: write document and prepare for the initial release.

2 Likes

The libary’s initial source code to communicate with the Ulanzi D200 has been released: GitHub - redphx/strmdck

Code for Home Assistant related projects will be released in the following days.

1 Like

Writing documents. I hate doing this so much :expressionless:

2 Likes

Selfless work for the greater good. Appreciate your efforts and look forward to seeing the final docs.

1 Like

Source code are available (documents are not ready yet):

But I’m running into problem with the addon not being able to find the HomeDeck devices when the Home Assistant instance is connecting to multiple network interfaces.

2 Likes

The project isn’t dead. I was busy with my job and personal life. Still preparing for the document. All the code are available and you can actually use it right now.

I managed to add support for Material You color. You’ll only have to provide the base color with material_you_color, and then select which color role you want in icon_color, icon_background_color, icon_border_color or text_color.

presets:
  room:
    icon_size: 80
    icon_padding: 40
    icon_offset: 0 -100
    icon_border_radius: 20
    icon_border_width: 5
    icon_color: primary
    icon_background_color: primary-container

pages:
  $root:
    buttons:
      - name: ''
        presets: room
        tap_action:
          action: $page.go_to
          data: living-room
        icon: mdi:sofa-outline
        material_you_color: b9003e
        additional_icons:
          - text: "{{ states('sensor.ikea_vindstyrka_temperature', with_unit=True) }}"
            text_size: 20
            text_offset: 0 5
            material_you_color: b9003e
          - icon: "{{ binary_text('group.living_room_lights_nightlight', 'mdi:lightbulb', None) }}"
            material_you_color: FFEC27
            icon_color: primary
            icon_size: 30
            icon_offset: -100 120
          - icon: "{{ binary_text('fan.smartmi_fan', 'mdi:fan', None) }}"
            material_you_color: 29ADFF
            icon_color: primary
            icon_size: 30
            icon_offset: 0 120
3 Likes