Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. Homematic HCU

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.4k

Homematic HCU

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
56 Beiträge 15 Kommentatoren 9.1k Aufrufe 17 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • mcm1957M mcm1957

    @mringenieur said in Homematic HCU:

    Dachte irgendjemand hat ja auch den bisherigen HMIP-Adapter entwickelt und auch die HCU-Anpassung (z.B. @mdietz )durchgeführt. Das war doch ein "Entwickler".

    Ja @mdietz ist Entwickler und kann und wird sich wahrscheinlich zu seinem Wissensstand äußern. Apollon77 kann dir kaum was sagen was andere wissen :-). Du hast ja @mdietz vor wenigen Tagen gezielt angesprochen. Wann er sich meldet kann niemand voraussagen - er ist aber lt. Profil nicht sehr aktiv im Forum.

    Alle sonstigen Änderungen am Adapter seit 2023 betreffen nur minimale Bugfixes und notwendige Anpassungen an die UI. Du kannst aber gerne direkt auf Github schaun wer wann was gemacht hat und ggF Devs hier gezielt ansprechen.

    apollon77A Offline
    apollon77A Offline
    apollon77
    schrieb am zuletzt editiert von apollon77
    #36

    Naja nach der initialen Entwicklung war auch bisher nicht so viel zu tun - ausser Optimierungen die per Logs machbar waren.
    Und ja ich habe mit damals extra einen HMIP Access Point gekauft und betreibe den mit einer Steckdose und einem Wassersensor. Aber beispielsweise eine HCU habe ich nicht und mich daher nur mit dem prüfen und annahmen des PRs von @mdietz damit beschäftigt.

    Also ja ggf kann @mdietz - ggf auch mal in GitHub mentionen - mehr Licht ins Dunkel bringen.

    Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

    • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
    • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
    1 Antwort Letzte Antwort
    0
    • MrIngenieurM MrIngenieur

      @mcm1957 @mdietz
      seit gestern gibt es ja die Möglichkeit bestehende AccessPoint-Installationen auf die HCU zu übertragen.
      Wie würde das auf der ioBroker Seite aussehen für das folgende Szenario:

      • bestehende AccessPoint Installation die in ioBroker eingebunden ist
      • in ioBroker bestehende Skripte und yahka-Umsetzung für Apple HomeKit, welche HMIP-Geräte benutzen

      Wenn man jetzt die Migration vom AccessPoint hin zur HCU macht und die HCU in ioBroker einbinden will, gehen dann die ganzen Referenzen auf die bestehende Installation und die bestehenden Geräte verloren oder kann ich die bestehende ioBroker HMIP-Instanz einfach umziehen auf die HCU?

      Es würde ja erheblich Aufwand sparen, wenn man nicht jedes Skript und jede yahka Verbindung händisch nachkorrigieren müsste.

      J Offline
      J Offline
      jamalau
      schrieb am zuletzt editiert von
      #37

      @mringenieur Moin, ich habe gestern die Migration durchgeführt, und auf dem iobroker blieb, nach der neuen Anmeldung der HCU, alles beim alten.
      Ich musste nichts ändern, alles funktioniert wie vorher, als ob nie was gewesenen wäre.

      MrIngenieurM 1 Antwort Letzte Antwort
      2
      • J jamalau

        @mringenieur Moin, ich habe gestern die Migration durchgeführt, und auf dem iobroker blieb, nach der neuen Anmeldung der HCU, alles beim alten.
        Ich musste nichts ändern, alles funktioniert wie vorher, als ob nie was gewesenen wäre.

        MrIngenieurM Offline
        MrIngenieurM Offline
        MrIngenieur
        schrieb am zuletzt editiert von
        #38

        Wow, Danke @jamalau
        Das klingt ja vielversprechend und hoffnungsvoll 😉
        Hast Du Homematic IP Geräte in irgendwelchen Skripten im Iobroker verwendet gehabt vor der Migration und sind die Pfade komplett gleich geblieben? Du musstest also keine Skripte anpassen?
        Das wäre ja traumhaft 🤩
        Nochmal Danke dass du dir die zeit genommen hast deine Erfahrungen zu teilen!

        J 1 Antwort Letzte Antwort
        0
        • MrIngenieurM MrIngenieur

          Wow, Danke @jamalau
          Das klingt ja vielversprechend und hoffnungsvoll 😉
          Hast Du Homematic IP Geräte in irgendwelchen Skripten im Iobroker verwendet gehabt vor der Migration und sind die Pfade komplett gleich geblieben? Du musstest also keine Skripte anpassen?
          Das wäre ja traumhaft 🤩
          Nochmal Danke dass du dir die zeit genommen hast deine Erfahrungen zu teilen!

          J Offline
          J Offline
          jamalau
          schrieb am zuletzt editiert von jamalau
          #39

          @mringenieur Ja hatte ich natürlich, ist alles so geblieben wie erhofft, musste nichts anpassen!
          Bei mir ist aber alles in Blockly.

          Nach ein paar Tagen ist mir aufgefallen, das der Adapter morgens hängt, d.h. es werden einige Automatisierungen nicht durchgeführt, nach einem Neustart der Instanz, ist dann alles wieder ok.
          Kann man eine Instanz nicht Zeitgetriggert neu starten, weil es, so wie es aussieht, immer zur selben Zeit passiert?
          Würde dann zu einer gewissen Uhrzeit, jeden Morgen die Instanz neu starten, solange bis der Adapter als stable kommt.

          Edit: Habe es gefunden, im Expertenmodus, kann man das einstellen.

          apollon77A MrIngenieurM L 4 Antworten Letzte Antwort
          1
          • J jamalau

            @mringenieur Ja hatte ich natürlich, ist alles so geblieben wie erhofft, musste nichts anpassen!
            Bei mir ist aber alles in Blockly.

            Nach ein paar Tagen ist mir aufgefallen, das der Adapter morgens hängt, d.h. es werden einige Automatisierungen nicht durchgeführt, nach einem Neustart der Instanz, ist dann alles wieder ok.
            Kann man eine Instanz nicht Zeitgetriggert neu starten, weil es, so wie es aussieht, immer zur selben Zeit passiert?
            Würde dann zu einer gewissen Uhrzeit, jeden Morgen die Instanz neu starten, solange bis der Adapter als stable kommt.

            Edit: Habe es gefunden, im Expertenmodus, kann man das einstellen.

            apollon77A Offline
            apollon77A Offline
            apollon77
            schrieb am zuletzt editiert von
            #40

            @jamalau Ja das geht, dennoch wäre s schon cool vllt ein Debug Log und ein Issue zu sehen ... vllt kann man das ja auch fixen. Weil bedenke das ein neustart ggf Traffic zur eq-3 Cloud auslöst und das gibt dann vltl issues wenns jeder macht

            Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

            • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
            • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
            1 Antwort Letzte Antwort
            0
            • J jamalau

              @mringenieur Ja hatte ich natürlich, ist alles so geblieben wie erhofft, musste nichts anpassen!
              Bei mir ist aber alles in Blockly.

              Nach ein paar Tagen ist mir aufgefallen, das der Adapter morgens hängt, d.h. es werden einige Automatisierungen nicht durchgeführt, nach einem Neustart der Instanz, ist dann alles wieder ok.
              Kann man eine Instanz nicht Zeitgetriggert neu starten, weil es, so wie es aussieht, immer zur selben Zeit passiert?
              Würde dann zu einer gewissen Uhrzeit, jeden Morgen die Instanz neu starten, solange bis der Adapter als stable kommt.

              Edit: Habe es gefunden, im Expertenmodus, kann man das einstellen.

              MrIngenieurM Offline
              MrIngenieurM Offline
              MrIngenieur
              schrieb am zuletzt editiert von MrIngenieur
              #41

              @jamalau klasse, vielen Dank für die Rückmeldung! Dann werde ich langsam auch mal in Richtung HCU Bestellung übergehen.
              Und ja, zyklischer Restart geht per expertenmodus, auch wenns suboptimal ist.

              1 Antwort Letzte Antwort
              0
              • J jamalau

                @mringenieur Ja hatte ich natürlich, ist alles so geblieben wie erhofft, musste nichts anpassen!
                Bei mir ist aber alles in Blockly.

                Nach ein paar Tagen ist mir aufgefallen, das der Adapter morgens hängt, d.h. es werden einige Automatisierungen nicht durchgeführt, nach einem Neustart der Instanz, ist dann alles wieder ok.
                Kann man eine Instanz nicht Zeitgetriggert neu starten, weil es, so wie es aussieht, immer zur selben Zeit passiert?
                Würde dann zu einer gewissen Uhrzeit, jeden Morgen die Instanz neu starten, solange bis der Adapter als stable kommt.

                Edit: Habe es gefunden, im Expertenmodus, kann man das einstellen.

                MrIngenieurM Offline
                MrIngenieurM Offline
                MrIngenieur
                schrieb am zuletzt editiert von MrIngenieur
                #42

                @jamalau Vielen Dank, ich habe jetzt auch den Schritt gemacht von AccessPoint zur HomeControlUnit HCU inkl. Übertragung des Systems/der bestehenden Installation.
                Ich kann bestätigen dass es überraschend gut funktioniert hat.

                In iobroker habe ich den Umzug wie folgt durchgeführt, und so hat es bei mir gut funktioniert:

                • Bestehende Instanz HMIP.0 so gelassen wie mit dem AccessPoint, also nicht irgendwie gelöscht und neu angelegt oder ähnliches.
                • Konfigurationsdialog für die HMIP.0 Instanz öffnen
                • SGTIN der neuen HCU anstatt des AccessPoint eintragen
                • Device ID löschen (das ist wichtig, sonst klappt es mit der Token-Erstellung nicht, wie ich feststellen musste)
                • PIN habe ich gelassen wie sie war auch bei der HCU, hängt aber davon ab wie ihr in der Homematic App die HCU eingerichtet habt und welchen PIN ihr dort gewählt hattet.
                • alten Auth.-Token, Client-Token und Kunden-ID löschen
                • Dann einmal auf speichern und schließen klicken (das ist offenbar auch wichtig, bevor man auf Token erstellen klickt)
                • Dann einmal an der HCU die obere Taste kurz drücken, dann wechselt die Farbe von blau auf lila blinkend
                • Dann im iobroker HMIP.0 Konfigurationsdialog auf Token erstellen klicken
                • Danach an der HCU noch kurz auf die obere Taste drücken
                • kurz warten bis die neue Device ID und die Token generiert sind
                • speichern und schließen und gut ist.
                • die Instanz HMIP.0 startet neu und verbindet sich nach kurzer Wartezeit

                Die Objekt-Struktur unterhalb der HMIP.0 Instanz bleibt soweit ich gesehen habe unverändert.
                Damit hat auch direkt alles funktioniert was ich in Yahka an HMIP-Geräten in Apple HomeKit angelegt hatte und auch die Skripte funktionieren bisher tadellos.
                Den Adapter Restart den @jamalau angesprochen hat, würde ich weiter beobachten, habe mir jetzt ein Skript geschrieben, dass den Adapter im Falle zu lange offline einfach neu startet.

                Ich hoffe das hilft dem ein oder anderen der auch mit einem Umstieg liebäugelt … Alles in allem war der ioBroker-Teil in weniger als 30 Minuten erledigt.

                F 1 Antwort Letzte Antwort
                0
                • MrIngenieurM MrIngenieur

                  @jamalau Vielen Dank, ich habe jetzt auch den Schritt gemacht von AccessPoint zur HomeControlUnit HCU inkl. Übertragung des Systems/der bestehenden Installation.
                  Ich kann bestätigen dass es überraschend gut funktioniert hat.

                  In iobroker habe ich den Umzug wie folgt durchgeführt, und so hat es bei mir gut funktioniert:

                  • Bestehende Instanz HMIP.0 so gelassen wie mit dem AccessPoint, also nicht irgendwie gelöscht und neu angelegt oder ähnliches.
                  • Konfigurationsdialog für die HMIP.0 Instanz öffnen
                  • SGTIN der neuen HCU anstatt des AccessPoint eintragen
                  • Device ID löschen (das ist wichtig, sonst klappt es mit der Token-Erstellung nicht, wie ich feststellen musste)
                  • PIN habe ich gelassen wie sie war auch bei der HCU, hängt aber davon ab wie ihr in der Homematic App die HCU eingerichtet habt und welchen PIN ihr dort gewählt hattet.
                  • alten Auth.-Token, Client-Token und Kunden-ID löschen
                  • Dann einmal auf speichern und schließen klicken (das ist offenbar auch wichtig, bevor man auf Token erstellen klickt)
                  • Dann einmal an der HCU die obere Taste kurz drücken, dann wechselt die Farbe von blau auf lila blinkend
                  • Dann im iobroker HMIP.0 Konfigurationsdialog auf Token erstellen klicken
                  • Danach an der HCU noch kurz auf die obere Taste drücken
                  • kurz warten bis die neue Device ID und die Token generiert sind
                  • speichern und schließen und gut ist.
                  • die Instanz HMIP.0 startet neu und verbindet sich nach kurzer Wartezeit

                  Die Objekt-Struktur unterhalb der HMIP.0 Instanz bleibt soweit ich gesehen habe unverändert.
                  Damit hat auch direkt alles funktioniert was ich in Yahka an HMIP-Geräten in Apple HomeKit angelegt hatte und auch die Skripte funktionieren bisher tadellos.
                  Den Adapter Restart den @jamalau angesprochen hat, würde ich weiter beobachten, habe mir jetzt ein Skript geschrieben, dass den Adapter im Falle zu lange offline einfach neu startet.

                  Ich hoffe das hilft dem ein oder anderen der auch mit einem Umstieg liebäugelt … Alles in allem war der ioBroker-Teil in weniger als 30 Minuten erledigt.

                  F Offline
                  F Offline
                  Frank44
                  schrieb am zuletzt editiert von Frank44
                  #43

                  @mringenieur Hallo, ich habe den Umstieg auch gemacht, aber ich bin etwas entäuscht.
                  Leider sind nicht alle Datenpunkte so wie mit dem AP.

                  • beim Kombisignalgeber HMIP-MP3 fehlen Datenpunkte wie z.B. die LED Steuerung und nicht alle der Sound Datenpunkte sind da
                  • bei meinen Schaltmesssteckdosen funktioniert die Leistungsmessung nicht richtig und am nächsten Tag erstmal garnicht, da muss ich den Adapter neu starten
                    ( dadurch funktioniert meine läuft und fertig Meldung nicht )

                  Das die CCU3 noch mehr Datenpunkte hatte wusste ich ja, lief bei mir auch noch mit, jetzt alles über die HCU.

                  Gruß Frank

                  apollon77A 1 Antwort Letzte Antwort
                  0
                  • F Frank44

                    @mringenieur Hallo, ich habe den Umstieg auch gemacht, aber ich bin etwas entäuscht.
                    Leider sind nicht alle Datenpunkte so wie mit dem AP.

                    • beim Kombisignalgeber HMIP-MP3 fehlen Datenpunkte wie z.B. die LED Steuerung und nicht alle der Sound Datenpunkte sind da
                    • bei meinen Schaltmesssteckdosen funktioniert die Leistungsmessung nicht richtig und am nächsten Tag erstmal garnicht, da muss ich den Adapter neu starten
                      ( dadurch funktioniert meine läuft und fertig Meldung nicht )

                    Das die CCU3 noch mehr Datenpunkte hatte wusste ich ja, lief bei mir auch noch mit, jetzt alles über die HCU.

                    Gruß Frank

                    apollon77A Offline
                    apollon77A Offline
                    apollon77
                    schrieb am zuletzt editiert von
                    #44

                    @frank44 Na das klingt nach Debug Logs und GitHub issues mit den Details (getrennte Issues pro Problem bitte!).

                    Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                    • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                    • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                    1 Antwort Letzte Antwort
                    1
                    • J jamalau

                      @mringenieur Ja hatte ich natürlich, ist alles so geblieben wie erhofft, musste nichts anpassen!
                      Bei mir ist aber alles in Blockly.

                      Nach ein paar Tagen ist mir aufgefallen, das der Adapter morgens hängt, d.h. es werden einige Automatisierungen nicht durchgeführt, nach einem Neustart der Instanz, ist dann alles wieder ok.
                      Kann man eine Instanz nicht Zeitgetriggert neu starten, weil es, so wie es aussieht, immer zur selben Zeit passiert?
                      Würde dann zu einer gewissen Uhrzeit, jeden Morgen die Instanz neu starten, solange bis der Adapter als stable kommt.

                      Edit: Habe es gefunden, im Expertenmodus, kann man das einstellen.

                      L Offline
                      L Offline
                      lichtraum
                      schrieb am zuletzt editiert von lichtraum
                      #45

                      Das von @jamalau beschriebene Problem tritt bei mir auch auf. Allerdings kann ich es nicht auf eine bestimmte Zeit eingrenzen. Es passiert meistens einmal am Tag - aber zu unterschiedlichsten Zeiten. Manchmal läuft der Adapter auch ohne Probleme zwei / drei Tage durch.

                      Ich hatte schon überlegt, ein Issue auf Github zu erstellen, aber im Debug Log finde ich einfach keinen Eintrag dazu. Die Log-Einträge verstummen einfach mit Eintreten des Problems.

                      Mein Workaround ist ein Skript, welches auf das letzte Update prüft und den Adapter neu startet, falls das Update zu lange her ist. Vielleicht hilft es jemanden:

                      /* ------------- CONFIG ------------- */
                      const TIME_TREASHOLD = 10 * 60 * 1000; // 10 minutes in ms - wie lange muss das letzte Lebenszeichen her sein
                      const ATTEMPTS_TIME = 60 * 60 * 1000; // 60 minutes in ms - wie lange muss der letzte neustart her sein, damit es nicht als neuer Versuch gewertet wird
                      const ATTEMPTS_TREASHOLD = 3;  // Anzahl maximaler Neustartversuche
                      
                      const WATCHING_INSTANCE = 'hmip.0';  // Instanz die überwacht werden soll
                      
                      /* ------------- SKRIPT ------------- */
                      class HomematicWatcher {
                          constructor() {
                              this.states = [];
                              this.latestUpdate = new Date('1990-01-01');
                              this.lastRestart = new Date('1990-01-01');
                              this.attempts = 0;
                          }
                      
                          collectStates() {
                              $(`${WATCHING_INSTANCE}.*`).each((id) => { 
                                  if(existsState(id)) {
                                      this.states.push(id);
                                  }
                              });
                          }
                      
                          determineLastestUpdate() {
                              for (let i = 0; i < this.states.length; i++) {
                                  const lastUpdate = getState(this.states[i]).ts;
                                  if (lastUpdate !== undefined) {
                                      const lastUpdate_ts = new Date(lastUpdate);
                                      if (lastUpdate_ts > this.latestUpdate) {
                                          this.latestUpdate = lastUpdate_ts;
                                      }
                                  }
                              }
                          }
                      
                          checkForRestart() {
                              if (new Date().getTime() - this.latestUpdate.getTime() > TIME_TREASHOLD) {            
                                  // Instanz neu starten
                                  this.restartInstance();
                              } 
                          }
                         
                          getInstanceState() {
                              var obj_instance = getObject(`system.adapter.${WATCHING_INSTANCE}`);
                              return obj_instance.common.enabled;
                          }
                         
                          setInstanceState(val) {
                              extendObject(`system.adapter.${WATCHING_INSTANCE}`, {common: {enabled: val}});
                              console.warn(`HmIP Instanz ${WATCHING_INSTANCE} wurde ${val ? 'gestartet' : 'gestoppt'}`);  
                          }
                      
                          restartInstance() {
                              // Nur neu starten, wenn Instanz bereits läuft 
                              if(this.getInstanceState() != false) {
                              
                                      // Anzahl der Neustartversuche zählen, wenn letzter Neustart weniger als ATTEMPTS_TIME her ist
                                  if (new Date().getTime() - this.lastRestart.getTime() < ATTEMPTS_TIME) {      
                                      this.attempts++;
                                  } else {
                                      this.attempts = 0;
                                  }
                      
                                  try {
                                      // Nur neu starten, wenn Anzahl der erlaubten Versuche noch nicht überschritten wurde
                                      if (this.attempts <= ATTEMPTS_TREASHOLD) {                    
                                          
                                          // Instanz stoppen        
                                          this.lastRestart = new Date();
                                          this.setInstanceState(false);    
                      
                                          // Instanz starten
                                          setTimeout(() => {                
                                              this.lastRestart = new Date();
                                              this.setInstanceState(true);  
                                          }, 3000);          
                                      } else {
                                          console.error(`Instanz ${WATCHING_INSTANCE} wurde bereits ${this.attempts} mal neugestartet. Abbruch.`);
                                      }
                                  }
                                  catch (e) {
                                      console.error(`Fehler beim Neustart der Instanz ${WATCHING_INSTANCE}: ${e}`)
                                  }
                              }
                          }
                      }
                      
                      // Ausführen bei Skriptstart
                      const watcher = new HomematicWatcher()
                      watcher.collectStates();
                      watcher.determineLastestUpdate();
                      watcher.checkForRestart();
                      
                      // Schedule alle zwei Minuten
                      schedule('*/2 * * * *', () => {
                          watcher.determineLastestUpdate();
                          watcher.checkForRestart();
                      });
                      
                      J 1 Antwort Letzte Antwort
                      0
                      • L lichtraum

                        Das von @jamalau beschriebene Problem tritt bei mir auch auf. Allerdings kann ich es nicht auf eine bestimmte Zeit eingrenzen. Es passiert meistens einmal am Tag - aber zu unterschiedlichsten Zeiten. Manchmal läuft der Adapter auch ohne Probleme zwei / drei Tage durch.

                        Ich hatte schon überlegt, ein Issue auf Github zu erstellen, aber im Debug Log finde ich einfach keinen Eintrag dazu. Die Log-Einträge verstummen einfach mit Eintreten des Problems.

                        Mein Workaround ist ein Skript, welches auf das letzte Update prüft und den Adapter neu startet, falls das Update zu lange her ist. Vielleicht hilft es jemanden:

                        /* ------------- CONFIG ------------- */
                        const TIME_TREASHOLD = 10 * 60 * 1000; // 10 minutes in ms - wie lange muss das letzte Lebenszeichen her sein
                        const ATTEMPTS_TIME = 60 * 60 * 1000; // 60 minutes in ms - wie lange muss der letzte neustart her sein, damit es nicht als neuer Versuch gewertet wird
                        const ATTEMPTS_TREASHOLD = 3;  // Anzahl maximaler Neustartversuche
                        
                        const WATCHING_INSTANCE = 'hmip.0';  // Instanz die überwacht werden soll
                        
                        /* ------------- SKRIPT ------------- */
                        class HomematicWatcher {
                            constructor() {
                                this.states = [];
                                this.latestUpdate = new Date('1990-01-01');
                                this.lastRestart = new Date('1990-01-01');
                                this.attempts = 0;
                            }
                        
                            collectStates() {
                                $(`${WATCHING_INSTANCE}.*`).each((id) => { 
                                    if(existsState(id)) {
                                        this.states.push(id);
                                    }
                                });
                            }
                        
                            determineLastestUpdate() {
                                for (let i = 0; i < this.states.length; i++) {
                                    const lastUpdate = getState(this.states[i]).ts;
                                    if (lastUpdate !== undefined) {
                                        const lastUpdate_ts = new Date(lastUpdate);
                                        if (lastUpdate_ts > this.latestUpdate) {
                                            this.latestUpdate = lastUpdate_ts;
                                        }
                                    }
                                }
                            }
                        
                            checkForRestart() {
                                if (new Date().getTime() - this.latestUpdate.getTime() > TIME_TREASHOLD) {            
                                    // Instanz neu starten
                                    this.restartInstance();
                                } 
                            }
                           
                            getInstanceState() {
                                var obj_instance = getObject(`system.adapter.${WATCHING_INSTANCE}`);
                                return obj_instance.common.enabled;
                            }
                           
                            setInstanceState(val) {
                                extendObject(`system.adapter.${WATCHING_INSTANCE}`, {common: {enabled: val}});
                                console.warn(`HmIP Instanz ${WATCHING_INSTANCE} wurde ${val ? 'gestartet' : 'gestoppt'}`);  
                            }
                        
                            restartInstance() {
                                // Nur neu starten, wenn Instanz bereits läuft 
                                if(this.getInstanceState() != false) {
                                
                                        // Anzahl der Neustartversuche zählen, wenn letzter Neustart weniger als ATTEMPTS_TIME her ist
                                    if (new Date().getTime() - this.lastRestart.getTime() < ATTEMPTS_TIME) {      
                                        this.attempts++;
                                    } else {
                                        this.attempts = 0;
                                    }
                        
                                    try {
                                        // Nur neu starten, wenn Anzahl der erlaubten Versuche noch nicht überschritten wurde
                                        if (this.attempts <= ATTEMPTS_TREASHOLD) {                    
                                            
                                            // Instanz stoppen        
                                            this.lastRestart = new Date();
                                            this.setInstanceState(false);    
                        
                                            // Instanz starten
                                            setTimeout(() => {                
                                                this.lastRestart = new Date();
                                                this.setInstanceState(true);  
                                            }, 3000);          
                                        } else {
                                            console.error(`Instanz ${WATCHING_INSTANCE} wurde bereits ${this.attempts} mal neugestartet. Abbruch.`);
                                        }
                                    }
                                    catch (e) {
                                        console.error(`Fehler beim Neustart der Instanz ${WATCHING_INSTANCE}: ${e}`)
                                    }
                                }
                            }
                        }
                        
                        // Ausführen bei Skriptstart
                        const watcher = new HomematicWatcher()
                        watcher.collectStates();
                        watcher.determineLastestUpdate();
                        watcher.checkForRestart();
                        
                        // Schedule alle zwei Minuten
                        schedule('*/2 * * * *', () => {
                            watcher.determineLastestUpdate();
                            watcher.checkForRestart();
                        });
                        
                        J Offline
                        J Offline
                        jamalau
                        schrieb am zuletzt editiert von jamalau
                        #46

                        @lichtraum Hallo, erstmal danke für das Script, nur bin ich ein wenig unbeholfen, außerhalb von Blockly.
                        Kannst du kurz erklären, wie ich das einbinde?
                        Einfach, genauso wie ein Blocklyscript, ein JavaScript anlegen, deinen Code einfügen, und starten?

                        L 1 Antwort Letzte Antwort
                        0
                        • J jamalau

                          @lichtraum Hallo, erstmal danke für das Script, nur bin ich ein wenig unbeholfen, außerhalb von Blockly.
                          Kannst du kurz erklären, wie ich das einbinde?
                          Einfach, genauso wie ein Blocklyscript, ein JavaScript anlegen, deinen Code einfügen, und starten?

                          L Offline
                          L Offline
                          lichtraum
                          schrieb am zuletzt editiert von
                          #47

                          @jamalau tatsächlich ist es so einfach:
                          JavaScript anlegen, den Code einfügen und starten.

                          Nur wenn du mehrere Homematic IP Instanzen hast, müsstest du noch die Variable WATCHING_INSTANCE anpassen.

                          Viele Grüße

                          J 1 Antwort Letzte Antwort
                          0
                          • L lichtraum

                            @jamalau tatsächlich ist es so einfach:
                            JavaScript anlegen, den Code einfügen und starten.

                            Nur wenn du mehrere Homematic IP Instanzen hast, müsstest du noch die Variable WATCHING_INSTANCE anpassen.

                            Viele Grüße

                            J Offline
                            J Offline
                            jamalau
                            schrieb am zuletzt editiert von
                            #48

                            @lichtraum Irgendetwas klappt bei mir nicht, hänge mal nen Screenshot an!
                            Wenn ich die Instanz manuell neu starte, geht es sofort, was kann das für eine Ursache haben?
                            Screenshot_20250615_162758_Edge.jpg

                            HomoranH 1 Antwort Letzte Antwort
                            0
                            • J jamalau

                              @lichtraum Irgendetwas klappt bei mir nicht, hänge mal nen Screenshot an!
                              Wenn ich die Instanz manuell neu starte, geht es sofort, was kann das für eine Ursache haben?
                              Screenshot_20250615_162758_Edge.jpg

                              HomoranH Nicht stören
                              HomoranH Nicht stören
                              Homoran
                              Global Moderator Administrators
                              schrieb am zuletzt editiert von Homoran
                              #49

                              @jamalau sagte in Homematic HCU:

                              hänge mal nen Screenshot an!

                              bitte nicht!
                              Screenshot_20250615-163327_Firefox.jpg
                              logs als Text in code-tags posten, dann kann man sie auch lesen, daraus zitieren, usw.

                              edit:
                              zeig mal die Einstellungen der Instanz

                              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                              J 1 Antwort Letzte Antwort
                              0
                              • HomoranH Homoran

                                @jamalau sagte in Homematic HCU:

                                hänge mal nen Screenshot an!

                                bitte nicht!
                                Screenshot_20250615-163327_Firefox.jpg
                                logs als Text in code-tags posten, dann kann man sie auch lesen, daraus zitieren, usw.

                                edit:
                                zeig mal die Einstellungen der Instanz

                                J Offline
                                J Offline
                                jamalau
                                schrieb am zuletzt editiert von
                                #50

                                @homoran werde ich machen, habe die JS Instanz jetzt geändert und den Haken bei Enable command setObjekt gesetzt, ich hoffe dass das die Ursache war.
                                Screenshot_20250615_164922_Edge.jpg

                                HomoranH 1 Antwort Letzte Antwort
                                0
                                • J jamalau

                                  @homoran werde ich machen, habe die JS Instanz jetzt geändert und den Haken bei Enable command setObjekt gesetzt, ich hoffe dass das die Ursache war.
                                  Screenshot_20250615_164922_Edge.jpg

                                  HomoranH Nicht stören
                                  HomoranH Nicht stören
                                  Homoran
                                  Global Moderator Administrators
                                  schrieb am zuletzt editiert von
                                  #51

                                  @jamalau sagte in Homematic HCU:

                                  den Haken bei Enable command setObjekt gesetzt, ich hoffe dass das die Ursache war.

                                  jepp!

                                  müssen das 3K Screenshots sein?
                                  ich kenne kein Handy, dass das im Portraitmodus darstellen kann.

                                  kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                  J 1 Antwort Letzte Antwort
                                  0
                                  • HomoranH Homoran

                                    @jamalau sagte in Homematic HCU:

                                    den Haken bei Enable command setObjekt gesetzt, ich hoffe dass das die Ursache war.

                                    jepp!

                                    müssen das 3K Screenshots sein?
                                    ich kenne kein Handy, dass das im Portraitmodus darstellen kann.

                                    J Offline
                                    J Offline
                                    jamalau
                                    schrieb am zuletzt editiert von
                                    #52

                                    @homoran sorry hab ihn mit nem Tablet S10ultrra gemacht, werde mich bessern.

                                    1 Antwort Letzte Antwort
                                    0
                                    • J Offline
                                      J Offline
                                      jamalau
                                      schrieb am zuletzt editiert von jamalau
                                      #53

                                      Hallo, habe seit einigen Tagen ein merkwürdiges Problem mit der HCU. Ich nutze das Restartscript seit einiger Zeit ohne Probleme, nun ist es so das jeden Morgen die HCU so oft neu gestartet wurde, das der Restart vom Script geblockt werden sollte.
                                      Somit kommt keine Verbinung zustande, versuche ich nun eine manuellen Neustart, kommt immer im Protokoll "Token not yet createt".
                                      Schaue ich dann in die Instanz sind dann wirklich alle erzeugten Token leer, trage ich die händisch (weil bequemer) wieder ein, verbindet sich die HCU wieder, bis zum nächsten Tag, dann geht alles von vorne los. (Bei einem, durch den Anmeldeprozess erzeugte Token, ist es genauso)
                                      Es wurde nichts am System geändert, welches Monate problemlos funktionierte.
                                      Wenn ich Tagsüber die Instanz händisch neu starte, funktioniert das problemlos, egal wie oft, was ist da passiert?

                                      L 1 Antwort Letzte Antwort
                                      0
                                      • L Offline
                                        L Offline
                                        lichtraum
                                        schrieb am zuletzt editiert von
                                        #54

                                        Tatsächlich habe ich selbiges Problem. Das hat sich aber nach ein paar Tagen von alleine gelöst und ich hatte jetzt einige Wochen Ruhe. Auch das Restart-Skript musste nicht mehr aktiv werden.

                                        Seit heute - ebenfalls ohne Änderungen - tritt das Problem leider wieder auf. Der hmip Adapter hat keine neuen Daten und der automatische Restart leert die Adapter Token-Daten.
                                        An der Stelle bin ich nun auch überfragt...

                                        1 Antwort Letzte Antwort
                                        0
                                        • J jamalau

                                          Hallo, habe seit einigen Tagen ein merkwürdiges Problem mit der HCU. Ich nutze das Restartscript seit einiger Zeit ohne Probleme, nun ist es so das jeden Morgen die HCU so oft neu gestartet wurde, das der Restart vom Script geblockt werden sollte.
                                          Somit kommt keine Verbinung zustande, versuche ich nun eine manuellen Neustart, kommt immer im Protokoll "Token not yet createt".
                                          Schaue ich dann in die Instanz sind dann wirklich alle erzeugten Token leer, trage ich die händisch (weil bequemer) wieder ein, verbindet sich die HCU wieder, bis zum nächsten Tag, dann geht alles von vorne los. (Bei einem, durch den Anmeldeprozess erzeugte Token, ist es genauso)
                                          Es wurde nichts am System geändert, welches Monate problemlos funktionierte.
                                          Wenn ich Tagsüber die Instanz händisch neu starte, funktioniert das problemlos, egal wie oft, was ist da passiert?

                                          L Offline
                                          L Offline
                                          lichtraum
                                          schrieb am zuletzt editiert von
                                          #55

                                          @jamalau tausche mal die Funktion setInstanceState() gegen folgenden Code aus:

                                          setInstanceState(val) {         
                                              extendObject(`system.adapter.${WATCHING_INSTANCE}`, {common: {enabled: val}});
                                              console.log(`HmIP Instanz ${WATCHING_INSTANCE} wurde ${val ? 'gestartet' : 'gestoppt'}`);  
                                          }
                                          

                                          Ich bin guter Dinge, dass extendObject das Problem verhindert. Damit wird der Status nämlich integriert und das Objekt nicht überschrieben. Den Code in meinen obigen Beitrag habe ich bereits angepasst.

                                          J 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

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

                                          589

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe