UNPKG

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
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;