homebridge-weatherflow-tempest
Version:
Exposes WeatherFlow Tempest Station data as Temperature Sensors, Light Sensors, Humidity Sensors and Fan Sensors (for Wind Speed).
233 lines • 7.97 kB
JSON
{
"pluginAlias": "WeatherFlowTempest",
"pluginType": "platform",
"singular": false,
"schema": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"type": "string",
"required": true,
"default": "WeatherFlow Tempest Platform"
},
"local_api": {
"title": "Use Local API",
"type": "boolean",
"required": true,
"default": true
},
"local_api_shared": {
"title": "Share the Local API UDP port with other processes",
"type": "boolean",
"required": false,
"default": false
},
"token": {
"title": "Token",
"type": "string",
"default": "<Your API Token>",
"condition": {
"functionBody": "if (model.local_api != undefined && !model.local_api) { return true; } else { return false; };"
}
},
"station_id": {
"title": "Station ID (Integer of 5 digits)",
"type": "number",
"default": 0
},
"interval": {
"title": "Interval (seconds)",
"type": "integer",
"default": 10,
"minimum": 1,
"condition": {
"functionBody": "if (model.local_api != undefined && !model.local_api) { return true; } else { return false; };"
}
},
"units": {
"title": "Units",
"type": "string",
"enum": [
"Standard",
"Metric"
],
"default": "Standard"
},
"sensors": {
"title": "Weather Sensors",
"description": "Enable WeatherFlow Tempest Sensors.",
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"title": "Name",
"type": "string",
"required": true
},
"sensor_type": {
"type": "string",
"enum": [
"Temperature Sensor",
"Light Sensor",
"Humidity Sensor",
"Fan",
"Motion Sensor",
"Occupancy Sensor",
"Contact Sensor"
],
"default": "Temperature Sensor"
},
"fan_properties": {
"title": "Fan Properties",
"type": "object",
"condition": {
"functionBody": "if (model.sensors[arrayIndices] && model.sensors[arrayIndices].sensor_type && model.sensors[arrayIndices].sensor_type === 'Fan') { return true; } else { return false; };"
},
"properties": {
"value_key": {
"type": "string",
"enum": [
"wind_avg"
]
}
}
},
"light_properties": {
"title": "Light Properties",
"type": "object",
"condition": {
"functionBody": "if (model.sensors[arrayIndices] && model.sensors[arrayIndices].sensor_type && model.sensors[arrayIndices].sensor_type === 'Light Sensor') { return true; } else { return false; };"
},
"properties": {
"value_key": {
"type": "string",
"enum": [
"brightness"
]
}
}
},
"humidity_properties": {
"title": "Humidity Properties",
"type": "object",
"condition": {
"functionBody": "if (model.sensors[arrayIndices] && model.sensors[arrayIndices].sensor_type && model.sensors[arrayIndices].sensor_type === 'Humidity Sensor') { return true; } else { return false; };"
},
"properties": {
"value_key": {
"type": "string",
"enum": [
"relative_humidity"
]
}
}
},
"temperature_properties": {
"title": "Temperature Properties",
"type": "object",
"condition": {
"functionBody": "if (model.sensors[arrayIndices] && model.sensors[arrayIndices].sensor_type && model.sensors[arrayIndices].sensor_type === 'Temperature Sensor') { return true; } else { return false; };"
},
"properties": {
"value_key": {
"type": "string",
"enum": [
"air_temperature",
"dew_point",
"feels_like",
"wind_chill"
]
}
}
},
"motion_properties": {
"title": "Motion Properties",
"type": "object",
"condition": {
"functionBody": "if (model.sensors[arrayIndices] && model.sensors[arrayIndices].sensor_type && model.sensors[arrayIndices].sensor_type === 'Motion Sensor') { return true; } else { return false; };"
},
"properties": {
"value_key": {
"type": "string",
"enum": [
"wind_gust"
]
},
"trigger_value": {
"type": "number",
"minimum": 1,
"description": "At what point (value) to trigger motion detected on/off (1 minimum)."
}
}
},
"occupancy_properties": {
"title": "Occupancy Properties",
"type": "object",
"condition": {
"functionBody": "if (model.sensors[arrayIndices] && model.sensors[arrayIndices].sensor_type && model.sensors[arrayIndices].sensor_type === 'Occupancy Sensor') { return true; } else { return false; };"
},
"properties": {
"value_key": {
"type": "string",
"enum": [
"barometric_pressure",
"precip",
"precip_accum_local_day",
"wind_direction",
"wind_gust",
"solar_radiation",
"uv"
],
"description": "Note: `precip_accum_local_day` not supported when using Local API."
},
"trigger_value": {
"type": "number",
"minimum": 0,
"description": "At what point (value) to trigger occupancy detected on/off (0 minimum)."
}
}
},
"contact_properties": {
"title": "Contact Properties",
"type": "object",
"condition": {
"functionBody": "if (model.sensors[arrayIndices] && model.sensors[arrayIndices].sensor_type && model.sensors[arrayIndices].sensor_type === 'Contact Sensor') { return true; } else { return false; };"
},
"description": "The Contact Sensor is utilized to trigger automations in response to lightning strikes.",
"properties": {
"trigger_distance": {
"type": "number",
"minimum": 0,
"default": 0,
"description": "The minimum distance (in kilometers) at which the strike was detected to activate the contact sensor."
}
}
}
}
},
"required": [
"name",
"sensor_type",
"value_key"
]
}
},
"required": [
"local_api"
],
"dependencies": {
"local_api": {
"not": {
"type": "boolean",
"const": true
},
"required": [
"token",
"station_id"
]
}
}
}
}