Navigation

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

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

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

    Messenjah

    @Messenjah

    Starter

    0
    Reputation
    5
    Profile views
    7
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Messenjah Follow
    Starter

    Latest posts made by Messenjah

    • RE: Test Adapter Vaillant multiMatic/senso und myVaillant

      Hi Zusammen,

      ich habe mir den Thread nun komplett durchgelesen und hier und da gabe es schon Kollegen die das gleiche machen wollen wir ich. Ich habe nämlich eine Recovair Belüftungsanlage, die ich über die MyVaillant App steuern kann. Dort gibt es eine Boost Funktion für die Ventilation, die bewirkt, dass für 30 Minuten die Belüftung auf höchster Stufe läuft.

      Diesen Knopf hätte ich gern über Iobroker gedrückt. Ich habe den Adapter installiert und auch alle Datenpunkte durchgescrollt, auch mal den Boost per App gestartet, aber keine Veränderung bei den Datenpunkten gesehen. Bei den custom commands gibt es zwar die Möglichkeit die Ventilationsstufe und den Modus (Time Schedule, Manuell usw.) zu triggern, aber nicht den Boost.

      Hat einer von euch eine Idee wie ich das hinbekomme? Danke und Grüße!

      posted in Tester
      M
      Messenjah
    • RE: Jarvis: mehrere Instanzen mit getrenntem Inhalt möglich?

      @el-lutschi @bratan1995

      Ich hab das gleiche Problem. Ich hätte auch gern eine zweite Instanz um meinen Gästen im Gästewlan die Option zu geben das Rollo, Lichter usw. in ihrem Zimmer einzustellen zu können aber eben nicht im ganzen Haus.

      Mir ist beim zurückspielen des Backup aufgefallen, dass vor allem die jarvis.0.devices überschrieben wird. Interessanterweise erst wenn man die zweite Instanz einmal im Browser geladen hat. Stellt man die 0.devices zurück geht die erste Instanz wieder bist man die zweite Instanz wieder einmal neu lädt. Das kann eigentlich nur ein kleiner Bug sein....

      posted in Visualisierung
      M
      Messenjah
    • RE: Flexibler Schedule für Rolladensteuerung über Jarvis steuern

      @paul53 Danke dir für deine Unterstütztung! Ich werde jetzt deinen Vorschlag so weiterverwenden. 🙂

      posted in JavaScript
      M
      Messenjah
    • RE: Flexibler Schedule für Rolladensteuerung über Jarvis steuern

      @paul53
      Hm, also ich habe versucht das Script zum Laufen zu bekommen, aber mir scheint, als würde die getCron function nicht richtig zu funktionieren. Obwohl die Wochentage true sind, zählt er wds in der for Schleife nicht hoch.

      Hat das bei dir funktioniert?
      Edit: Ach, habs gefunden. wds.push[] muss wds.push() sein, dann funktioniert es. Cool!

      Dann noch die Frage, du baust ja den Wert für die Tage (die du dann schedule() übergibst) auf indem du sie einfach mit Komma separierst. Akzeptiert die scheduler Funktion diese Syntax? Ich habe im Prinzip versucht den Wert für die Tage so hinzubekommen wie er in Blockly auch über den Wizard erzeugt wird. Und da wäre z.b., wenn ich So,Mo, Di, Do und Fr angehakt hätte, 0-2,4,5 bei rausgekommen. Wenn ich aber 0,1,2,4,5 auch hätte schreiben können, dann wäre mein Script von vornherein auch übersichtlicher gewesen.

      posted in JavaScript
      M
      Messenjah
    • RE: Flexibler Schedule für Rolladensteuerung über Jarvis steuern

      @paul53
      Erstmal: Respekt! Vielen Dank, dass du dir die Zeit genommen hast dir das so tief anzuschauen.

      @paul53 sagte: Einige Teile sehen aber sehr nach Blockly aus (Zeile 1, Trigger, Zeitplan stoppen, ...).
      Zugegeben, ich bin hier autodidaktisch unterwegs und habe mir die Syntax zu großen Teilen aus den Blockly Bausteinen zusammenkopiert.

      @paul53 sagte: Du hast eigene Datenpunkte unter "shelly.0" erstellt? Das sollte man nicht machen, da die Datenpunkte vom Shelly-Adapter verwaltet werden.
      Ok, das habe ich dann in der Zwischenzeit auch an anderer Stelle hier im Forum schon gelesen. Falls ich also eigene Datenpunkte bräuchte, sollte ich dir ausschließlich unter userdata anlegen, richtig?

      @paul53 sagte: Es wird zwar [desc, value] zurück gegeben, desc aber nirgends verwendet.
      Ach stimmt ja eigentlich, ein Relikt weil ich zwischendurch eine andere Idee hatte das Ziel zu erreichen....

      @paul53 sagte: Vorschlag für ein lesbares Javascript mit eigenen Datenpunkten unter "0_userdata.0":
      Ich schau es mir mal an. Sieht auf jedenfall sehr vielversprechend aus.

      Warum meine Variante aber über Nacht manchmal einfach nichts mehr gemacht hat (ich weiß natürlich nicht ob dann nach zwei Tagen er wieder was gemacht hätte, weil ich das Script spätestens ja am nächsten Tag wieder angepasst hatte) ist nicht so eindeutig erkennbar, oder? Heute morgen z.B. hat es tatsächlich in beiden Räumen geklappt. Hatte aber nach 0:00 Uhr noch daran rumgedoktort. Wird übernacht irgend ein Dienst neugestartet der die Schedules beeinträchtigen könnte? Dein Script basiert ja auch auf der schedule() Funktion, aber wie gesagt muss ich mir das gleich noch genau anschauen.

      posted in JavaScript
      M
      Messenjah
    • RE: Flexibler Schedule für Rolladensteuerung über Jarvis steuern

      @paul53
      Weil ich das in JavaScript direkt geschrieben habe und kein Blockly dazu habe. Die Auslesefunktion der Objektinfos muss ich ja auch in JavaScript schreiben. Hab zumindest das nicht mit Blockly hinbekommen. Da fand ich es einfacher gleich alles in JS zu schreiben.

      Ja, ich weiß, dass bei Scriptstart kein Schedule erstellt wird. Das Script soll ja im Prinzip auch durchlaufen und den Schedule basierend auf der Eingabe dann anpassen. Das heißt, dass ich natürlich, nach Start des Scripts, noch einmal eine Änderung in der Gui mache, damit der Schedule dann auch erstellt wird.

      posted in JavaScript
      M
      Messenjah
    • Flexibler Schedule für Rolladensteuerung über Jarvis steuern

      Hi zusammen,

      ich habe versucht ein Script zu schreiben, dass mir ermöglicht die Rolladen in jedem Raum meines Hauses über mein Jarvis Dashboard zu konfigurieren. Ich wollte keine statischen Zeiten, besser gesagt nicht NUR statische Zeiten um meine Rolladen zu schalten.

      Zielvorstellung ist, für jeden Raum eine default Zeit zu haben wann die Rolladen hoch und runter fahren sollen, die aber durch die Eingabe in einem extra Feld überschrieben werden kann. (in meinem Codesnippet ist das Überschreiben noch nicht drin, es soll erstmal so zuverlässig funktionieren)

      e766c8a6-103f-4a9b-b619-e0affb3b9ee3-image.png

      var ObjectID, j, k, ReadValues, Crondays, formerstate, formerformerstate, openh, openm, closeh, closem, time, openschedule, closeschedule;
      
      // Read the description and the value from the object --> Ob die Knöpfe für die Tage gedrückt sind oder nicht
      async function Read_Info(ObjectID) {
          let desc = getObject(ObjectID).common.desc;
          let value = getState(ObjectID).val;
          return [desc,value];
      }
      
      // Trigger
      on({id: [].concat(['shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Schedule_Day_Mo']).concat(['shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Schedule_Day_Tu']).concat(['shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Schedule_Day_We']).concat(['shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Schedule_Day_Th']).concat(['shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Schedule_Day_Fr']).concat(['shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Schedule_Day_Sa']).concat(['shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Schedule_Day_Su']).concat(['shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Default_Schedule_Close']).concat(['shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Default_Schedule_Open']), change: "ne"}, async function (obj) {
      // Put the list together for the for loop to build the cron value for the dates
          var j_list = ['shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Schedule_Day_Su', 'shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Schedule_Day_Mo', 'shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Schedule_Day_Tu', 'shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Schedule_Day_We', 'shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Schedule_Day_Th', 'shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Schedule_Day_Fr', 'shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Schedule_Day_Sa'];
      // Put the list together for the for loop to build the cron value for the hours
          var ObjOpen = 'shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Default_Schedule_Open';
          var ObjClose = 'shelly.0.FakeDatapoints.BlindScheduler.Office.Blinds_Default_Schedule_Close';
      
      // Resetting some variables
          Crondays = "";
          formerstate = "";
          formerformerstate = "";
      
      //Loop to build the cron value for the dates based on j_list
          for (var j_index in j_list) {
              j = j_list[j_index];
              ReadValues = await Read_Info(j);
         
              if (j_index == '0' && ReadValues[1]){
                  Crondays = "0";
                  formerstate = ReadValues[1];
                  continue;
              }
         
              if (j_index >= "1"){
                  if(ReadValues[1] && formerstate && !(formerformerstate)){
                      Crondays += ("," + j_index)
                  }
                  if(ReadValues[1] && formerformerstate && formerstate){
                      Crondays = Crondays.replace(/..$/, "-" + j_index);
                  }
                  if(ReadValues[1] && !(formerstate)){
                      if(Crondays == ""){
                          Crondays += j_index
                      }else{
                          Crondays += ("," + j_index)
                      }
                  }
              }
              if(Crondays == "0-6"){Crondays = "*"}
              formerformerstate = formerstate;
              formerstate = ReadValues[1];
          }
      
          ReadValues = await Read_Info(ObjOpen);
          time = ReadValues[1].split(":");
          if(time[0].charAt(0) == 0){
              openh = time[0].charAt(1)
          }else{
              openh = time[0]
          }
          if(time[1].charAt(0) == 0){
              openm = time[1].charAt(1)
          }else{
              openm = time[1]
          }
      
          ReadValues = await Read_Info(ObjClose);
          time = ReadValues[1].split(":");
          if(time[0].charAt(0) == 0){
              closeh = time[0].charAt(1)
          }else{
              closeh = time[0]
          }
          if(time[1].charAt(0) == 0){
              closem = time[1].charAt(1)
          }else{
              closem = time[1]
          }
      
          (function () {if (openschedule) {clearSchedule(openschedule); openschedule = null;}})();
          
          openschedule = schedule(openm + " " + openh + " * * " + Crondays, async function () {
          setState("shelly.0.SHSW-25#3494547C0118#1.Shutter.Position"/*Position*/, 100);
          setState("shelly.0.SHSW-25#3494547BF020#1.Shutter.Position"/*Position*/, 100);
          });
      
          (function () {if (closeschedule) {clearSchedule(closeschedule); closeschedule = null;}})();
          
          closeschedule = schedule(closem + " " + closeh + " * * " + Crondays, async function () {
          setState("shelly.0.SHSW-25#3494547C0118#1.Shutter.Position"/*Position*/, 0);
          setState("shelly.0.SHSW-25#3494547BF020#1.Shutter.Position"/*Position*/, 0);
          });
      
      });
      

      Nun habe ich das Problem, dass die Schedules funktionieren wenn ich die Zeiten z.B. auf in 5 Minuten stelle. Das auch zuverlässig. Wenn aber der nächste Schedule am folgenden Morgen laufen müsste, tut er es meistens nicht. Manchmal, aber nicht immer. Ich habe dieses Script für 2 Räume laufen, bei einem hat es dann mal funktioniert, beim anderen nicht. Ich frage mich woran das liegen könnte. Habt ihr eine Idee?

      Darüber hinaus wäre ich an Verbesserungsvorschlägen interessiert wie man das Ganze noch besser lösen könnte, oder, falls der Weg schon gar nicht so schlecht sein sollte, wie ich das Script optimiert bekomme.

      Vielen Dank für Eure Hilfe! Peter

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