"""
homeassistant.components.device_tracker.demo
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Demo platform for the device tracker.

device_tracker:
  platform: demo
"""
import random

from homeassistant.components.device_tracker import DOMAIN


def setup_scanner(hass, config, see):
    """ Set up a demo tracker. """

    def offset():
        """ Return random offset. """
        return (random.randrange(500, 2000)) / 2e5 * random.choice((-1, 1))

    def random_see(dev_id, name):
        """ Randomize a sighting. """
        see(
            dev_id=dev_id,
            host_name=name,
            gps=(hass.config.latitude + offset(),
                 hass.config.longitude + offset()),
            gps_accuracy=random.randrange(50, 150),
            battery=random.randrange(10, 90)
        )

    def observe(call=None):
        """ Observe three entities. """
        random_see('demo_paulus', 'Paulus')
        random_see('demo_anne_therese', 'Anne Therese')

    observe()

    see(
        dev_id='demo_home_boy',
        host_name='Home Boy',
        gps=[hass.config.latitude - 0.00002, hass.config.longitude + 0.00002],
        gps_accuracy=20,
        battery=53
    )

    hass.services.register(DOMAIN, 'demo', observe)

    return True
