UNPKG

iobroker.weatherflow_udp

Version:
688 lines (670 loc) 20.2 kB
/* WeatherFlow Smart Weather UDP Reference - v171 https://https://weatherflow.github.io/Tempest/api/udp/v171/ */ const { ENETDOWN } = require('constants'); const messages = []; messages.evt_precip = { name: 'Rain Start Event', evt: { 0: ['timestamp', { type: 'state', common: { type: 'number', read: true, write: false, role: 'value.time', name: 'Time of event', }, native: {}, }], }, }; messages.evt_strike = { name: 'Lightning Strike Event', evt: { 0: ['timestamp', { type: 'state', common: { type: 'number', read: true, write: false, role: 'value.time', name: 'Time of event', }, native: {}, }], 1: ['distance', { type: 'state', common: { type: 'number', unit: 'km', read: true, write: false, role: 'value.distance', name: 'Strike distance', }, native: {}, }], 2: ['energy', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value.energy', name: 'Strike energy', }, native: {}, }], }, }; messages.rapid_wind = { name: 'Rapid Wind', ob: { 0: ['timestamp', { type: 'state', common: { type: 'number', read: true, write: false, role: 'value.time', name: 'Time of event', }, native: {}, }], 1: ['windSpeed', { type: 'state', common: { type: 'number', unit: 'm/s', read: true, write: false, role: 'value.speed.wind', name: 'Wind speed', }, native: {}, }], 2: ['windDirection', { type: 'state', common: { type: 'number', unit: '°', read: true, write: false, role: 'value.direction.wind', name: 'Wind direction', }, native: {}, }], }, }; messages.obs_air = { name: 'Observation (AIR)', obs: { 0: ['timestamp', { type: 'state', common: { type: 'number', read: true, write: false, role: 'value.time', name: 'Time of event', }, native: {}, }], 1: ['stationPressure', { type: 'state', common: { type: 'number', unit: 'hPa', read: true, write: false, role: 'value.pressure', name: 'Station pressure (raw)', }, native: {}, }], 2: ['airTemperature', { type: 'state', common: { type: 'number', unit: '°C', read: true, write: false, role: 'value.temperature', name: 'Air Temperature', }, native: {}, }], 3: ['relativeHumidity', { type: 'state', common: { type: 'number', unit: '%', read: true, write: false, role: 'value.humidity', name: 'Relative Humidity', }, native: {}, }], 4: ['lightningStrikeCount', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'Lightning Strike Count', }, native: {}, }], 5: ['lightningStrikeAvgDistance', { type: 'state', common: { type: 'number', unit: 'km', read: true, write: false, role: 'value.distance', name: 'Lightning Strike Avg Distance', }, native: {}, }], 6: ['battery', { type: 'state', common: { type: 'number', unit: 'V', read: true, write: false, role: 'value.battery', name: 'Battery', }, native: {}, }], 7: ['reportInterval', { type: 'state', common: { type: 'number', unit: 'min', read: true, write: false, role: 'value.interval', name: 'Report Interval', }, native: {}, }], }, firmware_revision: { 0: ['firmware_revision', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'Firmware revision', }, native: {}, }], }, }; messages.obs_sky = { name: 'Observation (Sky)', obs: { 0: ['timestamp', { type: 'state', common: { type: 'number', read: true, write: false, role: 'value.time', name: 'Time of event', }, native: {}, }], 1: ['illuminance', { type: 'state', common: { type: 'number', unit: 'Lux', read: true, write: false, role: 'value.illuminance', name: 'Illuminance', }, native: {}, }], 2: ['UV', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value.uv', name: 'UV Index', }, native: {}, }], 3: ['rainAccumulated', { type: 'state', common: { type: 'number', unit: 'mm', read: true, write: false, role: 'value.precipitation.interval', name: 'Rain Accumulated', }, native: {}, }], 4: ['windLull', { type: 'state', common: { type: 'number', unit: 'm/s', read: true, write: false, role: 'value.speed.wind.lull', name: 'Wind Lull (minimum 3 second sample)', }, native: {}, }], 5: ['windAvg', { type: 'state', common: { type: 'number', unit: 'm/s', read: true, write: false, role: 'value.speed.wind', name: 'Wind Avg (average over report interval)', }, native: {}, }], 6: ['windGust', { type: 'state', common: { type: 'number', unit: 'm/s', read: true, write: false, role: 'value.speed.wind.gust', name: 'Wind Gust (maximum 3 second sample)', }, native: {}, }], 7: ['windDirection', { type: 'state', common: { type: 'number', unit: '°', read: true, write: false, role: 'value.direction.wind', name: 'Wind Direction', }, native: {}, }], 8: ['battery', { type: 'state', common: { type: 'number', unit: 'V', read: true, write: false, role: 'value.battery', name: 'Battery', }, native: {}, }], 9: ['reportInterval', { type: 'state', common: { type: 'number', unit: 'min', read: true, write: false, role: 'value.interval', name: 'Report Interval', }, native: {}, }], 10: ['solarRadiation', { type: 'state', common: { type: 'number', unit: 'W/m^2', read: true, write: false, role: 'value.radiation', name: 'Solar Radiation', }, native: {}, }], 11: ['localDayRainAccumulation', { type: 'state', common: { type: 'number', unit: 'mm', read: true, write: false, role: 'value.precipitation.day', name: 'Local Day Rain Accumulation', }, native: {}, }], 12: ['precipitationType', { type: 'state', common: { type: 'mixed', states: { 0: 'None', 1: 'Rain', 2: 'Hail', 3: 'Rain/Hail', }, unit: '', read: true, write: false, role: 'value.precipitation.type', name: 'Precipitation Type', }, native: {}, }], 13: ['windSampleInterval', { type: 'state', common: { type: 'number', unit: ' s', read: true, write: false, role: 'value.interval', name: 'Wind Sample Interval', }, native: {}, }], }, firmware_revision: { 0: ['firmware_revision', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'state', name: 'Firmware revision', }, native: {}, }], }, }; messages.obs_st = { name: 'Observation (Tempest)', obs: { 0: ['timestamp', { type: 'state', common: { type: 'number', read: true, write: false, role: 'value.time', name: 'Time of event', }, native: {}, }], 1: ['windLull', { type: 'state', common: { type: 'number', unit: 'm/s', read: true, write: false, role: 'value.speed.wind.lull', name: 'Wind Lull (minimum 3 second sample)', }, native: {}, }], 2: ['windAvg', { type: 'state', common: { type: 'number', unit: 'm/s', read: true, write: false, role: 'value.speed.wind', name: 'Wind Avg (average over report interval)', }, native: {}, }], 3: ['windGust', { type: 'state', common: { type: 'number', unit: 'm/s', read: true, write: false, role: 'value.speed.wind.gust', name: 'Wind Gust (maximum 3 second sample)', }, native: {}, }], 4: ['windDirection', { type: 'state', common: { type: 'number', unit: '°', read: true, write: false, role: 'value.direction.wind', name: 'Wind Direction', }, native: {}, }], 5: ['windSampleInterval', { type: 'state', common: { type: 'number', unit: 's', read: true, write: false, role: 'value.interval', name: 'Wind Sample Interval', }, native: {}, }], 6: ['stationPressure', { type: 'state', common: { type: 'number', unit: 'hPa', read: true, write: false, role: 'value.pressure', name: 'Station pressure (raw)', }, native: {}, }], 7: ['airTemperature', { type: 'state', common: { type: 'number', unit: '°C', read: true, write: false, role: 'value.temperature', name: 'Air Temperature', }, native: {}, }], 8: ['relativeHumidity', { type: 'state', common: { type: 'number', unit: '%', read: true, write: false, role: 'value.humidity', name: 'Relative Humidity', }, native: {}, }], 9: ['illuminance', { type: 'state', common: { type: 'number', unit: 'Lux', read: true, write: false, role: 'value.illuminance', name: 'Illuminance', }, native: {}, }], 10: ['UV', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value.uv', name: 'UV Index', }, native: {}, }], 11: ['solarRadiation', { type: 'state', common: { type: 'number', unit: 'W/m^2', read: true, write: false, role: 'value.radiation', name: 'Solar Radiation', }, native: {}, }], 12: ['precipAccumulated', { type: 'state', common: { type: 'number', unit: 'mm', read: true, write: false, role: 'value.precipitation.interval', name: 'Precipitation Accumulated', }, native: {}, }], 13: ['precipitationType', { type: 'state', common: { type: 'mixed', states: { 0: 'None', 1: 'Rain', 2: 'Hail', 3: 'Rain/Hail', }, unit: '', read: true, write: false, role: 'value.precipitation.type', name: 'Precipitation Type', }, native: {}, }], 14: ['lightningStrikeAvgDistance', { type: 'state', common: { type: 'number', unit: 'km', read: true, write: false, role: 'value.distance', name: 'Lightning Strike Average Distance', }, native: {}, }], 15: ['lightningStrikeCount', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'Lightning Strike Count', }, native: {}, }], 16: ['battery', { type: 'state', common: { type: 'number', unit: 'V', read: true, write: false, role: 'value.battery', name: 'Battery', }, native: {}, }], 17: ['reportInterval', { type: 'state', common: { type: 'number', unit: 'min', read: true, write: false, role: 'value.interval', name: 'Report Interval', }, native: {}, }], }, firmware_revision: { 0: ['firmware_revision', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'state', name: 'Firmware revision', }, native: {}, }], }, }; messages.device_status = { name: 'Status (device)', timestamp: { 0: ['timestamp', { type: 'state', common: { type: 'number', read: true, write: false, role: 'value.time', name: 'Time of event', }, native: {}, }], }, uptime: { 0: ['uptime', { type: 'state', common: { type: 'number', unit: 's', read: true, write: false, role: 'value', name: 'Uptime', }, native: {}, }], }, voltage: { 0: ['voltage', { type: 'state', common: { type: 'number', unit: ' V', read: true, write: false, role: 'value.battery', name: 'Voltage', }, native: {}, }], }, firmware_revision: { 0: ['firmware_revision', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'Firmware revision', }, native: {}, }], }, rssi: { 0: ['rssi', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'RSSI value', }, native: {}, }], }, hub_rssi: { 0: ['hub_rssi', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'Hub RSSI value', }, native: {}, }], }, sensor_status: { // 0x00000000 All Sensors OK, 0x00000001 lightning failed, 0x00000002 lightning noise, 0x00000004 lightning disturber, 0x00000008 pressure failed, 0x00000010 temperature failed, 0x00000020 rh failed, 0x00000040 wind failed, 0x00000080 precip failed, 0x00000100 light/uv failed, 0x00008000 power booster depleted, 0x00010000 power booster shore power 0: ['sensor_status', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value.status', name: 'Sensor status', }, native: {}, }], }, debug: { 0: ['debug', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'indicator.debug', name: 'Debug', }, native: {}, }], }, }; messages.hub_status = { name: 'Status (hub)', firmware_revision: { 0: ['firmware_revision', { type: 'state', common: { type: 'string', unit: '', read: true, write: false, role: 'value', name: 'Firmware revision', }, native: {}, }], }, uptime: { 0: ['uptime', { type: 'state', common: { type: 'number', unit: 's', read: true, write: false, role: 'value', name: 'Uptime', }, native: {}, }], }, rssi: { 0: ['rssi', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'RSSI value', }, native: {}, }], }, timestamp: { 0: ['timestamp', { type: 'state', common: { type: 'number', read: true, write: false, role: 'value.time', name: 'Time of event', }, native: {}, }], }, reset_flags: { 0: ['reset_flags', { type: 'state', common: { type: 'string', read: true, write: false, role: 'text', name: 'Reset flags', }, native: {} /* BOR Brownout reset, PIN PIN reset, POR Power reset, SFT Software reset, WDG Watchdog reset, WWD Window watchdog reset, LPW Low-power reset */ }], }, seq: { 0: ['seq', { type: 'state', common: { type: 'number', read: true, write: false, role: 'value', name: 'Seq', }, native: {}, }], }, fs: { 0: ['fs.internal_1', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'internal 1', }, native: {}, }], 1: ['fs.internal_2', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'internal 2', }, native: {}, }], 2: ['fs.internal_3', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'internal 3', }, native: {}, }], 3: ['fs.internal_4', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'internal 4', }, native: {}, }], }, radio_stats: { 0: ['radio_stats.version', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'Version', }, native: {}, }], 1: ['radio_stats.rebootCount', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'Reboot Count', }, native: {}, }], 2: ['radio_stats.I2CBusErrorCount', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'I2C Bus Error Count', }, native: {}, }], 3: ['radio_stats.radioStatus', { type: 'state', common: { type: 'mixed', states: { 0: 'Radio Off', 1: 'Radio On', 3: 'Radio Active', 7: 'BLE Connected', }, read: true, write: false, role: 'value.status', name: 'Radio Status', }, native: {}, }], 4: ['radio_stats.radioNetworkID', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'state', name: 'Radio Network ID', }, native: {}, }], }, mqtt_stats: { 0: ['mqtt_stats.internal_1', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'internal 1', }, native: {}, }], 1: ['mqtt_stats.internal_2', { type: 'state', common: { type: 'number', unit: '', read: true, write: false, role: 'value', name: 'internal 2', }, native: {}, }], }, }; // Device type by first two characters of serial number const devices = { HB: 'Hub', AR: 'Air', SK: 'Sky', ST: 'Tempest', }; const sensorfails = { 0b000000001: 'Lightning failed', 0b000000010: 'Lightning noise', 0b000000100: 'Lightning disturber', 0b000001000: 'Pressure failed', 0b000010000: 'Temperature failed', 0b000100000: 'Humidity failed', 0b001000000: 'Wind failed', 0b010000000: 'Precipitation failed', 0b100000000: 'Light/uv failed', }; const powermodes = { 0b0000100000000000: 1, 0b0001000000000000: 2, 0b0010000000000000: 3, }; // Wind directions in letters const windDirections = ['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW', 'N']; const minCalcs = ['airTemperature', 'stationPressure', 'relativeHumidity', 'lightningStrikeAvgDistance', 'distance']; const maxCalcs = ['airTemperature', 'windLull', 'windGust', 'windAvg', 'windSpeed', 'illuminance', 'UV', 'solarRadiation', 'stationPressure', 'relativeHumidity', 'lightningStrikeCount', 'energy']; module.exports = { messages, devices, windDirections, minCalcs, maxCalcs, sensorfails, powermodes, };