iobroker.solarviewdatareader 1.2.2 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -60,6 +60,11 @@ UL3, IL3 = mains voltage, mains power phase 3
60
60
  TKK= Temperature inverter
61
61
 
62
62
  ## Changelog
63
+ ### 1.2.3 (2025-09-19)
64
+ * (afuerhoff) dependencies updated
65
+ * (afuerhoff) repository checker issues fixed
66
+ * (afuerhoff) typescript error fixed
67
+
63
68
  ### 1.2.2 (2025-05-30)
64
69
  * (afuerhoff) dependencies updated
65
70
  * (afuerhoff) testing updated [#217](https://github.com/afuerhoff/ioBroker.solarviewdatareader/issues/217)
@@ -80,10 +85,6 @@ TKK= Temperature inverter
80
85
  * (afuerhoff) dependencies updated
81
86
  * (afuerhoff) Fixes [#182](https://github.com/afuerhoff/ioBroker.solarviewdatareader/issues/182)
82
87
 
83
- ### 1.1.3 (2024-09-17)
84
- * (afuerhoff) adapter checker changes [#176](https://github.com/afuerhoff/ioBroker.solarviewdatareader/issues/176)
85
- * (afuerhoff) dependencies updated
86
-
87
88
  ## License
88
89
  MIT License
89
90
 
package/build/main.js CHANGED
@@ -531,7 +531,7 @@ class Solarviewdatareader extends utils.Adapter {
531
531
  async handleCCUUpdate(sv_data) {
532
532
  try {
533
533
  if (this.config.setCCU) {
534
- const obj = await this.findForeignObjectAsync(this.config.CCUSystemV, "state");
534
+ const obj = await this.findForeignObjectAsync(this.config.CCUSystemV, null);
535
535
  if (obj && obj.name) {
536
536
  this.log.debug(`set CCU system variable: ${this.config.CCUSystemV}`);
537
537
  this.setForeignState(this.config.CCUSystemV, { val: Number(sv_data[10]), ack: false });
package/build/main.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/main.ts"],
4
- "sourcesContent": ["'use strict';\n/*\n * Created with @iobroker/create-adapter v1.14.0\n */\n\n// The adapter-core module gives you access to the core ioBroker functions\nimport * as utils from '@iobroker/adapter-core';\n\n// Load your modules here, e.g.:\nimport * as net from 'net';\n\ninterface IChecksumResult {\n result: boolean;\n chksum: number;\n ind: number;\n data: Buffer;\n}\n\nclass Solarviewdatareader extends utils.Adapter {\n private tout!: NodeJS.Timeout;\n private jobSchedule!: NodeJS.Timeout;\n private chkCnt: number;\n private conn!: net.Socket;\n private lastCommand: string;\n private commandQueue: string[];\n private isProcessingQueue: boolean;\n private isProcessingCmd: boolean;\n private isError: boolean;\n\n public constructor(options: Partial<utils.AdapterOptions> = {}) {\n super({\n ...options,\n name: 'solarviewdatareader',\n });\n this.on('ready', this.onReady.bind(this));\n this.on('unload', this.onUnload.bind(this));\n this.lastCommand = '';\n this.commandQueue = [];\n this.isProcessingQueue = false;\n this.isProcessingCmd = false;\n this.chkCnt = 0;\n this.isError = false;\n }\n\n private async createObject(id: string, obj: ioBroker.SettableObject): Promise<void> {\n await this.setObjectNotExistsAsync(id, obj);\n await this.extendObject(id, obj);\n\n const currentState = await this.getStateAsync(id);\n const stCommon: ioBroker.StateCommon = obj.common as ioBroker.StateCommon; // Type Assertion\n if (currentState === null && stCommon.def !== undefined) {\n await this.setState(id, stCommon.def, true); // set default\n }\n }\n\n private async createGlobalObjects(): Promise<void> {\n const options: [string, ioBroker.SettableObject][] = [\n [\n 'info.connection',\n {\n type: 'state',\n common: {\n name: 'connection',\n type: 'boolean',\n role: 'indicator.connected',\n def: false,\n read: true,\n write: false,\n desc: 'Solarview connection state',\n unit: '',\n },\n native: {},\n },\n ],\n [\n 'info.lastUpdate',\n {\n type: 'state',\n common: {\n name: 'lastUpdate',\n type: 'string',\n role: 'date',\n def: new Date('1900-01-01T00:00:00').toString(),\n read: true,\n write: false,\n desc: 'Last connection date/time',\n unit: '',\n },\n native: {},\n },\n ],\n ];\n\n for (const option of options) {\n await this.createObject(...option);\n }\n }\n\n private async createSolarviewObjects(device: string, additional: boolean = false): Promise<void> {\n let options: [string, ioBroker.SettableObject][] = [\n [device, { type: 'channel', common: { name: device }, native: {} }],\n [\n `${device}.current`,\n {\n type: 'state',\n common: {\n name: 'current',\n type: 'number',\n role: 'value.power',\n def: 0,\n read: true,\n write: false,\n desc: 'Current PAC',\n unit: 'W',\n },\n native: {},\n },\n ],\n [\n `${device}.daily`,\n {\n type: 'state',\n common: {\n name: 'daily',\n type: 'number',\n role: 'value.energy',\n def: 0,\n read: true,\n write: false,\n desc: 'Daily yield',\n unit: 'kWh',\n },\n native: {},\n },\n ],\n [\n `${device}.monthly`,\n {\n type: 'state',\n common: {\n name: 'monthly',\n type: 'number',\n role: 'value.energy',\n def: 0,\n read: true,\n write: false,\n desc: 'Monthly yield',\n unit: 'kWh',\n },\n native: {},\n },\n ],\n [\n `${device}.yearly`,\n {\n type: 'state',\n common: {\n name: 'yearly',\n type: 'number',\n role: 'value.energy',\n def: 0,\n read: true,\n write: false,\n desc: 'Yearly yield',\n unit: 'kWh',\n },\n native: {},\n },\n ],\n [\n `${device}.total`,\n {\n type: 'state',\n common: {\n name: 'total',\n type: 'number',\n role: 'value.energy',\n def: 0,\n read: true,\n write: false,\n desc: 'Total yield',\n unit: 'kWh',\n },\n native: {},\n },\n ],\n ];\n\n if (additional) {\n const additionalOptions: [string, ioBroker.SettableObject][] = [\n [\n `${device}.udc`,\n {\n type: 'state',\n common: {\n name: 'udc',\n type: 'number',\n role: 'value.voltage',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator voltage',\n unit: 'V',\n },\n native: {},\n },\n ],\n [\n `${device}.idc`,\n {\n type: 'state',\n common: {\n name: 'idc',\n type: 'number',\n role: 'value.current',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator current',\n unit: 'A',\n },\n native: {},\n },\n ],\n [\n `${device}.udcb`,\n {\n type: 'state',\n common: {\n name: 'udcb',\n type: 'number',\n role: 'value.voltage',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator voltage',\n unit: 'V',\n },\n native: {},\n },\n ],\n [\n `${device}.idcb`,\n {\n type: 'state',\n common: {\n name: 'idcb',\n type: 'number',\n role: 'value.current',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator current',\n unit: 'A',\n },\n native: {},\n },\n ],\n [\n `${device}.udcc`,\n {\n type: 'state',\n common: {\n name: 'udcc',\n type: 'number',\n role: 'value.voltage',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator voltage',\n unit: 'V',\n },\n native: {},\n },\n ],\n [\n `${device}.idcc`,\n {\n type: 'state',\n common: {\n name: 'idcc',\n type: 'number',\n role: 'value.current',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator current',\n unit: 'A',\n },\n native: {},\n },\n ],\n [\n `${device}.udcd`,\n {\n type: 'state',\n common: {\n name: 'udcd',\n type: 'number',\n role: 'value.voltage',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator voltage',\n unit: 'V',\n },\n native: {},\n },\n ],\n [\n `${device}.idcd`,\n {\n type: 'state',\n common: {\n name: 'idcd',\n type: 'number',\n role: 'value.current',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator current',\n unit: 'A',\n },\n native: {},\n },\n ],\n [\n `${device}.ul1`,\n {\n type: 'state',\n common: {\n name: 'ul1',\n type: 'number',\n role: 'value.voltage',\n def: 0,\n read: true,\n write: false,\n desc: 'Mains voltage',\n unit: 'V',\n },\n native: {},\n },\n ],\n [\n `${device}.il1`,\n {\n type: 'state',\n common: {\n name: 'il1',\n type: 'number',\n role: 'value.current',\n def: 0,\n read: true,\n write: false,\n desc: 'Mains current',\n unit: 'A',\n },\n native: {},\n },\n ],\n [\n `${device}.ul2`,\n {\n type: 'state',\n common: {\n name: 'ul2',\n type: 'number',\n role: 'value.voltage',\n def: 0,\n read: true,\n write: false,\n desc: 'Mains voltage',\n unit: 'V',\n },\n native: {},\n },\n ],\n [\n `${device}.il2`,\n {\n type: 'state',\n common: {\n name: 'il2',\n type: 'number',\n role: 'value.current',\n def: 0,\n read: true,\n write: false,\n desc: 'Mains current',\n unit: 'A',\n },\n native: {},\n },\n ],\n [\n `${device}.ul3`,\n {\n type: 'state',\n common: {\n name: 'ul3',\n type: 'number',\n role: 'value.voltage',\n def: 0,\n read: true,\n write: false,\n desc: 'Mains voltage',\n unit: 'V',\n },\n native: {},\n },\n ],\n [\n `${device}.il3`,\n {\n type: 'state',\n common: {\n name: 'il3',\n type: 'number',\n role: 'value.current',\n def: 0,\n read: true,\n write: false,\n desc: 'Mains current',\n unit: 'A',\n },\n native: {},\n },\n ],\n [\n `${device}.tkk`,\n {\n type: 'state',\n common: {\n name: 'tkk',\n type: 'number',\n role: 'value.temperature',\n def: 0,\n read: true,\n write: false,\n desc: 'Temperature',\n unit: '\u00B0C',\n },\n native: {},\n },\n ],\n ];\n options = options.concat(additionalOptions);\n }\n\n for (const option of options) {\n await this.createObject(...option);\n }\n }\n\n //for compatibility reasons. Minute interval changed to seconds.\n private async adjustIntervalToSeconds(): Promise<void> {\n const adapterObj: ioBroker.Object | null | undefined = await this.getForeignObjectAsync(\n `system.adapter.${this.namespace}`,\n );\n if (!this.config.interval_seconds) {\n if (adapterObj) {\n adapterObj.native.interval_seconds = true;\n adapterObj.native.intervalVal *= 60;\n this.log.warn('Interval changed to seconds!');\n this.log.info('Interval attribute changed! Please check the configuration');\n this.log.info('Adapter restarts');\n }\n }\n }\n\n // Nullen voranstellen - add Leading Zero\n private aLZ(n: number): string {\n return n <= 9 ? `0${n}` : n.toString();\n }\n\n private calcChecksum(inputString: string): IChecksumResult {\n const buffer = Buffer.from(inputString);\n let sum = 0;\n let index = 0;\n\n for (let i = 0; i < buffer.length; i++) {\n sum = (sum + buffer[i]) % 128;\n if (buffer[i] === 125) {\n index = i + 2;\n break;\n }\n }\n\n const result: IChecksumResult = {\n result: buffer[index] === sum,\n chksum: sum,\n ind: index,\n data: buffer,\n };\n\n return result;\n }\n\n private preprocessSolarviewData(response: Buffer): string[] {\n let sv_data = response.toString('ascii');\n sv_data = sv_data.replace(/[{}]+/g, ''); // Remove \"{}\"\n return sv_data.split(',');\n }\n\n private getSolarviewPrefix(dataCode: string): string {\n const prefixMap: { [key: string]: string } = {\n '00': 'pvig.',\n '01': 'pvi1.',\n '02': 'pvi2.',\n '03': 'pvi3.',\n '04': 'pvi4.',\n 10: 'scm0.',\n 11: 'scm1.',\n 12: 'scm2.',\n 13: 'scm3.',\n 14: 'scm4.',\n 21: 'd0supply.',\n 22: 'd0consumption.',\n };\n return prefixMap[dataCode] || '';\n }\n\n private async updateSolarviewStates(sv_data: string[], sv_prefix: string): Promise<void> {\n try {\n this.updateState(`${sv_prefix}current`, sv_data, 10);\n if (sv_prefix === 'pvig.') {\n await this.handleCCUUpdate(sv_data);\n }\n this.updateState(`${sv_prefix}daily`, sv_data, 6);\n this.updateState(`${sv_prefix}monthly`, sv_data, 7);\n this.updateState(`${sv_prefix}yearly`, sv_data, 8);\n this.updateState(`${sv_prefix}total`, sv_data, 9);\n\n if (sv_data.length >= 23) {\n this.updateExtendedStates(sv_data, sv_prefix);\n }\n } catch (error: unknown) {\n this.errorHandler(`updateSolarviewStates`, error);\n throw error;\n }\n }\n\n private async handleCCUUpdate(sv_data: string[]): Promise<void> {\n try {\n if (this.config.setCCU) {\n const obj = await this.findForeignObjectAsync(this.config.CCUSystemV, 'state');\n if (obj && obj.name) {\n this.log.debug(`set CCU system variable: ${this.config.CCUSystemV}`);\n this.setForeignState(this.config.CCUSystemV, { val: Number(sv_data[10]), ack: false });\n } else {\n this.log.error(`CCU system variable ${this.config.CCUSystemV} does not exist!`);\n }\n }\n } catch (error: unknown) {\n this.errorHandler(`handleCCUUpdate`, error);\n throw error;\n }\n }\n\n private updateExtendedStates(sv_data: string[], sv_prefix: string): void {\n this.updateState(`${sv_prefix}udc`, sv_data, 11);\n this.updateState(`${sv_prefix}idc`, sv_data, 12);\n this.updateState(`${sv_prefix}udcb`, sv_data, 13);\n this.updateState(`${sv_prefix}idcb`, sv_data, 14);\n this.updateState(`${sv_prefix}udcc`, sv_data, 15);\n this.updateState(`${sv_prefix}idcc`, sv_data, 16);\n this.updateState(`${sv_prefix}udcd`, sv_data, 17);\n this.updateState(`${sv_prefix}idcd`, sv_data, 18);\n\n if (sv_data.length === 27) {\n // Neue Version Solarview\n this.updateState(`${sv_prefix}ul1`, sv_data, 19);\n this.updateState(`${sv_prefix}il1`, sv_data, 20);\n this.updateState(`${sv_prefix}ul2`, sv_data, 21);\n this.updateState(`${sv_prefix}il2`, sv_data, 22);\n this.updateState(`${sv_prefix}ul3`, sv_data, 23);\n this.updateState(`${sv_prefix}il3`, sv_data, 24);\n this.updateState(`${sv_prefix}tkk`, sv_data, 25);\n } else if (sv_data.length === 23) {\n // Alte Version Solarview\n this.updateState(`${sv_prefix}ul1`, sv_data, 19);\n this.updateState(`${sv_prefix}il1`, sv_data, 20);\n this.updateState(`${sv_prefix}tkk`, sv_data, 21);\n }\n }\n\n private updateState(stateName: string, sv_data: string[], index: number): void {\n const value = Number(sv_data[index]);\n this.setStateChanged(stateName, { val: value, ack: true });\n }\n\n private async onReady(): Promise<void> {\n try {\n const starttime = this.config.intervalstart.split(':').slice(0, 2).join(':');\n const endtime = this.config.intervalend.split(':').slice(0, 2).join(':');\n\n this.log.info(\n `start solarview ${this.config.ipaddress}:${this.config.port} - polling interval: ${this.config.intervalVal}s (${starttime} to ${\n endtime\n })`,\n );\n this.log.info(`d0 converter: ${this.config.d0converter.toString()}`);\n\n await this.createGlobalObjects();\n\n await this.createSolarviewObjects('pvig', false);\n if (this.config.d0converter) {\n await this.createSolarviewObjects('d0supply', false);\n }\n if (this.config.d0converter) {\n await this.createSolarviewObjects('d0consumption', false);\n }\n if (this.config.scm0) {\n await this.createSolarviewObjects('scm0', false);\n }\n if (this.config.scm1) {\n await this.createSolarviewObjects('scm1', false);\n }\n if (this.config.scm2) {\n await this.createSolarviewObjects('scm2', false);\n }\n if (this.config.scm3) {\n await this.createSolarviewObjects('scm3', false);\n }\n if (this.config.scm4) {\n await this.createSolarviewObjects('scm4', false);\n }\n if (this.config.pvi1) {\n await this.createSolarviewObjects('pvi1', true);\n }\n if (this.config.pvi2) {\n await this.createSolarviewObjects('pvi2', true);\n }\n if (this.config.pvi3) {\n await this.createSolarviewObjects('pvi3', true);\n }\n if (this.config.pvi4) {\n await this.createSolarviewObjects('pvi4', true);\n }\n\n if (!this.config.interval_seconds) {\n await this.adjustIntervalToSeconds.call(this);\n }\n\n this.conn = new net.Socket();\n this.conn.setTimeout(2000);\n this.conn.on('data', this.onDataHandler.bind(this));\n this.conn.on('close', this.onCloseHandler.bind(this));\n this.conn.on('error', this.onErrorHandler.bind(this));\n this.conn.on('timeout', this.onTimeoutHandler.bind(this));\n\n //First start\n await this.setCmdQueue();\n\n this.jobSchedule = setInterval(async () => {\n try {\n await this.setCmdQueue();\n } catch (error: any) {\n this.log.error(`onReady.schedule: ${error.message}`);\n }\n }, this.config.intervalVal * 1000);\n } catch (error: unknown) {\n this.errorHandler(`onReady`, error);\n }\n }\n\n private onTimeoutHandler(): void {\n this.log.error('onTimeoutHandler: socket timeout');\n this.conn.end();\n }\n\n private async onDataHandler(data: any): Promise<void> {\n try {\n await this.processData(data);\n this.conn.end();\n } catch (error: unknown) {\n this.errorHandler(`conn.on data`, error);\n }\n }\n\n private processData = async (data: Buffer): Promise<void> => {\n try {\n const strdata: string[] = this.preprocessSolarviewData(data);\n const id = this.getSolarviewPrefix(strdata[0]);\n const cs: IChecksumResult = this.calcChecksum(data.toString('ascii'));\n if (cs.result) {\n await this.handleChecksumSuccess(strdata, id, data);\n } else {\n this.handleChecksumFailure(strdata, cs);\n }\n } catch (error: unknown) {\n this.errorHandler(`processData`, error);\n throw error;\n }\n };\n\n private async handleChecksumSuccess(sv_data: string[], sv_prefix: string, response: Buffer): Promise<void> {\n try {\n this.chkCnt = 0;\n this.log.debug(`${response.toString('ascii')}`);\n\n await this.updateSolarviewStates(sv_data, sv_prefix);\n\n const sDate = `${sv_data[3]}-${this.aLZ(parseInt(sv_data[2]))}-${this.aLZ(parseInt(sv_data[1]))} ${this.aLZ(parseInt(sv_data[4]))}:${this.aLZ(parseInt(sv_data[5]))}`;\n this.setStateChanged('info.lastUpdate', { val: sDate, ack: true });\n this.setStateChanged('info.connection', { val: true, ack: true });\n } catch (error: unknown) {\n this.errorHandler(`handleChecksumSuccess`, error);\n throw error;\n }\n }\n\n private handleChecksumFailure(sv_data: string[], csum: IChecksumResult): void {\n if (csum.chksum !== 0) {\n if (csum.data.toString('ascii') != ';-)\\n') {\n this.chkCnt += 1;\n this.log.warn(`checksum not correct! ${sv_data[0]}: ${csum.data.toString('ascii')}`);\n } else {\n //else -> option not supported from Solarview due to missing Inverter -> chksum ;-)\\n\n this.log.warn(`command ${this.lastCommand} not supported!`);\n }\n }\n }\n\n private async onCloseHandler(): Promise<void> {\n try {\n if (this.lastCommand) {\n this.log.debug(`Connection closed after executing command: ${this.lastCommand}`);\n } else {\n this.log.debug('Connection closed');\n }\n this.isProcessingCmd = false;\n if (this.chkCnt > 3) {\n await this.setState('info.connection', false, true);\n this.log.warn('Solarview Server is not reachable');\n this.chkCnt = 0;\n }\n } catch (error: unknown) {\n this.errorHandler(`conn.on close`, error);\n }\n }\n\n private onErrorHandler(error: unknown): void {\n this.errorHandler(`conn.on error - cmd: ${this.lastCommand}`, error);\n }\n\n private _sleep(milliseconds: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, milliseconds));\n }\n\n private connectAsync = (port: number, ip_address: string): Promise<void> => {\n return new Promise((resolve, reject) => {\n this.conn.connect(port, ip_address, () => {\n resolve();\n });\n this.conn.on('error', err => {\n reject(err);\n });\n });\n };\n\n private async setCmdQueue(): Promise<void> {\n try {\n const commands: string[] = [];\n const { d0converter, scm0, scm1, scm2, scm3, scm4, pvi1, pvi2, pvi3, pvi4, intervalstart, intervalend } =\n this.config;\n\n const starttime = intervalstart.split(':').slice(0, 2).join(':');\n let endtime = intervalend.split(':').slice(0, 2).join(':');\n endtime = endtime === '00:00' ? '23:59' : endtime;\n\n const dnow = new Date();\n const dstart = new Date(`${dnow.getFullYear()}-${dnow.getMonth() + 1}-${dnow.getDate()} ${starttime}`);\n const dend = new Date(`${dnow.getFullYear()}-${dnow.getMonth() + 1}-${dnow.getDate()} ${endtime}`);\n\n if (dnow >= dstart && dnow <= dend) {\n commands.push('00*'); // pvig\n if (d0converter) {\n commands.push('21*');\n }\n if (pvi1) {\n commands.push('01*');\n }\n if (pvi2) {\n commands.push('02*');\n }\n if (pvi3) {\n commands.push('03*');\n }\n if (pvi4) {\n commands.push('04*');\n }\n }\n\n if (d0converter) {\n commands.push('22*');\n }\n if (scm0) {\n commands.push('10*');\n }\n if (scm1) {\n commands.push('11*');\n }\n if (scm2) {\n commands.push('12*');\n }\n if (scm3) {\n commands.push('13*');\n }\n if (scm4) {\n commands.push('14*');\n }\n\n // Befehle zur Warteschlange hinzuf\u00FCgen\n this.commandQueue.push(...commands);\n\n // Verarbeite die Warteschlange\n await this.processQueue();\n } catch (error: unknown) {\n this.errorHandler(`setCmdQueue`, error);\n }\n }\n\n private async processQueue(): Promise<void> {\n if (this.isProcessingQueue) {\n this.log.warn(`processQueue: command queue not empty! Waiting for solarview server ...`);\n return;\n }\n this.isProcessingQueue = true;\n\n while (this.commandQueue.length > 0) {\n if (!this.isProcessingCmd) {\n const cmd = this.commandQueue.shift();\n if (cmd) {\n try {\n this.isProcessingCmd = true;\n await this.executeCommand(cmd);\n if (this.isError === true) {\n this.log.info('Server connection is now working again!');\n this.isError = false;\n }\n } catch {\n this.isError = true;\n this.commandQueue.length = 0; // Queue l\u00F6schen\n this.isProcessingQueue = false;\n this.isProcessingCmd = false;\n }\n }\n }\n await this._sleep(500);\n }\n this.isProcessingQueue = false;\n }\n\n private async executeCommand(cmd: string): Promise<void> {\n this.log.debug(`Attempting to execute command: ${cmd}`);\n this.lastCommand = cmd;\n await this.connectAsync(this.config.port, this.config.ipaddress);\n this.conn.write(cmd);\n this.log.debug(`Command successfully sent: ${cmd}`);\n }\n\n private onUnload(callback: () => void): void {\n try {\n clearInterval(this.jobSchedule);\n clearTimeout(this.tout);\n this.conn.destroy();\n this.setStateChanged('info.connection', { val: false, ack: true });\n this.log.info('cleaned everything up...');\n callback();\n } catch (error: unknown) {\n this.errorHandler('onUnload', error);\n callback();\n }\n }\n\n private errorHandler(errTitle: string, error: unknown): void {\n if (error instanceof Error) {\n if (error.message.includes('EHOSTUNREACH') || error.message.includes('ECONNREFUSED')) {\n this.log.warn(`${errTitle}: Solarview server is not reachable! Please check the server.`);\n } else {\n this.log.error(`${errTitle}: ${error.message}\\nStacktrace: ${error.stack}`);\n }\n } else if (typeof error === 'string') {\n this.log.error(`${errTitle}: ${error}`);\n } else {\n this.log.error(`${errTitle}: Unknown error occurred: {error}`);\n }\n }\n}\n\nif (require.main !== module) {\n module.exports = (options: Partial<utils.AdapterOptions> | undefined) => new Solarviewdatareader(options);\n} else {\n (() => new Solarviewdatareader())();\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["'use strict';\n/*\n * Created with @iobroker/create-adapter v1.14.0\n */\n\n// The adapter-core module gives you access to the core ioBroker functions\nimport * as utils from '@iobroker/adapter-core';\n\n// Load your modules here, e.g.:\nimport * as net from 'net';\n\ninterface IChecksumResult {\n result: boolean;\n chksum: number;\n ind: number;\n data: Buffer;\n}\n\nclass Solarviewdatareader extends utils.Adapter {\n private tout!: NodeJS.Timeout;\n private jobSchedule!: NodeJS.Timeout;\n private chkCnt: number;\n private conn!: net.Socket;\n private lastCommand: string;\n private commandQueue: string[];\n private isProcessingQueue: boolean;\n private isProcessingCmd: boolean;\n private isError: boolean;\n\n public constructor(options: Partial<utils.AdapterOptions> = {}) {\n super({\n ...options,\n name: 'solarviewdatareader',\n });\n this.on('ready', this.onReady.bind(this));\n this.on('unload', this.onUnload.bind(this));\n this.lastCommand = '';\n this.commandQueue = [];\n this.isProcessingQueue = false;\n this.isProcessingCmd = false;\n this.chkCnt = 0;\n this.isError = false;\n }\n\n private async createObject(id: string, obj: ioBroker.SettableObject): Promise<void> {\n await this.setObjectNotExistsAsync(id, obj);\n await this.extendObject(id, obj);\n\n const currentState = await this.getStateAsync(id);\n const stCommon: ioBroker.StateCommon = obj.common as ioBroker.StateCommon; // Type Assertion\n if (currentState === null && stCommon.def !== undefined) {\n await this.setState(id, stCommon.def, true); // set default\n }\n }\n\n private async createGlobalObjects(): Promise<void> {\n const options: [string, ioBroker.SettableObject][] = [\n [\n 'info.connection',\n {\n type: 'state',\n common: {\n name: 'connection',\n type: 'boolean',\n role: 'indicator.connected',\n def: false,\n read: true,\n write: false,\n desc: 'Solarview connection state',\n unit: '',\n },\n native: {},\n },\n ],\n [\n 'info.lastUpdate',\n {\n type: 'state',\n common: {\n name: 'lastUpdate',\n type: 'string',\n role: 'date',\n def: new Date('1900-01-01T00:00:00').toString(),\n read: true,\n write: false,\n desc: 'Last connection date/time',\n unit: '',\n },\n native: {},\n },\n ],\n ];\n\n for (const option of options) {\n await this.createObject(...option);\n }\n }\n\n private async createSolarviewObjects(device: string, additional: boolean = false): Promise<void> {\n let options: [string, ioBroker.SettableObject][] = [\n [device, { type: 'channel', common: { name: device }, native: {} }],\n [\n `${device}.current`,\n {\n type: 'state',\n common: {\n name: 'current',\n type: 'number',\n role: 'value.power',\n def: 0,\n read: true,\n write: false,\n desc: 'Current PAC',\n unit: 'W',\n },\n native: {},\n },\n ],\n [\n `${device}.daily`,\n {\n type: 'state',\n common: {\n name: 'daily',\n type: 'number',\n role: 'value.energy',\n def: 0,\n read: true,\n write: false,\n desc: 'Daily yield',\n unit: 'kWh',\n },\n native: {},\n },\n ],\n [\n `${device}.monthly`,\n {\n type: 'state',\n common: {\n name: 'monthly',\n type: 'number',\n role: 'value.energy',\n def: 0,\n read: true,\n write: false,\n desc: 'Monthly yield',\n unit: 'kWh',\n },\n native: {},\n },\n ],\n [\n `${device}.yearly`,\n {\n type: 'state',\n common: {\n name: 'yearly',\n type: 'number',\n role: 'value.energy',\n def: 0,\n read: true,\n write: false,\n desc: 'Yearly yield',\n unit: 'kWh',\n },\n native: {},\n },\n ],\n [\n `${device}.total`,\n {\n type: 'state',\n common: {\n name: 'total',\n type: 'number',\n role: 'value.energy',\n def: 0,\n read: true,\n write: false,\n desc: 'Total yield',\n unit: 'kWh',\n },\n native: {},\n },\n ],\n ];\n\n if (additional) {\n const additionalOptions: [string, ioBroker.SettableObject][] = [\n [\n `${device}.udc`,\n {\n type: 'state',\n common: {\n name: 'udc',\n type: 'number',\n role: 'value.voltage',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator voltage',\n unit: 'V',\n },\n native: {},\n },\n ],\n [\n `${device}.idc`,\n {\n type: 'state',\n common: {\n name: 'idc',\n type: 'number',\n role: 'value.current',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator current',\n unit: 'A',\n },\n native: {},\n },\n ],\n [\n `${device}.udcb`,\n {\n type: 'state',\n common: {\n name: 'udcb',\n type: 'number',\n role: 'value.voltage',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator voltage',\n unit: 'V',\n },\n native: {},\n },\n ],\n [\n `${device}.idcb`,\n {\n type: 'state',\n common: {\n name: 'idcb',\n type: 'number',\n role: 'value.current',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator current',\n unit: 'A',\n },\n native: {},\n },\n ],\n [\n `${device}.udcc`,\n {\n type: 'state',\n common: {\n name: 'udcc',\n type: 'number',\n role: 'value.voltage',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator voltage',\n unit: 'V',\n },\n native: {},\n },\n ],\n [\n `${device}.idcc`,\n {\n type: 'state',\n common: {\n name: 'idcc',\n type: 'number',\n role: 'value.current',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator current',\n unit: 'A',\n },\n native: {},\n },\n ],\n [\n `${device}.udcd`,\n {\n type: 'state',\n common: {\n name: 'udcd',\n type: 'number',\n role: 'value.voltage',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator voltage',\n unit: 'V',\n },\n native: {},\n },\n ],\n [\n `${device}.idcd`,\n {\n type: 'state',\n common: {\n name: 'idcd',\n type: 'number',\n role: 'value.current',\n def: 0,\n read: true,\n write: false,\n desc: 'Generator current',\n unit: 'A',\n },\n native: {},\n },\n ],\n [\n `${device}.ul1`,\n {\n type: 'state',\n common: {\n name: 'ul1',\n type: 'number',\n role: 'value.voltage',\n def: 0,\n read: true,\n write: false,\n desc: 'Mains voltage',\n unit: 'V',\n },\n native: {},\n },\n ],\n [\n `${device}.il1`,\n {\n type: 'state',\n common: {\n name: 'il1',\n type: 'number',\n role: 'value.current',\n def: 0,\n read: true,\n write: false,\n desc: 'Mains current',\n unit: 'A',\n },\n native: {},\n },\n ],\n [\n `${device}.ul2`,\n {\n type: 'state',\n common: {\n name: 'ul2',\n type: 'number',\n role: 'value.voltage',\n def: 0,\n read: true,\n write: false,\n desc: 'Mains voltage',\n unit: 'V',\n },\n native: {},\n },\n ],\n [\n `${device}.il2`,\n {\n type: 'state',\n common: {\n name: 'il2',\n type: 'number',\n role: 'value.current',\n def: 0,\n read: true,\n write: false,\n desc: 'Mains current',\n unit: 'A',\n },\n native: {},\n },\n ],\n [\n `${device}.ul3`,\n {\n type: 'state',\n common: {\n name: 'ul3',\n type: 'number',\n role: 'value.voltage',\n def: 0,\n read: true,\n write: false,\n desc: 'Mains voltage',\n unit: 'V',\n },\n native: {},\n },\n ],\n [\n `${device}.il3`,\n {\n type: 'state',\n common: {\n name: 'il3',\n type: 'number',\n role: 'value.current',\n def: 0,\n read: true,\n write: false,\n desc: 'Mains current',\n unit: 'A',\n },\n native: {},\n },\n ],\n [\n `${device}.tkk`,\n {\n type: 'state',\n common: {\n name: 'tkk',\n type: 'number',\n role: 'value.temperature',\n def: 0,\n read: true,\n write: false,\n desc: 'Temperature',\n unit: '\u00B0C',\n },\n native: {},\n },\n ],\n ];\n options = options.concat(additionalOptions);\n }\n\n for (const option of options) {\n await this.createObject(...option);\n }\n }\n\n //for compatibility reasons. Minute interval changed to seconds.\n private async adjustIntervalToSeconds(): Promise<void> {\n const adapterObj: ioBroker.Object | null | undefined = await this.getForeignObjectAsync(\n `system.adapter.${this.namespace}`,\n );\n if (!this.config.interval_seconds) {\n if (adapterObj) {\n adapterObj.native.interval_seconds = true;\n adapterObj.native.intervalVal *= 60;\n this.log.warn('Interval changed to seconds!');\n this.log.info('Interval attribute changed! Please check the configuration');\n this.log.info('Adapter restarts');\n }\n }\n }\n\n // Nullen voranstellen - add Leading Zero\n private aLZ(n: number): string {\n return n <= 9 ? `0${n}` : n.toString();\n }\n\n private calcChecksum(inputString: string): IChecksumResult {\n const buffer = Buffer.from(inputString);\n let sum = 0;\n let index = 0;\n\n for (let i = 0; i < buffer.length; i++) {\n sum = (sum + buffer[i]) % 128;\n if (buffer[i] === 125) {\n index = i + 2;\n break;\n }\n }\n\n const result: IChecksumResult = {\n result: buffer[index] === sum,\n chksum: sum,\n ind: index,\n data: buffer,\n };\n\n return result;\n }\n\n private preprocessSolarviewData(response: Buffer): string[] {\n let sv_data = response.toString('ascii');\n sv_data = sv_data.replace(/[{}]+/g, ''); // Remove \"{}\"\n return sv_data.split(',');\n }\n\n private getSolarviewPrefix(dataCode: string): string {\n const prefixMap: { [key: string]: string } = {\n '00': 'pvig.',\n '01': 'pvi1.',\n '02': 'pvi2.',\n '03': 'pvi3.',\n '04': 'pvi4.',\n 10: 'scm0.',\n 11: 'scm1.',\n 12: 'scm2.',\n 13: 'scm3.',\n 14: 'scm4.',\n 21: 'd0supply.',\n 22: 'd0consumption.',\n };\n return prefixMap[dataCode] || '';\n }\n\n private async updateSolarviewStates(sv_data: string[], sv_prefix: string): Promise<void> {\n try {\n this.updateState(`${sv_prefix}current`, sv_data, 10);\n if (sv_prefix === 'pvig.') {\n await this.handleCCUUpdate(sv_data);\n }\n this.updateState(`${sv_prefix}daily`, sv_data, 6);\n this.updateState(`${sv_prefix}monthly`, sv_data, 7);\n this.updateState(`${sv_prefix}yearly`, sv_data, 8);\n this.updateState(`${sv_prefix}total`, sv_data, 9);\n\n if (sv_data.length >= 23) {\n this.updateExtendedStates(sv_data, sv_prefix);\n }\n } catch (error: unknown) {\n this.errorHandler(`updateSolarviewStates`, error);\n throw error;\n }\n }\n\n private async handleCCUUpdate(sv_data: string[]): Promise<void> {\n try {\n if (this.config.setCCU) {\n const obj = await this.findForeignObjectAsync(this.config.CCUSystemV, null);\n if (obj && obj.name) {\n this.log.debug(`set CCU system variable: ${this.config.CCUSystemV}`);\n this.setForeignState(this.config.CCUSystemV, { val: Number(sv_data[10]), ack: false });\n } else {\n this.log.error(`CCU system variable ${this.config.CCUSystemV} does not exist!`);\n }\n }\n } catch (error: unknown) {\n this.errorHandler(`handleCCUUpdate`, error);\n throw error;\n }\n }\n\n private updateExtendedStates(sv_data: string[], sv_prefix: string): void {\n this.updateState(`${sv_prefix}udc`, sv_data, 11);\n this.updateState(`${sv_prefix}idc`, sv_data, 12);\n this.updateState(`${sv_prefix}udcb`, sv_data, 13);\n this.updateState(`${sv_prefix}idcb`, sv_data, 14);\n this.updateState(`${sv_prefix}udcc`, sv_data, 15);\n this.updateState(`${sv_prefix}idcc`, sv_data, 16);\n this.updateState(`${sv_prefix}udcd`, sv_data, 17);\n this.updateState(`${sv_prefix}idcd`, sv_data, 18);\n\n if (sv_data.length === 27) {\n // Neue Version Solarview\n this.updateState(`${sv_prefix}ul1`, sv_data, 19);\n this.updateState(`${sv_prefix}il1`, sv_data, 20);\n this.updateState(`${sv_prefix}ul2`, sv_data, 21);\n this.updateState(`${sv_prefix}il2`, sv_data, 22);\n this.updateState(`${sv_prefix}ul3`, sv_data, 23);\n this.updateState(`${sv_prefix}il3`, sv_data, 24);\n this.updateState(`${sv_prefix}tkk`, sv_data, 25);\n } else if (sv_data.length === 23) {\n // Alte Version Solarview\n this.updateState(`${sv_prefix}ul1`, sv_data, 19);\n this.updateState(`${sv_prefix}il1`, sv_data, 20);\n this.updateState(`${sv_prefix}tkk`, sv_data, 21);\n }\n }\n\n private updateState(stateName: string, sv_data: string[], index: number): void {\n const value = Number(sv_data[index]);\n this.setStateChanged(stateName, { val: value, ack: true });\n }\n\n private async onReady(): Promise<void> {\n try {\n const starttime = this.config.intervalstart.split(':').slice(0, 2).join(':');\n const endtime = this.config.intervalend.split(':').slice(0, 2).join(':');\n\n this.log.info(\n `start solarview ${this.config.ipaddress}:${this.config.port} - polling interval: ${this.config.intervalVal}s (${starttime} to ${\n endtime\n })`,\n );\n this.log.info(`d0 converter: ${this.config.d0converter.toString()}`);\n\n await this.createGlobalObjects();\n\n await this.createSolarviewObjects('pvig', false);\n if (this.config.d0converter) {\n await this.createSolarviewObjects('d0supply', false);\n }\n if (this.config.d0converter) {\n await this.createSolarviewObjects('d0consumption', false);\n }\n if (this.config.scm0) {\n await this.createSolarviewObjects('scm0', false);\n }\n if (this.config.scm1) {\n await this.createSolarviewObjects('scm1', false);\n }\n if (this.config.scm2) {\n await this.createSolarviewObjects('scm2', false);\n }\n if (this.config.scm3) {\n await this.createSolarviewObjects('scm3', false);\n }\n if (this.config.scm4) {\n await this.createSolarviewObjects('scm4', false);\n }\n if (this.config.pvi1) {\n await this.createSolarviewObjects('pvi1', true);\n }\n if (this.config.pvi2) {\n await this.createSolarviewObjects('pvi2', true);\n }\n if (this.config.pvi3) {\n await this.createSolarviewObjects('pvi3', true);\n }\n if (this.config.pvi4) {\n await this.createSolarviewObjects('pvi4', true);\n }\n\n if (!this.config.interval_seconds) {\n await this.adjustIntervalToSeconds.call(this);\n }\n\n this.conn = new net.Socket();\n this.conn.setTimeout(2000);\n this.conn.on('data', this.onDataHandler.bind(this));\n this.conn.on('close', this.onCloseHandler.bind(this));\n this.conn.on('error', this.onErrorHandler.bind(this));\n this.conn.on('timeout', this.onTimeoutHandler.bind(this));\n\n //First start\n await this.setCmdQueue();\n\n this.jobSchedule = setInterval(async () => {\n try {\n await this.setCmdQueue();\n } catch (error: any) {\n this.log.error(`onReady.schedule: ${error.message}`);\n }\n }, this.config.intervalVal * 1000);\n } catch (error: unknown) {\n this.errorHandler(`onReady`, error);\n }\n }\n\n private onTimeoutHandler(): void {\n this.log.error('onTimeoutHandler: socket timeout');\n this.conn.end();\n }\n\n private async onDataHandler(data: any): Promise<void> {\n try {\n await this.processData(data);\n this.conn.end();\n } catch (error: unknown) {\n this.errorHandler(`conn.on data`, error);\n }\n }\n\n private processData = async (data: Buffer): Promise<void> => {\n try {\n const strdata: string[] = this.preprocessSolarviewData(data);\n const id = this.getSolarviewPrefix(strdata[0]);\n const cs: IChecksumResult = this.calcChecksum(data.toString('ascii'));\n if (cs.result) {\n await this.handleChecksumSuccess(strdata, id, data);\n } else {\n this.handleChecksumFailure(strdata, cs);\n }\n } catch (error: unknown) {\n this.errorHandler(`processData`, error);\n throw error;\n }\n };\n\n private async handleChecksumSuccess(sv_data: string[], sv_prefix: string, response: Buffer): Promise<void> {\n try {\n this.chkCnt = 0;\n this.log.debug(`${response.toString('ascii')}`);\n\n await this.updateSolarviewStates(sv_data, sv_prefix);\n\n const sDate = `${sv_data[3]}-${this.aLZ(parseInt(sv_data[2]))}-${this.aLZ(parseInt(sv_data[1]))} ${this.aLZ(parseInt(sv_data[4]))}:${this.aLZ(parseInt(sv_data[5]))}`;\n this.setStateChanged('info.lastUpdate', { val: sDate, ack: true });\n this.setStateChanged('info.connection', { val: true, ack: true });\n } catch (error: unknown) {\n this.errorHandler(`handleChecksumSuccess`, error);\n throw error;\n }\n }\n\n private handleChecksumFailure(sv_data: string[], csum: IChecksumResult): void {\n if (csum.chksum !== 0) {\n if (csum.data.toString('ascii') != ';-)\\n') {\n this.chkCnt += 1;\n this.log.warn(`checksum not correct! ${sv_data[0]}: ${csum.data.toString('ascii')}`);\n } else {\n //else -> option not supported from Solarview due to missing Inverter -> chksum ;-)\\n\n this.log.warn(`command ${this.lastCommand} not supported!`);\n }\n }\n }\n\n private async onCloseHandler(): Promise<void> {\n try {\n if (this.lastCommand) {\n this.log.debug(`Connection closed after executing command: ${this.lastCommand}`);\n } else {\n this.log.debug('Connection closed');\n }\n this.isProcessingCmd = false;\n if (this.chkCnt > 3) {\n await this.setState('info.connection', false, true);\n this.log.warn('Solarview Server is not reachable');\n this.chkCnt = 0;\n }\n } catch (error: unknown) {\n this.errorHandler(`conn.on close`, error);\n }\n }\n\n private onErrorHandler(error: unknown): void {\n this.errorHandler(`conn.on error - cmd: ${this.lastCommand}`, error);\n }\n\n private _sleep(milliseconds: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, milliseconds));\n }\n\n private connectAsync = (port: number, ip_address: string): Promise<void> => {\n return new Promise((resolve, reject) => {\n this.conn.connect(port, ip_address, () => {\n resolve();\n });\n this.conn.on('error', err => {\n reject(err);\n });\n });\n };\n\n private async setCmdQueue(): Promise<void> {\n try {\n const commands: string[] = [];\n const { d0converter, scm0, scm1, scm2, scm3, scm4, pvi1, pvi2, pvi3, pvi4, intervalstart, intervalend } =\n this.config;\n\n const starttime = intervalstart.split(':').slice(0, 2).join(':');\n let endtime = intervalend.split(':').slice(0, 2).join(':');\n endtime = endtime === '00:00' ? '23:59' : endtime;\n\n const dnow = new Date();\n const dstart = new Date(`${dnow.getFullYear()}-${dnow.getMonth() + 1}-${dnow.getDate()} ${starttime}`);\n const dend = new Date(`${dnow.getFullYear()}-${dnow.getMonth() + 1}-${dnow.getDate()} ${endtime}`);\n\n if (dnow >= dstart && dnow <= dend) {\n commands.push('00*'); // pvig\n if (d0converter) {\n commands.push('21*');\n }\n if (pvi1) {\n commands.push('01*');\n }\n if (pvi2) {\n commands.push('02*');\n }\n if (pvi3) {\n commands.push('03*');\n }\n if (pvi4) {\n commands.push('04*');\n }\n }\n\n if (d0converter) {\n commands.push('22*');\n }\n if (scm0) {\n commands.push('10*');\n }\n if (scm1) {\n commands.push('11*');\n }\n if (scm2) {\n commands.push('12*');\n }\n if (scm3) {\n commands.push('13*');\n }\n if (scm4) {\n commands.push('14*');\n }\n\n // Befehle zur Warteschlange hinzuf\u00FCgen\n this.commandQueue.push(...commands);\n\n // Verarbeite die Warteschlange\n await this.processQueue();\n } catch (error: unknown) {\n this.errorHandler(`setCmdQueue`, error);\n }\n }\n\n private async processQueue(): Promise<void> {\n if (this.isProcessingQueue) {\n this.log.warn(`processQueue: command queue not empty! Waiting for solarview server ...`);\n return;\n }\n this.isProcessingQueue = true;\n\n while (this.commandQueue.length > 0) {\n if (!this.isProcessingCmd) {\n const cmd = this.commandQueue.shift();\n if (cmd) {\n try {\n this.isProcessingCmd = true;\n await this.executeCommand(cmd);\n if (this.isError === true) {\n this.log.info('Server connection is now working again!');\n this.isError = false;\n }\n } catch {\n this.isError = true;\n this.commandQueue.length = 0; // Queue l\u00F6schen\n this.isProcessingQueue = false;\n this.isProcessingCmd = false;\n }\n }\n }\n await this._sleep(500);\n }\n this.isProcessingQueue = false;\n }\n\n private async executeCommand(cmd: string): Promise<void> {\n this.log.debug(`Attempting to execute command: ${cmd}`);\n this.lastCommand = cmd;\n await this.connectAsync(this.config.port, this.config.ipaddress);\n this.conn.write(cmd);\n this.log.debug(`Command successfully sent: ${cmd}`);\n }\n\n private onUnload(callback: () => void): void {\n try {\n clearInterval(this.jobSchedule);\n clearTimeout(this.tout);\n this.conn.destroy();\n this.setStateChanged('info.connection', { val: false, ack: true });\n this.log.info('cleaned everything up...');\n callback();\n } catch (error: unknown) {\n this.errorHandler('onUnload', error);\n callback();\n }\n }\n\n private errorHandler(errTitle: string, error: unknown): void {\n if (error instanceof Error) {\n if (error.message.includes('EHOSTUNREACH') || error.message.includes('ECONNREFUSED')) {\n this.log.warn(`${errTitle}: Solarview server is not reachable! Please check the server.`);\n } else {\n this.log.error(`${errTitle}: ${error.message}\\nStacktrace: ${error.stack}`);\n }\n } else if (typeof error === 'string') {\n this.log.error(`${errTitle}: ${error}`);\n } else {\n this.log.error(`${errTitle}: Unknown error occurred: {error}`);\n }\n }\n}\n\nif (require.main !== module) {\n module.exports = (options: Partial<utils.AdapterOptions> | undefined) => new Solarviewdatareader(options);\n} else {\n (() => new Solarviewdatareader())();\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "solarviewdatareader",
4
- "version": "1.2.2",
4
+ "version": "1.2.3",
5
5
  "news": {
6
+ "1.2.3": {
7
+ "en": "dependencies updated\nrepository checker issues fixed\ntypescript error fixed",
8
+ "de": "Abhängigkeiten aktualisiert\nProbleme mit dem Repository-Checker behoben\nTypescript-Fehler behoben",
9
+ "ru": "обновлены зависимости\nисправлены проблемы с проверкой репозитория\nисправлена ошибка TypeScript",
10
+ "pt": "dependências atualizadas\nproblemas do verificador do repositório corrigidos\nErro do TypeScript corrigido",
11
+ "nl": "afhankelijkheden bijgewerkt\nProblemen met de repository checker zijn opgelost.\nTypeScript-fout opgelost",
12
+ "fr": "dépendances mises à jour\nproblèmes du vérificateur de dépôt résolus\nErreur TypeScript corrigée",
13
+ "it": "dipendenze aggiornate\nRisolti problemi del controllo del repository\nErrore di typescript corretto",
14
+ "es": "dependencias actualizadas\nSe han solucionado problemas con el verificador de repositorios.\nError de TypeScript corregido",
15
+ "pl": "aktualizacja zależności\nNaprawione problemy z kontrolerem repozytorium\nNaprawiono błąd TypeScript",
16
+ "uk": "оновлення залежностей\nвиправлені проблеми з перевіркою репозиторію\nвиправлено помилку у TypeScript",
17
+ "zh-cn": "依赖项已更新\n修复了存储库检查器的问题\n修复了TypeScript错误"
18
+ },
6
19
  "1.2.2": {
7
20
  "en": "dependencies updated\ntesting updated [#217](https://github.com/afuerhoff/ioBroker.solarviewdatareader/issues/217)\n@iobroker-bot warning fixed [#209](https://github.com/afuerhoff/ioBroker.solarviewdatareader/issues/209)",
8
21
  "de": "aktualisierte abhängigkeiten\nprüfung aktualisiert [#217](https://github.com/afuerhoff/ioBroker.solarviewdatareader/issues/217)\n@iobroker-bot warnen behoben [#209](https://github.com/afuerhoff/ioBroker.solarviewdatareader/issues/209)",
@@ -80,19 +93,6 @@
80
93
  "pl": "zmiany w kontrolerze adaptera\nzaktualizowane zależności\nw załączniku II wprowadza się następujące zmiany:",
81
94
  "uk": "зміни адаптера\nоновлені залежності\nавтоматичний перезапуск [#170] (https://github.com/afuerhoff/ioBroker.solarviewdatareader/products/170)",
82
95
  "zh-cn": "适配器检查器更改\n更新依赖关系\n自动重启 [# 170] (https://github.com/afuerhoff/ioBroker.solarviewdatareader/issues/170) (中文(简体) )"
83
- },
84
- "1.1.1": {
85
- "en": "change to typescript\ndependencies updated\nbugfix CCU variable\ndocumentation changed",
86
- "de": "änderung der schrift\naktualisierte abhängigkeiten\nbugfix CCU Variable\ndokumentation geändert",
87
- "ru": "изменения в типографию\nобновленная информация о зависимостях\nbugfix переменная CCU\nдокументация изменена",
88
- "pt": "mudar para typescript\ndependências atualizadas\nvariável de bugfix CCU\ndocumentação alterada",
89
- "nl": "wijzigen naar typescript\nafhankelijkheden bijgewerkt\nbugfix CCU variabele\ndocumentatie gewijzigd",
90
- "fr": "changement de code\ndépendances mises à jour\nbugfix variable CCU\nmodification de la documentation",
91
- "it": "cambiamento a typescript\ndipendenze aggiornate\nbugfix CCU variabile\ndocumentazione modificata",
92
- "es": "cambio a la escritura\ndependencias actualizadas\nbugfix CCU variable\ndocumentación modificada",
93
- "pl": "zmiana na maszynopis\nzaktualizowane zależności\nzmienna CCU bugfix\nzmiana dokumentacji",
94
- "uk": "зміна за замовчуванням\nоновлені залежності\njavaScript licenses API Веб-сайт\nдокументація",
95
- "zh-cn": "更改为打字符\n更新依赖关系\nbugfix CCU 变量\n文件已更改"
96
96
  }
97
97
  },
98
98
  "titleLang": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.solarviewdatareader",
3
- "version": "1.2.2",
3
+ "version": "1.2.3",
4
4
  "description": "Get data from SolarView",
5
5
  "author": {
6
6
  "name": "Achim Fürhoff",
@@ -19,7 +19,7 @@
19
19
  "url": "https://github.com/afuerhoff/ioBroker.solarviewdatareader"
20
20
  },
21
21
  "dependencies": {
22
- "@iobroker/adapter-core": "^3.2.3"
22
+ "@iobroker/adapter-core": "^3.3.2"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@alcalzone/release-script": "^3.8.0",
@@ -27,13 +27,13 @@
27
27
  "@alcalzone/release-script-plugin-license": "^3.7.0",
28
28
  "@alcalzone/release-script-plugin-manual-review": "^3.7.0",
29
29
  "@iobroker/adapter-dev": "^1.4.0",
30
- "@iobroker/eslint-config": "^1.0.1",
31
- "@iobroker/testing": "^5.0.4",
32
- "@tsconfig/node18": "^18.2.4",
30
+ "@iobroker/eslint-config": "^2.1.0",
31
+ "@iobroker/testing": "^5.1.1",
32
+ "@tsconfig/node20": "^20.1.6",
33
33
  "@types/chai": "^4.3.20",
34
34
  "@types/chai-as-promised": "^7.1.8",
35
35
  "@types/mocha": "^10.0.10",
36
- "@types/node": "^20.17.56",
36
+ "@types/node": "^22.18.6",
37
37
  "chai": "^4.5.0",
38
38
  "chai-as-promised": "^7.1.2",
39
39
  "mocha": "^10.8.2",
@@ -42,7 +42,7 @@
42
42
  "sinon-chai": "^3.7.0",
43
43
  "source-map-support": "^0.5.21",
44
44
  "ts-node": "^10.9.2",
45
- "typescript": "^5.8.3"
45
+ "typescript": "^5.9.2"
46
46
  },
47
47
  "main": "build/main.js",
48
48
  "type": "commonjs",