homebridge-tsvesync 1.0.40 → 1.0.42

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
@@ -82,7 +82,7 @@ All outlets are exposed as HomeKit outlets with the following features:
82
82
  * Power/Energy monitoring
83
83
  * Voltage monitoring
84
84
 
85
- - 10A Outlets (ESW03-USA, ESW01-EU)
85
+ - 10A Outlets (ESW03-USA, ESW01-EU, ESW10-USA)
86
86
  * On/Off control
87
87
  * Power/Energy monitoring
88
88
  * Voltage monitoring
@@ -21,7 +21,7 @@ const HUMIDIFIER_MODELS = [
21
21
  const FAN_MODELS = ['LTF-F422'];
22
22
  const OUTLET_MODELS = [
23
23
  'ESO15-TB', 'ESW15-USA', 'ESW03-USA', 'ESW01-EU',
24
- 'wifi-switch-1.3'
24
+ 'ESW10-USA', 'wifi-switch-1.3'
25
25
  ];
26
26
  const SWITCH_MODELS = ['ESWD16', 'ESWL01', 'ESWL03'];
27
27
  class DeviceFactory {
@@ -1 +1 @@
1
- {"version":3,"file":"device-factory.js","sourceRoot":"","sources":["../../src/utils/device-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"device-factory.js","sourceRoot":"","sources":["../../src/utils/device-factory.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-tsvesync",
3
- "version": "1.0.40",
3
+ "version": "1.0.42",
4
4
  "description": "Homebridge plugin for VeSync devices including Levoit air purifiers, humidifiers, and Etekcity smart outlets",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -72,6 +72,7 @@
72
72
  "XYD0001",
73
73
  "ESO15-TB",
74
74
  "ESW15-USA",
75
+ "ESW10-USA",
75
76
  "ESW03-USA",
76
77
  "ESW01-EU",
77
78
  "LTF-F422S",
@@ -97,7 +98,7 @@
97
98
  "axios": "^1.6.5",
98
99
  "dotenv": "^16.3.1",
99
100
  "js-yaml": "^4.1.0",
100
- "tsvesync": "1.0.35"
101
+ "tsvesync": "1.0.37"
101
102
  },
102
103
  "devDependencies": {
103
104
  "@types/jest": "^29.5.11",
@@ -73,9 +73,8 @@ MD5_PASS=$(echo -n "$VESYNC_PASSWORD" | md5sum | cut -d ' ' -f 1)
73
73
 
74
74
  # Step 1: Login to get token and account ID
75
75
  echo "Logging in to VeSync..."
76
- LOGIN_URL="$BASE_URL/cloud/v1/user/login"
77
- echo "Calling URL: $LOGIN_URL"
78
- LOGIN_RESPONSE=$(curl -s -X POST "$LOGIN_URL" \
76
+
77
+ LOGIN_RESPONSE=$(curl -s -X POST "$BASE_URL/cloud/v1/user/login" \
79
78
  -H "Content-Type: application/json" \
80
79
  -H "Accept: application/json" \
81
80
  -H "Accept-Language: en" \
@@ -109,9 +108,7 @@ echo "Successfully logged in"
109
108
 
110
109
  # Step 2: Get list of devices
111
110
  echo "Getting device list..."
112
- DEVICES_URL="$BASE_URL/cloud/v2/deviceManaged/devices"
113
- echo "Calling URL: $DEVICES_URL"
114
- DEVICES_RESPONSE=$(curl -s -X POST "$DEVICES_URL" \
111
+ DEVICES_RESPONSE=$(curl -s -X POST "$BASE_URL/cloud/v2/deviceManaged/devices" \
115
112
  -H "Content-Type: application/json" \
116
113
  -H "Accept: application/json" \
117
114
  -H "Accept-Language: en" \
@@ -184,9 +181,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
184
181
  # Get device details based on device type
185
182
  if [[ "$DEVICE_TYPE" == "ESO15-TB" ]]; then
186
183
  echo "Getting device details..."
187
- DETAILS_URL="$BASE_URL/outdoorsocket15a/v1/device/devicedetail"
188
- echo "Calling URL: $DETAILS_URL"
189
- DETAILS_RESPONSE=$(curl -s -X POST "$DETAILS_URL" \
184
+ DETAILS_RESPONSE=$(curl -s -X POST "$BASE_URL/outdoorsocket15a/v1/device/devicedetail" \
190
185
  -H "Content-Type: application/json" \
191
186
  -H "accept-language: en" \
192
187
  -H "accountId: $ACCOUNT_ID" \
@@ -208,9 +203,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
208
203
  }')
209
204
  elif [[ "$DEVICE_TYPE" == "ESW15-USA" ]]; then
210
205
  echo "Getting 15A outlet details..."
211
- DETAILS_URL="$BASE_URL/15a/v1/device/devicedetail"
212
- echo "Calling URL: $DETAILS_URL"
213
- DETAILS_RESPONSE=$(curl -s -X POST "$DETAILS_URL" \
206
+ DETAILS_RESPONSE=$(curl -s -X POST "$BASE_URL/15a/v1/device/devicedetail" \
214
207
  -H "Content-Type: application/json" \
215
208
  -H "accept-language: en" \
216
209
  -H "accountId: $ACCOUNT_ID" \
@@ -237,9 +230,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
237
230
  # Get energy data
238
231
  for period in week month year; do
239
232
  echo "Getting $period energy data..."
240
- ENERGY_URL="$BASE_URL/15a/v1/device/energy$period"
241
- echo "Calling URL: $ENERGY_URL"
242
- ENERGY_RESPONSE=$(curl -s -X POST "$ENERGY_URL" \
233
+ ENERGY_RESPONSE=$(curl -s -X POST "$BASE_URL/15a/v1/device/energy$period" \
243
234
  -H "Content-Type: application/json" \
244
235
  -H "accept-language: en" \
245
236
  -H "accountId: $ACCOUNT_ID" \
@@ -262,11 +253,9 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
262
253
  echo "$period energy for $DEVICE_NAME:"
263
254
  echo "$ENERGY_RESPONSE" | jq '.'
264
255
  done
265
- elif [[ "$DEVICE_TYPE" == "ESW01-EU" ]]; then
266
- echo "Getting EU outlet details..."
267
- DETAILS_URL="$BASE_URL/10a/v1/device/devicedetail"
268
- echo "Calling URL: $DETAILS_URL"
269
- DETAILS_RESPONSE=$(curl -s -X POST "$DETAILS_URL" \
256
+ elif [[ "$DEVICE_TYPE" == "ESW01-EU" || "$DEVICE_TYPE" == "ESW03-USA" || "$DEVICE_TYPE" == "ESW10-USA" ]]; then
257
+ echo "Getting 10A outlet details..."
258
+ DETAILS_RESPONSE=$(curl -s -X POST "$BASE_URL/10a/v1/device/devicedetail" \
270
259
  -H "Content-Type: application/json" \
271
260
  -H "accept-language: en" \
272
261
  -H "accountId: $ACCOUNT_ID" \
@@ -293,9 +282,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
293
282
  # Get energy data
294
283
  for period in week month year; do
295
284
  echo "Getting $period energy data..."
296
- ENERGY_URL="$BASE_URL/10a/v1/device/energy$period"
297
- echo "Calling URL: $ENERGY_URL"
298
- ENERGY_RESPONSE=$(curl -s -X POST "$ENERGY_URL" \
285
+ ENERGY_RESPONSE=$(curl -s -X POST "$BASE_URL/10a/v1/device/energy$period" \
299
286
  -H "Content-Type: application/json" \
300
287
  -H "accept-language: en" \
301
288
  -H "accountId: $ACCOUNT_ID" \
@@ -320,9 +307,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
320
307
  done
321
308
  elif [[ "$DEVICE_TYPE" =~ ^ESL100(CW|MC)?$ ]]; then
322
309
  echo "Getting smart bulb details..."
323
- DETAILS_URL="$BASE_URL/SmartBulb/v1/device/devicedetail"
324
- echo "Calling URL: $DETAILS_URL"
325
- DETAILS_RESPONSE=$(curl -s -X POST "$DETAILS_URL" \
310
+ DETAILS_RESPONSE=$(curl -s -X POST "$BASE_URL/SmartBulb/v1/device/devicedetail" \
326
311
  -H "Content-Type: application/json" \
327
312
  -H "accept-language: en" \
328
313
  -H "accountId: $ACCOUNT_ID" \
@@ -348,9 +333,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
348
333
 
349
334
  # Get device status
350
335
  echo "Getting smart bulb status..."
351
- STATUS_URL="$BASE_URL/SmartBulb/v1/device/devicestatus"
352
- echo "Calling URL: $STATUS_URL"
353
- STATUS_RESPONSE=$(curl -s -X POST "$STATUS_URL" \
336
+ STATUS_RESPONSE=$(curl -s -X POST "$BASE_URL/SmartBulb/v1/device/devicestatus" \
354
337
  -H "Content-Type: application/json" \
355
338
  -H "accept-language: en" \
356
339
  -H "accountId: $ACCOUNT_ID" \
@@ -369,9 +352,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
369
352
  echo "$STATUS_RESPONSE" | jq '.'
370
353
  elif [[ "$DEVICE_TYPE" == "XYD0001" ]]; then
371
354
  echo "Getting XYD0001 smart bulb details..."
372
- DETAILS_URL="$BASE_URL/cloud/v2/deviceManaged/bypassV2"
373
- echo "Calling URL: $DETAILS_URL"
374
- DETAILS_RESPONSE=$(curl -s -X POST "$DETAILS_URL" \
355
+ DETAILS_RESPONSE=$(curl -s -X POST "$BASE_URL/cloud/v2/deviceManaged/bypassV2" \
375
356
  -H "Content-Type: application/json; charset=UTF-8" \
376
357
  -H "User-Agent: okhttp/3.12.1" \
377
358
  -d '{
@@ -400,9 +381,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
400
381
 
401
382
  # Get device status
402
383
  echo "Getting XYD0001 smart bulb status..."
403
- STATUS_URL="$BASE_URL/cloud/v2/deviceManaged/bypassV2"
404
- echo "Calling URL: $STATUS_URL"
405
- STATUS_RESPONSE=$(curl -s -X POST "$STATUS_URL" \
384
+ STATUS_RESPONSE=$(curl -s -X POST "$BASE_URL/cloud/v2/deviceManaged/bypassV2" \
406
385
  -H "Content-Type: application/json; charset=UTF-8" \
407
386
  -H "User-Agent: okhttp/3.12.1" \
408
387
  -d '{
@@ -430,9 +409,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
430
409
  echo "$STATUS_RESPONSE" | jq '.'
431
410
  elif [[ "$DEVICE_TYPE" =~ ^ESWL0[13]$ ]]; then
432
411
  echo "Getting wall switch details..."
433
- DETAILS_URL="$BASE_URL/inwallswitch/v1/device/devicedetail"
434
- echo "Calling URL: $DETAILS_URL"
435
- DETAILS_RESPONSE=$(curl -s -X POST "$DETAILS_URL" \
412
+ DETAILS_RESPONSE=$(curl -s -X POST "$BASE_URL/inwallswitch/v1/device/devicedetail" \
436
413
  -H "Content-Type: application/json" \
437
414
  -H "accept-language: en" \
438
415
  -H "accountId: $ACCOUNT_ID" \
@@ -457,9 +434,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
457
434
  echo "$DETAILS_RESPONSE" | jq '.'
458
435
  elif [[ "$DEVICE_TYPE" == "ESWD16" ]]; then
459
436
  echo "Getting dimmer switch details..."
460
- DETAILS_URL="$BASE_URL/dimmer/v1/device/devicedetail"
461
- echo "Calling URL: $DETAILS_URL"
462
- DETAILS_RESPONSE=$(curl -s -X POST "$DETAILS_URL" \
437
+ DETAILS_RESPONSE=$(curl -s -X POST "$BASE_URL/dimmer/v1/device/devicedetail" \
463
438
  -H "Content-Type: application/json" \
464
439
  -H "accept-language: en" \
465
440
  -H "accountId: $ACCOUNT_ID" \
@@ -485,9 +460,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
485
460
 
486
461
  # Get RGB status for dimmer
487
462
  echo "Getting dimmer RGB status..."
488
- RGB_URL="$BASE_URL/dimmer/v1/device/devicergbstatus"
489
- echo "Calling URL: $RGB_URL"
490
- RGB_RESPONSE=$(curl -s -X POST "$RGB_URL" \
463
+ RGB_RESPONSE=$(curl -s -X POST "$BASE_URL/dimmer/v1/device/devicergbstatus" \
491
464
  -H "Content-Type: application/json" \
492
465
  -H "accept-language: en" \
493
466
  -H "accountId: $ACCOUNT_ID" \
@@ -506,9 +479,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
506
479
  echo "$RGB_RESPONSE" | jq '.'
507
480
  elif [[ "$DEVICE_TYPE" == "wifi-switch-1.3" ]]; then
508
481
  echo "Getting device details..."
509
- DETAILS_URL="$BASE_URL/v1/device/$DEVICE_CID/detail"
510
- echo "Calling URL: $DETAILS_URL"
511
- DETAILS_RESPONSE=$(curl -s -X GET "$DETAILS_URL" \
482
+ DETAILS_RESPONSE=$(curl -s -X GET "$BASE_URL/v1/device/$DEVICE_CID/detail" \
512
483
  -H "Content-Type: application/json" \
513
484
  -H "accept-language: en" \
514
485
  -H "accountId: $ACCOUNT_ID" \
@@ -517,9 +488,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
517
488
  -H "tz: America/New_York")
518
489
  elif [[ "$DEVICE_TYPE" == *"Core"* ]] || [[ "$DEVICE_TYPE" == *"LAP"* ]] || [[ "$DEVICE_TYPE" == "Dual200S" ]] || [[ "$DEVICE_TYPE" == *"LTF-"* ]] || [[ "$DEVICE_TYPE" == *"Classic"* ]] || [[ "$DEVICE_TYPE" == *"LUH"* ]] || [[ "$DEVICE_TYPE" == *"LEH"* ]]; then
519
490
  echo "Getting device details..."
520
- DETAILS_URL="$BASE_URL/cloud/v2/deviceManaged/bypassV2"
521
- echo "Calling URL: $DETAILS_URL"
522
- DETAILS_RESPONSE=$(curl -s -X POST "$DETAILS_URL" \
491
+ DETAILS_RESPONSE=$(curl -s -X POST "$BASE_URL/cloud/v2/deviceManaged/bypassV2" \
523
492
  -H "Content-Type: application/json; charset=UTF-8" \
524
493
  -H "User-Agent: okhttp/3.12.1" \
525
494
  -d '{
@@ -532,12 +501,9 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
532
501
  "deviceRegion": "US",
533
502
  "method": "bypassV2",
534
503
  "payload": {
535
- "data": {
536
- "type": "air",
537
- "id": 0
538
- },
539
- "method": "getPurifierStatus",
540
- "source": "APP"
504
+ "method": "getHumidifierStatus",
505
+ "source": "APP",
506
+ "data": {}
541
507
  },
542
508
  "phoneBrand": "SM N9005",
543
509
  "phoneOS": "Android",
@@ -547,9 +513,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
547
513
  }')
548
514
  elif [[ "$DEVICE_TYPE" == *"LV-"* ]]; then
549
515
  echo "Getting device details..."
550
- DETAILS_URL="$BASE_URL/131airPurifier/v1/device/deviceDetail"
551
- echo "Calling URL: $DETAILS_URL"
552
- DETAILS_RESPONSE=$(curl -s -X POST "$DETAILS_URL" \
516
+ DETAILS_RESPONSE=$(curl -s -X POST "$BASE_URL/131airPurifier/v1/device/deviceDetail" \
553
517
  -H "Content-Type: application/json" \
554
518
  -H "accept-language: en" \
555
519
  -H "accountId: $ACCOUNT_ID" \
@@ -575,9 +539,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
575
539
 
576
540
  # Get device status
577
541
  echo "Getting device status..."
578
- STATUS_URL="$BASE_URL/131airPurifier/v1/device/deviceStatus"
579
- echo "Calling URL: $STATUS_URL"
580
- STATUS_RESPONSE=$(curl -s -X POST "$STATUS_URL" \
542
+ STATUS_RESPONSE=$(curl -s -X POST "$BASE_URL/131airPurifier/v1/device/deviceStatus" \
581
543
  -H "Content-Type: application/json" \
582
544
  -H "accept-language: en" \
583
545
  -H "accountId: $ACCOUNT_ID" \
@@ -594,17 +556,18 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
594
556
 
595
557
  echo "Status for $DEVICE_NAME:"
596
558
  echo "$STATUS_RESPONSE" | jq '.'
559
+ elif [[ "$DEVICE_TYPE" == "ESW03-USA" ]]; then
560
+ echo "Getting energy details for 10A outlet..."
597
561
  fi
598
562
 
599
563
  echo "Details for $DEVICE_NAME:"
600
564
  echo "$DETAILS_RESPONSE" | jq '.'
601
565
 
602
566
  # Get device status based on device type
603
- if [[ "$DEVICE_TYPE" == *"Core"* ]] || [[ "$DEVICE_TYPE" == *"LAP"* ]] || [[ "$DEVICE_TYPE" == "Dual200S" ]] || [[ "$DEVICE_TYPE" == *"LTF-"* ]] || [[ "$DEVICE_TYPE" == *"Classic"* ]] || [[ "$DEVICE_TYPE" == *"LUH"* ]] || [[ "$DEVICE_TYPE" == *"LEH"* ]]; then
567
+ if [[ "$DEVICE_TYPE" == *"Core"* ]] || [[ "$DEVICE_TYPE" == *"LAP"* ]]; then
568
+ # Air purifiers
604
569
  echo "Getting purifier status..."
605
- STATUS_URL="$BASE_URL/cloud/v2/deviceManaged/bypassV2"
606
- echo "Calling URL: $STATUS_URL"
607
- STATUS_RESPONSE=$(curl -s -X POST "$STATUS_URL" \
570
+ STATUS_RESPONSE=$(curl -s -X POST "$BASE_URL/cloud/v2/deviceManaged/bypassV2" \
608
571
  -H "Content-Type: application/json; charset=UTF-8" \
609
572
  -H "User-Agent: okhttp/3.12.1" \
610
573
  -d '{
@@ -633,6 +596,66 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
633
596
 
634
597
  echo "Purifier status for $DEVICE_NAME:"
635
598
  echo "$STATUS_RESPONSE" | jq '.'
599
+
600
+ elif [[ "$DEVICE_TYPE" == "Dual200S" ]] || [[ "$DEVICE_TYPE" == *"Classic"* ]] || [[ "$DEVICE_TYPE" == *"LUH"* ]] || [[ "$DEVICE_TYPE" == *"LEH"* ]]; then
601
+ # Humidifiers
602
+ echo "Getting humidifier status..."
603
+ STATUS_RESPONSE=$(curl -s -X POST "$BASE_URL/cloud/v2/deviceManaged/bypassV2" \
604
+ -H "Content-Type: application/json; charset=UTF-8" \
605
+ -H "User-Agent: okhttp/3.12.1" \
606
+ -d '{
607
+ "acceptLanguage": "en",
608
+ "accountID": "'"$ACCOUNT_ID"'",
609
+ "appVersion": "2.8.6",
610
+ "cid": "'"$DEVICE_CID"'",
611
+ "configModule": "'"$CONFIG_MODULE"'",
612
+ "debugMode": false,
613
+ "deviceRegion": "US",
614
+ "method": "bypassV2",
615
+ "payload": {
616
+ "method": "getHumidifierStatus",
617
+ "source": "APP",
618
+ "data": {}
619
+ },
620
+ "phoneBrand": "SM N9005",
621
+ "phoneOS": "Android",
622
+ "timeZone": "America/New_York",
623
+ "token": "'"$TOKEN"'",
624
+ "traceId": "TRACE_ID"
625
+ }')
626
+
627
+ echo "Humidifier status for $DEVICE_NAME:"
628
+ echo "$STATUS_RESPONSE" | jq '.'
629
+
630
+ elif [[ "$DEVICE_TYPE" == *"LTF-"* ]]; then
631
+ # Tower Fans
632
+ echo "Getting tower fan status..."
633
+ STATUS_RESPONSE=$(curl -s -X POST "$BASE_URL/cloud/v2/deviceManaged/bypassV2" \
634
+ -H "Content-Type: application/json; charset=UTF-8" \
635
+ -H "User-Agent: okhttp/3.12.1" \
636
+ -d '{
637
+ "acceptLanguage": "en",
638
+ "accountID": "'"$ACCOUNT_ID"'",
639
+ "appVersion": "2.8.6",
640
+ "cid": "'"$DEVICE_CID"'",
641
+ "configModule": "'"$CONFIG_MODULE"'",
642
+ "debugMode": false,
643
+ "deviceRegion": "US",
644
+ "method": "bypassV2",
645
+ "payload": {
646
+ "method": "getTowerFanStatus",
647
+ "source": "APP",
648
+ "data": {}
649
+ },
650
+ "phoneBrand": "SM N9005",
651
+ "phoneOS": "Android",
652
+ "timeZone": "America/New_York",
653
+ "token": "'"$TOKEN"'",
654
+ "traceId": "TRACE_ID"
655
+ }')
656
+
657
+ echo "Tower fan status for $DEVICE_NAME:"
658
+ echo "$STATUS_RESPONSE" | jq '.'
636
659
  fi
637
660
 
638
661
  # For outlets with energy monitoring
@@ -640,9 +663,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
640
663
  echo "Getting energy details for wifi-switch-1.3..."
641
664
 
642
665
  # Get weekly energy
643
- WEEKLY_URL="$BASE_URL/v1/device/$DEVICE_CID/energy/week"
644
- echo "Calling URL: $WEEKLY_URL"
645
- WEEKLY_RESPONSE=$(curl -s -X GET "$WEEKLY_URL" \
666
+ WEEKLY_RESPONSE=$(curl -s -X GET "$BASE_URL/v1/device/$DEVICE_CID/energy/week" \
646
667
  -H "Content-Type: application/json" \
647
668
  -H "accept-language: en" \
648
669
  -H "accountId: $ACCOUNT_ID" \
@@ -654,9 +675,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
654
675
  echo "$WEEKLY_RESPONSE" | jq '.'
655
676
 
656
677
  # Get monthly energy
657
- MONTHLY_URL="$BASE_URL/v1/device/$DEVICE_CID/energy/month"
658
- echo "Calling URL: $MONTHLY_URL"
659
- MONTHLY_RESPONSE=$(curl -s -X GET "$MONTHLY_URL" \
678
+ MONTHLY_RESPONSE=$(curl -s -X GET "$BASE_URL/v1/device/$DEVICE_CID/energy/month" \
660
679
  -H "Content-Type: application/json" \
661
680
  -H "accept-language: en" \
662
681
  -H "accountId: $ACCOUNT_ID" \
@@ -668,9 +687,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
668
687
  echo "$MONTHLY_RESPONSE" | jq '.'
669
688
 
670
689
  # Get yearly energy
671
- YEARLY_URL="$BASE_URL/v1/device/$DEVICE_CID/energy/year"
672
- echo "Calling URL: $YEARLY_URL"
673
- YEARLY_RESPONSE=$(curl -s -X GET "$YEARLY_URL" \
690
+ YEARLY_RESPONSE=$(curl -s -X GET "$BASE_URL/v1/device/$DEVICE_CID/energy/year" \
674
691
  -H "Content-Type: application/json" \
675
692
  -H "accept-language: en" \
676
693
  -H "accountId: $ACCOUNT_ID" \
@@ -684,9 +701,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
684
701
  echo "Getting energy details for ESO15-TB..."
685
702
 
686
703
  # Get weekly energy
687
- WEEKLY_URL="$BASE_URL/outdoorsocket15a/v1/device/energyweek"
688
- echo "Calling URL: $WEEKLY_URL"
689
- WEEKLY_RESPONSE=$(curl -s -X POST "$WEEKLY_URL" \
704
+ WEEKLY_RESPONSE=$(curl -s -X POST "$BASE_URL/outdoorsocket15a/v1/device/energyweek" \
690
705
  -H "Content-Type: application/json" \
691
706
  -H "accept-language: en" \
692
707
  -H "accountId: $ACCOUNT_ID" \
@@ -711,9 +726,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
711
726
  echo "$WEEKLY_RESPONSE" | jq '.'
712
727
 
713
728
  # Get monthly energy
714
- MONTHLY_URL="$BASE_URL/outdoorsocket15a/v1/device/energymonth"
715
- echo "Calling URL: $MONTHLY_URL"
716
- MONTHLY_RESPONSE=$(curl -s -X POST "$MONTHLY_URL" \
729
+ MONTHLY_RESPONSE=$(curl -s -X POST "$BASE_URL/outdoorsocket15a/v1/device/energymonth" \
717
730
  -H "Content-Type: application/json" \
718
731
  -H "accept-language: en" \
719
732
  -H "accountId: $ACCOUNT_ID" \
@@ -738,9 +751,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
738
751
  echo "$MONTHLY_RESPONSE" | jq '.'
739
752
 
740
753
  # Get yearly energy
741
- YEARLY_URL="$BASE_URL/outdoorsocket15a/v1/device/energyyear"
742
- echo "Calling URL: $YEARLY_URL"
743
- YEARLY_RESPONSE=$(curl -s -X POST "$YEARLY_URL" \
754
+ YEARLY_RESPONSE=$(curl -s -X POST "$BASE_URL/outdoorsocket15a/v1/device/energyyear" \
744
755
  -H "Content-Type: application/json" \
745
756
  -H "accept-language: en" \
746
757
  -H "accountId: $ACCOUNT_ID" \
@@ -767,9 +778,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
767
778
  echo "Getting energy details for ESW03-USA..."
768
779
 
769
780
  # Get weekly energy
770
- WEEKLY_URL="$BASE_URL/10a/v1/device/energyweek"
771
- echo "Calling URL: $WEEKLY_URL"
772
- WEEKLY_RESPONSE=$(curl -s -X POST "$WEEKLY_URL" \
781
+ WEEKLY_RESPONSE=$(curl -s -X POST "$BASE_URL/10a/v1/device/energyweek" \
773
782
  -H "Content-Type: application/json" \
774
783
  -H "accept-language: en" \
775
784
  -H "accountId: $ACCOUNT_ID" \
@@ -794,9 +803,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
794
803
  echo "$WEEKLY_RESPONSE" | jq '.'
795
804
 
796
805
  # Get monthly energy
797
- MONTHLY_URL="$BASE_URL/10a/v1/device/energymonth"
798
- echo "Calling URL: $MONTHLY_URL"
799
- MONTHLY_RESPONSE=$(curl -s -X POST "$MONTHLY_URL" \
806
+ MONTHLY_RESPONSE=$(curl -s -X POST "$BASE_URL/10a/v1/device/energymonth" \
800
807
  -H "Content-Type: application/json" \
801
808
  -H "accept-language: en" \
802
809
  -H "accountId: $ACCOUNT_ID" \
@@ -821,9 +828,7 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
821
828
  echo "$MONTHLY_RESPONSE" | jq '.'
822
829
 
823
830
  # Get yearly energy
824
- YEARLY_URL="$BASE_URL/10a/v1/device/energyyear"
825
- echo "Calling URL: $YEARLY_URL"
826
- YEARLY_RESPONSE=$(curl -s -X POST "$YEARLY_URL" \
831
+ YEARLY_RESPONSE=$(curl -s -X POST "$BASE_URL/10a/v1/device/energyyear" \
827
832
  -H "Content-Type: application/json" \
828
833
  -H "accept-language: en" \
829
834
  -H "accountId: $ACCOUNT_ID" \
@@ -848,30 +853,6 @@ echo "$DEVICES_RESPONSE" | jq -c '.result.list[]' | while read -r device; do
848
853
  echo "$YEARLY_RESPONSE" | jq '.'
849
854
  fi
850
855
 
851
- # For humidifiers
852
- if [[ "$DEVICE_TYPE" == *"Classic"* ]] || [[ "$DEVICE_TYPE" == *"LUH"* ]] || [[ "$DEVICE_TYPE" == *"LEH"* ]]; then
853
- echo "Getting humidifier status..."
854
- STATUS_URL="$BASE_URL/cloud/v2/deviceManaged/bypassV2"
855
- echo "Calling URL: $STATUS_URL"
856
- STATUS_RESPONSE=$(curl -s -X POST "$STATUS_URL" \
857
- -H "Content-Type: application/json" \
858
- -d '{
859
- "token": "'"$TOKEN"'",
860
- "accountID": "'"$ACCOUNT_ID"'",
861
- "cid": "'"$DEVICE_CID"'",
862
- "configModule": "'"$CONFIG_MODULE"'",
863
- "method": "bypassV2",
864
- "payload": {
865
- "method": "getHumidifierStatus",
866
- "source": "APP",
867
- "data": {}
868
- }
869
- }')
870
-
871
- echo "Humidifier status for $DEVICE_NAME:"
872
- echo "$STATUS_RESPONSE" | jq '.'
873
- fi
874
-
875
856
  echo "----------------------------------------"
876
857
  done
877
858
 
@@ -34,7 +34,7 @@ const FAN_MODELS = ['LTF-F422'];
34
34
 
35
35
  const OUTLET_MODELS = [
36
36
  'ESO15-TB', 'ESW15-USA', 'ESW03-USA', 'ESW01-EU',
37
- 'wifi-switch-1.3'
37
+ 'ESW10-USA', 'wifi-switch-1.3'
38
38
  ];
39
39
 
40
40
  const SWITCH_MODELS = ['ESWD16', 'ESWL01', 'ESWL03'];