[HASS] Custom Component, chơi nhạc Zing Mp3 trên Google Home

em.ten.teo
19/3/2019 14:14Phản hồi: 26
[HASS] Custom Component, chơi nhạc Zing Mp3 trên Google Home
Hi mọi người, hôm nay mình tiếp tục giới thiệu với mọi người 1 component do mình mới viết. Hy vọng bà con sẽ thích

1. Chức năng:

Nghe nhạc trên Zing thông qua Hass, có thể add thêm automation để ra lệnh bằng giọng nói thông qua google assistant.

2. Điều kiện để cài đặt:

Đã link loa google home với Hass. Để link hass với loa google home, bạn chỉ việc connect loa google home vào cùng mạng với hass, sau đó vào Configuration > Intergrations và bấm connect là xong. Sau khi connect xong bạn sẽ thấy như hình bên dưới
upload_2019-3-19_21-0-2.png
Bấm vào bạn sẽ thấy loa của bạn kèm với entity_id

upload_2019-3-19_21-1-6.png

3. Cài đặt:

Copy file zing_mp3.py vào thư mục \\hassio\config\custom_components, nếu trong thư mục config chưa có thư mục custom_components thì các bạn tạo thêm rồi copy vào
Sau khi các bạn copy vào rồi thì vào file configuration.yaml add đoạn script sau, speaker là entity_id loa của bạn.
Code:
zing_mp3:
   speaker: "media_player.bedroom_speaker"
Sau đó các bạn restart hass lại. Nếu thành công thì trong phần services bạn sẽ thấy có zing_mp3.play. Từ đây bạn có thể gọi play bất kỳ bài nào bạn thích với việc truyền service data như hình bên dưới.
upload_2019-3-24_13-24-9.png

4. Add automation cho HA để ra lệnh bằng giọng nói cho ZingMp3:
Do config phần này đỏi hỏi nhiếu thứ nên mình có viết 1 bài riêng để nói về việc config này, các bạn có thể xem tại đây. Bài viết đó hướng dẫn config cho cái tv_extra. Các bạn chỉ việc thay đổi chút config lại là được. Thông tin cần thay đổi các bạn có thể xem bên dưới

Automation.yaml
Code:
- alias: "Zing Mp3"
  trigger:
    platform: event
    event_type: ifttt_webhook_received
    event_data:
      action: call_service
  action:
    service_template: '{{ trigger.event.data.service }}'
    data_template:
      name: '{{ trigger.event.data.name }}'
IFTTT
upload_2019-3-24_13-32-28.png
upload_2019-3-24_13-35-26.png
26 bình luận
Chia sẻ

Xu hướng

Thank bạn.
Mình làm xong hết rồi, điền tên vào phát luôn nhạc con heo đất luôn rồi, nhưng gọi google play music on zing-mp3 thì nó vẫn phát trên spotify, vào setting nó chỉ cho chọn spotify, vậy có gọi google play music với tên được không hay phải điền tên vào mới phát.
em.ten.teo
ĐẠI BÀNG
5 năm
Bạn phải dùng IFTTT + Webhook mới control thông qua google assistant được. Bạn có thể xem bài hướng dẫn mình ở đây. Nhớ chỉnh sửa command cho đúng, vì bài này mình viết là cho cái custom component tv_extra.
Lamvip379
TÍCH CỰC
5 năm
Mình làm thử mà call service mà nó chẳng hiện gì cả..thớt giúp mình xíu nha
Lamvip379
TÍCH CỰC
5 năm
@em.ten.teo log ở mục nào nào bạn..mình tìm không thấy phần log đó chỉ thấy mục system log

2019-04-15 10:54:48 WARNING (MainThread) [homeassistant.loader] You are using a custom component for zing_mp3 which has not been tested by Home
em.ten.teo
ĐẠI BÀNG
5 năm
@Lamvip379 Báo vậy là đúng rồi đó, bạn nên check lại file configuration.yaml xem cái speaker đúng tên chưa
Lamvip379
TÍCH CỰC
5 năm
@em.ten.teo chỉnh tới lui: nó lại báo thế này:


