Announcement

Collapse
No announcement yet.

AK Google Cast plugin - Google Chromecast and Google Home - introduction

Collapse
This is a sticky topic.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    AK Google Cast plugin - Google Chromecast and Google Home - introduction

    ​​​

    ​​​​​​
    ​​​​​
    ​​
    HomeSeer plugin for using Google Chromecast / Google Home devices as HomeSeer speech clients, monitoring and control of currently playing media, and sending Audio/Video media and Web-pages to Google Chromecast/Google Home devices.

    HS4: https://shop.homeseer.com/products/a...plugin-for-hs4
    HS3: https://shop.homeseer.com/products/a...lug-in-for-hs3

    Most versatile usage is with Google Hub - you can cast images and videos. Some plugin can generate an image and then cast the image to the Google Hub.

    See example of sending temperature charts generated by AKHetmiserNeo plugin at the end of this post.


    Features:
    • Automatically discovers Google Chromecast and Google Home devices devices on network using mDNS (Windows) and Avahi DBus (Linux) ZeroConf technologies
    • Creates HomeSeer Speaker Client for each discovered device to allow selection in TTS action
    • Creates many HomeSeer devices for each Chromecast - Title, Artist, Album, Image, Volume, ContentID (clickable link), track position slider, etc.
    • Selection between HomeSeer and Google Translate voices with language selection
    • Many configuration options for each Chromecast/Google Home device
    • Event Action for sending media and webpages to Chromecat/Google Home, including currently playing media, i.e. open current Chromecast Backdrop image (my favourite)
    Click image for larger version  Name:	gridview.jpg Views:	88 Size:	108.5 KB ID:	1448464
    Click image for larger version  Name:	2020-11-29 (1).png Views:	47 Size:	427.9 KB ID:	1448465
    After devices are configured - they will appear in Homeseer speech client list:
    Click image for larger version  Name:	SpeakerList.jpg Views:	47 Size:	69.9 KB ID:	1448466
    And a new Action is added "Googlecast: Cast Media":
    Click image for larger version  Name:	actionconfig.jpg Views:	48 Size:	62.3 KB ID:	1448467
    Here's an example of sending temperature charts generated by AKHetmiserNeo plugin

    http://192.168.1.84/AKHeatmiserNeo/tempsNeoHub.png (MIME Type image/png)
    Click image for larger version  Name:	graph.png Views:	47 Size:	79.5 KB ID:	1448468

    #2
    Initial Configuration
    After installing and enabling the plugin it will automatically discover Google Chromecast and Google Home devices on the network.
    Note 1: On Linux discovery depends on avahi-daemon which is normally installed and started automatically.
    On Windows best discovery option is Bonjour Print Services for Windows, if you have issues with the default Tmds discovery - please install Bonjour and restart the plugin - it should switch to Mono.Zeroconf provider.
    Click image for larger version  Name:	image_96892.jpg Views:	284 Size:	77.6 KB ID:	1448082
    Note 2: If Discovery fails for any reason - devices can be added manually by clicking Add (green plus) button and configuring New Receiver:
    - IP Address
    - Port number (optional)
    - Device Name - see Note 3 below
    - Model Name - i.e. "Home Mini" (not important)
    - Unique ID - some string unique (not important)

    Note 3: "Device Name" should be unique and match the Name assigned in Google Home app, otherwise discovery service will create a new HS device.
    Click image for larger version  Name:	image_96893.png Views:	296 Size:	58.3 KB ID:	1448083
    Click image for larger version  Name:	image_96750.jpg Views:	0 Size:	52.8 KB ID:	1504784

    Comment


      #3
      Device Configuration Options
      1.Chromecast Configuration

      Normally no need to change (only if manually added device)

      Note: "Device Name" should match the Name assigned in Google Home app, otherwise discovery service will create a new HS device.
      2. TTS Configuration

      Here you select translation engine (Google Translate or HomeSeer).

      I also plan to add Google Cloud Translate (paid) service which provides very high quality voices.

      Note: GoogleTranslateURL engine is same as GoogleTranslate, except it does not cache translated mp3 files locally - for each TTS it does request to Google services.

      The (!) prefix can be added to not-important TTS which won't interrupt any currently running app on the device.

      Note: I also plan adding specific protocol control (i.e. Spotify, Plex, Sirius XM, Youtube) to be able to resume played media after TTS.
      3. Settings

      Not really important settings here, i.e. % step for incrementing/decrementing volume when using Volume Up/Down controls of the device Volume.

      Note: Timeout settings need changes only if there are any issues with the device.
      Click image for larger version  Name:	image_96751.jpg Views:	884 Size:	41.1 KB ID:	1448081
      Advanced settings (from ver. 4.0.5.20)
      Setting Description Default
      1 Disconnect speaker from HS on Error Don't disconnect HS speaker immediately on Chromecast error (to avoid HS "Speaker" warnings). If Chromecast is not re-connected within this time - the speaker will be removed from HS.

      Default 60 sec should be sufficient for rebooting Chromecast without logging the warning.
      60 sec
      2 Verify speaker connected (VerifySpeakerTimer) Check periodically that the plugin is connected to both Chromecast and HS speaker. 30 sec
      3 HeartBeat time Send PING-PONG request to keep connection with Chromecast. May be reduced upto 5 sec to insure stable connection. 15 sec
      4 HeartBeat timeout Disconnect from Chromecast if no message received within this time. 25 sec
      5 Wait for PING when device discovered When Chromecast reboots, it starts responding to PING, but not ready to communicate. So need to wait a bit to compete booting up. 10 sec

      ​​Click image for larger version  Name:	image.png Views:	0 Size:	60.6 KB ID:	1620783
      Click image for larger version  Name:	image.png Views:	0 Size:	82.0 KB ID:	1620784

      Comment


        #4
        I hope this isn’t inappropriate to ask but what differs between this and Spud’s plugin? All for healthy competition

        Comment


          #5
          Originally posted by kideon View Post
          I hope this isn’t inappropriate to ask but what differs between this and Spud’s plugin? All for healthy competition
          1. As there are free Chromecast libraries available - I decided to write my own plugin - so it's my baby and I'm free to fix bugs and add features when I want.
          What I wanted to do (next versions) - collect history of played media to be able to replay it later.
          2. That was actually main reason why I started this plugin - I like Chromecast Backdrop images (slide show) - but they don't show much info about the images. So I extract urls from the media info - and I can click on the extracted link to see where the image came from.
          3. Spud's plugin uses additional services to discover devices on network (Apple Bonjour on Windows and Avahi provider on Linux). I don't like to require to install extra stuff, and for me it didn't quite work - was discovering Chromecast, but not Google Home. So I spent a lot of time investigating Zeroconf technologies to make it more reliable without extra services.
          4. Displaying current track position and having a scrollbar to seek to different position (see image below - number 3). Click image for larger version

