homebridge-roborock-vacuum 1.0.5 → 1.0.7

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/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.0
3
+ ## 1.0.6
4
+ - Support new model
5
+
6
+ ## 1.0.0
4
7
 
5
8
  - First version.
package/README.md CHANGED
@@ -15,6 +15,30 @@ This plugin is inspired by and adapted from the [ioBroker.roborock](https://gith
15
15
  - **Automatic Device Detection**: No need to manually find or enter your vacuum's device ID.
16
16
  - **Start/Stop Cleaning**: Begin or end cleaning sessions.
17
17
 
18
+ ## The supported robots are:
19
+
20
+ Roborock S4
21
+ Roborock S4 Max
22
+ Roborock S5 Max
23
+ Roborock S6
24
+ Roborock S6 Pure
25
+ Roborock S6 MaxV
26
+ Roborock S7
27
+ Roborock S7 MaxV (Ultra)
28
+ Roborock Q7
29
+ Roborock Q7 Max
30
+ Roborock S7 Pro Ultra
31
+ Roborock S7 Max Ultra
32
+ Roborock S8
33
+ Roborock S8 Pro Ultra
34
+ Roborock Q Revo
35
+ Roborock Q8 Max
36
+ Roborock Q5 Pro
37
+ Roborock Q Revo Pro
38
+ Roborock Qrevo S
39
+ Roborock Qrevo Curve
40
+
41
+
18
42
  ## Requirements
19
43
 
20
44
  Before installing, ensure you have:
package/dist/platform.js CHANGED
@@ -95,8 +95,9 @@ class RoborockPlatform {
95
95
  */
96
96
  this.accessories.push(accessory);
97
97
  }
98
- isSupportedDevice(deviceType) {
99
- return true;
98
+ isSupportedDevice(model) {
99
+ //model nust starts with "roborock.vacuum."
100
+ return model.startsWith("roborock.vacuum.");
100
101
  }
101
102
  /**
102
103
  * Fetches all of the user's devices from Roborock App and sets up handlers.
@@ -112,8 +113,8 @@ class RoborockPlatform {
112
113
  self.roborockAPI.getVacuumList().forEach(function (device) {
113
114
  var duid = device.duid;
114
115
  var name = device.name;
115
- var battery = self.roborockAPI.getVacuumDeviceStatus(duid, "battery");
116
- if (!self.isSupportedDevice(device.deviceType)) {
116
+ var model = self.roborockAPI.roborock.getProductAttribute(duid, "model");
117
+ if (!self.isSupportedDevice(model)) {
117
118
  self.log.info(`Device '${name}' (${duid}) is not supported.`);
118
119
  return;
119
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-roborock-vacuum",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "Roborock Vacuum Cleaner - plugin for Homebridge.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -1,4 +1,4 @@
1
1
  {
2
- "val": "{\"uid\":1466357,\"tokentype\":\"\",\"token\":\"d8fe0bd712334ee585bc2145140f07d1-1JZxT5AINkUhb5JDyL8S+w==\",\"rruid\":\"rr6238c899155830\",\"region\":\"us\",\"countrycode\":\"886\",\"country\":\"TW\",\"nickname\":\"tasict\",\"rriot\":{\"u\":\"1RQsQJ2o8bxMCo6F45pICu\",\"s\":\"bF9cpQ\",\"h\":\"m4dCU87VRE\",\"k\":\"rSKA4Rxc\",\"r\":{\"r\":\"US\",\"a\":\"https://api-us.roborock.com\",\"m\":\"ssl://mqtt-us.roborock.com:8883\",\"l\":\"https://wood-us.roborock.com\"}},\"tuyaDeviceState\":0,\"avatarurl\":\"https://files.roborock.com/iottest/default_avatar.png\"}",
2
+ "val": "{\"uid\":1466357,\"tokentype\":\"\",\"token\":\"d8fe0bd712334ee585bc2145140f07d1-1JZxT5AINkUhb5JDyL8S+w==\",\"rruid\":\"rr6238c899155830\",\"region\":\"us\",\"countrycode\":\"886\",\"country\":\"TW\",\"nickname\":\"tasict\",\"rriot\":{\"u\":\"1RQsQJ2o8bxMCo6F45pICu\",\"s\":\"itybf5\",\"h\":\"OYx16DScPz\",\"k\":\"St7WQGEA\",\"r\":{\"r\":\"US\",\"a\":\"https://api-us.roborock.com\",\"m\":\"ssl://mqtt-us.roborock.com:8883\",\"l\":\"https://wood-us.roborock.com\"}},\"tuyaDeviceState\":0,\"avatarurl\":\"https://files.roborock.com/iottest/default_avatar.png\"}",
3
3
  "ack": true
4
4
  }
@@ -590,16 +590,18 @@ class deviceFeatures {
590
590
  "roborock.vacuum.a87", // Qrevo MaxV
591
591
  "roborock.vacuum.a101", // Q Revo Pro
592
592
  "roborock.vacuum.a97", // S8 MaxV (Ultra)
593
+ "roborock.vacuum.a104", // Roborock Qrevo S
594
+ "roborock.vacuum.a135", // Qrevo Curv
595
+ "roborock.vacuum.a117", // Qrevo Master
596
+ "roborock.vacuum.a21", // Qrevo Slim
593
597
  ].includes(robotModel),
594
598
  // isShakeMopStrengthSupported: p.DMM.currentProduct == p.Products.TanosS || p.DMM.currentProduct == p.Products.TanosSPlus || p.DMM.isGarnet || p.DMM.isTopazSV || p.DMM.isPearlPlus || p.DMM.isCoral || p.DMM.isTopazS || p.DMM.isTopazSPlus || p.DMM.isTopazSC || p.DMM.isTopazSV || p.DMM.isPearlPlus || p.DMM.isTanosSMax || p.DMM.isUltron || p.DMM.isUltronSPlus || p.DMM.isUltronSMop || p.DMM.isUltronSV || p.DMM.isPearl
595
599
  isShakeMopStrengthSupported: [
596
600
  "roborock.vacuum.a08", // S6 Pure
597
601
  "roborock.vacuum.a10", // S6 MaxV
598
- "roborock.vacuum.s6", // S6
599
602
  "roborock.vacuum.a62", // S7 Pro Ultra
600
603
  "roborock.vacuum.a51", // S8
601
604
  "roborock.vacuum.a15", // S7
602
- "roborock.vacuum.a72", // Q5 Pro
603
605
  "roborock.vacuum.a27", // S7 MaxV (Ultra)
604
606
  "roborock.vacuum.a19", // S4 Max
605
607
  "roborock.vacuum.a40", // Q7
@@ -615,6 +617,7 @@ class deviceFeatures {
615
617
  // isWaterBoxSupported: [p.Products.Tanos_CE, p.Products.Tanos_CN].hasElement(p.DMM.currentProduct)
616
618
  isWaterBoxSupported: [
617
619
  "roborock.vacuum.s5e", // S5 Max
620
+ "roborock.vacuum.s6", // S6
618
621
  "roborock.vacuum.a08", // S6 Pure
619
622
  "roborock.vacuum.a10", // S6 MaxV
620
623
  "roborock.vacuum.a15", // S7
@@ -631,6 +634,10 @@ class deviceFeatures {
631
634
  "roborock.vacuum.a87", // Qrevo MaxV
632
635
  "roborock.vacuum.a101", // Q Revo Pro
633
636
  "roborock.vacuum.a97", // S8 MaxV (Ultra)
637
+ "roborock.vacuum.a104", // Roborock Qrevo S
638
+ "roborock.vacuum.a135", // Qrevo Curv
639
+ "roborock.vacuum.a117", // Qrevo Master
640
+ "roborock.vacuum.a21", // Qrevo Slim
634
641
  ].includes(robotModel),
635
642
  isCustomWaterBoxDistanceSupported: !!(2147483648 & this.features),
636
643
  isBackChargeAutoWashSupported: this.featuresStr && !!(4096 & parseInt("0x" + this.featuresStr.slice(-8))),
@@ -638,7 +645,6 @@ class deviceFeatures {
638
645
  "roborock.vacuum.a10", // S6 MaxV
639
646
  "roborock.vacuum.a40", // Q7
640
647
  "roborock.vacuum.s6", // S6
641
- "roborock.vacuum.a72", // Q5 Pro
642
648
  "roborock.vacuum.a73", // Q8 Max
643
649
  "roborock.vacuum.a38", // Q7 Max
644
650
  "roborock.vacuum.a51", // S8
@@ -651,6 +657,9 @@ class deviceFeatures {
651
657
  "roborock.vacuum.a87", // Qrevo MaxV
652
658
  "roborock.vacuum.a101", // Q Revo Pro
653
659
  "roborock.vacuum.a97", // S8 MaxV (Ultra)
660
+ "roborock.vacuum.a104", // Roborock Qrevo S
661
+ "roborock.vacuum.a135", // Qrevo Curv
662
+ "roborock.vacuum.a117" // Qrevo Master
654
663
  ].includes(robotModel),
655
664
  // this isn't the correct way to use this. This code must be from a different robot
656
665
  // isVoiceControlSupported: !!(parseInt(`0x${this.featuresStr || "0"}`.slice(-10, -9)) & 2),
@@ -664,6 +673,9 @@ class deviceFeatures {
664
673
  "roborock.vacuum.a27", // S7 MaxV (Ultra)
665
674
  "roborock.vacuum.a97", // S8 MaxV (Ultra)
666
675
  "roborock.vacuum.a87", // Qrevo MaxV
676
+ "roborock.vacuum.a135", // Qrevo Curv
677
+ "roborock.vacuum.a117", // Qrevo Master
678
+ "roborock.vacuum.a21", // Qrevo Slim
667
679
  ].includes(robotModel),
668
680
  };
669
681
  }
@@ -708,6 +720,7 @@ class deviceFeatures {
708
720
  "set_charge_status",
709
721
  "set_clean_percent",
710
722
  "set_switch_status",
723
+ "set_cleaned_area"
711
724
  ],
712
725
  // S7 Pro Ultra
713
726
  "roborock.vacuum.a62": ["setCleaningRecordsString", "setConsumablesInt", "set_dss", "set_rss", "set_map_flag", "set_charge_status", "set_clean_percent"],
@@ -737,8 +750,8 @@ class deviceFeatures {
737
750
  "set_back_type",
738
751
  "set_charge_status",
739
752
  "set_switch_status",
740
-
741
753
  "set_clean_percent",
754
+ "set_custom_mode_max_plus",
742
755
  ],
743
756
  // Q5 Pro
744
757
  "roborock.vacuum.a72": [
@@ -751,6 +764,10 @@ class deviceFeatures {
751
764
  "set_back_type",
752
765
  "set_charge_status",
753
766
  "set_clean_percent",
767
+ "set_cleaned_area",
768
+ "set_switch_status",
769
+ "set_common_status",
770
+ "set_in_warmup",
754
771
  ],
755
772
  // Q8 Max
756
773
  "roborock.vacuum.a73": [
@@ -764,6 +781,7 @@ class deviceFeatures {
764
781
  "set_map_flag",
765
782
  "set_charge_status",
766
783
  "set_clean_percent",
784
+ "set_switch_status",
767
785
  ],
768
786
  // Q Revo
769
787
  "roborock.vacuum.a75": [
@@ -781,13 +799,14 @@ class deviceFeatures {
781
799
  "set_clean_percent",
782
800
  "set_rdt",
783
801
  "set_switch_status",
802
+ "set_cleaned_area",
784
803
  ],
785
804
  // S4
786
805
  "roborock.vacuum.s4": ["setCleaningRecordsInt", "setConsumablesString"],
787
806
  // S5 Max
788
807
  "roborock.vacuum.s5e": ["setCleaningRecordsMixed", "setConsumablesInt"],
789
808
  // S6
790
- "roborock.vacuum.s6": ["setCleaningRecordsMixed", "setConsumablesInt"],
809
+ "roborock.vacuum.s6": ["setCleaningRecordsMixed", "setConsumablesString"],
791
810
  // Qrevo MaxV
792
811
  "roborock.vacuum.a87": [
793
812
  "setCleaningRecordsString",
@@ -840,7 +859,83 @@ class deviceFeatures {
840
859
  "set_in_warmup",
841
860
  "set_map_flag",
842
861
  "set_task_id",
862
+ "set_dss",
863
+ ],
864
+ // Roborock Qrevo S
865
+ "roborock.vacuum.a104": [
866
+ "setCleaningRecordsString",
867
+ "setConsumablesInt",
868
+ "set_in_warmup",
869
+ "set_charge_status",
870
+ "set_clean_percent",
871
+ "set_rss",
872
+ "set_dss",
873
+ "set_common_status",
874
+ "set_kct",
875
+ "set_switch_status",
876
+ "set_map_flag",
877
+ "set_cleaned_area",
878
+
879
+ ],
880
+ // Roborock Qrevo Curv
881
+ "roborock.vacuum.a135": [
882
+ "setCleaningRecordsString",
883
+ "setConsumablesInt",
884
+ "set_monitor_status",
885
+ "set_in_warmup",
886
+ "set_clean_percent",
887
+ "set_extra_time",
888
+ "set_rss",
889
+ "set_common_status",
890
+ "set_kct",
891
+ "set_switch_status",
892
+ "set_last_clean_t",
893
+ "set_cleaning_info",
894
+ "set_exit_dock",
895
+ "set_charge_status",
896
+ "set_map_flag",
897
+ "set_cleaned_area",
898
+ "set_task_id",
899
+ "set_dss",
900
+ ],
901
+ // Roborock Qrevo Master
902
+ "roborock.vacuum.a117": [
903
+ "setCleaningRecordsString",
904
+ "setConsumablesInt",
905
+ "set_last_clean_t",
906
+ "set_switch_status",
907
+ "set_kct",
908
+ "set_common_status",
909
+ "set_dss",
910
+ "set_rss",
911
+ "set_clean_percent",
912
+ "set_charge_status",
913
+ "set_in_warmup",
914
+ "set_monitor_status",
915
+ "set_task_id",
916
+ "set_cleaned_area",
917
+ "set_map_flag",
843
918
  ],
919
+ // Roborock Qrevo Slim
920
+ "roborock.vacuum.a21": [
921
+ "setCleaningRecordsString",
922
+ "setConsumablesInt",
923
+ "set_map_flag",
924
+ "set_cleaned_area",
925
+ "set_replenish_mode",
926
+ "set_clean_times",
927
+ "set_task_id",
928
+ "set_monitor_status",
929
+ "set_in_warmup",
930
+ "set_charge_status",
931
+ "set_clean_percent",
932
+ "set_dss",
933
+ "set_rss",
934
+ "set_common_status",
935
+ "set_kct",
936
+ "set_switch_status",
937
+ "set_last_clean_t",
938
+ ]
844
939
  };
845
940
 
846
941
  // process modelConfig
@@ -913,6 +1008,7 @@ class deviceFeatures {
913
1008
  }
914
1009
  }
915
1010
 
1011
+
916
1012
  processDockType(dockType) {
917
1013
  switch (dockType) {
918
1014
  case 0: // Charging dock
@@ -15,14 +15,17 @@ const Roborock = require('./roborockAPI.js').Roborock;
15
15
  var duid = device.duid;
16
16
  var name = device.name;
17
17
  var battery = roborock.getVacuumDeviceStatus(duid, "battery");
18
- console.error("Name: " + name + " Battery: " + battery);
18
+ var model = roborock.getProductAttribute(duid, "model");
19
+ console.error("Name: " + name + " Battery: " + battery + " Model: " +model);
20
+
21
+ //roborock.startCommand(duid, "set_repeat", "2");
19
22
 
20
23
 
21
24
  //polling status every 10 seconds
22
- setInterval(function(){
23
- roborock.getStatus(duid);
24
- console.info("polling status every 10 seconds");
25
- }, 10000);
25
+ //setInterval(function(){
26
+ // roborock.getStatus(duid);
27
+ // console.info("polling status every 10 seconds");
28
+ //}, 10000);
26
29
 
27
30
  });
28
31