homebridge-am43-blinds-bluez
Version:
A homebridge plugin to control AM43 based shade motors in HomeKit. These include the A OK and Zemismart bluetooth based motors. This plugin requires a Homebridge host that supports Bluetooth 4.0
30 lines (29 loc) • 1.49 kB
JavaScript
import React, { useState, useEffect } from "react";
import DeviceList from "./deviceList";
import { MotorInfo } from "./motorInfo";
import BreadCrumbs from "./breadCrumbs";
import { WaitForDevice } from "./waitForDevice";
const App = () => {
const [inBlindEngineMode, setInBlindEngineMode] = useState(false);
useEffect(() => {
if (inBlindEngineMode) {
homebridge.hideSchemaForm();
}
else {
homebridge.showSchemaForm();
}
}, [inBlindEngineMode]);
const [selectedDeviceId, setSelectedDeviceId] = useState(null);
const onExit = () => {
setSelectedDeviceId(null);
setInBlindEngineMode(false);
};
if (inBlindEngineMode) {
return (React.createElement("div", { className: "card" },
React.createElement(BreadCrumbs, { selectedDeviceId: selectedDeviceId, onExitBlindsEngineMode: onExit, onReturnToDeviceList: () => setSelectedDeviceId(null) }),
selectedDeviceId !== null ? (React.createElement(WaitForDevice, { deviceId: selectedDeviceId }, (device) => React.createElement(MotorInfo, { device: device }))) : (React.createElement(DeviceList, { onSelect: (id) => setSelectedDeviceId(id) }))));
}
return (React.createElement("div", { className: "d-flex justify-content-center" },
React.createElement("button", { type: "button", className: "btn btn-primary w-75", onClick: () => setInBlindEngineMode(true) }, "Blind Engine")));
};
export default App;