Overview
--------
The wrapper implements OS dependent services for libweave

Building
--------
  - prepare environment
        examples/prerequisites.sh
  - build daemon
        examples/build.sh
  - binaries for daemon are in the directory
        out/Debug/

Prepare Host OS
---------------
enable user-service-publishing in avahi daemon
    file:    /etc/avahi/avahi-daemon.conf
    check:   disable-user-service-publishing=no
    restart: sudo service avahi-daemon restart

Acquire Registration Ticket
---------------------------
Goto https://developers.google.com/oauthplayground/
  - "Step 1", paste to "Authorize APIs" with
          https://www.googleapis.com/auth/clouddevices
        click "Authorize APIs", then "Allow" to get an
        "authorization code"
  - "Step 2", "Exchange authorization code for tokens"
  - "Step 3", obtain a registration ticket for your new weave device
         HTTP Method:  POST
         Request URI:  https://www.googleapis.com/clouddevices/v1/registrationTickets
         Enter request body:
            {
              "userEmail": "me"
            }
         then "Send the request", a ticket id will be returned in
            {
              "userEmail": "user@google.com",
              "kind": "clouddevices#registrationTicket",
              "expirationTimeMs": "1443204934855",
              "deviceId": "0f8a5ff5-1ef0-ec39-f9d8-66d1caeb9e3d",
              "creationTimeMs": "1443204694855",
              "id": "93019287-6b26-04a0-22ee-d55ad23a4226"
            }
    Note: the ticket "id" is not used within 240 sec, it will be expired.

Register device to cloud
------------------------
  - copy the ticket "id" generated above
        93019287-6b26-04a0-22ee-d55ad23a4226
  - go to terminal, register and start the daemon with

        sudo out/Debug/weave_daemon_sample --registration_ticket=93019287-6b26-04a0-22ee-d55ad23a4226

        you should see something like:
          Publishing service
          Saving settings to /var/lib/weave/weave_settings.json

       note: in second and future runs, --registration_ticket
             options is not necessary anymore

  - get your device id with
          sudo cat /var/lib/weave/weave_settings.json
       you should see
            ...
            "device_id": 0f8a5ff5-1ef0-ec39-f9d8-66d1caeb9e3d
            ...

       this device_id shall be used for future communication
       with your device. it does not expire and no need to
       register.

  - verify device is up with Weave Device Manager at
        android: https://play.google.com/apps/testing/com.google.android.apps.weave.management
        chrome: https://chrome.google.com/webstore/detail/weave-device-manager/pcdgflbjckpjmlofgopidgdfonmnodfm
        [need your whitelisted EAP account]

Send Command to the Daemon
--------------------------
  - go to the oauthplayground used for registration ticket command
     in "Step 3", send base.identify with
        HTTP Method: POST
        Request URI: https://www.googleapis.com/clouddevices/v1/commands
        Enter request body:
        {
          "deviceId": "0f8a5ff5-1ef0-ec39-f9d8-66d1caeb9e3d",
          "name": "_sample._hello",
          "parameters": { "_name": "cloud user" }
        }
   "Send the request", you command will be "queued" as its "state"

  - verify the command execution with weave daemon
       in terminal running the daemon, observe something similar to
         New command '_sample._hello' arrived, ...
         received command: _sample._hello
         _sample._hello command: finished
  - verify the command history with oauthplayground
       Similar to "Acquire Registration Ticket" section in this document,
       except in "step 3", do:

       HTTP Method:  GET    [not POST anymore]
       Request URI:  https://www.googleapis.com/clouddevices/v1/commands?deviceId=0f8a5ff5-1ef0-ec39-f9d8-66d1caeb9e3d

       "Send the request", you get all of the commands executed on your
       device, find something like
          "kind": "clouddevices#command",
          "name": "_sample._hello",
          "results": {
            "_reply": "Hello cloud user"
          },
          ...

