Beispiel #1
0
function main()
{
    $config = $GLOBALS['config'];
    $vera = new Vera($config);
    $plex = new Plex($config);
    $state = 'stopped';
    $pauseTime = 0;
    while (1) {
        $nowPlaying = $plex->get('status/sessions');
        $isPlaying = false;
        if ($nowPlaying['size'] == 1) {
            $client = $nowPlaying->Video;
            //if ($client->Player['machineIdentifier'] == '') {
            //    exit("No [machineIdentifier] available. Exiting...");
            //}
            if ($client->Player['machineIdentifier'] == $config['plex']['machineIdentifier']) {
                if ($client->Player['state'] == 'playing') {
                    $pauseTime = 0;
                    $isPlaying = true;
                    if ($state != 'playing') {
                        $state = 'playing';
                        //$logger.info("Device: {$client->Player['title']}.  Video has started.  Dimming lights.");
                        print "Device: {$client->Player['title']}.  Video has started.  Dimming lights.\n";
                        $vera->transition($state);
                    }
                } else {
                    if ($client->Player['state'] == 'paused') {
                        if ($pauseTime == 0) {
                            $pauseTime = time();
                        }
                        if (time() - $pauseTime > 1) {
                            $isPlaying = true;
                            if ($state != 'paused') {
                                $state = 'paused';
                                //$logger.info("Device: {$client->Player['title']}.  Video is paused.  Restoring lights.");
                                print "Device: {$client->Player['title']}.  Video is paused.  Restoring lights.\n";
                                $vera->transition($state);
                            }
                        }
                    }
                }
            }
        } else {
            if ($nowPlaying['size'] >= 2) {
                foreach ($nowPlaying as $client) {
                    if ($client->Player['machineIdentifier'] == $config['plex']['machineIdentifier']) {
                        if ($client->Player['state'] == 'playing') {
                            $pauseTime = 0;
                            $isPlaying = true;
                            if ($state != 'playing') {
                                $state = 'playing';
                                //$logger.info("Device: {$client->Player['title']}.  Video has started.  Dimming lights.");
                                print "Device: {$client->Player['title']}.  Video has started.  Dimming lights.\n";
                                $vera->transition($state);
                            }
                        } else {
                            if ($client->Player['state'] == 'paused') {
                                if ($pauseTime == 0) {
                                    $pauseTime = time();
                                }
                                if (time() - $pauseTime > 1) {
                                    $isPlaying = true;
                                    if ($state != 'paused') {
                                        $state = 'paused';
                                        //$logger.info("Device: {$client->Player['title']}.  Video is paused.  Restoring lights.");
                                        print "Device: {$client->Player['title']}.  Video is paused.  Restoring lights.\n";
                                        $vera->transition($state);
                                    }
                                }
                            }
                        }
                    }
                }
            } else {
                if ($isPlaying == false && $state != 'stopped') {
                    $state = 'stopped';
                    $isPlaying = false;
                    //$logger.info("Device: {$client->Player['title']}.  Video is stopped.  Turning lights back on.")
                    print "Device: {$client->Player['title']}.  Video is stopped.  Turning lights back on.\n";
                    $vera->transition($state);
                }
            }
        }
        // sleep for 1.0 seconds
        usleep(1000000);
    }
}
Beispiel #2
0
 /**
  * Registers each found client with the bootstrap, so they can be found and
  * used by the instantiating software.
  *
  * @param Plex_Client[] $clients An associative array of Plex client machines on the
  * network.
  *
  * @uses Plex::$clients
  *
  * @return void
  */
 private function registerClients(array $clients)
 {
     self::$clients = $clients;
 }