func (c *Client) SetDisplayName(ctx context.Context, name string) error {
	b, err := json.Marshal(Device{DisplayName: name})
	if err != nil {
		return err
	}
	return c.do(ctx, http.MethodPut, "/elgato/accessory-info", bytes.NewReader(b), nil)
}
SetDisplayName updates the display name for a Key Light device.
package keylight
import (
	"bytes"
	"context"
	"encoding/json"
	"fmt"
	"io"
	"math"
	"net/http"
	"net/url"
	"time"
)
const (
	brightnessMin = 3
	brightnessMax = 100
	tempMin       = 2900
	tempMax       = 7000
	tempConstant   = 9900
	tempCoefficent = 20.35
	tempHalfstep   = 25
	tempStep       = 50
)
type Client struct {
	c *http.Client
	u *url.URL
}
func NewClient(addr string, c *http.Client) (*Client, error) {
	if c == nil {
		c = &http.Client{Timeout: 2 * time.Second}
	}
	u, err := url.Parse(addr)
	if err != nil {
		return nil, err
	}
	return &Client{
		c: c,
		u: u,
	}, nil
}
type Device struct {
	ProductName         string `json:"productName,omitempty"`
	HardwareBoardType   int    `json:"hardwareBoardType,omitempty"`
	FirmwareBuildNumber int    `json:"firmwareBuildNumber,omitempty"`
	FirmwareVersion     string `json:"firmwareVersion,omitempty"`
	SerialNumber        string `json:"serialNumber,omitempty"`
	DisplayName         string `json:"displayName,omitempty"`
}
func (c *Client) AccessoryInfo(ctx context.Context) (*Device, error) {
	var d Device
	if err := c.do(ctx, http.MethodGet, "/elgato/accessory-info", nil, &d); err != nil {
		return nil, err
	}
	return &d, nil
}