Juke Audio Juke-8 (Development)

I am trying to find a good multi room amp for my house. Have you been happy with the Juke-8 and have you gotten it well integrated into HA by now?

Following up, any updates on this or others with additional experience or input to share?

Amplipi has HA support and it has been rock solid. Pretty happy with the installation I did and it’s been very reliable.

Not sure how old the firmware is, but I was looking over firmware release notes and in 3.3.0 they have a note about accessing their swagger io RESTful service documentation. Very cool! nice to see this Juke! I presume the endpoints given to kcossabo (almost a year ago) are either legacy or user friendly endpoints. They have endpoints to fully control the device and is perfect for a full HA integration, unfortunately I wont have the bandwidth to write such integration for it.

The Developers over at JUKE wanted me to try the new REST API, but I have not had time. The old works, and well it is working.

I may get my head above water and play, but right now I have not played with he REST API

its pretty straightforward and works well. Here are the 3 that I use in my current configuration.

juke_post_input_restart:
  url: http://192.168.50.15/api/v1/inputs/{{ id }}/restart
  username: Admin
  password: Admin
  headers:
    accept: application/json
  method: POST
  content_type: application/x-www-form-urlencoded
juke_put_input_type:
  url: http://192.168.50.15/api/v1/inputs/{{ id }}/type
  username: Admin
  password: Admin
  headers:
    accept: application/json
  method: PUT
  content_type: application/x-www-form-urlencoded
  payload: type={{ type }}
juke_put_input_zones:
  url: http://192.168.50.15/api/v1/inputs/{{ id }}/zones
  username: Admin
  password: Admin
  headers:
    accept: application/json
  method: PUT
  content_type: application/json
  payload: "{{ zones }}"
juke_put_zone_volume:
  url: http://192.168.50.15/api/v1/zones/{{ id }}/volume
  username: Admin
  password: Admin
  headers:
    accept: application/json
  method: PUT
  content_type: application/x-www-form-urlencoded
  payload: volume={{ volume }}
juke_put_zone_input:
  url: http://192.168.50.15/api/v1/zones/{{ id }}/input
  username: Admin
  password: Admin
  headers:
    accept: application/json
  method: PUT
  content_type: application/json
  payload: "{{ input }}" #[] ['1']
juke_zone_toggle:
  url: http://192.168.50.15/zone_toggle.php
  method: POST
  content_type: "application/x-www-form-urlencoded"
  payload: "source={{ source }}&id={{ id }}&index={{ index }}&action={{ action }}"

I am stuck on getting the input ids

Using the built in API tool

curl -X GET "https://juke.local/api/v1/inputs/" -H "accept: application/json"

the response is;

{
  "input_ids": [
    "4"
  ]
}

I would expect an array of the names, like the ZONEs

{
  "zone_ids": [
    "B0B9A1-5C8-Z0",
    "B0B9A1-5C8-Z1",
    "B0B9A1-5C8-Z2",
    "B0B9A1-5C8-Z3",
    "B0B9A1-5C8-Z4",
    "B0B9A1-5C8-Z5",
    "B0B9A1-5C8-Z6",
    "B0B9A1-5C8-Z7"
  ]
}

I’m just an end-user but would love to see this working so I can add to home app via homebridge.

curl -X GET "https://juke.local/api/v1/inputs/" -H "accept: application/json"

This will give you

{
  "input_ids": [
    "1",
    "2",
    "3",
    "4"
  ]
}

The input id’s are not the same type of id’s as zone id’s, you are getting the right id’s. You can see in the swagger. https://juke.local/api/apidocs/#/inputs/get_api_v1_inputs_

I opened a ticket with JUKE, mine only returns

{
  "input_ids": [
    "4"
  ]
}

Welcome.

@seesoe is using the new API, I will switch when I work the bugs.

Right now though the JUKE Amp is working well with the old calls I posted above.

Home Assistant is very wordy, and I am still working through right process to do this, but now have an automation that when I want to listed to whole house audio;

  • set the outputs I want to the input I want on the JUKE
  • then set a Raspberry Pi with OwnTone to play a specific play list (off of my NAS) to the Airplay2 input on the Juke Amp

The automation so far is

- id: '1682867875027'
  alias: juke_house
  # this automation Apr 30, 2023 - turns on OnwTone sets the output to JUKE, and then sets Juke to all the right outputs.
  description: turn the Juke Amp inputs for normal home audio listening
  trigger: []
  condition: []
  action:
  - service: rest_command.juke_s4_o1
    data: {}
  - service: rest_command.juke_s4_o2
    data: {}
  - service: rest_command.juke_s4_o6
    data: {}
  - service: rest_command.juke_o3_off
    data: {}
  - service: rest_command.juke_o4_off
    data: {}
  - service: rest_command.juke_o5_off
    data: {}
  - service: rest_command.juke_o7_off
    data: {}
  - service: rest_command.juke_o8_off
    data: {}
  - service: media_player.turn_on
    data: {}
    target:
      entity_id: media_player.forked_daapd_output_juke2
  - service: media_player.select_source
    data:
      source: May2022 (playlist)
    target:
      entity_id: media_player.forked_daapd_server
  - service: media_player.shuffle_set
    data:
      shuffle: true
    target:
      entity_id: media_player.forked_daapd_server
  - service: media_player.media_play
    data: {}
    target:
      entity_id: media_player.forked_daapd_server
  mode: single

It is a bug, waiting for next release

Thanks for everyones work on this. I’d love to be able to use HA to yell through the speakers at my kids in other rooms of the house lol but not sure I’d be able to with my Juke…

Hey friends. I created a basic HACS integration for my Juke. You can add a custom repository in HACS using this repo: pkarimov/jukeaudio_ha: Custom Home Assistant integration for Juke Audio (github.com). It exposes each zone as a media player entity on which you can set the source and the volume.

Let me know if you hit issues or have any feedback or wishes. Work in progress :slight_smile:

2 Likes

This is great, thanks for sharing Paul!! I’ve checked your repo, but not sure if I was able to find the answer to my question; apologies, I’m new to HA. Leveraging your integration, would it be possible to create an automation to play a voice announcement on all zones based on a trigger from another device, and then resume the music in those zones (if any was playing)?

For example, if my door sensor changes to “open” while music is playing in zones 1 and 2, the automation would pause the music, make an announcement that the door was opened in all zones, and then resume playback of the music in zones 1 and 2 shortly after the announcement. Would that be possible? Thanks in advance for your help. :slight_smile: Just seriously looking at buying a Juke, but need to know if it/your integration will support my use case before pulling the trigger. :slight_smile:

My integration can help there but it can’t do all of this on its own. What it can do is set the zones where you want to play the announcement to the input from which the announcement will come (from the inputs supported by the Juke) and then set them back to whatever input (if any) was playing music there before. You still need other components to be able to actually pause current music, play the announcement, and then resume music.

@paulk1 - Juke Support fixed my issues. The Integration would not install on;

Home Assistant 2023.10.5
Supervisor 2023.11.3
Operating System 11.1
Frontend 20231005.0 - latest

just stalls


Also they moved to APIv2?

Alright, many changes to the install and the integration now loads, and

WOW

wonderful work.

Do you know if this will work with the juke+

Nothing comes up when i search the integrations for Juke… did they get rid of it?