Restore vom Backitup: Problem mit VIS-Instanzen zeigen falsche Versionsnummern und Icons
nachdem ich auf einem neuen System den Restore gemacht habe, haben alle Instanzen der Adapter, die mit VIS- im Namen beginnen, die gleiche Version und das gleiche Icon wie die Instanz VIS selber.
Also z.B.: alle VIS-Material Instanzen haben das Icon von VIS und die Version 1.4.12
Auf meinem Source System, von dem ich das Backup gemacht habe, sind die Instanzen richtig.
Alle Adapter und JS-Controller im latest.
Interimslösung : iob upload all machen
Nach dem iobroker Install mit
curl -sL https://iobroker.net/install.sh | bash -
Used repository: beta Adapter "admin" : 5.3.1 , installed 5.3.1 Adapter "backitup" : 2.3.3 , installed 2.3.3 Adapter "discovery" : 2.8.0 , installed 2.7.5 [Updatable] Controller "js-controller": 4.0.15 , installed 4.0.15
iob list adapter zeigt
system.adapter.vis-material : vis-material - v0.1.3
also richtig, im objekt material steht aber 1.4.12. genauso wie der VIS Adapter
{ "_id": "system.adapter.vis-material.0", "type": "instance", "common": { "name": "vis", "version": "1.4.12", "title": "material widgets", "desc": { "en": "Graphical user interface for iobroker", "de": "Grafische Benutzeroberfläche für iobroker", "ru": "Графический пользовательский интерфейс для iobroker", "pt": "Interface gráfica do usuário para iobroker", "fr": "Interface utilisateur graphique pour iobroker", "nl": "Grafische gebruikersinterface voor iobroker", "it": "Interfaccia utente grafica per iobroker", "es": "Interfaz gráfica de usuario para iobroker", "pl": "Graficzny interfejs użytkownika dla iobroker", "zh-cn": "iobroker的图形化用户界面" }, "platform": "Javascript/Node.js", "icon": "vis.png", "enabled": false, "mode": "once", "extIcon": "https://raw.githubusercontent.com/iobroker/iobroker.vis/master/admin/vis.png", "keywords": [ "DashUI", "GUI", "graphical", "scada" ], "readme": "https://github.com/iobroker/iobroker.vis/blob/master/README.md", "authors": [ "bluefox <[email protected]>" ], "localLink": "%web_protocol%://%ip%:%web_port%/vis/edit.html", "license": "CC-BY-NC-4.0", "dependencies": [ { "web": ">=3.0.12" }, { "js-controller": ">=2.0.0" } ], "onlyWWW": true, "noConfig": false, "singleton": true, "type": "visualization", "restartAdapters": [ "vis" ], "installedFrom": "[email protected]", "installedVersion": "1.4.12", "host": "raspberrypi", "loglevel": "warn", "titleLang": { "en": "Visualisation", "de": "Visualisierung", "ru": "Визуализация", "pt": "Visualização", "nl": "Visualisatie", "fr": "Visualisation", "it": "Visualizzazione", "es": "Visualización", "pl": "Wizualizacja", "zh-cn": "可视化" }, "localLinks": { "_default": "%web_protocol%://%ip%:%web_port%/vis/edit.html" }, "serviceStates": "lib/states.js", "connectionType": "local", "dataSource": "push", "tier": 3, "adminUI": { "config": "materialize" }, "compact": true, "materialize": true, "welcomeScreen": { "link": "vis/index.html", "name": "vis runtime", "img": "vis/img/favicon.png", "color": "#ffe9c8", "order": 0 }, "welcomeScreenPro": { "link": "vis/edit.html", "name": "vis editor", "img": "vis/img/faviconEdit.png", "color": "#c8ffe1", "order": 1 } }, "native": { "dependencies": [], "defaultFileMode": 1604, "license": "", "useLicenseManager": 0 }, "from": "system.host.raspberrypi.cli", "ts": 1645877808521, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "user": "system.user.admin", "protectedNative": [], "encryptedNative": [], "notifications": [], "instanceObjects": [ { "_id": "", "type": "meta", "common": { "name": "user files and images for vis", "type": "meta.user" }, "native": {} }, { "_id": "control", "type": "channel", "common": { "name": "Control vis" }, "native": {} }, { "_id": "control.instance", "type": "state", "common": { "name": "Control vis", "type": "string", "desc": "Write here browser instance ID to control or 'FFFFFFFF' to control all instances" }, "native": {} }, { "_id": "control.command", "type": "state", "common": { "name": "Command for vis", "type": "string", "desc": "Writing this variable act as the trigger. Instance and data must be preset before 'command' will be written. 'changedView' will be signalled too", "states": { "alert": "alert", "changeView": "changeView", "refresh": "refresh", "reload": "reload", "dialog": "dialog", "popup": "popup", "playSound": "playSound", "changedView": "changedView", "tts": "tts" } }, "native": {} }, { "_id": "control.data", "type": "state", "common": { "name": "Data for control vis", "type": "string", "desc": "Used for: alert, changeView, dialog, popup, playSound, changedView" }, "native": {} } ], "objects": [] }
Only redis is affected and the change might haves bigger side effects and need Tonne considered carefully.
Workaround is „iob upload all“
The issue is more or less, the string comparison of startkey endkey done in Lua. Lua does string comparison based on locale settings, it seems to work correctly with
sudo localectl set-locale LANG=C
However, we have to further investigate how we want to fix this.
so the solution with less impact is to configure the environment of the systemd redis-server e.g./usr/lib/systemd/system/redis-server.service and set Environment="LANG=C"
Furthermore, we can detect this by sending a small script e.g. in setup to the redis server
EVAL "return 'c-i.t' >= 'c.' and 'c-i.t' < 'c.香'" 1 1
if it returns 1, the bug is existent. Then, we will link the user a short documentation on how to fix this.
https://forum.iobroker.net/topic/52976/wichtiger-hinweis-f%C3%BCr-redis-installationen
So whats left to do, is to print out a note on iob setup run if the system is affected by this unintended behavior.
Yes
Idea from Core chat: Check on controller start and if affected add a system notification