import type { HassEntity } from "home-assistant-js-websocket"; import type { HomeAssistant } from "../types"; export interface InputDateTime { id: string; name: string; icon?: string; initial?: string; has_time: boolean; has_date: boolean; } export interface InputDateTimeMutableParams { name: string; icon: string; initial: string; has_time: boolean; has_date: boolean; } export const stateToIsoDateString = (entityState: HassEntity) => `${entityState.attributes.year || "1970"}-${String( entityState.attributes.month || "01" ).padStart(2, "0")}-${String(entityState.attributes.day || "01").padStart( 2, "0" )}T${String(entityState.attributes.hour || "00").padStart(2, "0")}:${String( entityState.attributes.minute || "00" ).padStart(2, "0")}:${String(entityState.attributes.second || "00").padStart( 2, "0" )}`; export const setInputDateTimeValue = ( hass: HomeAssistant, entityId: string, time: string | undefined = undefined, date: string | undefined = undefined ) => { const param = { entity_id: entityId, time, date }; hass.callService("input_datetime", "set_datetime", param); }; export const fetchInputDateTime = (hass: HomeAssistant) => hass.callWS({ type: "input_datetime/list" }); export const createInputDateTime = ( hass: HomeAssistant, values: InputDateTimeMutableParams ) => hass.callWS({ type: "input_datetime/create", ...values, }); export const updateInputDateTime = ( hass: HomeAssistant, id: string, updates: Partial ) => hass.callWS({ type: "input_datetime/update", input_datetime_id: id, ...updates, }); export const deleteInputDateTime = (hass: HomeAssistant, id: string) => hass.callWS({ type: "input_datetime/delete", input_datetime_id: id, });