Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Issi

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Profile
    • Following 0
    • Followers 6
    • Topics 7
    • Posts 717
    • Best 124
    • Groups 3

    Issi

    @Issi

    Developer

    189
    Reputation
    182
    Profile views
    717
    Posts
    6
    Followers
    0
    Following
    Joined Last Online
    Website xxbjxx.github.io/

    Issi Follow
    Developer Pro Starter

    Best posts made by Issi

    • Tankerkönig Adapter Komplett umbau
      Aktuelle Version 3.1.0 stable
      Veröffentlichungsdatum 24.12.2022
      Github Link https://github.com/iobroker-community-adapters/ioBroker.tankerkoenig

      Hey, da der Entwickler von tankerkoenig sich zurückgezogen hat und den Adapter in die Community übergeben hat, habe ich mich dem mal angenommen und den Adapter vollständig überarbeitet.
      Es wurden einige offene Issues abgearbeitet, die entweder Bug's oder Feature Anfragen enthielten.
      Zuallererst der Adapter wurde komplett neu geschrieben, er hat eine neue React UI bekommen, leider ist somit die alte Config vom Adapter nicht mehr, mit der neuen kompatibel, da das Migrieren der Daten viel zu umständlich gewesen wäre.

      Wie geht man nun vor, wenn man den Adapter aktualisieren will, ich empfehle den Adapter komplett neu zu installieren, da bei einem normalen Update eventuell seltsame Fehler in der UI auftreten können. Außerdem sind dann alte Datenpunkte vorhanden, die nicht mehr funktionieren.
      Wie macht man das am besten:

      1. in den alten Adapter gehen und den API Schlüssel, der dort angegeben ist, irgendwo abspeichern.
      2. dann unter Adapter den tankerkönig suchen und dort deinstallieren. Achtung alle Objekte werden gelöscht, auch DB logger (Influx, MySQL usw.) diese müsst ihr dann bei den neuen Objekten neu aktivieren.
      3. ihr installiert den neuen tankerkoenig über das +.
      4. ihr geht dann in die neue Adapter UI und gebt dort euren API-Schlüssel an, dann könnt ihr auch schon auf den Reiter Stationen gehen und dort die Stationen neu anlegen.

      Falls man aber das Update normal ohne Neuinstallation machen will, sollte man alle nicht funktionierenden Datenpunkte löschen, am besten ein mal den gesamten tankerkoenig.0.stations Ordner löschen und dann den Adapter starten, es werden alle neune Datenpunkte generiert.
      38336634-585e-48b0-8b69-7483fda3edcf-image.png

      Weitere Informationen wie und was man in der UI angeben kann, findet ihr auf GitHub in der Adapter Dokumentation DE / Dokumentation EN

      Was hat der Adapter nun neues bekommen:
      🐞 bug fixes:

      • Tankerkönig Widgets zeitweise leer Forum und GitHub issue #73
        die Funktion cutPrice wurde komplett neu geschrieben. (falls der Fehler weiterhin besteht, bitte ein neues Issue dafür aufmachen)
      • issue #79 wurde behoben.

      🚀 Feature request:

      • es wurden eine JsonTable für die vis hinzugefügt issue #24
      • eine Möglichkeit Rabatt anzugeben wurde hinzugefügt issue #50
      • Es wurde ein Button zu den Objekten hinzugefügt, über den man eine manuelle Aktualisierung starten kann. issue #53
      • Eine min / max Preis Datenpunkte wurden hinzugefügt, diese speichern den min / max Preis für den Tag.

      Vollständiges Changelog [EN]

      3.1.0 (2022-11-27)
      • (xXBJXx) removed noLog option because the adapter log output was strongly optimized
      • (xXBJXx) Optimized sorting of the cheapest gas station issue #96
      • (xXBJXx) add new state cheapest_stations for the cheapest gas station issue #93
      3.0.6 (2022-11-23)
      • (xXBJXx) Added new option to adjust the text in the combined data point issue #95
      3.0.5 (2022-11-20)
      • (xXBJXx) fixed sort bug for cheapest station
      3.0.4 (2022-11-19)
      • (xXBJXx) moved misc-data type to vehicle type
      • (xXBJXx) fixed messages rules and added new messages for Adapter Update
      • (xXBJXx) update dependencies
      • (xXBJXx) added lastUpdate_min / lastUpdate_max DP issue #91
      3.0.3 (2022-11-18)
      • (xXBJXx) Ukrainian translation added
      • (xXBJXx) add validation function for ID and Name Input fields
      • (xXBJXx) add copy from clipboard function for ID Input field
      • (Schmakus) added daily min/max prices to all stations and fuel types
      • (xXBJXx) update documentation because of new min/max datapoints
      3.0.2 (2022-11-10)
      • (xXBJXx) release new version from Tankerkoenig
      3.0.1 (2022-07-30)
      • (xXBJXx) resetValue function removed and state quality implemented. issue #79
      • (xXBJXx) added function => Set values to 0 when the Station is closed.
      • (xXBJXx) updated dependencies
      3.0.0 (2022-07-02)
      • (xXBJXx) BREAKING Adapter code completely revised
      • (xXBJXx) Adapter completely switched to TypeScript
      • (xXBJXx) BREAKING Adapter configurations page switched to React and redesigned
        (old config not compatible stations must be recreated)
      • (xXBJXx) add Dependabot auto merge support
      • (xXBJXx) add test and release script
      • (xXBJXx) Dependency updated
      • (xXBJXx) add feature request: manual update of all stations (one request per minute allowed) issue #53
      • (xXBJXx) add a new state => adapterStatus (indicates whether the adapter executes an automatic request or a manual request)
      • (xXBJXx) add new cutPrice function issue #73
      • (xXBJXx) add the feature request: Include discount in price (euro and percent) issue #50 and adapter code optimized
      • (xXBJXx) add the feature request: JsonTable for the vis issue #24
      posted in Tester
      Issi
      Issi
    • [Tablet Control] Tablet Steuerung möchte getestet werden

      Hi Leute,

      ich habe da einen kleinen Adapter erstellt (Fully Tablet Control) der getestet werden möchte. 😉
      Achtung, es wird ein Fully Kiosk Browser mit Plus License benötigt!

      Aktuelle Test-Version 0.3.8
      Veröffentlichungsdatum 08-10-2020
      Github Link https://github.com/xXBJXx/ioBroker.fully-tablet-control

      Was kann der Adapter:

      • Ladefunktion zyklisch oder Dauerstrom.
      • Helligkeitsregelung entweder fest oder manuell einstellbar.
      • Screensaver einschalten und ausschalten sowie einstellen, was für ein Screensaver angezeigt werden soll, Video oder Wallpaper.

      Ich würde mich über Feedback freuen!

      Momentan muss er noch per GitHub link installiert werden.

      posted in ioBroker Allgemein
      Issi
      Issi
    • Test Adapter Wallpanel
      Aktuelle Version GitHub release
      Veröffentlichungsdatum 30.05.2022
      Github Link https://github.com/xXBJXx/ioBroker.wallpanel

      Über den Adapter kann man die Wallpanel App auslesen und
      ein paar Funktionen steuern, z. B.:

      • Helligkeit
      • Bildschirm einschalten.

      Einige Funktionen, wie:

      • Kamera ein und ausschalten
      • Volume einstellen.

      Hat bei meinem Test nicht funktioniert, dass die Kamera nicht funktioniert ist, dem Entwickler von der Wallpanel App bekannt.

      Aktuelle Dokumentation Seite vom Adapter

      posted in Tester
      Issi
      Issi
    • RE: Tractive Adapter für Haustiere?

      @flexer
      ok, danke habe mir die API mal angeschaut, ist relativ simpel aufgebaut, ich denke, dass ich da was basteln kann.

      Sobald ich mit dem Elgato Key Light Adapter fertig bin, fehlt nicht mehr viel.
      Nur noch die UI und dann noch die Elgato Light Strips einbauen, da warte ich aber noch auf das Gerät sollte morgen ankommen, schätze das ich dann am Wochenende so weit bin, den zum Testen herauszugeben und dann kann ich ja mal mit dem Tractive anfangen.

      Ich weiß nur nicht, ob ich den alten überarbeiten oder gleich ganz neu anfangen soll unter einem neuen Namen, da er auch schon auf NPM registriert ist und der Entwickler sich nicht meldet.

      Falls ich neu anfangen soll, dann könnt ihr ja mal ein paar Namensvorschläge machen, wie er heißen soll.

      posted in ioBroker Allgemein
      Issi
      Issi
    • RE: Tankerkönig Adapter Komplett umbau

      @Feuersturm
      hab das Problem behoben denke ich ist jedenfalls nicht mehr aufgetreten bitte Testen.

      @chaot @oFbEQnpoLKKl6mbY5e13
      euer Problem war auch mit dem vom Feuersturm verknüpft, sollte jetzt richtig funktionieren.

      Testen und berichten bitte. Die neue Version ist v3.0.5 sollte in ein paar Stunden über fürs Update bereitstehen.

      posted in Tester
      Issi
      Issi
    • E-Control-at-fuel Kraftstoffpreise für Österreich

      Hi Leute,

      ADAPTER WIRD NICHT WEITER ENTWICKELT, NEUER ADAPTER IST ⇨ https://github.com/HGlab01/ioBroker.fuelpricemonitor

      posted in ioBroker Allgemein
      Issi
      Issi
    • RE: Problem beim loggen von Tankerkönig mit Influxdb 3.xx

      Ich habe den Adapter komplett umgebaut ⇨ neue React UI und auch der Adapter code ist neu geschrieben.
      In der neuen Version wird die Funktion das beim Aktualisieren eine 0 geschrieben wird nicht mehr da sein da der Adapter das dann durch die state quality (q-flag) geregelt wird siehe Issue Nr.79.

      Das funktioniert so, wenn die Tankstelle geschlossen ist, wird der letzte wert der im ioBroker geschrieben wurde, im state gelassen und der q-flag auf 0x40 ⇒ Substitute value from device gesetzt.
      Auch dann wen von der Tankstelle keine gültigen Werte kommen z. B. "e5": false/ "status": "no prices"

      {
          "ok": true,
          "license": "CC BY 4.0 -  https:\/\/creativecommons.tankerkoenig.de",
          "data": "MTS-K",
          "prices": {
              "60c0eefa-d2a8-4f5c-82cc-b5244ecae955": {
                  "status": "open",                               - Tankstelle ist offen
                  "e5": false,                                    - kein Super
                  "e10": false,                                   - kein E10
                  "diesel": 1.189                                 - Tankstelle führt nur Diesel
              },
              "446bdcf5-9f75-47fc-9cfa-2c3d6fda1c3b": {
                  "status": "closed"                              - Tankstelle ist zu
              },
              "4429a7d9-fb2d-4c29-8cfe-2ca90323f9f8": {
                  "status": "open",
                  "e5": 1.409,
                  "e10": 1.389,
                  "diesel": 1.129
              },
              "44444444-4444-4444-4444-444444444444": {
                  "status": "no prices"                           - keine Preise für Tankstelle verfügbar
              }
          }
      }
      

      wenn der state nicht gültig ist, sollte der influxdb Adapter den state nicht logen ausgenommen man aktiviert => trotzdem gleiche Werte aufzeichnen (Sekunden) wen er auf Nur Änderungen aufzeichnensollte er das nicht tun

      b0af28cc-1f3b-4ce1-9f39-aae0fce30017-CleanShot 29-07-2022 at 16.38.31.png

      ein PR an den Adapter habe ich bereits erstellt muss nur noch zusammengeführt werden

      posted in ioBroker Allgemein
      Issi
      Issi
    • RE: Uralte Installation noch zu retten?

      @haegar
      keine Sorge, es gibt keine blöden fragen, das Forum ist da um Fragen zustellen, falls man nicht weiter kommt.

      posted in ioBroker Allgemein
      Issi
      Issi
    • RE: Tractive Adapter für Haustiere?

      @flexer sagte in Tractive Adapter für Haustiere?:

      @Issi Lust auf einen neuen Adapter?

      Ich bin zwar schon an einem neuen dran für Elgato Key Light aber kannst mir mal E-Mail und Password zuschicken wen du möchtest, dann kann ich mir schon mal die API anschauen.

      posted in ioBroker Allgemein
      Issi
      Issi
    • RE: Tractive Adapter für Haustiere?

      @wildbill
      Nein da es noch keinen Adapter gibt ich habe lediglich gezeigt was die api an daten liefert und ein wenig was probiert.
      Ich habe die Woche Spätschicht des wegen kann ich da nicht viel dran arbeiten aber ich habe schon angefangen.

      posted in ioBroker Allgemein
      Issi
      Issi

    Latest posts made by Issi

    • RE: Node.js Script in iobroker integrieren

      @lububroker

      funktionirt den das Skript? Hast du es schon mal gestartet ?
      Der JavaScript-Adapter hat da ab und an mal so paar Probleme und unterstreicht Module, obwohl alles ok ist

      posted in JavaScript
      Issi
      Issi
    • RE: Node.js Script in iobroker integrieren

      @h07d0q
      Das mit dem Adapter ist nicht immer so einfach.

      Klar kann ein Developer da einen basteln, aber ohne die nötigen Geräte zum Testen ist es immer ein Blindflug beim Programmieren, und wenn man die User das testen überlässt, ist das auch nicht immer so das Gelbe vom Ei, da man immer auf das Feedback warten muss, und sehr oft wissen die User nicht, was sie machen müssen.

      Deswegen geht auch kaum ein Developer an Adapter-Entwicklung, wenn er keine Geräte zum Testen hat.

      Aber du kannst gerne mal einen Adapter Request unter => ioBroker Adapter Requests erstellen, vorher natürlich schauen, ob es nicht schon einen Request gibt und vllt. hat ja einer der Devs die Geräte und macht da einen Adapter.

      posted in JavaScript
      Issi
      Issi
    • RE: IFrame mit Kiosk browser, nicht Scrollbar

      @daPanic
      es ist auch da zum Verschieben, leider wird das auch zum Scrollen benötigt, so war das bei mir immer da man ja mit dem Finger das macht und nicht mit der Maus.

      posted in Visualisierung
      Issi
      Issi
    • RE: Variablen innerhalb des Scriptes definieren *gelöst*

      @gluecksmann
      kein problem ich habe halt nur das benutzt was du angegeben hast wuste ja nicht das es nur zu test zweken da war
      Hier das aktualisierte Skript. Kannst ihn gerne probieren.

      /**
       * Haustür-Lampensteuerung:
       *  - Nur bei Dunkelheit: Beim Öffnen der Tür wird die Hue Außenlampe auf 100% gesetzt.
       *    Dabei wird der vorherige Helligkeitswert gespeichert.
       *  - Beim Schließen: Nach 2 Minuten wird der vorherige Wert wiederhergestellt.
       *  - Entprellung, Schutz gegen Überschneidungen und Logging.
       *  - Nur der persistente State wird bei Bedarf erstellt; andere States müssen existieren.
       *  - Gespeichert wird als number mit -1 = "kein Wert gespeichert"
       */
      
      // === Konfiguration / Konstanten ===
      const doorSensor = 'alias.0.Sensor Haustür.opened';          // Tür geöffnet/geschlossen
      const hueDoorLevel = 'hue.0.Haustür.level';                // Hue Außenlampe Level
      const savedLevelState = 'javascript.0.Aussenlampe_Zustand'; // Persistenter interner Speicher (-1 = leer)
      
      // === Robustheits-Einstellungen ===
      const DEBOUNCE_MS = 2000; // Entprellzeit in ms
      let busy = false;
      let lastEventTime = 0;
      
      // Logging ein/aus
      const enableLogging = true;
      function logInfo(msg) {
        if (enableLogging) log(`[Haustür-Script] ${msg}`, 'info');
      }
      function logWarn(msg) {
        if (enableLogging) log(`[Haustür-Script] ${msg}`, 'warn');
      }
      
      // === Helfer ===
      // Prüft, ob das Level eine valide Zahl zwischen 0 und 100 ist
      function isValidLevel(lvl) {
        return typeof lvl === 'number' && lvl >= 0 && lvl <= 100;
      }
      
      // Prüft, ob es gerade dunkel ist (also NICHT zwischen sunrise und sunset)
      function isDark() {
        return !compareTime(getAstroDate('sunrise', undefined, 0), getAstroDate('sunset', undefined, 0), 'between', null);
      }
      
      // === Persistenten State sicherstellen ===
      if (!existsState(savedLevelState)) {
        createState(savedLevelState, -1, {
          read: true,
          write: true,
          name: 'Gespeichertes Haustür-Level vor Änderung',
          role: 'level',
          type: 'number',
          def: -1,
          min: -1,
          max: 100
        });
        logInfo(`State "${savedLevelState}" (number mit -1 als Leerwert) wurde angelegt.`);
      }
      
      // === Hauptlistener auf Tür-Statusänderung ===
      on({ id: doorSensor, change: 'ne' }, async (obj) => {
        const now = Date.now();
      
        // Entprellung: zu schnelle Folgetrigger ignorieren
        if (now - lastEventTime < DEBOUNCE_MS) {
          logInfo('Event verworfen wegen Entprellung.');
          return;
        }
        lastEventTime = now;
      
        // Schutz gegen parallele Ausführung
        if (busy) {
          logWarn('Übersprungen: Script ist noch in Bearbeitung.');
          return;
        }
        busy = true;
      
        try {
          const isOpen = obj.state.val === true;
          const stored = getState(savedLevelState)?.val; // -1 = leer
          const currentLevelObj = getState(hueDoorLevel);
          const currentLevel = currentLevelObj?.val;
      
          if (isOpen) {
            logInfo('Tür geöffnet erkannt.');
            if (isDark()) {
              logInfo('Es ist dunkel – Lampenstatus wird angepasst.');
      
              // Vorheriges Level nur speichern, wenn noch nichts gespeichert ist und aktueller Level gültig
              if (stored === -1 && isValidLevel(currentLevel)) {
                setState(savedLevelState, currentLevel, true);
                logInfo(`Vorheriges Level gespeichert: ${currentLevel}`);
              } else if (stored !== -1) {
                logInfo(`Vorheriger Level war bereits gespeichert: ${stored}`);
              } else if (!isValidLevel(currentLevel)) {
                logWarn('Kein gültiger aktueller Level zum Speichern vorhanden.');
              }
      
              // Hue-Lampe auf 100 setzen
              if (existsState(hueDoorLevel)) {
                setState(hueDoorLevel, 100);
                logInfo('Haustür-Lampe auf 100 gesetzt.');
              } else {
                logWarn(`State "${hueDoorLevel}" existiert nicht. Kann Lampen-Level nicht setzen.`);
              }
            } else {
              logInfo('Es ist Tag – keine Änderung an der Lampe.');
              // nichts tun bei Tageslicht
            }
          } else {
            logInfo('Tür geschlossen erkannt.');
      
            if (stored !== -1) {
              if (existsState(hueDoorLevel)) {
                logInfo(`Haustür-Lampe wird in 2 Minuten auf gespeicherten Wert (${stored}) zurückgesetzt.`);
                setStateDelayed(hueDoorLevel, stored, 120000, false);
              } else {
                logWarn(`State "${hueDoorLevel}" existiert nicht. Kann Lampen-Level nicht zurücksetzen.`);
              }
              // Gespeicherten Level zurücksetzen
              setState(savedLevelState, -1, true);
              logInfo('Gespeicherter Level danach gelöscht.');
            } else {
              logInfo('Kein gespeicherter Level vorhanden – nichts zurückzusetzen.');
            }
          }
        } catch (e) {
          logWarn(`Fehler im Script: ${e.message}`);
        } finally {
          busy = false;
        }
      });
      
      
      posted in Blockly
      Issi
      Issi
    • RE: Variablen innerhalb des Scriptes definieren *gelöst*

      @gluecksmann
      Ich habe hier mal das Skript etwas umgeschrieben. Du kannst es als ein neues anlegen und mal ausprobieren. Die Erklärung und was das Skript macht, habe ich geschrieben.

      /**
       * Haustür-Lampensteuerung mit:
       *  - Dunkelheitsprüfung (nur bei dunkel Türöffnung wird Licht hochgezogen)
       *  - Speichern des vorherigen Lampen-Levels (persistenter State)
       *  - Rücksetzen beim Schließen (mit Verzögerung)
       *  - Entprellung
       *  - Schutz gegen Überschneidungen
       *  - Logging
       *  - Nur der persistente State wird bei Bedarf erstellt; andere States werden vorausgesetzt, es wird aber gewarnt, wenn sie fehlen.
       *  - Verwendung von "number" mit -1 als Marker für "kein gespeicherter Wert"
       */
      
      // === Konfiguration / Konstanten ===
      const doorSensor = 'alias.0.Sensor Haustür.opened';          // Trigger: Tür geöffnet/geschlossen
      const hueDoorLevel = 'hue.0.Haustür.level';                // Lichtlevel Haustürlampe
      const messageLampOn = 'hue.0.Nachrichtenlampe.on';         // Nachrichtenlampe
      const savedLevelState = 'javascript.0.Aussenlampe_Zustand'; // Persistenter interner Speicher, -1 = leer
      
      // === Einstellungen für Robustheit ===
      const DEBOUNCE_MS = 2000; // Entprellzeit in ms
      let busy = false;
      let lastEventTime = 0;
      
      // Logging ein/aus
      const enableLogging = true;
      function logInfo(msg) {
        if (enableLogging) log(`[Haustür-Script] ${msg}`, 'info');
      }
      function logWarn(msg) {
        if (enableLogging) log(`[Haustür-Script] ${msg}`, 'warn');
      }
      
      // === Helfer ===
      // Prüft, ob das Level eine valide Zahl zwischen 0 und 100 ist
      function isValidLevel(lvl) {
        return typeof lvl === 'number' && lvl >= 0 && lvl <= 100;
      }
      
      // Prüft, ob es gerade dunkel ist (also NICHT zwischen sunrise und sunset)
      function isDark() {
        return !compareTime(getAstroDate('sunrise', undefined, 0), getAstroDate('sunset', undefined, 0), 'between', null);
      }
      
      // === State sicherstellen (nur der persistente State) ===
      if (!existsState(savedLevelState)) {
        createState(savedLevelState, -1, {
          read: true,
          write: true,
          name: 'Gespeichertes Haustür-Level vor Änderung',
          role: 'level',
          type: 'number',
          def: -1,
          min: -1,
          max: 100
        });
        logInfo(`State "${savedLevelState}" (number mit -1 als Leerwert) wurde angelegt.`);
      }
      
      // === Hauptlistener auf Tür-Statusänderung ===
      on({ id: doorSensor, change: 'ne' }, async (obj) => {
        const now = Date.now();
      
        // Entprellung: zu schnelle Wiederholungen ignorieren
        if (now - lastEventTime < DEBOUNCE_MS) {
          logInfo('Event verworfen wegen Entprellung.');
          return;
        }
        lastEventTime = now;
      
        // Schutz gegen gleichzeitige Ausführung
        if (busy) {
          logWarn('Übersprungen: Script ist noch in Bearbeitung.');
          return;
        }
        busy = true;
      
        try {
          const isOpen = obj.state.val === true;
          const stored = getState(savedLevelState)?.val; // -1 heißt leer
          const currentLevelObj = getState(hueDoorLevel);
          const currentLevel = currentLevelObj?.val;
      
          if (isOpen) {
            logInfo('Tür geöffnet erkannt.');
      
            if (isDark()) {
              logInfo('Es ist dunkel – Lampenstatus wird angepasst.');
      
              // Vorheriges Level nur speichern, wenn noch nichts gespeichert ist und aktuelles Level valide ist
              if (stored === -1 && isValidLevel(currentLevel)) {
                setState(savedLevelState, currentLevel, true);
                logInfo(`Vorheriges Level gespeichert: ${currentLevel}`);
              } else if (stored !== -1) {
                logInfo(`Vorheriger Level war bereits gespeichert: ${stored}`);
              } else if (!isValidLevel(currentLevel)) {
                logWarn('Kein gültiger aktueller Level zum Speichern vorhanden.');
              }
      
              // Haustür-Lampe auf 100 setzen
              if (existsState(hueDoorLevel)) {
                setState(hueDoorLevel, 100);
                logInfo('Haustür-Lampe auf 100 gesetzt.');
              } else {
                logWarn(`State "${hueDoorLevel}" existiert nicht. Kann Lampen-Level nicht setzen.`);
              }
      
              // Nachrichtenlampe einschalten
              if (existsState(messageLampOn)) {
                setState(messageLampOn, true);
                logInfo('Nachrichtenlampe eingeschaltet.');
              } else {
                logWarn(`State "${messageLampOn}" existiert nicht. Kann Nachrichtenlampe nicht setzen.`);
              }
            } else {
              logInfo('Es ist Tag – Nachrichtenlampe aus und gespeicherten Level verwerfen.');
      
              if (existsState(messageLampOn)) {
                setState(messageLampOn, false);
                logInfo('Nachrichtenlampe ausgeschaltet.');
              } else {
                logWarn(`State "${messageLampOn}" existiert nicht. Kann Nachrichtenlampe nicht setzen.`);
              }
      
              // Gespeicherten Level löschen (auf -1 setzen)
              setState(savedLevelState, -1, true);
              logInfo('Gespeicherter Level zurückgesetzt (Tag-Modus).');
            }
          } else {
            logInfo('Tür geschlossen erkannt.');
      
            if (stored !== -1) {
              if (existsState(hueDoorLevel)) {
                logInfo(`Haustür-Lampe wird in 2 Minuten auf gespeicherten Wert (${stored}) zurückgesetzt.`);
                setStateDelayed(hueDoorLevel, stored, 120000, false);
              } else {
                logWarn(`State "${hueDoorLevel}" existiert nicht. Kann Lampen-Level nicht zurücksetzen.`);
              }
      
              // Gespeicherten Level wieder auf "leer" setzen
              setState(savedLevelState, -1, true);
              logInfo('Gespeicherter Level danach gelöscht.');
            } else {
              logInfo('Kein gespeicherter Level vorhanden – nichts zum Zurücksetzen.');
            }
      
            // Nachrichtenlampe nach Verzögerung aus
            if (existsState(messageLampOn)) {
              setStateDelayed(messageLampOn, false, 45000, false);
              logInfo('Nachrichtenlampe wird nach 45 Sekunden ausgeschaltet.');
            } else {
              logWarn(`State "${messageLampOn}" existiert nicht. Kann Nachrichtenlampe nicht setzen.`);
            }
          }
        } catch (e) {
          logWarn(`Fehler im Script: ${e.message}`);
        } finally {
          busy = false;
        }
      });
      
      

      Erklärung:

      Was macht das Script insgesamt?
      Wenn die Haustür geöffnet wird, prüft das Script:

      • Ist es dunkel draußen?

        • Ja: Dann merkt es sich, wie hell die Haustür-Lampe vorher war, schaltet sie auf 100% und aktiviert die Nachrichtenlampe.

        • Nein (also Tag): Es tut nur: schaltet die Nachrichtenlampe aus und verwirft einen alten gespeicherten Zustand (falls einer da war).
          Wenn die Tür wieder geschlossen wird, stellt es nach einer kurzen Verzögerung (2 Minuten) die Haustür-Lampe auf den vorherigen Wert zurück, falls dieser gespeichert war, und schaltet die Nachrichtenlampe nach 45 Sekunden aus.

      Wichtige Zusatzfunktionen (für Stabilität & Verständlichkeit)

      • Entprellung: Der Türsensor kann manchmal sehr schnell mehrfach hintereinander melden „offen/zu“. Das Script ignoriert solche Schnellfolgen, wenn sie in weniger als 2 Sekunden passieren, damit nichts durcheinandergerät.

      • Verarbeitungsschutz: Wenn das Script gerade dabei ist, eine Aktion durchzuführen, dann wartet es ab und führt nicht gleichzeitig nochmal etwas aus. Das verhindert unsauberes Überschreiben.

      • Speichern des vorherigen Levels: Der vorherige Lampenwert wird nicht nur im flüchtigen Speicher (also nur während dieses Laufes) behalten, sondern in einem echten ioBroker-State (javascript.0.Aussenlampe_Zustand), der auch nach einem Neustart des Scripts erhalten bleibt.

      • Logging: Das Script schreibt (wenn aktiviert) in das ioBroker-Protokoll, was passiert: z. B. „Tür geöffnet“, „Es ist dunkel, Lampe hochsetzen“, „Level gespeichert“, „Zurücksetzen beim Schließen“ usw. Damit kann man im Log nachvollziehen, warum etwas passiert ist oder nicht.

      Was kann der Nutzer tun?

      • Ansehen: In ioBroker unter „Protokoll“ kann man nach [Haustür-Script] suchen und sehen, was gerade geschieht. Das hilft beim Debuggen oder Verständnis.

      • Anpassen:

        • Will man die Verzögerungen (z. B. die 2 Minuten beim Zurücksetzen) ändern, passt man die Zahl 120000 (Millisekunden) an.

        • Wer die Entprellzeit länger oder kürzer will, ändert DEBOUNCE_MS.

        • Logging ausmachen: enableLogging = false setzen, dann schreibt es keine Infos mehr ins Log.

      posted in Blockly
      Issi
      Issi
    • RE: IFrame mit Kiosk browser, nicht Scrollbar

      @dapanic
      Falls du noch suchst, hast du schon mal hier geschaut? In den Fully-Einstellungen?
      34c9f28b-fdda-4586-ae2d-e26f6b6099a3-image.png

      posted in Visualisierung
      Issi
      Issi
    • RE: Tractive Adapter für Haustiere?

      Hallo an alle, da es mir etwas besser geht und ich Lust hatte und mich eh wieder einarbeiten wollte, habe ich heute den Adapter etwas überarbeitet und auf den neusten Stand gebracht.

      Die Admin Ui und Tab sind komplett neu gemacht worden und auch den Code im Backend werde ich neu schreiben.
      794e1832-cfde-4e99-b592-026343ffcf8a-image.png
      f3c0c616-2f75-4607-bcec-abf21f51291f-image.png
      552dfdb7-759e-4919-adda-5ebfdf40d9ee-image.png

      Da ich aber nur die alten Daten, die ich mal auf DC/Telegramm/Forum/GitHub bekommen und ich noch gefunden habe, ist es etwas schwierig, auf alles zu reagieren, was sich in der API geändert hat.

      Also: Falls wer eine aktuelle API (JSON) hat
      b273bcad-9c6c-49a1-ab92-b726a57c39fc-image.png

      Ich würde mich freuen, wenn man sie mir zukommen lässt, oder direkt ein Login, falls möglich, damit die Tests mit Login und Fehlererkennung auch durchgeführt werden können, da ich sonst blind programmieren muss, und das ist nicht so gut.

      MfG.
      Issi

      posted in ioBroker Allgemein
      Issi
      Issi
    • RE: Test Elgato Key Light Adapter

      @westwood sagte in Test Elgato Key Light Adapter:

      @issi
      Hi Issi,
      erst einmal vielen Dank für den Adapter, finde ich klasse 👍

      Ich habe ihn nun erfolgreich bei mir eingebunden und kann meine drei Elgato (2xKey Light Air, 1xKey Light mini) problemlos über die Weboberfläche vom IOBroker bedienen.

      Da ich aber ein fauler Mensch bin, wollte ich nun auch die einzelnen Datenpunkte über Alexa steuern können. Ich konnte diese sogar im iot-Adapter aufnehmen, jedoch lassen sich die Lampen leider nicht steuern.

      Alexa triggert wohl die Datenpunkte, aber diese lassen wohl eine Veränderung seitens des iot-Adapters nicht zu, hab ich was übersehen oder muss ich noch was verändern, damit das funktioniert?

      Ich habe die Datenpunkte: brightness, on und temperature unter light/lights/0 verwendet.

      VG
      WestWood

      Hallo @WestWood,
      du hast die richtigen Datenpunkte benutzt brightness, on und temperature .

      Da ich kein iot benutze, kann ich dir leider nicht sagen, wie du es da einstellen musst.

      Wird der state bei einer Aktion mit Alexa angesteuert? Also der wert verändert ⇨ brightness = 50 % usw. in roter Schrift.

      So wie ich es sehe, wird beim iot Adapter die brightness auch als ON / OFF gehandhabt, das funktioniert hier aber nicht, da der kleinste wert 3 % sind und somit die Lampe nicht ausgehen kann, das Einschalten klappt so aber.

      posted in Tester
      Issi
      Issi
    • RE: Tankerkönig Adapter Komplett umbau

      @segway
      ja sollte er speichert dir den aber zur Sicherheit noch mal separat, da er dort verschlüsselt ist

      posted in Tester
      Issi
      Issi
    • RE: Tankerkönig Adapter Komplett umbau

      @segway
      hmm, genauso wie bei meinem Test System und ich habe dort keine Probleme.
      Speicher dir deine config und installiere mal den Adapter komplett neu.

      posted in Tester
      Issi
      Issi
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo