NEWS
Test ioBroker unter Windows installieren - 2022 Edition
-
Danke für Deine Anwort.
- Neue Installation mit mit neuer Windows "Installer.exe".
- iobroker läuft.
- iobroker stop
- Überschreiben von iobroker-data mit einer gesicherten Version von einem anderen PC (Versionen sind aktuell).
5.iobroker start - Nach der üblichen Wartezeit läuft iobroker einwandfrei.Scheinbar.
Jetzt tauchen 2 Fehler auf.
- Backup mit "Backitup" funktioniert. Backup mit iobroker "backup" produziert folgende Meldung:
c:\ioBroker> iobroker backup
host.EG Cannot read config file: Cannot read properties of undefined (reading 'hostname')
host.EG 20445 states saved
host.EG 30253 objects saved
Backup created: c:\ioBroker\backups\2022_11_20-12_23_02_backupiobroker.tar.gzRestore mit "Backitup" funktioniert nicht. Restore mit "iobroker restore 0" produziert folgende Meldung:
c:\ioBroker> iobroker restore 0
host.Dieter Using backup file iobroker_2022_11_14-19_20_10_backupiobroker.tar.gz
iobroker controller daemon is not running
host.Dieter OK.
Uncaught Rejection: TypeError: Cannot read properties of undefined (reading 'hostname')
at BackupRestore._restoreAfterStop (c:\ioBroker\node_modules\iobroker.js-controller\lib\setup\setupBackup.js:696:52)
at Daemon.<anonymous> (c:\ioBroker\node_modules\iobroker.js-controller\lib\setup\setupBackup.js:1128:49)
at Daemon.emit (node:events:539:35)
at Daemon.emit (node:domain:475:12)
at Daemon._kill (c:\ioBroker\node_modules\daemonize2\lib\daemonize.js:246:14)
at Daemon.stop (c:\ioBroker\node_modules\daemonize2\lib\daemonize.js:185:17)
at c:\ioBroker\node_modules\iobroker.js-controller\lib\setup\setupBackup.js:1132:24
at processTicksAndRejections (node:internal/process/task_queues:96:5)
This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:
TypeError: Cannot read properties of undefined (reading 'hostname')
at BackupRestore._restoreAfterStop (c:\ioBroker\node_modules\iobroker.js-controller\lib\setup\setupBackup.js:696:52)
at Daemon.<anonymous> (c:\ioBroker\node_modules\iobroker.js-controller\lib\setup\setupBackup.js:1128:49)
at Daemon.emit (node:events:539:35)
at Daemon.emit (node:domain:475:12)
at Daemon._kill (c:\ioBroker\node_modules\daemonize2\lib\daemonize.js:246:14)
at Daemon.stop (c:\ioBroker\node_modules\daemonize2\lib\daemonize.js:185:17)
at c:\ioBroker\node_modules\iobroker.js-controller\lib\setup\setupBackup.js:1132:24
at processTicksAndRejections (node:internal/process/task_queues:96:5)Das war Fehler Nr.1
Fehler Nr. 2 betrifft "vis.0" (Visualisierung) Bei Aufruf von "vis0" erscheint wie gewohnt die Arbeitsfläche. Alle vorhandenen Widgets funktioneren einwadfrei. Wird ein neues Wiget auf die Arbeitsfläche gezogen, so läßt es sich nicht speichern und nicht löschen. Wird die Arbeitsfläche neu geladen ist das neue Widget nicht mehr vorhanden. Gleiches gilt auch für die Views.
Ich hoffe das ich es einigermaßen erklägt habe.
-
@uwerlp
Ich hatte vergessen zu erwähnen, das sich auch die vorhandenen Widgets nicht bearbeiten lassen. -
@willi5 sagte in Test ioBroker unter Windows installieren - 2022 Edition:
- iobroker läuft.
- iobroker stop
Und iobroker war auch wirklich gestoppt? Hast du geprüft mit
iobroker status
bzw.
iobroker status all
Bei mir braucht iobroker recht lange bis alle Adapter wirklich gestoppt sind.
- Überschreiben von iobroker-data mit einer gesicherten Version von einem anderen PC (Versionen sind aktuell).
Mein Vorgehen war dahingehend anderst. Ich habe das vorhandene Verzeichnis der neuen Installation umbenannt durch anhängen von .bak und dann das der alten Installation kopiert.
Möglich das du jetzt eine Vermischung von Neu und Alt hast?- Backup mit "Backitup" funktioniert. Backup mit iobroker "backup" produziert folgende Meldung:
Backup Erstellung erfolgt bei mir mit beiden ohne Fehlermeldung.
Ein Restore habe ich noch nicht versucht, kann dazu also nichts sagen. -
@uwerlp
Iobroker war gestoppt
Vermischung von neu und alt scheidet ebenfalls aus, da ich vom Verzeichnis iobroker-data mehre Exemplare habe. Inzwischen bin ich seit 3 Tagen dabei. -
Können meine Probleme mit Windows 11 zusammen hängen?
So funktioniert der Befehl "iobroker restore 0" nicht mehr. Statt dessen muss er jetzt so aussehen: ".\iobroker restore 0" oder ".\iobroker backup". -
@willi5 hi, gute Frage, keine Ahnung. Ich nutze kein Windows mit iobroker. Hast du mal gegoogelt ob sowas generell mit bat files bzw binaries da jetzt ein Thema ist?
Edit: scheint PowerShell zu sein - https://superuser.com/questions/1373012/avoid-dot-backslash-windows-10-powershell
Edit2: Jupp —> https://support.microsoft.com/en-us/windows/command-prompt-and-windows-powershell-for-windows-11-6453ce98-da91-476f-8651-5c14d5777c20
Dein Problem an sich war ja das Windows gemeckert hat wegen gelockten files Bzw da da files nicht überschrieben werden konnten. Korrekt? Wüsste jetzt nicht wie diese Themen zusammenhängen sollten.
-
@willi5 zu Backup: welcher js-controller ist es denn? Wie sieht die iobroker.json aus im Verzeichnis iobroker-Data aus?
Zu Vis: kommt vllt ein Fehler „verbindungsfehler“ oben rechts im Eck? Bitte prüfen das in Web Instanz die für den Editor genutzt wird die „reine websockets nutzen“ angehakt ist. Tuts danach?
-
@willi5 sagte in Test ioBroker unter Windows installieren - 2022 Edition:
@apollon77
So funktioniert der Befehl "iobroker restore 0" nicht mehr. Statt dessen muss er jetzt so aussehen: ".\iobroker restore 0" oder ".\iobroker backup".Du benutzt die Windows PowerShell und nicht die klassische Eingabeaufforderung.
Du solltest die Eingabeaufforderung ohne Admin rechte benutzen, eventuell sind hier die Fehler bei dir begründet? -
@uwerlp siehe oben. Scheint die neue default Shell zu sein. Meine Vermutung ist aber das das drei disjunkte Themen sind. Aber warten wir mal die Antwort auf meine Fragen oben ab.
-
@apollon77 sagte in Test ioBroker unter Windows installieren - 2022 Edition:
Scheint die neue default Shell zu sein.
Habe hier einen Win 11 Rechner (nicht für ioBroker, der läuft noch auf Win 10 Pro).
Bei "shell" oder "cmd" kommt noch die alte "Dos-Box"
die Windows Power Shell muss mit "power shell" aufgerufen werden -
@klassisch Unter Windows 10 mit einem Rechtsklich auf Start wird auch default die PowerShell angeboten. Dies läßt sich aber unter "Einstellungen/Personalisierung/Taskleiste" umstellen auf die klassische Eingabeaufforderung, ob das auch noch bei Windows 11 geht weis ich jetzt nicht.
-
@klassisch Liess mal den Link oben ... Scheinbar ab "Oktober 2022 Update" geändert worden ... Ich hab kein Windows 11 ... oder hast DU das auch drauf? Aber sein Effekt wäre genau dadurch begründet
-
@apollon77 Ich halte es mit Updates konservativ. Nur safety Updates und ansonsten so spät wie möglich.
22H2 ist bei keinem meiner Rechner drauf.- Mein Win 11 Home (office, nicht ioBroker) 10.0.22000 Build 22000
- Mein produktiv ioBroker Win 10 Pro 10.0.19044 Build 19044
- Bakckup Kandidat (der RFLink Adapter nicht bauen kann) Win 10 Pro 10.0.19044 Build 19044
-
@uwerlp Ja, Rechtsklick auf Start und dann Ausführen öffnet bei Win 10 Pro und Win 11 Home die Powershell.
Mache ich aber bisher nicht, weil cmd schneller geschrieben ist als in der Optionsliste gesucht -
Danke für Deine Anwort.
Zuerst die gute Nachricht. Bei der Webinstanz war „reine websockets nutzen“ nicht angehakt. Mit Haken läuft es. Nochmals Danke.js-controller: 4.0.23
Inhalt der iobroker.json{ "network": { "IPv4": true, "IPv6": true, "bindAddress": null, "useSystemNpm": true }, "objects": { "type": "file", "typeComment": "Possible values: 'file' - [port 9001], redis - [port 6379], couch - [port 5984].", "host": "127.0.0.1", "port": 9001, "user": "", "pass": "", "noFileCache": false, "connectTimeout": 2000, "options": { "auth_pass": null, "retry_max_delay": 5000 } }, "states": { "type": "file", "typeComment": "Possible values: 'file' - [port 9000], 'redis' - [port 6379].", "host": "127.0.0.1", "port": 9000, "options": { "auth_pass": null, "retry_max_delay": 5000 } }, "log": { "level": "info", "maxDays": 7, "transport": { "file1": { "type": "file", "enabled": true, "filename": "log/iobroker", "fileext": ".log", "maxsize": null, "maxFiles": null } } }, "dataDirComment": "Always relative to iobroker.js-controller/", "dataDir": "../../iobroker-data/" }
Bei Benutzung von "backitup" funktioniert das Erzeugen der Backup-Datei. Das Einlesen jedoch nicht. Mit der Terminaleingabe funktioniert backup und restore mit der neuen Befehlsvariante. Dies gilt nur mit, in dieser Instanz, erzeugten Backups. Backups aus früheren Instanzen produzieren folgende Fehlermeldung:
"Uncaught Rejection: TypeError: Cannot read properties of undefined (reading 'hostname')"Mit Windows hat man es hier schwer.
Das Theater wurde von einem Systemcrash ausgelöst. Geblieben ist mir nur eine "iobroker-data. Ich habe dann eine neue Instanz mit "iobroker-installer.exe" installiert. Dann die alte "iobroker-data drüber kopiert. VIS läuft ja jetzt wieder. Backups lassen sich per Terminal erzeugen. aber nicht einspielen, ebenso wie Backups aus früheren Instanzen.
-
@willi5 ja da fehlen Dinge in der iobroker.json. Adde mal mindestens den „system“ teil wie hier https://github.com/ioBroker/ioBroker.js-controller/blob/master/packages/controller/conf/iobroker-dist.json#L2
Weiter bitte ein issue im js-Controller repo anlegen weil Backup und restore sollte aufginge system block gehen. Pack die ausgaben von Backup und restore von oben rein.
-
@apollon77
Das ist die "iobroker.json" aus der Installation, die mit dem alten Verzeichnis "iobroker-dat" überschrieben wurde.
Die folgende Version stammt aus einer frischen Installation auf einem 2. PC{ "system": { "memoryLimitMB": 0, "hostname": "", "statisticsInterval": 15000, "// statisticsInterval": "Interval how often the counters for input/output in adapters and controller will be updated", "checkDiskInterval": 300000, "// checkDiskInterval": "Interval how often the disk size will be checked", "instanceStartInterval": 2000, "// noChmod": "Flag to test new feature with no chmod call. Must be deleted later and noChmod must be mainline (2018.06.04)", "compact": false, "// compact": "Controller will try to start the instances as a part of the same process. No spawn will be done. Only by adapters that support it and have flag compact flag in io-package.json", "allowShellCommands": false, "// allowShellCommands": "Allow execution of \"shell\" sendToHost commands", "memLimitWarn": 100, "// memLimitWarn": "If the available RAM is below this threshold on adapter start, a warning will be logged.", "memLimitError": 50, "// memLimitError": "If the available RAM is below this threshold on adapter start, an error will be logged." }, "multihostService": { "enabled": false, "secure": true, "password": "" }, "objects": { "type": "jsonl", "// type": "Possible values: 'file' - [port 9001], 'jsonl' - [port 9001], 'redis' - [port 6379 or 26379 for sentinel].", "host": "127.0.0.1", "port": 9001, "noFileCache": false, "maxQueue": 1000, "connectTimeout": 5000, "writeFileInterval": 5000, "dataDir": "", "options": { "auth_pass": null, "retry_max_delay": 5000, "retry_max_count": 19, "db": 0, "family": 0 }, "backup": { "disabled": false, "files": 24, "// files": "Minimal number of backup files, after the deletion will be executed according to backupTime settings", "hours": 48, "// hours": "All backups older than 48 hours will be deleted. But only if the number of files is greater than of backupNumber", "period": 120, "// period": "by default backup every 2 hours. Time is in minutes. To disable backup set the value to 0", "path": "", "// path": "Absolute path to backup directory or empty to backup in data directory" }, "jsonlOptions": { "// autoCompress (1)": "The JSONL DB is append-only and will contain unnecessary entries after a while.", "// autoCompress (2)": "It will be compressed when the uncompressed size is >= size * sizeFactor AND >= sizeFactorMinimumSize", "// autoCompress (3)": "Note that too low values here will cause the DB to be rewritten often.", "autoCompress": { "sizeFactor": 2, "sizeFactorMinimumSize": 25000 }, "// ignoreReadErrors": "If single lines in the DB are corrupted, they can be ignored without losing the whole DB.", "ignoreReadErrors": true, "// throttleFS (1)": "By default, the database immediately writes to the database file. Write accesses can be reduced using the throttleFS option.", "// throttleFS (2)": "Be aware that buffered changes will be lost in case the process crashes.", "throttleFS": { "// intervalMs": "Write to the database file no more than every intervalMs milliseconds.", "intervalMs": 60000, "// maxBufferedCommands": "Force writing after this many changes have been buffered. This reduces memory consumption and data loss in case of a crash.", "maxBufferedCommands": 100 } } }, "states": { "type": "jsonl", "// type": "Possible values: 'file' - [port 9000], 'redis' - [port 6379].", "host": "127.0.0.1", "port": 9000, "connectTimeout": 5000, "writeFileInterval": 30000, "dataDir": "", "options": { "auth_pass": null, "retry_max_delay": 5000, "retry_max_count": 19, "db": 0, "family": 0 }, "backup": { "disabled": false, "files": 24, "// files": "Minimal number of backup files, after the deletion will be executed according to backupTime settings", "hours": 48, "// hoursC": "All backups older than 48 hours will be deleted. But only if the number of files is greater than of backupNumber", "period": 120, "// period": "by default backup every 2 hours. Time is in minutes. To disable backup set the value to 0", "path": "", "// path": "Absolute path to backup directory or empty to backup in data directory" }, "jsonlOptions": { "// autoCompress (1)": "The JSONL DB is append-only and will contain unnecessary entries after a while.", "// autoCompress (2)": "It will be compressed when the uncompressed size is >= size * sizeFactor AND >= sizeFactorMinimumSize", "// autoCompress (3)": "Note that too low values here will cause the DB to be rewritten often.", "autoCompress": { "sizeFactor": 10, "sizeFactorMinimumSize": 50000 }, "// ignoreReadErrors": "If single lines in the DB are corrupted, they can be ignored without losing the whole DB.", "ignoreReadErrors": true, "// throttleFS (1)": "By default, the database immediately writes to the database file. Write accesses can be reduced using the throttleFS option.", "// throttleFS (2)": "Be aware that buffered changes will be lost in case the process crashes.", "throttleFS": { "// intervalMs": "Write to the database file no more than every intervalMs milliseconds.", "intervalMs": 60000, "// maxBufferedCommands": "Force writing after this many changes have been buffered. This reduces memory consumption and data loss in case of a crash.", "maxBufferedCommands": 2000 } } }, "log": { "level": "info", "maxDays": 7, "noStdout": true, "transport": { "file1": { "type": "file", "enabled": true, "filename": "log/iobroker", "fileext": ".log", "maxSize": null, "maxFiles": null }, "syslog1": { "type": "syslog", "enabled": false, "host": "localhost", "// host": "The host running syslogd, defaults to localhost.", "// port": "The port on the host that syslog is running on, defaults to syslogd's default port(514/UDP).", "protocol": "udp4", "// protocolC": "The network protocol to log over (e.g. tcp4, udp4, unix, unix-connect, etc).", "// path": "The path to the syslog dgram socket (i.e. /dev/log or /var/run/syslog for OS X).", "// facility": "Syslog facility to use (Default: local0).", "localhost": "iobroker", "// localhost": "Host to indicate that log messages are coming from (Default: localhost).", "// sysLogType": "The type of the syslog protocol to use (Default: BSD).", "// app_name": "The name of the application (Default: process.title).", "// eol": "The end of line character to be added to the end of the message (Default: Message without modifications)." }, "seq1": { "type": "seq", "enabled": false, "serverUrl": "http://IP:PORT", "// serverUrl": "The http(s) URL including port of the seq server. If you use HTTPS a real certificate is needed; self signed certs are ot accepted.", "apiKey": "", "// apiKey": "The apiKey of the seq system" } } }, "// dataDir": "Always relative to iobroker.js-controller/", "plugins": {}, "dataDir": "../../iobroker-data/" }
Ich hoffe, ich habe das Issue im im js-Controller einigermaßen verständlich abgelegt.
Wenn nicht bitte meckern. Da ich mit diesem Thema seit einigen Tagen rund um die Uhr beschäftigt bin, kann es sein, das ich ein wenig neben der Spur bin. -
@willi5 ja hast du. Alles gut. Und war schon bekannt Bzw wird in Zukunft gefixt sein.
Und von oben Nummern ganzen „System“ Block. Der fehlt bei dir.
-
@apollon77
Danke für Deine Mühe!!! -
@apollon77
OK, da ich hier noch 'ne Windows-Kiste rumstehen habe, dachte ich mir: Versuch mal Dein Glück.Erster Versuch:
Mit einem bereits installierten Node 16.18.1 passiert gar nix - außer dass ein Verzeichnis "C:\ioBroker" angelegt wird, das genau die berühmten 3 Dateien enthält. Auch nach mehreren Versuchen.
Zweiter Versuch:
OK, also Node wieder runtergeschmissen und den Installer erneut angeschmissen.
Beim ersten Durchlauf wird auch wieder das Verzeichnis mit den 3 Dateien erzeugt.
Nach dem zweiten (und weiteren Durchläufen) bin ich schon mal ein Stückchen weiter:
Aber noch nicht wirklich am Ziel, denn hier ist Ende der Fahnenstange.Dritter Versuch
ioBroker wieder runtergeworfen und versucht von Hand zu installieren.
Vielleicht wird ja jemand schlau daraus:
Hier das Ende des Log:
Mir ist völlig klar, dass ioBroker eigentlich eher unter Linux betrieben werden sollte.
Hab' ich ja auch - und der läuft zu meiner völligen Zufriedenheit.Was ich unter Windows besonders suboptimal finde: Die Dokumentation ist inkonsistent und verwirrend.
Es gibt zum Einen diesen Thread hier.
Zum anderen gibt's die "offizielle" Webseite. Diese enthält einen völlig anderen Installer (welcher ist denn nun der richtige?) und völlig abweichende Instruktionen.
Und in meinem Installationsverzeichnis unter Windows finde ich eine ReadmeC:\ioBroker\README.md
, die wieder gänzlich andere (vermutlich veraltete) Instruktionen enthält.
Kann mir da mal jemand Licht ans Fahrrad machen?