Navigation

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

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    M
    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 15
    • Best 0
    • Groups 1

    m1k3f15h

    @m1k3f15h

    Starter

    0
    Reputation
    6
    Profile views
    15
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    m1k3f15h Follow
    Starter

    Latest posts made by m1k3f15h

    • RE: Test Adapter rest-api

      Hy Leute,

      Unterstützt der Adapter auch eine Funktion analog zur "setValueFromBody" vom "ioBroker.simple-api"?
      Ich würde gerne von meinem Unifi Cloud Key via Alarmmanager einen Post auf mein ioBroker-System machen.
      Vom Alarmmanager sollten im Body einige Infos sein, welche ich gerne in einem Datenpunkt hätte...

      Und da hier steht, dass dieser Adapter die simple-api ablösen soll, wärs cool, wenn ich gleich diesen verwenden könnte 🙂

      mfg
      Mike

      posted in Tester
      M
      m1k3f15h
    • RE: iobroker hochverfügbar

      @apollon77
      So hab ich das noch nie gesehen 🙂 das ist ein guter Ansatz 🙂

      mike

      posted in Off Topic
      M
      m1k3f15h
    • RE: iobroker hochverfügbar

      @apollon77 Danke für die schnelle Antwort 🙂
      Ja da werde ich mich mal spielen mit 2 Testinstanzen 🙂
      Mir hat auf jeden Fall dein Ansatz sehr gut gefallen, dass die Adapter "automatisch" umgezogen werden und auch, dass Hardwarebezogene Adapter auf einem Host "festgepinnt" werden können 🙂 einfach megageil der Ansatz 🙂

      Ist nur die Frage, wo die Settings der Adapter gespeichert sind.. denn von einem Host der Offline ist, kann ich keine Config mehr kopieren.. Weisst du was ich meine? 🙂

      Mike

      posted in Off Topic
      M
      m1k3f15h
    • RE: iobroker hochverfügbar

      @apollon77 said in iobroker hochverfügbar:

      Was noch auf meiner Ideenliste steht ist ein "HA-Adapter" der an der Stelle die Konfiguration annimmt welche Adapterinstanz verschoben werden kann und wer nicht (weil zB lokaler Serieller Port genutzt wird oder so). Und dann monitoren Instanzen dieses HA Adapters die Hosts und wenn einer ausfällt schieben die dann Instanzen durch die Gegend um wirklich so viel Funktionalität wie geht zu erhalten.

      Hallo apollon77,

      Wie weit "fortgeschritten" ist dein HA Adapter bzw die Ansätze dazu?
      Ich bin sehr an dem Thema interessiert.

      Eine andere Frage noch zu dem Thema:
      Wenn ich eine Multihostumgebung mit Redis(Sentinel) aufbaue... Wo sind die "Adaptersettings" gespeichert? Einen richtigen "Master" gibts ja dann nicht oder?

      1. Kann ich den Admin auf beiden Hosts installieren und alles bedienen?
      2. Wenn mir ein Host abschmiert, kann ich dann noch die Adapter "verschieben" (vom abgeschmierten host auf den der lauft)

      mfg
      Mike

      posted in Off Topic
      M
      m1k3f15h
    • RE: clearSchedule Frage bzw. funktioniert nicht

      @blackeagle998 Servus

      Ich denke ich war ein Idiot und hab Dictionary und Array verwechselt ^^
      Kann ich Schedules auch in ein Dictionary speichern, damit ich sie statt Nummer mit Namen ansprechen kann?

      mike

      posted in JavaScript
      M
      m1k3f15h
    • RE: clearSchedule Frage bzw. funktioniert nicht

      @haus-automatisierung

      const suncalc = require('suncalc');
      const config = getObject('system.config');
      const lat = config.common.latitude;
      const long = config.common.longitude;
      const weatherHorizon = 3;
      var ostSchrittId = 1;
      var suedSchrittId = 1;
      var westSchrittId = 1;
      let schedules = {};
      
      schedule('0 2 * * *', async function () {
          const list = getSchedules(false);
          telegramMike("Suncalc_v2 Timer aktiv: " + list.length)
          checkSuncalc();
          const list1 = getSchedules(false);
          telegramMike("Suncalc_v2 Timer aktiv: " + list1.length)
      });
      
      
      on({id: '0_userdata.0.script.Trigger.Suncalc', change: "ne", val: true}, function (obj) {
          setState(obj.id, false);
          log("Manuell getriggert");
          checkSuncalc()
          const list = getSchedules(false);
          list.forEach(schedule => log(JSON.stringify(schedule)));
          telegramMike("Suncalc_v2 Timer aktiv: " + list.length)
      });
      
      
      function checkSuncalc() {    
          var times = suncalc.getTimes(new Date(), lat, long);
          var startTime = new Date(times.sunrise.getFullYear(), times.sunrise.getMonth(), times.sunrise.getDate(), times.sunrise.getHours(), 0);
          var endTime = new Date(times.sunset.getFullYear(), times.sunset.getMonth(), times.sunset.getDate(), times.sunset.getHours()+4, 0);
          log(startTime + " bis " + endTime)
          var checkTime = startTime.getTime();
          var test = 0
          ostSchrittId = 1;
          suedSchrittId = 1;
          westSchrittId = 1;
          while(checkTime < endTime.getTime()) {
              // Suncalc
              checkTime = checkTime+2*60*1000;
              var dateTime = new Date(checkTime);
              var sunpos = suncalc.getPosition(checkTime, lat, long);
              var h = sunpos.altitude * 180 / Math.PI; //elevation
              var a = sunpos.azimuth * 180 / Math.PI + 180; //azimut
              var azimut = Math.round(10 * a) / 10
              var elevation = Math.round(10 * h) / 10
              // Twilight
              var twi = Math.round(((h-weatherHorizon+12)/18*1000)/10);
              if (twi > 100) twi = 100;
              if (twi < 0) twi = 0;
              // Output
              //log(twi + "  -  " + azimut + "   -  " + elevation)
              // Check Automatik Sonnenschutz
              ablaufOst(dateTime, azimut, elevation);
              ablaufSued(dateTime, azimut, elevation);
              ablaufWest(dateTime, azimut, elevation);
              if (suedSchrittId == 5 && westSchrittId == 5 && ostSchrittId == 5) break;
              test++;
      
          };
          log (test + " Durchläufe")
          //https://forum.iobroker.net/topic/24683/variable-in-scheduler-nutzen/2
      };
      
      
      /**
      * Ablauf Ostseite
      * @param {number} azimut
      * @param {number} elevation
      * @param {Date} date
      */
      function ablaufOst(date, azimut, elevation) {
          switch(ostSchrittId) {
              case 1: // Osten OG beschatten
                  if (azimut < 130 && elevation > 5) { // MUSS NOCH ANGEPASST WERDEN
                      ostSchrittId = 2;
                      if (getState('0_userdata.0.global.settings.rollladen.sonnenautomatikost').val) {
                          log(date + " Osten OG Sonnenschutz Aktivieren", "info");
                          const name = "ostOgZu";
                          if (schedules[name]) clearSchedule(schedules[name]);
                          if (new Date() < date) {
                              schedules[name] = schedule(date.getMinutes() + " " + date.getHours() + " * * *",function() { 
                                  telegramMike(name);
                                  clearSchedule(schedules[name]);
                              });
                              const nameExt = "ostOgZuExt";
                              const dateTimeExt = new Date(date.getTime()-60*60*1000);
                              log(dateTimeExt + " Osten OG Sonnenschutz Erweitert Aktivieren ", "info");
                              if (schedules[nameExt]) clearSchedule(schedules[nameExt]);
                              if (new Date() < dateTimeExt) {
                                  schedules[name] = schedule(dateTimeExt.getMinutes() + " " + dateTimeExt.getHours() + " * * *", function() {
                                      telegramMike(nameExt);
                                      clearSchedule(schedules[name]);
                                  });
                              }; // Eventuell dann Ext Aktivieren?
                          };
                      };
                  };
                  break;
              case 2: // Osten OG öffnen
                  if (azimut > 130 || elevation > 60) { // MUSS NOCH ANGEPASST WERDEN
                      ostSchrittId = 5;
                      if (getState('0_userdata.0.global.settings.rollladen.sonnenautomatikost').val) {
                          log(date + " Osten OG Sonnenschutz Deaktivieren", "info");
                          const name = "ostOgAuf";
                          if (schedules[name]) {
                              log(name + " gelöscht")
                              clearSchedule(schedules[name]);
                          }
                          if (new Date() < date) {
                              schedules[name] = schedule(date.getMinutes() + " " + date.getHours() + " * * *",function() {
                                  telegramMike(name);
                                  clearSchedule(schedules[name]);
                              });
                          };
                      };
                  };
                  break;
              case 5: // Schon fertig!
                  break;
              default:
                  //log("Sonnenautomatik SchrittId West unbekannt!!", "error");
                  break;
           };
      }
      
      /**
      * Ablauf Südseite
      * @param {number} azimut
      * @param {number} elevation
      * @param {Date} date
      */
      function ablaufSued(date, azimut, elevation) {
          switch(suedSchrittId) {
              case 1: // Süden EG beschatten
                  if (azimut > 92) {
                      suedSchrittId = 2;
                      if (getState('0_userdata.0.global.settings.rollladen.sonnenautomatiksued').val) {
                          log(date + " Süden EG Sonnenschutz Aktivieren", "info");
                          const name = "suedEgZu";
                          if (schedules[name]) clearSchedule(schedules[name]);
                          if (new Date() < date) {
                              schedules[name] = schedule(date.getMinutes() + " " + date.getHours() + " * * *",function() {
                                  telegramMike(name);
                                  clearSchedule(schedules[name]);
                              });
                              const nameExt = "suedEgZuExt";
                              const dateTimeExt = new Date(date.getTime()-60*60*1000);
                              log(dateTimeExt + " Süden EG Sonnenschutz Erweitert Aktivieren ", "info");
                              if (new Date() < dateTimeExt) {
                                  schedules[nameExt] = schedule(dateTimeExt.getMinutes() + " " + dateTimeExt.getHours() + " * * *", function() {
                                      telegramMike(nameExt);
                                      clearSchedule(schedules[nameExt]);
                                  });
                              }; // Eventuell dann Ext Aktivieren?
                          };
                      };
                  };
                  break;
              case 2: // Süden OG beschatten
                  if (azimut > 110 && elevation < 50) {
                      suedSchrittId = 3;
                      if (getState('0_userdata.0.global.settings.rollladen.sonnenautomatiksued').val) {
                          log(date + " Süden OG Sonnenschutz Aktivieren", "info");
                          const name = "suedOgZu";
                          if (schedules[name]) clearSchedule(schedules[name]);
                          if (new Date() < date) {
                              schedules[name] = schedule(date.getMinutes() + " " + date.getHours() + " * * *",function() {
                                  telegramMike(name);
                                  clearSchedule(schedules[name]);
                              });
                              const nameExt = "suedOgZuExt";
                              const dateTimeExt = new Date(date.getTime()-60*60*1000);
                              log(dateTimeExt + " Süden OG Sonnenschutz Erweitert Aktivieren ", "info");
                              if (new Date() < dateTimeExt) {
                                  schedules[nameExt] = schedule(dateTimeExt.getMinutes() + " " + dateTimeExt.getHours() + " * * *", function() {
                                      telegramMike(nameExt);
                                      clearSchedule(schedules[nameExt]);
                                  });
                              }; // Eventuell dann Ext Aktivieren?
                          };
                      };
                  } else if (azimut > 180) {
                      suedSchrittId = 4;
                      if (getState('0_userdata.0.global.settings.rollladen.sonnenautomatiksued').val) {
                          log(date + " Süden OG Sonnenschutz Aktivieren übersprungen", "info");
                      };
                  };
                  break;
              case 3: // Süden OG öffnen
                  if ((azimut > 190 && elevation > 55) || azimut > 220) {
                      suedSchrittId = 4;
                      if (getState('0_userdata.0.global.settings.rollladen.sonnenautomatiksued').val) {
                          log(date + " Süden OG Sonnenschutz Deaktivieren", "info");
                          const name = "suedOgAuf";
                          if (schedules[name]) clearSchedule(schedules[name]);
                          if (new Date() < date) {
                              schedules[name] = schedule(date.getMinutes() + " " + date.getHours() + " * * *",function() {
                                  telegramMike(name);
                                  clearSchedule(schedules[name]);
                              });
                          };
                      };
                  };
                  break;
              case 4: // Süden EG öffnen
                  if (azimut > 250) {
                      suedSchrittId = 5;
                      if (getState('0_userdata.0.global.settings.rollladen.sonnenautomatiksued').val) {
                          log(date + " Süden EG Sonnenschutz Deaktivieren", "info");
                          const name = "suedEgAuf";
                          if (schedules[name]) clearSchedule(schedules[name]);
                          if (new Date() < date) {
                              schedules[name] = schedule(date.getMinutes() + " " + date.getHours() + " * * *",function() {
                                  telegramMike(name);
                                  clearSchedule(schedules[name]);
                              });
                          };
                      };
                  };
                  break;
              case 5: // Schon fertig!
                  break;
              default:
                  log("Sonnenautomatik SchrittId Süd unbekannt!!", "error");
                  break;
           };
      }
      
      /**
      * Ablauf Westseite
      * @param {number} azimut
      * @param {number} elevation
      * @param {Date} date
      */
      function ablaufWest(date, azimut, elevation) {
          switch(westSchrittId) {
              case 1: // Westen EG beschatten
                  if (azimut > 202) {
                      westSchrittId = 2;
                      if (getState('0_userdata.0.global.settings.rollladen.sonnenautomatikwest').val) {
                          log(date + " Westen EG Sonnenschutz Aktivieren", "info");
                          const name = "westEgZu";
                          if (schedules[name]) clearSchedule(schedules[name]);
                          if (new Date() < date) {
                              schedules[name] = schedule(date.getMinutes() + " " + date.getHours() + " * * *",function() {
                                  telegramMike(name);
                                  setState('0_userdata.0.eg.ku.fensterWest.Steuern.Sonnenschutz.Aktivieren'/*Aktivieren*/, true);
                                  setState('s7.0.DBs.DB211.cmnd/eg/wb/rollladenwest_down'/*Cmnd/eg/wb/rollladenwest Down*/, true);
                                  setState('s7.0.DBs.DB211.cmnd/eg/eb/rollladen_down', true);
                                  clearSchedule(schedules[name]);
                              });
                          };
                          const nameExt = "westEgZuExt";
                          if (schedules[nameExt]) clearSchedule(schedules[nameExt]);
                          const dateTimeExt = new Date(date.getTime()-60*60*1000);
                          log(dateTimeExt + " Westen EG Sonnenschutz Erweitert Aktivieren ", "info");
                          if (new Date() < dateTimeExt) {
                              schedules[nameExt] = schedule(dateTimeExt.getMinutes() + " " + dateTimeExt.getHours() + " * * *",function() {
                                  telegramMike(nameExt);
                                  setState('0_userdata.0.eg.ku.fensterWest.Steuern.SonnenschutzExt.Aktivieren'/*Aktivieren*/, true);
                                  clearSchedule(schedules[nameExt]);
                              });
                          };
                      };
                  };
                  break;
              case 2: // Westen OG beschatten
                  if (azimut > 202 && elevation < 60) {
                      westSchrittId = 3;
                      if (getState('0_userdata.0.global.settings.rollladen.sonnenautomatikwest').val) {
                          log(date + " Westen OG Sonnenschutz Aktivieren", "info");
                          const name = "westOgZu";
                          if (schedules[name]) clearSchedule(schedules[name]);
                          if (new Date() > date) log ("Schon Vorbei!")
                          schedules[name] = schedule(date.getMinutes() + " " + date.getHours() + " * * *",function() {
                              telegramMike(name)
                              clearSchedule(schedules[name]);
                          });
                          const nameExt = "westOgZuExt";
                          if (schedules[nameExt]) clearSchedule(schedules[nameExt]);
                          const dateTimeExt = new Date(date.getTime()-60*60*1000);
                          log(dateTimeExt + " Westen OG Sonnenschutz Erweitert Aktivieren ", "info");
                          if (new Date() > dateTimeExt) log ("Schon Vorbei!")
                          schedules[nameExt] = schedule(dateTimeExt.getMinutes() + " " + dateTimeExt.getHours() + " * * *", function() {
                              telegramMike(nameExt);
                              clearSchedule(schedules[nameExt]);
                              //setState('0_userdata.0.eg.ku.fensterWest.Steuern.SonnenschutzExt.Aktivieren'/*Aktivieren*/, true);
                          });
                      };
                      
      
                  } else if (azimut > 275) {
                      westSchrittId = 3;
                      if (getState('0_userdata.0.global.settings.rollladen.sonnenautomatikwest').val) {
                          log(date + " Westen OG Sonnenschutz übersprungen", "info");
                      };
                  };
                  break;
              case 3: // Westen öffnen
                  if (elevation < 13) {
                      westSchrittId = 5;
                      if (getState('0_userdata.0.global.settings.rollladen.sonnenautomatikwest').val) {
                          log(date + " Westen Sonnenschutz Deaktivieren", "info");
                          const name = "westAuf";
                          if (schedules[name]) clearSchedule(schedules[name]);
                          if (new Date() > date) log ("Schon Vorbei!")
                          schedules[name] = schedule(date.getMinutes() + " " + date.getHours() + " * * *",function() {
                              telegramMike(name)
                              setState('0_userdata.0.eg.ku.fensterWest.Steuern.Sonnenschutz.Deaktivieren', true);
                              clearSchedule(schedules[name]);
                          });
                          const nameExt = "westRst";
                          log("23:55 Westen Sonnenschutz Erweitert Deaktivieren", "info");
                          if (schedules[nameExt]) clearSchedule(schedules[nameExt]);
                          schedules[nameExt] = schedule('55 23 * * *', function() {
                              telegramMike(nameExt)
                              setState('0_userdata.0.eg.ku.fensterWest.Steuern.SonnenschutzExt.Deaktivieren', true);
                              clearSchedule(schedules[nameExt]);
                          });
                      };
                  };
                  break;
              case 5: // Fertig
                  break;
              default:
                  log("Sonnenautomatik SchrittId West unbekannt!!", "error");
                  break;
           };
      }
      
      posted in JavaScript
      M
      m1k3f15h
    • RE: clearSchedule Frage bzw. funktioniert nicht

      @haus-automatisierung
      Hallo,

      Ja 3 jahre .. Hab mir gedacht, ich versuch trotzdem mein glück 🙂

      Also ich habe ein Javascript (Automatische Beschattung). in diesem Script Werte ich im 2 Uhr Morgens die Sonnenwinkel für jede Minute aus und setzte mir damit einen Timer pro Stockwerk und Himmelsrichtung für öffnen und schließen..

      Diese hätte ich gerne in einem "Array/List" damit ich, wenn ich z.B. die Beschattungsautomatik deaktiviere mit foreach dieses Array alle schedules clearen kann 🙂

      mfg
      Mike

      posted in JavaScript
      M
      m1k3f15h
    • RE: clearSchedule Frage bzw. funktioniert nicht

      @blackeagle998
      Kannst du das Script bitte posten?
      Ich schaffs grad nicht, schedules in einem Array zu "speichern"..
      Hätte gerne ein Array wo ich einige schedules speichern kann. dann mit foreach diese clearen..

      mfg
      Mike

      posted in JavaScript
      M
      m1k3f15h
    • RE: [gelöst] Datenpunkte per JS einer Aufzählung zuordnen

      @homoran okay ja das war nicht gut ausgedrückt 😞
      mein Fehler

      posted in JavaScript
      M
      m1k3f15h
    • RE: [gelöst] Datenpunkte per JS einer Aufzählung zuordnen

      @homoran said in Datenpunkte per Javascript einer Aufzählung zuordnen:

      es werden Datenpunkte einer Aufzählung hinzugefügt,

      Ja hab ich doch geschrieben oder? aber egal 😉

      @paul53 said in Datenpunkte per Javascript einer Aufzählung zuordnen:

      Siehe hier

      perfekt!! Ich dachte mir doch, dass ich nur die falschen Suchbegriffe hatte.

      Herzlichen Danke 🙂

      posted in JavaScript
      M
      m1k3f15h
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo