Skip to content

Build a consumer dashboard

import { createVarcoConsumerClient, VarcoConnectionStrategy } from "@varco/client";
const client = createVarcoConsumerClient({
authorityId: "PASTE_AUTHORITY_ID_FROM_HOME_ASSISTANT",
bridgeUrl: "wss://varco-bridge.andreabaccega.com",
manifest,
connectionStrategy: VarcoConnectionStrategy.WebrtcFirst,
});

Call requestAccess() before the first connection:

const access = await client.requestAccess();
console.log(access.request_id);
console.log(access.pairing_code);
console.log(access.status);

After approval:

await client.connect();
const states = await client.getStates(["sensor.temperature"]);
console.log(states["sensor.temperature"]?.state);
const subscriptionId = await client.subscribeEntities(
["sensor.temperature"],
(event) => {
if (event.type === "state_snapshot") {
console.log("initial", event.states);
}
if (event.type === "state_delta") {
console.log("delta", event.states);
}
},
);
await client.unsubscribe(subscriptionId);
const end = new Date();
const start = new Date(end.getTime() - 24 * 60 * 60 * 1000);
const history = await client.queryHistory(["sensor.temperature"], {
start_time: start.toISOString(),
end_time: end.toISOString(),
});
const snapshot = await client.cameraSnapshot("camera.front_door");
const imageUrl = `data:${snapshot.contentType};base64,${snapshot.body}`;
await client.callService("light", "turn_on", {
entity_id: "light.kitchen",
brightness_pct: 50,
});

Every operation is checked by the Authority against the approved grant.