iobroker.lorawan 1.22.24 → 1.22.25

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
@@ -24,6 +24,10 @@ For now there is documentation in English here: https://wiki.hafenmeister.de
24
24
  Placeholder for the next version (at the beginning of the line):
25
25
  ### **WORK IN PROGRESS**
26
26
  -->
27
+ ### 1.22.25 (2026-06-25)
28
+ - (BenAhrdt) Change Assignhandler for case intensive Check
29
+ - (BenAhrdt) Add subAssign for a part of name
30
+
27
31
  ### 1.22.24 (2026-06-24)
28
32
  - (BenAhrdt) Add Absolute Humidity to device_class
29
33
 
@@ -36,9 +40,6 @@ For now there is documentation in English here: https://wiki.hafenmeister.de
36
40
  ### 1.22.21 (2026-06-16)
37
41
  - (BenAhrdt) Changed setTimeout to this.adapter.setTimeout
38
42
 
39
- ### 1.22.20 (2026-06-16)
40
- - (BenAhrdt) Write publishIds and subscribedTopics delayed
41
-
42
43
  [Older changes can be found there](CHANGELOG_OLD.md)
43
44
 
44
45
  ## License
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "lorawan",
4
- "version": "1.22.24",
4
+ "version": "1.22.25",
5
5
  "news": {
6
+ "1.22.25": {
7
+ "en": "Change Assignhandler for case intensive Check\nAdd subAssign for a part of name",
8
+ "de": "Ändern Sie den Zuweisungshandler für die fallintensive Prüfung.\nFüge Unterzuweisung für einen Teil des Namens hinzu",
9
+ "ru": "Изменить обработчик назначений для проверки с интенсивным использованием регистров.\nДобавить подназначение для части имени",
10
+ "pt": "Alterar o Assignhandler para verificação que exige alta sensibilidade a maiúsculas e minúsculas.\nAdicionar subatribuição para uma parte do nome",
11
+ "nl": "Wijzig de Assignhandler voor case-intensieve controles.\nVoeg een subtoewijzing toe voor een deel van de naam.",
12
+ "fr": "Modifier le gestionnaire d'affectation pour la vérification intensive des cas\nAjouter une sous-affectation pour une partie du nom",
13
+ "it": "Cambia Assegnatore gestore per controllo intensivo dei casi\nAggiungi subAssegna per una parte del nome",
14
+ "es": "Modificar Assignhandler para comprobación intensiva de casos\nAgregar subAsignación para una parte del nombre",
15
+ "pl": "Zmień Assignhandler na kontrolę intensywnie wykorzystującą przypadek\nDodaj podprzypisanie dla części nazwy",
16
+ "uk": "Змінити обробник присвоєння для перевірки з інтенсивним виконанням регістрів\nДодати subAssign для частини імені",
17
+ "zh-cn": "更改案例密集型检查的分配处理程序\n为名称的一部分添加子分配"
18
+ },
6
19
  "1.22.24": {
7
20
  "en": "Add Absolute Humidity to device_class",
8
21
  "de": "Füge der Geräteklasse die absolute Luftfeuchtigkeit hinzu.",
@@ -80,19 +93,6 @@
80
93
  "pl": "Test durch fehlerhaften git commit",
81
94
  "uk": "Тест дюх fehlerhaften git commit",
82
95
  "zh-cn": "测试 fehlerhaften git 执行"
83
- },
84
- "1.22.18": {
85
- "en": "Testversion, ohne info. schreiben",
86
- "de": "Testversion, ohne Info. schreiben",
87
- "ru": "Тестирование, ohne info. schreiben",
88
- "pt": "Testversion, ohne info. schreiben",
89
- "nl": "Testversie, ohne info. schreiben",
90
- "fr": "Testversion, ohne info. schreiben",
91
- "it": "Testversion, ohne info. schreiben",
92
- "es": "Testversion, ohne info. schreiben",
93
- "pl": "Testversion, ohne info. schreiben",
94
- "uk": "Тестування, ohne info. schreiben",
95
- "zh-cn": "Testversion, ohne info. schreiben (英语)"
96
96
  }
97
97
  },
98
98
  "titleLang": {
@@ -757,12 +757,62 @@ class assignhandlerClass {
757
757
  },
758
758
  },
