thibauts / node-castv2-client

A Chromecast client based on the new (CASTV2) protocol
MIT License
648 stars 95 forks source link

How to use the getVolume function #92

Open simonravel opened 5 years ago

simonravel commented 5 years ago

I tried to use this function:

const GoogleCastClient = require("castv2-client").Client;
const DefaultMediaReceiver = require("castv2-client").DefaultMediaReceiver;
const client = new GoogleCastClient();
var 'some_ip' = '192.168.0.x' //just an example

client.connect(,() => {
    client.launch(DefaultMediaReceiver, (err, player) => {
            const media = {
              contentId: url,
              contentType: "audio/mp3",
              streamType: "BUFFERED"
            };

          player.load(media, { autoplay: true }, (err, status) => {
              client.close();
              console.log(`Pushed to device at ${some_ip}`);
            });
      });

   client.getVolume('volume', function(vol){
          console.log(vol)
   })

   client.on("error", err => {
        reject(`Google Cast Client error:\n${err}`);
        client.close();
      });

});

Which results in: UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'getVolume' of null

daaru00 commented 4 years ago

Hi @simonravel,

I think the error is here:

client.getVolume('volume', function(vol){ 

you don't have to pass any parameters (except callback function), the correct method's call is:

this.client.getVolume(function (err, vol) { ... })

also pay attention to first callback parameters, is an error object (null if no error is released) not the current volume infos.

Here an example:

this.client.getVolume(function (err, vol) {
    if (err) {
        console.error(err) // handle error
        return
    }
    console.log(vol) // {"controlType":"attenuation","level":0.7999999523162842,"muted":false,"stepInterval":0.05000000074505806}
})