homebridge-tauron-elicznik 0.0.2-beta7 → 0.0.2-beta73

Sign up to get free protection for your applications and to get access to all the features.
package/index.js CHANGED
@@ -2,16 +2,20 @@
2
2
 
3
3
  const path = require('path');
4
4
  const axios = require('axios');
5
+ const axiosTauronAuth = require('./src/tauronAuth.js');
6
+ const https = require('https');
5
7
  const fs = require('fs');
6
- const fsPromises = require('fs').promises;
7
- const qs = require('qs')
8
+ const fsPromises = fs.promises;
8
9
 
9
10
  const PLUGIN_NAME = 'homebridge-tauron-elicznik';
10
11
  const PLATFORM_NAME = 'tauroneLicznik';
11
12
 
12
13
  const SERVICE_URL = 'https://elicznik.tauron-dystrybucja.pl';
13
- const LOGIN_URL = 'https://logowanie.tauron-dystrybucja.pl/login';
14
+ const LOGIN_URL = 'https://logowanie.tauron-dystrybucja.pl/login?service=https://elicznik.tauron-dystrybucja.pl';
14
15
  const CHARTS_URL = 'https://elicznik.tauron-dystrybucja.pl/index/charts';
16
+ const HEADERS = {
17
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0'
18
+ };
15
19
 
16
20
  let Accessory, Characteristic, Service, Categories, UUID;
17
21
 
@@ -130,22 +134,25 @@ class eLicznikDevice {
130
134
  this.energyImport = 0;
131
135
  this.energyExport = 0;
132
136
 
137
+ const data = {
138
+ username: this.user,
139
+ password: this.passwd,
140
+ service: SERVICE_URL
141
+ };
142
+
143
+
144
+ //auth
145
+ this.tauronAuth = new axiosTauronAuth({
146
+ data: data
147
+ });
148
+
133
149
  const prefDir = path.join(api.user.storagePath(), 'eLicznik');
134
150
 
135
151
  //check if the directory exists, if not then create it
136
- if (fs.existsSync(prefDir) == false) {
152
+ if (!fs.existsSync(prefDir)) {
137
153
  fsPromises.mkdir(prefDir);
138
154
  }
139
155
 
140
- this.axiosInstance = axios.create({
141
- method: 'POST',
142
- baseURL: LOGIN_URL,
143
- headers: {
144
- 'content-type': 'application/x-www-form-urlencoded'
145
- },
146
- timeout: 5000,
147
- });
148
-
149
156
  //Check device state
150
157
  setInterval(function () {
151
158
  if (this.checkDeviceInfo) {
@@ -184,34 +191,28 @@ class eLicznikDevice {
184
191
  async updateDeviceState() {
185
192
  this.log.debug('Device: %s %s, requesting Device state.', this.meterId, this.name);
186
193
  try {
187
- const headers = {
188
- 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0'
189
- };
194
+ const url = CHARTS_URL + '?dane[chartYear]=2021&dane[paramType]=year&dane[checkOZE]=on&dane[smartNr]=' + this.meterId;
190
195
 
191
- const CHART_DATA_URL = 'https://elicznik.tauron-dystrybucja.pl/index/charts?dane[chartYear]=2020&dane[paramType]=year&dane[smartNr]=' + this.meterId + '&dane[checkOZE]=on';
192
-
193
- const options = qs.stringify({
194
- 'username': this.user,
195
- 'password': this.password,
196
- 'service': CHART_DATA_URL
197
- });
196
+ const options = {
197
+ method: 'POST',
198
+ url: url
199
+ };
200
+ const response = await this.tauronAuth.request(options);
198
201
 
199
- const response = await this.axiosInstance(options);
200
- this.log.debug('Device: %s %s, debug response: %s', this.meterId, this.name, response.data);
201
- const energyImport = response.data;
202
- this.log(response.data)
202
+ this.log('11112222', response.data);
203
+ const energyImport = 0;
203
204
  const energyExport = 0;
204
205
  if (this.tauroneLicznikEnergyService) {
205
206
  this.tauroneLicznikEnergyService
206
207
  .updateCharacteristic(Characteristic.tauroneLicznikEnergyImport, energyImport)
207
- .updateCharacteristic(Characteristic.tauroneLicznikEnergyImport, energyExport);
208
+ .updateCharacteristic(Characteristic.tauroneLicznikEnergyExport, energyExport);
208
209
  }
209
210
  this.energyImport = energyImport;
210
211
  this.energyExport = energyExport;
211
212
 
212
213
  this.checkDeviceState = true;
213
214
  } catch (error) {
214
- this.log.error('Device: %s %s, update Device state error: %s, state: Offline', this.meterId, this.name, error);
215
+ this.log.error('Device: %s %s, update Device state error: %s', this.meterId, this.name, error);
215
216
  this.checkDeviceState = false;
216
217
  this.checkDeviceInfo = true;
217
218
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "Tauron eLicznik",
3
3
  "name": "homebridge-tauron-elicznik",
4
- "version": "0.0.2-beta7",
4
+ "version": "0.0.2-beta73",
5
5
  "description": "Homebridge plugin (https://github.com/homebridge/homebridge) to read data from Tauron eLicznik.",
6
6
  "license": "MIT",
7
7
  "author": "grzegorz914",
@@ -19,6 +19,7 @@
19
19
  },
20
20
  "main": "index.js",
21
21
  "files": [
22
+ "src",
22
23
  "index.js",
23
24
  "config.schema.json",
24
25
  "package.json",
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ const axios = require('axios');
3
+
4
+ const LOGIN_URL = 'https://logowanie.tauron-dystrybucja.pl/login?service=https://elicznik.tauron-dystrybucja.pl';
5
+ const SERVICE_URL = 'https://elicznik.tauron-dystrybucja.pl';
6
+
7
+ class axiosTauronAuth {
8
+ constructor({
9
+ data
10
+ }) {
11
+ this.username = data.username;
12
+ this.password = data.password;
13
+ }
14
+
15
+ async request(returnUrl) {
16
+ try {
17
+ const data = {
18
+ username: this.username,
19
+ password: this.password,
20
+ service: SERVICE_URL
21
+ };
22
+
23
+ const options = {
24
+ data: data
25
+ };
26
+ const response = await axios.post(LOGIN_URL, options);
27
+ console.log('aaaaaaaaa', response.data);
28
+
29
+ return response.data;
30
+ } catch (err) {
31
+ return err
32
+ }
33
+ };
34
+ }
35
+ module.exports = axiosTauronAuth;