Log Details (ERROR)
Mon Apr 15 2019 19:37:24 GMT+0700 (Indochina Time)

string indices must be integers
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/homeassistant/components/websocket_api/commands.py", line 122, in handle_call_service
connection.context(msg))
File "/usr/local/lib/python3.7/site-packages/homeassistant/core.py", line 1138, in async_call
self._execute_service(handler, service_call))
File "/usr/local/lib/python3.7/site-packages/homeassistant/core.py", line 1162, in _execute_service
await self._hass.async_add_executor_job(handler.func, service_call)
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/zing_mp3.py", line 96, in handle_search
hass.services.call("media_player", "play_media", {"entity_id": config[DOMAIN]['speaker'], "media_content_id": mediaUrl, "media_content_type": "music"})
TypeError: string indices must be integers
em.ten.teo
ĐẠI BÀNG
5 năm
@Lamvip379 Bạn sửa gì mà ra lỗi này @_@
AndyCafe
ĐẠI BÀNG
5 năm
Như này là lỗi sao bạn nhỉ ?
37844B02-5F1F-4EB2-86C5-2ECBED594261.jpeg
em.ten.teo
ĐẠI BÀNG
5 năm
@AndyCafe Có vẻ dấu nháy đôi bị sai thì phải, bạn type vào hay copy từ đâu vậy?
AndyCafe
ĐẠI BÀNG
5 năm
@em.ten.teo Type từ iphone
AndyCafe
ĐẠI BÀNG
5 năm
Nhưng add xong trong phần service chỉ có zingmp3 play chứ k có zingmp3_search như bạn nói 😔
em.ten.teo
ĐẠI BÀNG
5 năm
@AndyCafe zing_mp3.play mới đúng, search là cũ rồi, mình update mà edit thiếu á, để edit lại. Nhưng mà đã play được chưa??
AndyCafe
ĐẠI BÀNG
5 năm
@em.ten.teo Chưa play dc 😆 mình xin zalo hay fb để tiện contact nào 😔
AndyCafe
ĐẠI BÀNG
5 năm
Như này là sao bạn nhỉ ?
EE72468E-D71B-4239-82A5-5E9E4F1EC3C3.jpeg
em.ten.teo
ĐẠI BÀNG
5 năm
@AndyCafe Chắc lỗi đâu đó khi get link media, bạn bấm vào Info rồi check log thử xem nó báo gì. Mình test trên HA cài trên máy ảo, có khi chạy trên cái khác nó bị lỗi.
c535
ĐẠI BÀNG
5 năm
MÌnh cũng không được. service còn không hiện ra zing_mp3.play . Nhưng mình thay bằng cái zing_mp3.py ở trang này thì service hiện ra bạn ạ nhưng vẫn không play dc,
https://sites.google.com/site/exlabvn/thu-vien-lap-trinh/chu-de-home-assistant/nghe-nhac-zing-mp3-tren-home-assistant
c535
ĐẠI BÀNG
5 năm
Của mình lỗi như này :

Sun Apr 28 2019 02:55:33 GMT+0700 (Indochina Time)

