From f25bc963d59e97ab1f8cef08667cf6a0acb8c16d Mon Sep 17 00:00:00 2001 From: Burnacid Date: Thu, 24 Dec 2020 09:28:14 +0100 Subject: [PATCH] #23 first draft of heating feature --- drivers/ztatz_p1_Heating/assets/icon.svg | 7 + .../ztatz_p1_Heating/assets/images/large.jpg | Bin 0 -> 66463 bytes .../ztatz_p1_Heating/assets/images/small.jpg | Bin 0 -> 16987 bytes drivers/ztatz_p1_Heating/device.js | 77 +++++++ drivers/ztatz_p1_Heating/driver.js | 46 +++++ drivers/ztatz_p1_Heating/pair/start.html | 97 +++++++++ node_modules/.package-lock.json | 195 ++++++++++++++++++ package.json | 3 + 8 files changed, 425 insertions(+) create mode 100644 drivers/ztatz_p1_Heating/assets/icon.svg create mode 100644 drivers/ztatz_p1_Heating/assets/images/large.jpg create mode 100644 drivers/ztatz_p1_Heating/assets/images/small.jpg create mode 100644 drivers/ztatz_p1_Heating/device.js create mode 100644 drivers/ztatz_p1_Heating/driver.js create mode 100644 drivers/ztatz_p1_Heating/pair/start.html create mode 100644 node_modules/.package-lock.json create mode 100644 package.json diff --git a/drivers/ztatz_p1_Heating/assets/icon.svg b/drivers/ztatz_p1_Heating/assets/icon.svg new file mode 100644 index 0000000..c6a554e --- /dev/null +++ b/drivers/ztatz_p1_Heating/assets/icon.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/drivers/ztatz_p1_Heating/assets/images/large.jpg b/drivers/ztatz_p1_Heating/assets/images/large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0fb786539e852495ac6fef3a1decaf5b3db32786 GIT binary patch literal 66463 zcmeFa2|QKZ+c&<=(r}_Q$&evU2ua3MNs^>8hh#V;!!aE5up22vBnmkdk+~2dPTi6a zk|}d$nNFs2IKw{wbu`@Fzq|W+e$V?p@8|!#pSSIE_StK#Ypr#y>$=vp_xkQ@9gL5R zzSRbrJ`Q#eq^k?0*uWJF_=8wBK^#lh5M<3F@Z&maf-=>&OrXi2YmL6!85X;-OuDAj#F=zYo}AtuZ1e&S7y_k8@a85e*HIZN?5R zwpeeE?U3AVStaG&`;>R@5!tPzEHAITXE$hr?LN!bei;l1y3hK(eU`cVY=2$@I_AO2 z!uE|v&Y#D@BJ}4tShoH=4px>QZAi2JXd5N;wK?br_y!XB`px*rn1og=jlfbv7h+{h zL93QhknIH~9itPv00XP)wZv)GKTGJ?@tpHMk_A^}qB@+juCfdzg25 z>!Di)wwiw=jIC%^TTy1;?fqzG)pM zDQX$pdxylO6;-v3ka;0iR=_R$5>H&5912S;Y?0+-2OPMGuHlfo7`2wk!K+h^U*yHD z``j-@Yv}XacGd4}gi}^|qRZdvTclA1wSc2a>LO7evm6uaI* z1~jL))K1(3n6eZ7&YLVTsYgbA%-Pbt8O46zM>G&GMqh~^R$)M*_=$G(=+~~+mZc+o z42a)cqh#B%{hHLhdK3Xr8PSx-G<@htzV2t7iZ_44Z z2K&Svk08XM|dJbL@KB zus6L@m^6YU>mVLzq(74C0SG0KTSMr2_+2#v^2ymp_C94|IeWL44D`s(fSMhuTCtmL zW_%dX+be_*=4p!!i+9mP!z!Vv{;-c#1<+N>-h?mr^^6Q!xN`>e41`&saClGtmI*Dhd zy1}KVO-M7Sq2)P-$`Q*wwqIl&b~JmzfN%^*q9z3WCCgXT{p_{ilesH!!Fp+?!cu>yS#!e}RM!OwPba3IobCeZBgK$fZ3ZGu#ugW#K|qFSAxzs(!&l z93ifGOdmyJbo^Y`T)#d>S|-xhOA0@oGex>Yj6?y!g_rI-a$GjiGyKBMnOipxuwQ=O z$oTL>ReCaQPQA@N=*FkvG&Mc?hWy6ata^NziJoz^huBb85TQ9 zC&boH^#yCZ2qyFh-Iag+kz>TKjy0=)cvR{f+%Q@?<6>Y`)Vf;HCTUO=Zr*jfHb7@X zh*G?mi?j?)PJM*llwJF_cI~oB%YKT*)RmbD(Wb@NeW;5-BE7BAwG;x{zJN53CT5=w zOIdJ}yj200TJ{&yUecXty^N->n$VnDVUskqX&D+y$?!B&Q@?kUxFFX!?fnF9**X}< zE`jd89=DL8qIy%J!fmJnf4yZre^ROi|2>WDv*?vCOOa5%(neE4dQ+FYM?>`^!n~e& z4)^p>m2gj@4XHXu5oHvuqmpgkeO34Hjq*p4k*-k%tQOsbYK!CMPb-(%#?=abPK;kS zno=Cu*{w&;WI*x^NKTjPpN`C;-!Y(fw}t15WIEup45-{}3bp>RHgG6KC3s>!t$|jp z*^SNErG-QyH1k&kC9qO=edLzXmgdkoYuzC^q23Jx946VwPiXb{%Rj@*ZokwXwhw z+u1(7M-%JKxcB+It9+9y7_4c%Y+BM-g?e05d=K9-mUIbRVxf#9yNGvqpk@GTJBd6dpD&Jj}(#d{z%S!uje))ZTCk#Ctr0VQB&UC6g0K}y+&2aNljej7w47u4VxcI=f_q~ zo~;Teavu^V2Hm$UH;Pm0X-L>opI4H86H!JE-KG9UOQ+;ZCJs86iNwm z)|Cr5pW>{b^)l1em8d%^I(SO0?chn{DcO2-#})#)^8Jo>L6zlO8;mGdBQLbezq}