759
759
  };
760
+
761
+ this.subAssign = {
762
+ Weight: {
763
+ approvedFolders: {
764
+ 'uplink.decoded': {
765
+ assignfunction: this.commonAssign,
766
+ common: {
767
+ role: 'value.weight',
768
+ unit: 'kg',
769
+ },
770
+ },
771
+ },
772
+ },
773
+ WeightGramm: {
774
+ approvedFolders: {
775
+ 'uplink.decoded': {
776
+ assignfunction: this.commonAssign,
777
+ common: {
778
+ role: 'value.weight',
779
+ unit: 'g',
780
+ },
781
+ },
782
+ },
783
+ },
784
+ };
760
785
  }
761
786
 
762
787
  /*********************************************************************
763
788
  * ********************* Execution of Assigns ***********************
764
789
  * ******************************************************************/
765
790
 
791
+ /**
792
+ * @param statename name of the state to find an assign for
793
+ */
794
+ getAssign(statename) {
795
+ if (Object.hasOwn(this.assign, statename)) {
796
+ return this.assign[statename];
797
+ }
798
+
799
+ const lowerStatename = statename.toLowerCase();
800
+ const assignKey = Object.keys(this.assign).find(key => key.toLowerCase() === lowerStatename);
801
+ return assignKey ? this.assign[assignKey] : this.getSubAssign(statename);
802
+ }
803
+
804
+ /**
805
+ * @param statename name of the state to find a sub assign for
806
+ */
807
+ getSubAssign(statename) {
808
+ const lowerStatename = statename.toLowerCase();
809
+ const subAssignKey = Object.keys(this.subAssign)
810
+ .filter(key => lowerStatename.includes(key.toLowerCase()))
811
+ .sort((a, b) => b.length - a.length)[0];
812
+
813
+ return subAssignKey ? this.subAssign[subAssignKey] : undefined;
814
+ }
815
+
766
816
  /**
767
817
  * @param id id wich is assignable
768
818
  * @param value value of the assignable id
@@ -465,17 +465,15 @@ class directorieshandlerClass {
465
465
  }
466
466
 
467
467
  // Check for assign (new implemented function)
468
- if (this.assignhandler.assign[elementName] && !options?.dontAssign) {
468
+ const assignData = this.assignhandler.getAssign(elementName);
469
+ if (assignData && !options?.dontAssign) {
469
470
  // Check for logging
470
471
  this.adapter.log[this.adapter.logtypes.assignHandler]?.(
471
472
  `the state with the id ${objectId} will be assigned by internal assign function assignHandler`,
472
473
  );
473
- stateVal = this.assignhandler.executeAssign(
474
- objectId,
475
- stateVal,
476
- this.assignhandler.assign[elementName],
477
- { common: common },
478
- );
474
+ stateVal = this.assignhandler.executeAssign(objectId, stateVal, assignData, {
475
+ common: common,
476
+ });
479
477
  }
480
478
  common.read = common.role !== 'button';
481
479
  common.def =
@@ -518,17 +518,13 @@ class messagehandlerClass {
518
518
  }
519
519
  */
520
520
  // Check for assign (new implemented function)
521
- if (this.assignhandler.assign[downlinkParameter.name] && !options?.dontAssign) {
521
+ const assignData = this.assignhandler.getAssign(downlinkParameter.name);
522
+ if (assignData && !options?.dontAssign) {
522
523
  // Check for logging
523
524
  this.adapter.log[this.adapter.logtypes.fillWithDownlink]?.(
524
525
  `the state with the id ${stateId} will be assigned by internal assign function`,
525
526
  );
526
- this.assignhandler.executeAssign(
527
- stateId,
528
- false,
529
- this.assignhandler.assign[downlinkParameter.name],
530
- { common: common },
531
- );
527
+ this.assignhandler.executeAssign(stateId, false, assignData, { common: common });
532
528
  }
533
529
  // Query for base device and parameter push or replace
534
530
  if (downlinkDevice === this.adapter.downlinkConfighandler.internalDevices.baseDevice) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.lorawan",
3
- "version": "1.22.24",
3
+ "version": "1.22.25",
4
4
  "description": "converts the desired lora gateway data to a ioBroker structure",
5
5
  "author": {
6
6
  "name": "BenAhrdt",