NEWS
HABPanel und "Switch dashboard with item value"
-
Hallo zusammen,
kann mir jemand erklären, wie man im HabPanel die o.g. Funktion nutzt? Bei den Panel Settings ist das entsprechende Pull-Down Menü leer und ich kann da auch nichts eintragen...
Danke!Gruß
SuperElmi -
@SuperElmi FUP!
-
@superelmi Hast du das Problem gelöst? Habe gerade das selbe Problem und schon vieles versucht…
-
@lucas-wolfer schließe mich an... gleiches Problem... hast du eine Idee?
-
@graf_hektisch
Hallo, hat inzwischen jemand eine funktionierende Anwort gefunden? Ich wäre sehr dankbar!
Oder einen anderen Weg entdeckt, wie ich bei der Kombination iobroker-HABpanel mit einem selbstprogrammierten Button / Widget das Dashboard gezielt wechseln kann? Das hat mich jetzt zwei Tage gekostet, gefunden habe ich aber nichts. -
Ja es geht, aber es bedarf einiger Anpassungen. Dazu müssen einige Dateien editiert werden. Dies kann mit der Admin-Oberfläche von iobroker erledigt werden.
Datei: habpanel/app/settings/settings.html:
Ungefähr in Zeile 125 steht:<select ng-model="settings.dashboard_control_item" ng-change="vm.saveOptions()" ng-options="item.name as item.name for item in items | filter: vm.isStringItem " class="form-control">
Der Filter
| filter: vm.isStringItem
muss gelöscht werden. Hintergrund ist, dass das originale OpenHAB in $rootSope.items ein Array liefert, das gefiltert werden kann. ioBroker liefert aber ein Object. Die Liste ist zwar sehr lang, aber vermutlich steht die gewünschteVariable eh in 0:userdata, so dass das mehrmalige tippen einer Null reicht, um das gewünschte Element zu erreichen.
Wer plant, die Sprachausgabe zu benutzen, kann einige Zeilen darüber gleich den Filter bei der speech_synthesis_item mit entfernen.
Datei: habpanel/app/dashboard/dashboard.view.controller.js
Ungefähr in Zeile 50 wird die Function activate definiert:function activate() { $timeout(function() { OHService.reloadItems(); OHService.getLocale(); });
Das ist zu ändern in:
$timeout(function() { OHService.reloadItems(); OHService.getLocale(); // subscribe to dashboard control and send id back to ioBroker if ($rootScope.settings.dashboard_control_item) { OHService.getItem($rootScope.settings.dashboard_control_item); OHService.sendCmd($rootScope.settings.dashboard_control_item, dashboard.id); } // subscibe to speech control if ($rootScope.settings.speech_synthesis_item) { OHService.getItem($rootScope.settings.speech_synthesis_item); } });
Hintergrund ist hier, dass ein Object, das von ioBroker geholt werden soll, auch registriert werden muss und dass wird damit zu Beginn jedes einzelnen Dashboards gemacht. Vermutlich würde auch einmal zentral reichen.
Zusätzliches Feature ist hier die Zeile
OHService.sendCmd($rootScope.settings.dashboard_control_item, dashboard.id);
Diese meldet das gestartete Dashboard an die Variable in ioBroker zurück und ist damit für weitere Automatisierungen verfügbar.