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
40 lines (39 loc) • 2.17 kB
JavaScript
import React, { useEffect, useState } from "react";
const SetLimit = ({ deviceId, openOrClose, onClose }) => {
const [canSet, setCanSet] = useState(false);
useEffect(() => {
homebridge.request("/adjust_limit", {
device_id: deviceId,
openOrClose,
phase: "SET",
});
const onSetSuccess = () => {
setCanSet(true);
};
homebridge.addEventListener("limit-set-success", onSetSuccess);
return () => {
homebridge.request("/adjust_limit", {
device_id: deviceId,
openOrClose,
phase: "CANCEL",
});
homebridge.removeEventListener("limit-set-success", onSetSuccess);
};
}, []);
const saveAdjustment = () => homebridge.request("/adjust_limit", {
device_id: deviceId,
openOrClose,
phase: "SAVE",
});
const openMotor = () => homebridge.request("/move_motor", { device_id: deviceId, command: "OPEN" });
const stopMotor = () => homebridge.request("/move_motor", { device_id: deviceId, command: "STOP" });
const closeMotor = () => homebridge.request("/move_motor", { device_id: deviceId, command: "CLOSE" });
return (React.createElement("div", { className: "card-body" },
React.createElement("div", { className: "d-flex justify-content-around p-2" },
React.createElement("button", { type: "button", disabled: !canSet, className: "btn btn-primary", onMouseDown: openMotor, onMouseUp: stopMotor }, "Open"),
React.createElement("button", { type: "button", disabled: !canSet, className: "btn btn-danger", onMouseDown: stopMotor }, "Stop"),
React.createElement("button", { type: "button", disabled: !canSet, className: "btn btn-primary", onMouseDown: closeMotor, onMouseUp: stopMotor }, "Close")),
React.createElement("button", { type: "button", disabled: !canSet, className: "btn btn-primary w-100", onClick: saveAdjustment }, "Save"),
React.createElement("button", { type: "button", className: "btn btn-secondary w-100", onClick: onClose }, "Cancel")));
};
export default SetLimit;