Code:
Sun Apr 28 2019 02:55:33 GMT+0700 (Indochina Time)
Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/aiohttp/web_protocol.py", line 418, in start
    resp = await task
  File "/usr/lib/python3.5/asyncio/futures.py", line 380, in __iter__
    yield self  # This tells Task to wait for completion.
  File "/usr/lib/python3.5/asyncio/tasks.py", line 304, in _wakeup
    future.result()
  File "/usr/lib/python3.5/asyncio/futures.py", line 293, in result
    raise self._exception
  File "/usr/lib/python3.5/asyncio/tasks.py", line 241, in _step
    result = coro.throw(exc)
  File "/usr/local/lib/python3.5/dist-packages/aiohttp/web_app.py", line 458, in _handle
    resp = await handler(request)
  File "/usr/local/lib/python3.5/dist-packages/aiohttp/web_middlewares.py", line 119, in impl
    return await handler(request)
  File "/usr/local/lib/python3.5/dist-packages/homeassistant/components/http/real_ip.py", line 34, in real_ip_middleware
    return await handler(request)
  File "/usr/local/lib/python3.5/dist-packages/homeassistant/components/http/ban.py", line 67, in ban_middleware
    return await handler(request)
  File "/usr/local/lib/python3.5/dist-packages/homeassistant/components/http/auth.py", line 99, in auth_middleware
    return await handler(request)
  File "/usr/local/lib/python3.5/dist-packages/homeassistant/components/http/view.py", line 118, in handle
    result = await result
  File "/usr/local/lib/python3.5/dist-packages/homeassistant/components/config/core.py", line 21, in post
    errors = await async_check_ha_config_file(request.app['hass'])
  File "/usr/local/lib/python3.5/dist-packages/homeassistant/config.py", line 812, in async_check_ha_config_file
    check_ha_config_file, hass)
  File "/usr/lib/python3.5/asyncio/futures.py", line 380, in __iter__
    yield self  # This tells Task to wait for completion.
  File "/usr/lib/python3.5/asyncio/tasks.py", line 304, in _wakeup
    future.result()
  File "/usr/lib/python3.5/asyncio/futures.py", line 293, in result
    raise self._exception
  File "/usr/lib/python3.5/concurrent/futures/thread.py", line 55, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.5/dist-packages/homeassistant/scripts/check_config.py", line 335, in check_ha_config_file
    component = loader.get_component(hass, domain)
  File "/usr/local/lib/python3.5/dist-packages/homeassistant/loader.py", line 80, in get_component
    comp = _load_file(hass, comp_or_platform)
  File "/usr/local/lib/python3.5/dist-packages/homeassistant/loader.py", line 117, in _load_file
    module = importlib.import_module(path)
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 669, in exec_module
  File "<frozen importlib._bootstrap_external>", line 775, in get_code
  File "<frozen importlib._bootstrap_external>", line 735, in source_to_code
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/root/.homeassistant/custom_components/zing_mp3.py", line 54
    url        = f"https://zingmp3.vn/api/song/get-song-info?id={id}&"
                                                                     ^
SyntaxError: invalid syntax
Mình đã cài vào rồi mà gọi từ Google Home nó chả phản ứng gì cả
mousemax
ĐẠI BÀNG
5 năm
đã làm ok mà kêu tìm bài con heo dat nó ra bài tiếng anh 😆 .... “ ok google hát con heo dat” ra bài tiếng anh 😃) Automation.yaml a em bỏ dòng alias:”Zing mp3” đi
bumidu
ĐẠI BÀNG
5 năm
mấy cái code các bác add vào đoạn nào thế sao mình add vào toàn báo lỗi mình add này có đúng ko mấy cao nhân chỉ hộ mình dân ko chuyên mấy món này hixx
hass1.PNG
hass2.PNG
caohuong_ls
ĐẠI BÀNG
5 năm
@em.ten.teo component của b có chạy được random list bài hát ghi sẵn không? Cách làm ntn vậy. Mình cảm ơn
luong.12g.co
ĐẠI BÀNG
4 năm
Chạy ok, thanks bn. Có cách nào để nó play playlist cá nhân trong zing mp3 ko bn? Mình muốn mỗi khi nhấn nút (xiaomi click) là nó ra lệnh cho zing phát nhạc, khỏi cần giọng nói mất tg.
cảm ơn bạn mình làm được rồi
Screen Shot 2020-01-07 at 15.00.36.png

Xu hướng

Bài mới









  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019