Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. js-controller 2.0 ab sofort im Latest Repo

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    js-controller 2.0 ab sofort im Latest Repo

    This topic has been deleted. Only users with topic management privileges can see it.
    • apollon77
      apollon77 last edited by apollon77


      Überblick über einige der neuen Features


      1. 0_userdata.0 als offizieller Platz für eigene Dateien, Objekte und States

      Eine oft gestellt Frage war, wo man eigene Objekte und States unterbingen kann, oder auch wo eigene Grafiken für Visualisierungen abgelegt werden sollen.
      Ab sofort existiert mit 0_userdata.0 ein Platz dafür. Ein Beispiel-State ist bereits angelegt, welche problemlos gelöscht oder angepasst werden kann.

      Wichtig Wer seine States bisher in javascript.X ablegt und das für die eigenen Bedürfnisse ausreicht, kann dies weiterhin ohne Probleme genutzt werden. Wer jedoch seine Skripte auf mehrere Javascript-Instanzen verteilt braucht vllt einen besseren Platz, wie 0_userdata.0 🙂

      Dateien können über den vis-Uploader (ab Version 1.2.2TBD) und die Kommandozeilen-Tools hochgeladen werden. Ein manuelles reinkopieren von Dateien in den Ordner wird nicht funktionieren.
      Alle Dateien und Objekte sind natürlich auch vom Backup enthalten.
      Wer bisher eigene Dateien in vis.0 oder (per IQontrol Upload-Tool) iqontrol.meta gespeichert hat kann das natürlich ebenfalls weiterhin nutzen.

      2. Compact Modus und Compact Gruppen

      Eines der großen Vorteile von ioBroker ist, dass jeder Adapter als eigener Prozess ausgeführt wird. Das macht das System sehr stabil - bei Problemen betreffen diese nur den einen Adapter und nicht das ganze System. Andererseits benötigt dieser Ansatz allerdings auch etwas mehr RAM. Für Systeme mit wenig verfügbarem RAM (z.B. Raspi Nano oder Raspi 1 mit 512MB RAM), die oft als Slave-Systeme eingesetzt werden, ist die Anzahl der Adapter damit limitiert.

      Der Compact Modus löst dieses Problem dadurch, dass mehrere Adapter zusammen in einem Prozess laufen und damit der RAM-Bedarf deutlich geringer ist (es werden etwa 20-30MB je Adapter-Instanz eingespart). Dies geht aber zu Lasten der Stabilität, da ein fehlerhafter Adapter auch alle anderen Adapter im gleichen Prozess betrifft und diese sich ggf. ebenfalls neu starten.

      Adapter-Instanzen können dazu, um das Risiko etwas zu verteilen, in mehrere Gruppen aufgeteilt werden. Jede Gruppe startet einen eigenen Prozess, in dem dann alle Instanzen dieser Gruppe ausgeführt werden. Die Gruppe 0 ist speziell. Hier Mitglied zu sein bedeutet, dass der betreffende Adapter im Haupt-js-controller-Prozess ausgeführt wird. Dies ergibt die größte RAM-Ersparnis - allerdings auch das größte Risiko, da ein fehlerhafter Adapter den js-controller negativ beeinflussen kann. Als Standard werden Instanzen in der Gruppe 1 ausgeführt, wenn der Compact Modus für die entsprechende Instanz aktiviert wird.

      Ob ein Adapter den Compact Modus unterstützt, hängt vom jeweiligen Adapter ab. Diese Information wird künftig noch in der Adapterliste aufgenommen. Aktuell werden nur Adapter die als daemon ausgeführt werden auch im Compact Modus gestartet (also keine scheduled-Adapter). Auch wenn der Adapter generell den Compact-Mode unterstützt muss die Nutzung pro Instanz einzeln aktiviert werden!

      Zur Zeit gibt es zur Konfiguration des Compact Modus noch keine Unterstützung im Admin. Die Konfiguration erfolgt per Kommandozeilen-Aufruf. Die wichtigsten Kommandos sind:

      • iobroker compact enable zum generellen Aktivieren des Compact Modus für den aktuellen js-controller Host. ioBroker muss danach neu gestartet werden, damit die Änderung aktiv wird.
      • iobroker list instances zeigt zusätzliche jetzt auch den Status des Compact Modus der Adapterinstanzen an.
      • iobroker compact <adaptername>.<instanz> status zeigt den Compact Modus Status der Instanz an.
      • iobroker compact <adaptername>.<instanz> enable 1 aktiviert die Ausführung im Compact Modus in Gruppe „1“. Nur der Adapter wird dabei neu gestartet. Diese Konfiguration kann bei laufendem ioBroker erfolgen.

      Falls es Probleme gibt (z.B. ein Adapter läuft nicht mehr sauber oder bleibt "hängen" beim Stoppen), dann bitte ein Issue beim Adapter öffnen. Ansonsten bitte hier im Thread posten, damit wir sehen, woran es liegt.


      3. Installations-Quelle von Adaptern wird gespeichert

      ioBroker-Adapter werden im Normalfall aus dem Latest- oder Stable-Repository von npm installiert. Falls ein Adapter auf einen anderen Host verschoben wird oder das System neu installiert werden muss, wird versucht die gleiche Version wieder von npm zu installieren. Im Normalfall klappt das auch. Falls ein Adapter allerdings testweise von GitHub installiert wurde, ist dieser Stand bzw. diese Version ggf. nicht auf npm verfügbar. Damit kann die gleiche Version nicht automatisch neu installiert werden. Dies ändert sich nun.

      Für alle neuen Adapterinstallationen nach dem Update merkt sich ioBroker den genauen GitHub-Stand einer Custom-Installation und kann diesen Stand dann wieder nachinstallieren.

      Auch an der Adapterinstallation selbst, dem Upload und ähnlichem wurde einiges überarbeitet und optimiert. Es wurden einige Sonderfälle behoben, wo teile der upload-Logik nicht korrekt ausgeführt wurden. Auch hier helfen eure Tests.


      4. Redis-Unterstützung nun auch für Objekte und Files

      Standardmäßig werden Objekte und Zustände in einer ioBroker-eigenen Speicher-Datenbank verwaltet und in JSON-Dateien gespeichert. Mit dieser eigenen Lösung wird keine weitere Software benötigt.

      Seit einiger Zeit ist es bereits möglich, Zustände alternativ in einer optimierten Redis-Datenbank zu speichern. Ab einiger gewissen Anzahl an Zustandsänderungen pro Sekunde kann durch den Einsatz von Redis die Gesamtsystemlast zurückgehen bzw. auf mehrere Systeme verteilt werden. Redis bringt allerdings auch einen Mehraufwand mit, da diese Software installiert, verwaltet und gesichert werden will, damit es bei Updates oder im Problemfall nicht zu einem Datenverlust kommt.

      Mit js-controller 2.0 erlaubt ioBroker nun auch Objekte und die Dateien, die aktuell auf dem Master-System im Dateisystem abgelegt sind, in der Redis-Datenbank zu verwalten.
      Wichtig: Ausführliche Informationen zu Redis mit ioBroker (inklusive Infos wann was für wen Sinn macht und was eher nicht!! Damit Ihr wisst was Ihr tut) findet Ihr auch unter https://forum.iobroker.net/topic/26327/redis-in-iobroker-überblick

      Wichtig: Vor allem die Verlagerung von Dateien in die Datenbank kann dazu führen, dass diese recht groß werden kann (gern mehrere hundert MB). Da Redis alle Daten immer im RAM hält, ist diese Option nur für Systeme geeignet, die genügend RAM-Ressourcen zur Verfügung haben. Ebenso die CPU Belastung wird bei einem redis/redis System höher sein weil Daten anders verarbeitet werden müssen.

      Die Verlagerung von Dateien in die Datenbank führt zu einer deutlich größeren Flexibilität. Aufgrund dieser Änderung gibt es quasi keine lokalen Daten im Dateisystem mehr. In Summe wird die Redis-Datenbank zur zentralen Datenhaltung des ioBroker-Systems, da sie sämtliche Daten beinhaltet. Alle js-controller und Adapter verbinden sich dann mit dieser zentralen Datenbank.

      Mit dem js-controller 2.x kann sogar eine Redis-Sentinel Installation zur Steigerung der Systemverfügbarkeit genutzt werden (quasi ein Redis-HA-Cluster). Das ist eine erste Grundlage für die Bereitstellung eines hochverfügbaren ioBroker-Systems, das Ausfälle einzelner Serverkomponenten kompensieren kann. Diese Option sollte man allerdings aktuell nur austesten wenn man weiss was man tut 😉 Dazu in späteren Updates mehr.

      Mit dem Einzug der verschiedenen Speichermöglichkeiten für Dateien, Objects und States wurde der Befehl iobroker setup custom überarbeitet. Zum einen zeigt er mehr Informationen an. Zusätzlich ist er jetzt aber auch in der Lage, bei einem Wechsel der Datenhaltung die Daten in alle Richtungen zu migrieren. So ist ein Wechsel jederzeit möglich.

      Wer Redis nutzen will sollte vorab prüfen ob Redis installiert ist und man verbinden kann (z.B. redis-clisollte eine Redis Shell geben).


      5. "Alias"-Feature

      Einer der Vorteile von ioBroker ist, dass es sehr viele Adapter gibt. Allerdings hat sich herausgestellt, das jeder Adapter z.B. je nach angebundenen Systemen durchaus individuelle Strukturen bezüglich der Ablage der bereitgestellten Datenpunkte implementiert. Dies bringt vor allem bei eigenen Skripten aber auch bei Visualisierungs- und den Cloud/iot-Adaptern gewisse Herausforderungen mit sich.
      Beim Austausch von Geräten zwischen verschiedenen Herstellern muss man so gelegentlich aufgrund der Änderungen bei den Datenpunkten Skripte anpassen. Visualisierungsadapter und der iot-Adapter versuchen z.B. anhand der Rollen von Datenpunkten den Typ von Geräten zu erkennen, um diese korrekt anzuzeigen bzw. an Amazon bzw. Google zu melden. Dabei stehen die Adapter manchmal auf verlorenem Posten, weil bestimmte Adapter Informationen zu Rollen u.ä. gar nicht liefern können - vor allem MQTT, modbus u.ä. sind hier betroffen.

      Das Alias Feature, das direkt im js-controller verankert ist, stellt den neuen Namespace "alias.0" für Objekte zur Verfügung. Das Feature erlaubt es, Geräte mit einer stabilen Struktur und sauberen Rollen anzulegen. Das erfolgt jetzt zuerst manuell, später auch z.B. mittels des kommenden "Devices"-Adapters, der sich gerade in Entwicklung befindet.

      Auch dieses Feature hat noch keine vollständige Unterstützung im Admin, was allerdings noch kommen wird.

      Nach der Definition des Alias-Objects kann im neuen Bereich common.alias die ID des Quellobjekts im jeweiligen Adapter definiert werden. Ab dann werden alle Daten in beide Richtungen zwischen den Objekten synchronisiert. Zusätzlich kann interessanterweise eine read und write Funktion definiert werden, um einfache Umrechnungen vorzunehmen (z.B. Wh <--> kWh).

      Weitere (technische) Details haben wir unter Alias Information in der js-controller README veröffentlicht.

      Lenny.CB paul53 2 Replies Last reply Reply Quote 4
      • D
        darkiop Most Active last edited by

        Guten Morgen & Gute Nachrichten!! 🙂

        Somit ist klar was statt den Nachrichten heut Morgen gelesen wird. Danke auch für deine Mühen - das Testen hat Spaß gemacht 🙂 Denke wir haben die gröbsten Bugs in den letzten beiden Wochen gefunden.

        1 Reply Last reply Reply Quote 1
        • J
          Jan1 last edited by

          Ab sofort?
          96b37d83-501b-4e28-9b98-dffdc83f0436-grafik.png

          apollon77 sigi234 2 Replies Last reply Reply Quote 0
          • apollon77
            apollon77 @Jan1 last edited by

            @Jan1 Unter "Adapter dein "Repo" mal neu geladen? (Der zwei Pfeile im Kreis knopf)

            J 1 Reply Last reply Reply Quote 0
            • Diginix
              Diginix @apollon77 last edited by

              @apollon77 sagte in js-controller 2.0 ab sofort im Latest Repo:

              • radar2 1.0.9 (GitHub version 1.2.0 muss manuell angepasst werden, siehe FAQ!)

              Kann in den FAQ nichts zu radar2 finden. 🤷

              apollon77 1 Reply Last reply Reply Quote 0
              • sigi234
                sigi234 Forum Testing Most Active @Jan1 last edited by sigi234

                @Jan1 sagte in js-controller 2.0 ab sofort im Latest Repo:

                Ab sofort?

                Screenshot (245).png

                1 Reply Last reply Reply Quote 0
                • apollon77
                  apollon77 @Diginix last edited by apollon77

                  @Diginix Füge ich ein. Effektiv identisch zu Broadlink2 ... FAQ fixed

                  1 Reply Last reply Reply Quote 1
                  • D
                    darkiop Most Active last edited by

                    Hier passts auch:

                    f15d670d-75e2-4a63-915d-8758a3fa6924-grafik.png

                    @apollon77 Müssen die jenigen die direkt über Github installiert haben noch was beachten? Frisch hochziehen ausm latest z.B.?

                    apollon77 1 Reply Last reply Reply Quote 0
                    • apollon77
                      apollon77 @darkiop last edited by

                      @darkiop Nope, die Version 2.0.25 ist die gleiche wie vom GitHub vor paar Tagen während des Beta-Tests. Ihr könnt alles so lassen. Ein iobroker upgrade selfsollte euch sogar sagen das Ihr aktuell seid

                      D 1 Reply Last reply Reply Quote 0
                      • J
                        Jan1 @apollon77 last edited by

                        @apollon77
                        Ach der zählt auch zu Adapter, hatte nur unter Host aktualisiert, man lernt eben immer dazu 🙂

                        apollon77 1 Reply Last reply Reply Quote 0
                        • apollon77
                          apollon77 @Jan1 last edited by

                          @Jan1 Sagen wir es so: Das Repository wird unter "Adapter" aktualisiert. Eine Aktualisierung unter "Hosts" holt nur alle Daten der Hosts von denen neu ab

                          J 1 Reply Last reply Reply Quote 0
                          • D
                            darkiop Most Active @apollon77 last edited by

                            @apollon77

                            @apollon77 sagte in js-controller 2.0 ab sofort im Latest Repo:

                            Ein iobroker upgrade selfsollte euch sogar sagen das Ihr aktuell seid

                            6635ae05-a713-4482-b53b-92731e80a8e4-grafik.png

                            Danke 🙂

                            1 Reply Last reply Reply Quote 0
                            • J
                              Jan1 @apollon77 last edited by

                              @apollon77
                              Jou, ist ja nicht tragisch. Hat sich wohl etwas überschnitten, da ich heute morgen eh 4 Adapter upgedatet hatte und deshalb das Repo schon aktualisiert hatte. Da kam wohl der js-controller kurz danach erst.

                              1 Reply Last reply Reply Quote 0
                              • Lenny.CB
                                Lenny.CB Most Active @apollon77 last edited by Lenny.CB

                                Krass was ihr hier so an den Start bringt... Danke!

                                @apollon77 sagte in js-controller 2.0 ab sofort im Latest Repo:

                                4. "Alias"-Feature

                                Auch dieses Feature hat noch keine vollständige Unterstützung im Admin, was allerdings noch kommen wird.

                                das Feature ist für mich sehr spannend. Kannst Du hier schon einen ausblich geben in welcher Version das enthalten sein könnte? Bzw. kann man jetzt schon ohne Admin-Unterstützung "spielen"? Zurzeit nutze ich sporadisch LinkedDevices, was je quasi das Selbe ist.

                                apollon77 1 Reply Last reply Reply Quote 0
                                • apollon77
                                  apollon77 @Lenny.CB last edited by

                                  @Lenny-CB Korrekt. Linked Devices ist faktisch, ebenso wie ein anderer Adapter der sowas ähnliches tut aber nicht weiterentwickelt wird, das gleiche. Der große Unterschied ist das es jetzt hier wirklich im Core verankert und damit komplett transparent funktioniert.

                                  Aktuell ist das Alias Feature nutzbar wenn man die Objekte selbst manuell oder mittels einem Skript anlegt. Alternativ kannst Du die Entwicklungsversion des Devices-Adapters vom GitHub installieren (https://github.com/ioBroker/ioBroker.devices/). Aber Achtung: Das ist noch ein echt früher Entwicklungsstand. bei Fehlern gern Issues anlegen.
                                  Auf jeden Fall siehst Du das was der Adapter für Strukturen anlegen würde und kannst das ggf nachbilden.

                                  1 Reply Last reply Reply Quote 0
                                  • FredF
                                    FredF Most Active Forum Testing last edited by

                                    Ich habe mich mal getraut und das update bei meinem Testsystem durchgeführt. Lief ohne Fehler durch! 👍
                                    Sehr Positiv aufgefallen ist mir, dass das Objekte Fenster in Blockly deutlich schneller öffnet - Top!
                                    Werde weiter beobachten und testen - überlege aber jetzt schon das aktive System upzudaten...

                                    1 Reply Last reply Reply Quote 2
                                    • ?
                                      A Former User last edited by

                                      Hier habe ich das produktiv System geupdated, bis jetzt keine Auffaelligkeiten, ausser einem geringerem Speicherverbrauch und der Admin laeuft schneller. Werde mir morgen das Log anschauen und weiter berichten, die Testphase ging leider an mir vorbei, da ich in Florida im Urlaub war.. 🙂

                                      1 Reply Last reply Reply Quote 2
                                      • kmxak
                                        kmxak Most Active last edited by kmxak

                                        system ist nun up to date.
                                        was mir auffällt der er mir folgende Meldungen vom Slave des öfteren ins log schmeißt:

                                        zwave.0	2019-10-11 17:16:56.444	info	(10876) Terminated (NO_ERROR): Without reason
                                        zwave.0	2019-10-11 17:16:56.442	warn	(10876) Cannot connect/reconnect to objects DB. Terminating
                                        rflink.0	2019-10-11 17:16:55.881	info	(10854) Terminated (NO_ERROR): Without reason
                                        rflink.0	2019-10-11 17:16:55.879	warn	(10854) Cannot connect/reconnect to objects DB. Terminating
                                        backitup.1	2019-10-11 17:16:55.874	info	(10891) Terminated (NO_ERROR): Without reason
                                        backitup.1	2019-10-11 17:16:55.872	warn	(10891) Cannot connect/reconnect to objects DB. Terminating
                                        

                                        Werde es mal beobachten, sonst lief soweit alles durch.

                                        Was mir gerade auch auffällt ist das sich iobroker nun etwas flüssiger anfühlt. besonders wenn man die Objekte aufruft 👍

                                        apollon77 1 Reply Last reply Reply Quote 0
                                        • apollon77
                                          apollon77 @kmxak last edited by

                                          @kmxak sagte in js-controller 2.0 ab sofort im Latest Repo:

                                          Cannot connect/reconnect to objects DB. Terminating

                                          Der Fehler bedeutet das diese Adapter-Prozesse die Verbindung zum Master verlieren ... und das müsste mindestens 5 Sekunden lang sein bevor diese Meldung kommt. Wenn es mehrere Adapter auf dem Slave alleine betrifft (und die auf dem Master sauber laufen) wäre ich bei der frage der Slave Netzwerk-Anbindung.

                                          Um mehr rauszubekommen könntest Du mal einen der Adapter auf Loglevel "silly" stellen, dann sollte man mehr sehen wann was wie passiert. backitup wäre ideal weil der sonst ja nicht viel tut.
                                          Wäre interessant das Log mal zu sehen.

                                          kmxak 1 Reply Last reply Reply Quote 0
                                          • dslraser
                                            dslraser Forum Testing Most Active last edited by

                                            Ich bin jetzt auch auf 2.0.25
                                            (Synology/Docker)
                                            Bisher läuft Alles !
                                            Alle Adapter sofort grün. "Gefühlt" ist das System etwas schneller bzw. das Verbinden der Adapter geht schneller.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            919
                                            Online

                                            32.0k
                                            Users

                                            80.5k
                                            Topics

                                            1.3m
                                            Posts

                                            js-controller
                                            89
                                            1052
                                            303484
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo