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.9k

  • 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.
  • 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 Offline
          HomoranH Offline
          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 Offline
              HomoranH Offline
              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
                      • L lichtraum

                        @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 Offline
                        J Offline
                        jamalau
                        schrieb am zuletzt editiert von
                        #56

                        @lichtraum Habe es jetzt einige Zeit in Verwendung, und nun klappt es auch wieder.
                        Danke für das Update.

                        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

                        433

                        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