Name:	image_79896.png
Views:	2228
Size:	2.3 KB
ID:	1448069
          5. More configuration options for each device - accessible directly by clicking on the root device name.
          6. Instead of enabling/disabling TTS in configuration for devices when an Application is running - I use configurable prefix - default (!) - to be able to disable TTS per message - so I can still send important messages even if there's an Application running.
          7. And I'm investigating how to store currently running application and media to be able to interrupt it with TTS announcement - and then restore previous media.
          8. Ability to Cast current media - both from gui controls and event action - i.e. when I like a Backdrop image - I click the button (button 1 below) - and it will send the image url to the Chromecast
          9. Ability to enable/disable devices from controls/events - not only from configuration - (button 2 below)
          Click image for larger version

Name:	image_79895.png
Views:	2370
Size:	8.7 KB
ID:	1448068

          10. I don't have an extra "root" device without any useful functionality.
          11. ContentID and ContentType devices - not only for display - you can set their "device string" values to required url and MIME type - and by using the button 1 (the image above) cast the media. Note: to cast a webpage the media type is "iframe".
          12. Ability to hide each device type separately - i.e. instead of using "Artist" and "Title" devices - I prefer using the "Title (Artist)" device, but some users may want them separately.
          13. In all my plugins - per device logging checkboxes - so if there's a problem with particular device - no need to filter out other devices messages.
          14. I always try to improve usability and improve user experience - I'm professional software engineer with 30 years experience in high reliability and user facing application (as some can remember from my conversations with bsobel )

          Comment


            #6
            if I understand properly the last picture on post #2. I think your plugin provide the the ability change the ''real'' chromecast linked to the hs3 devices refs, by changing the device id ? So do not need to change any events if there's a problem with a chromecast.

            Comment


              #7
              Hi , by default I actually use the device "Name", not "ID" - because I noticed the ID is not constant and may change, but the name is assigned by the user to each device doesn't change, at least by itself. But everything is configurable anyway.

              The only requirement is that each device is assigned a unique name.

              Originally posted by MattL0 View Post
              if I understand properly the last picture on post #2. I think your plugin provide the the ability change the ''real'' chromecast linked to the hs3 devices refs, by changing the device id ? So do not need to change any events if there's a problem with a chromecast.

              Comment


                #8
                Wish I’d known this was in development before paying for Spud’s on the last sale. Would have waited and evaluated both

                Comment


                  #9
                  I wish also I would done it sooner, I wanted to use my Google Home mini devices and didn't even know about Spud's plugin

                  Comment


                    #10
                    This may be too much scope for the plugin but one thing I was going to research was being able to compose an image based on data from HS3, other images (ie. camera, weather, etc) essentially making a dashboard that could be casted out. Eventually, it could be a video with some pizazz. With your background in software and user interface design this could be a worthwhile endeavor and I would definitely pay for that.

                    Comment


                      #11
                      I think it may be possible already - using Jon00 Homeseer 2 web page (Quick view) builder to generate the page and then cast it to Google chromecast.
                      I know some users (Pete? ?) already somehow create a webpage with camera views and cast them.

                      Comment


                        #12
                        Looking for themable animated movie like experience. Guess that’s a pipe dream

                        Comment


                          #13
                          Originally posted by kideon View Post
                          Looking for themable animated movie like experience. Guess that’s a pipe dream
                          Why not? Anything is possible. Probably need more details of your dream. And probably in a different thread.

                          Comment


                            #14
                            One of the big problems that I have with my Audiocast devices is they go to sleep. I've had to do crazy things with Spuds plugin just to be able to use TTS with my devices, but its not consistent.

                            Does your PI have any built in mechanisms to wake a speaker up?

                            Sent from my ASUS_Z00AD using Tapatalk

                            RJ_Make On YouTube

                            Comment


                              #15
                              Do you mean "Google Chromecast Audio" or actual Audiocast?

                              Comment

                              Working...
                              X