`&UCBEcTD8$yj+*pn*Kfl15$T66dPAhL?p6TZFR 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�Oyp15* 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 ja>F7FJV9&y8*ftjXQJcW0{^w( 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 CTY?(^ literal 0 HcmV?d00001 diff --git a/drivers/ztatz_p1_Heating/device.js b/drivers/ztatz_p1_Heating/device.js new file mode 100644 index 0000000..90d3584 --- /dev/null +++ b/drivers/ztatz_p1_Heating/device.js @@ -0,0 +1,77 @@ +'use strict'; + +const Homey = require('homey'); +const Device = require('../../lib/Device.js'); +const boolean = require('boolean'); + +const refreshTimeout = 1000 * 30; // 30 sec + +module.exports = class ztatzP1HeatingDevice extends Device { + + // this method is called when the Device is inited + async _initDevice() { + this.log('_initDevice'); + const device = this.getData(); + + this.setUnavailable('Please remove this device and add the new device types.'); + + // Register flowcard triggers + //this._registerFlowCardTriggers(); + + // Update server data + //this._syncDevice(); + + // Set update timer + this.intervalId = setInterval(this._syncDevice.bind(this), refreshTimeout); + this.setSettings({ + url: device.url, + }); + + console.log("register flow triggers"); + // register Flow triggers + this._flowTriggerHeatingInChanged = new Homey.FlowCardTriggerDevice('measure_temperature.in.changed').register(); + this._flowTriggerHeatingOutChanged = new Homey.FlowCardTriggerDevice('measure_temperature.out.changed').register(); + } + + async _deleteDevice() { + this.log('_deleteDevice'); + + clearInterval(this.intervalId); + } + + // Update server data + async _syncDevice() { + try { + let status = await this.api.getHeating(); + + if (status.length != 0) { + this.setAvailable(); + + let heatingIn = status[0][3] + let heatingOut = status[0][7] + + this.changeCapabilityValue('measure_temperature.in', Number(heatingIn), this._flowTriggerHeatingInChanged, {'measure_temperature.in.temperature': Number(heatingIn)}); + this.changeCapabilityValue('measure_temperature.out', Number(heatingOut), this._flowTriggerHeatingOutChanged, {'measure_temperature.out.temperature': Number(heatingOut)}); + + } else { + this.setUnavailable('Cannot refresh / Connect'); + } + + + } catch (error) { + this.error(error); + this.setUnavailable(error.message); + } + } + + // this method is called when the Device has requested a state change (turned on or off) + //async p1_kwh_used( value, opts ) { + + // ... set value to real device, e.g. + // await setMyDeviceState({ on: value }); + + // or, throw an error + // throw new Error('Switching the device failed!'); + //} + +} \ No newline at end of file diff --git a/drivers/ztatz_p1_Heating/driver.js b/drivers/ztatz_p1_Heating/driver.js new file mode 100644 index 0000000..99f3e7c --- /dev/null +++ b/drivers/ztatz_p1_Heating/driver.js @@ -0,0 +1,46 @@ +const Homey = require('homey'); +const Api = require('../../lib/Api'); +const Driver = require('../../lib/Driver'); + +let foundDevices = []; + +module.exports = class ztatzP1HeatingDriver extends Driver { + + // This method is called when a user is adding a device + // and the 'list_devices' view is called + + async _onPairSearchDevices(data, callback) { + this.log('_onPairSearchDevices'); + + foundDevices = [] + + const api = new Api(data); + + await api.testConnection() + .then(result => { + if (result) { + + foundDevices = [{ + name: "P1 Heating (" + data.url + ")", + data: data + }]; + } else { + this.log('No Result'); + console.error('processData', data); + throw new Error(Homey.__('error.permission_denied')); + } + }).catch(error => { + callback(error); + }); + + callback(null, true); + } + + async _onPairListDevices(data, callback) { + this.log('_onPairListDevices'); + this.log(foundDevices); + + callback(null, foundDevices); + } + +} \ No newline at end of file diff --git a/drivers/ztatz_p1_Heating/pair/start.html b/drivers/ztatz_p1_Heating/pair/start.html new file mode 100644 index 0000000..6489c61 --- /dev/null +++ b/drivers/ztatz_p1_Heating/pair/start.html @@ -0,0 +1,97 @@ + + +

+
+ + +
+ + +
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..4ee434c --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,195 @@ +{ + "name": "com.burnacid.ztatz", + "lockfileVersion": 2, + "requires": true, + "packages": { + "node_modules/boolean": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-1.0.0.tgz", + "integrity": "sha512-IB1lgIywn37N9Aff8CciCblVpMUflgL42vyxPUH0IvaDdIi/QwBHKv1lq/HOkATHCfa7c4MbMYJ7Bo7hGuoI+w==" + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dependencies": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/http/-/http-0.0.0.tgz", + "integrity": "sha1-huYybSnF0Dnen6xYSkVon5KfT3I=" + }, + "node_modules/httpreq": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.4.24.tgz", + "integrity": "sha1-QzX/2CzZaWaKOUZckprGHWOTYn8=", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", + "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dependencies": { + "has": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dependencies": { + "has-symbols": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.entries": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + }, + "node_modules/util": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.1.tgz", + "integrity": "sha512-MREAtYOp+GTt9/+kwf00IYoHZyjM8VU4aVrkzUlejyqaIjd2GztVl5V9hGXKlvBKE3gENn/FMfHE5v6hElXGcQ==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "object.entries": "^1.1.0", + "safe-buffer": "^5.1.2" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..2b80873 --- /dev/null +++ b/package.json @@ -0,0 +1,3 @@ +{ + "name": "com.burnacid.ztatz" +}