UNPKG

iobroker.opendtu

Version:
561 lines (559 loc) 14.3 kB
const pad2 = require('./tools').pad2; const stateDefinition = { reachable: { id: 'available', name: 'Available', role: 'indicator.connected', write: false, read: true, type: 'boolean', def: false, }, name: { id: 'name', name: 'Name as configured (WebGUI)', role: 'info.name', write: false, read: true, type: 'string', def: '', }, serial: { id: 'serial', name: 'Serial number', role: 'info.serial', write: false, read: true, type: 'string', def: '', }, bootloaderversion: { id: 'bootloaderversion', name: 'Bootloader version', role: 'state', write: false, read: true, type: 'string', def: '', }, fwbuildversion: { id: 'fwbuildversion', name: 'Firmware version', role: 'state', write: false, read: true, type: 'string', def: '', }, fwbuilddatetime: { id: 'fwbuilddatetime', name: 'Build date / time', role: 'state', write: false, read: true, type: 'string', def: '', }, hwpartnumber: { id: 'hwpartnumber', name: 'Hardware part number', role: 'state', write: false, read: true, type: 'number', def: 0, getter: x => Number(x), }, hwversion: { id: 'hwversion', name: 'Hardware version', role: 'state', write: false, read: true, type: 'string', def: '', }, producing: { id: 'producing', name: 'Indicates whether is producing AC power', role: 'state', write: false, read: true, type: 'boolean', def: false, }, data_age: { id: 'last_update', name: 'Unix timestamp of last statistics udpate', role: 'state', write: false, read: true, type: 'string', def: '', getter: x => { const date = new Date(Number(new Date()) - x * 1000); date.setMinutes(date.getMinutes() - date.getTimezoneOffset()); return date.toISOString().replace('T', ' ').split('.')[0]; }, }, // PowerControl limit_relative: { id: 'power_control.current_limit_relative', name: 'Current applied production limit', role: 'state', write: false, read: true, type: 'number', unit: '%', def: 0, getter: x => Number(x), }, limit_absolute: { id: 'power_control.current_limit_absolute', name: 'Current applied production limit', role: 'state', write: false, read: true, type: 'number', unit: 'W', min: -1, def: -1, getter: x => Number(x), }, limit_persistent_relative: { id: 'power_control.limit_persistent_relative', name: 'Set limit as a percentage of total production capability', role: 'state', write: true, read: true, type: 'number', unit: '%', min: 0, max: 100, def: 0, getter: x => Number(x), }, limit_persistent_absolute: { id: 'power_control.limit_persistent_absolute', name: 'Set limit as a absolute value', role: 'state', write: true, read: true, type: 'number', unit: 'W', min: 0, def: 0, getter: x => Number(x), }, limit_nonpersistent_relative: { id: 'power_control.limit_nonpersistent_relative', name: 'Set limit as a percentage of total production capability', role: 'state', write: true, read: true, type: 'number', unit: '%', min: 0, max: 100, def: 0, getter: x => Number(x), }, limit_nonpersistent_absolute: { id: 'power_control.limit_nonpersistent_absolute', name: 'Set limit as a absolute value', role: 'state', write: true, read: true, type: 'number', unit: 'W', min: 0, def: 0, getter: x => Number(x), }, // 'power_switch': { // id: 'power_control.power_switch', // name: 'Turn the inverter on or off', // role: 'state', // write: true, // read: true, // type: 'boolean', // def: true, // getter: x => x == 1, // setter: x => x ? '1' : '0', // }, power_on: { id: 'power_control.power_on', name: 'Start', role: 'button', write: true, read: true, type: 'boolean', def: true, }, power_off: { id: 'power_control.power_off', name: 'Shutdown', role: 'button', write: true, read: true, type: 'boolean', def: true, }, restart: { id: 'power_control.restart', name: 'Restart (also resets YieldDay)', role: 'button', write: true, read: true, type: 'boolean', def: true, setter: x => (x ? '1' : '0'), }, // AC ac_temperature: { id: 'temperature', name: 'Device temperature', role: 'value.temperature', write: false, read: true, type: 'number', unit: '°C', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, ac_power: { id: 'ac.phase_%count%.power', name: 'AC active power', role: 'value.power', write: false, read: true, type: 'number', unit: 'W', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, ac_voltage: { id: 'ac.phase_%count%.voltage', name: 'AC voltage', role: 'value.voltage', write: false, read: true, type: 'number', unit: 'V', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, ac_current: { id: 'ac.phase_%count%.current', name: 'AC current', role: 'value.current', write: false, read: true, type: 'number', unit: 'A', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, 'ac_power dc': { id: 'ac.phase_%count%.power_dc', name: 'DC power', role: 'value.power', write: false, read: true, type: 'number', unit: 'W', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, // 'ac_yieldday': { // id: 'ac.phase_%count%.yieldday', // name: 'Energy converted to AC per day in watt hours', // role: 'value.power.production', // write: false, // read: true, // type: 'number', // unit: 'Wh', // def: 0, // getter: x => Number(x.v.toFixed(x.d)), // }, // 'ac_yieldtotal': { // id: 'ac.phase_%count%.yieldtotal', // name: 'Energy converted to AC since reset watt hours', // role: 'value.power.production', // write: false, // read: true, // type: 'number', // unit: 'kWh', // def: 0, // getter: x => Number(x.v.toFixed(x.d)), // }, // 'ac_efficiency': { // id: 'ac.phase_%count%.efficiency', // name: 'Ratio AC Power over DC Power in percent', // role: 'state', // write: false, // read: true, // type: 'number', // unit: '', // def: 0, // getter: x => Number(x.v.toFixed(x.d)), // }, ac_frequency: { id: 'ac.phase_%count%.frequency', name: 'AC frequency', role: 'state', write: false, read: true, type: 'number', unit: 'Hz', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, ac_powerfactor: { id: 'ac.phase_%count%.powerfactor', name: 'Power factor', role: 'state', write: false, read: true, type: 'number', unit: '', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, ac_reactivepower: { id: 'ac.phase_%count%.reactivepower', name: 'AC reactive power', role: 'value.power.reactive', write: false, read: true, type: 'number', unit: 'var', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, // DC dc_name: { id: 'dc.input_%count%.name', name: 'Name of the input (WebGUI)', role: 'info.name', write: false, read: true, type: 'string', def: '', getter: x => x.u, }, dc_power: { id: 'dc.input_%count%.power', name: 'DC power', role: 'value.power', write: false, read: true, type: 'number', unit: 'W', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, dc_voltage: { id: 'dc.input_%count%.voltage', name: 'DC voltage', role: 'value.voltage', write: false, read: true, type: 'number', unit: 'V', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, dc_current: { id: 'dc.input_%count%.current', name: 'DC current', role: 'value.current', write: false, read: true, type: 'number', unit: 'A', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, dc_yieldday: { id: 'dc.input_%count%.yieldday', name: 'Energy converted to AC per day', role: 'value.power.production', write: false, read: true, type: 'number', unit: 'Wh', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, dc_yieldtotal: { id: 'dc.input_%count%.yieldtotal', name: 'Energy converted to AC since commissioning', role: 'value.power.production', write: false, read: true, type: 'number', unit: 'kWh', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, dc_irradiation: { id: 'dc.input_%count%.irradiation', name: 'Ratio DC power over set maximum power (WebGUI)', role: 'state', write: false, read: true, type: 'number', unit: '%', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, // INV inv_temperature: { id: 'temperature', name: 'Device temperature', role: 'value.temperature', write: false, read: true, type: 'number', unit: '°C', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, inv_yieldday: { id: 'yieldday', name: 'Energy converted to AC per day', role: 'value.power.production', write: false, read: true, type: 'number', unit: 'Wh', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, inv_yieldtotal: { id: 'yieldtotal', name: 'Energy converted to AC since commissioning', role: 'value.power.production', write: false, read: true, type: 'number', unit: 'kWh', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, inv_efficiency: { id: 'efficiency', name: 'Ratio AC power over DC power', role: 'state', write: false, read: true, type: 'number', unit: '%', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, 'inv_power dc': { id: 'power_dc', name: 'DC power', role: 'value.power', write: false, read: true, type: 'number', unit: 'W', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, // Total total_power: { id: 'power', name: 'Total power over all inverters', role: 'value.power', write: false, read: true, type: 'number', unit: 'W', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, total_yieldday: { id: 'yieldday', name: 'Total energy converted to AC per day', role: 'value.power.production', write: false, read: true, type: 'number', unit: 'Wh', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, total_yieldtotal: { id: 'yieldtotal', name: 'Total energy converted to AC since commissioning', role: 'value.power.production', write: false, read: true, type: 'number', unit: 'kWh', def: 0, getter: x => Number(x.v.toFixed(x.d)), }, // DTU dtu_reachable: { id: 'available', name: 'Available', role: 'indicator.reachable', write: false, read: true, type: 'boolean', def: false, }, dtu_hostname: { id: 'hostname', name: 'Current hostname of the DTU (WebGUI)', role: 'info.name ', write: false, read: true, type: 'string', def: '', }, dtu_uptime: { id: 'uptime', name: 'Time since startup', role: 'state', write: false, read: true, type: 'string', def: '0', getter: x => { const seconds = pad2(Math.trunc(x % 60)); const miutes = pad2(Math.trunc((x / 60) % 60)); const houres = pad2(Math.trunc((x / 60 / 60) % 24)); const days = Math.trunc(x / 60 / 60 / 24); return `${days} Days ${houres}:${miutes}:${seconds}`; }, }, dtu_sta_rssi: { id: 'rssi', name: 'WiFi network quality', role: 'state', write: false, read: true, unit: 'db', type: 'number', def: 0, getter: x => Number(x), }, dtu_network_ip: { id: 'ip', name: 'IP address of OpenDTU', role: 'info.ip', write: false, read: true, type: 'string', def: '0.0.0.0', }, }; module.exports = { stateDefinition: stateDefinition, };