Navigation

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

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    S
    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 16
    • Best 0
    • Groups 0

    smartyag

    @smartyag

    0
    Reputation
    23
    Profile views
    16
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    smartyag Follow

    Latest posts made by smartyag

    • RE: Shelly 2 Shutterfunktion

      @ple:

      Ja das geht, hier mal ein Beispiel wie ich es mit 3 Jalousien am Sofa mache.

      Ist jedoch Javascript bei mir.

      var Raum = "Wohnzimmer";
      var instanz = "javascript.0.";
      var pfad = "Haus." + Raum + ".Beschattung.";
      
      var idJalousie1_position = "hm-rpc.0.NEQxxxxx.1.LEVEL"/*Wohn_Jalousie_links:1.LEVEL*/;
      var idJalousie2_position = "hm-rpc.0.NEQ0xxxxx8.1.LEVEL"/*Wohn_Jalousie_mitte:1.LEVEL*/;
      var idJalousie3_position = "hm-rpc.0.NEQ01xxxxx.1.LEVEL"/*Wohn_Jalousie_rechts:1.LEVEL*/;
      
      var idAlexa_Jalousien_Sofa_grp = instanz + pfad + "Alexa." + Raum + " Jalousien"
      
      createState(idAlexa_Jalousien_Sofa_grp, 0, true, {
          name: 'Jalousien Sofa',
          desc: '',
          type: 'number',
          min: 0,
          max: 100,
          unit: '',
          role: 'level.blind',
          smartName: {
              de: Raum + ' Jalousien Sofa'
          }
      });
      
      on({ id: idAlexa_Jalousien_Sofa_grp, change: "ne" }, function () {
          var levelblind = getState(idAlexa_Jalousien_Sofa_grp).val
          setState(idJalousie1_position, levelblind)
          setState(idJalousie2_position, levelblind)
          setState(idJalousie3_position, levelblind)
      });
      
      

      Der Code ist eben fix kopiert, ohne die ganzen anderen Sachen, dürfte aber laufen.

      Nach Start erzeugt er dir unter Javascript.0.xxxx einen Datenpunkt. Den kannst du in Vis einbauen und taucht auch direkt in Alexa auf als Wohnzimmer Jalousien Sofa.

      Blockly geht sicherlich auch, aber dann musst du unter Objekte händisch einen neuen Datenpunkt anlegen und ein Blockly bauen, wenn der sich änder, dann fahre alle 3 Jalousien.

      Gruß `

      super dank dir, werde ich die Tage mal testen.

      VG

      posted in Skripten / Logik
      S
      smartyag
    • RE: Shelly 2 Shutterfunktion

      @mameier1234:

      Was bekommst Du denn nicht hin ?

      Den Rollo überhaupt fahren lassen ? oder zu einer bestimmten Uhrzeit den Rollo zu fahren ?

      Einfach mal in den Datenpunkt 50 eintragen… Dann muss er zur hälfte auf oder zu machen...

      2019-01-02 17_00_28-Window.png

      Klappt das ???

      Dann in Blockly mit einem "Steuere Objekt" (aus System) den Datenpunkt "Position" mit einer Zahl!!! füllen...

      2019-01-02 17_06_59-Window.png

      das hier öffnet den Rollo Vanessa.. (100% Lichtdurchlässigkeit=offen) Ist ein Funktionsaufruf, da Vanessa mehrere Rolos im Zimmer hat...

      So sieht die einfache Funktion aus:

      Bildschirmfoto 2019-01-02 um 18.57.31.png

      Hier wird eben dann der Wert (100) aus dem Aufruf an den Datenpunkt Position (siehe oben) übergeben....) `

      Zuerst konnte ich die Rolladen nicht steuern, das geht jetzt nach dem Adapter restart und danke für den Hinweis mit "Steuere Objekt". Jetzt geht es. Kann man eigentlich im VIS mit einem Button mehrere Rolladen runterfahren? Sorry bin noch frisch dabei.

      posted in Skripten / Logik
      S
      smartyag
    • RE: Shelly 2 Shutterfunktion

      @mameier1234:

      Was brauchst du denn ?

      Die Rollosteuerung an sich, oder wie man einen Datenpunkt per Blockly steuert ? `

      Die Rolladensteuerung an sich. Kriege es irgendwie nicht hin obwohl die Position mitlerweile zu sehen ist.

      posted in Skripten / Logik
      S
      smartyag
    • RE: Shelly 2 Shutterfunktion

      @mameier1234:

      Das funktioniert mit dem Shelly Adapter 2.0.1 und der aktuellen FW 1.42 einwandfrei !

      Einfach den z.B. shelly.0.SHSW-21#xxx98C1#1.Shutter.Position per Blockly mit dem gewünschten Wert ansteuern… Rückmeldung in diesen Wert bei manueller Bedienung geht auch einwandfrei (für die Darstellung in VIS) `

      Hi

      kannst du dein Blockly mit uns teilen. Ich komme leider nicht weiter.

      Danke und VG

      posted in Skripten / Logik
      S
      smartyag
    • RE: [Aufruf] ZigBee CC253x Adapter

      @hmanfred:

      @smartyag:

      Hallo zusammen,

      eine Frage in die Runde. Sorry wenn das schon irgendwo im Thread steht.

      Ich habe meinen iobroker in einer VM laufen und würde gerne einen CC2531 Stick kaufen und diesen irgendwie in meinen iobroker anbinden. Ist es möglich das ich von meinem iobroker in der VM auf einen Zigbee Stick zugreifen der z.B. an einem Raspberry angeschlossen ist?

      Danke und VG `
      Was du uns nicht verrätst: wo läuft denn deine VM?

      Meine VM läuft unter Proxmox auf einem NUC6. Der Stick ist am NUC6 eingesteckt und wird an die VM durchgereicht. ioBroker erkennt ihn also so, als ob er an der VM steckt.

      Gruß

      Manfred `

      Stimmt <emoji seq="1f610">😐</emoji>. Die VM läuft auf meinem Freenas.

      posted in Tester
      S
      smartyag
    • RE: [Aufruf] ZigBee CC253x Adapter

      @arteck:

      @smartyag:

      Hallo zusammen,

      eine Frage in die Runde. Sorry wenn das schon irgendwo im Thread steht.

      Ich habe meinen iobroker in einer VM laufen und würde gerne einen CC2531 Stick kaufen und diesen irgendwie in meinen iobroker anbinden. Ist es möglich das ich von meinem iobroker in der VM auf einen Zigbee Stick zugreifen der z.B. an einem Raspberry angeschlossen ist?

      Danke und VG `

      ja mit Multihost `

      Danke für die Antwort. Sehe ich dann die datenpunkte/objekte auch im Master iobroker oder nur auf dem anderen?

      posted in Tester
      S
      smartyag
    • RE: [Aufruf] ZigBee CC253x Adapter

      Hallo zusammen,

      eine Frage in die Runde. Sorry wenn das schon irgendwo im Thread steht.

      Ich habe meinen iobroker in einer VM laufen und würde gerne einen CC2531 Stick kaufen und diesen irgendwie in meinen iobroker anbinden. Ist es möglich das ich von meinem iobroker in der VM auf einen Zigbee Stick zugreifen der z.B. an einem Raspberry angeschlossen ist?

      Danke und VG

      posted in Tester
      S
      smartyag
    • RE: Rollladenaktor

      Hi Jan,

      ich befasse mich ca. seit einem Monat auch damit und bin bei Shelly gelandet. Die Shelly 2 Schalter kosten ca. 20-25€ das Stück, funktionieren bei mir einwandfrei und super einfach zu implementieren. Bei mir passten sie in die tiefen Dosen, der Schalter kann auch weiterhin benutzt werden. Ich hatte auch zuerst die Überlegung es mit HmIP zu machen aber fand es am Ende sehr teuer.

      Die Einbindung in iobroker funktioniert auch problemlos. Vielleicht mal eins bestellen und testen.

      VG

      posted in ioBroker Allgemein
      S
      smartyag
    • RE: Einfach mal zeigen will….. :-) - Teil 2

      @tempestas:

      @sigi234:

      Ist bei mir leider auch so….........bzw.Papier wird nicht eingelesen.

      Screenshot (1405)_LI.jpg `

      Hallo zusammen,

      ich habe das Skript von JoJ123 nochmal angepasst. Es dient nun zum Suchen aller gewünschten Events, kann eben auch Müll sein. Probier es mal aus, wenn du magst. Bedingung ist, dass du den ical 1.7 installiert haben musst.

      ! ````
      // Skript basiered auf JoJ123's Müllskript und Pix' Regenskript
      // v 0.2, tempestas 21.12.2018
      // Voraussetzung: ical 1.7
      ! // Anleitung:
      /*
      ! 1) im ical Adapter die Ereignisse definieren, die gesucht werden sollen (z.B. Restabfall)
      ! 2) const PFAD auf euren ical Adapter anpassen (0, oder 1, zwei...)
      ! 3) im Bereich EINTRAEGE vor den Doppelpunkten die Ereignisse analog des ical Ereginis eintragen.
      ACHTUNG: ES DÜRFEN HIER KEINE FREIZEICHEN GENUTZT WERDEN; ICAL MACHT AUS "Gelber Sack" ALS EREIGNIS DATENPUNKT "GelberSack"
      daher muss hier dann "GelberSack" eingetragen werden
      ! hinter den Doppelpunkten wird der Pfad angegeben, in dem die Datenpunkte für die Tage bis zum jeweiligen Müll gespeichert werden.
      Davor wird dann noch die Javascript Instanz gesetzt, in der ihr das Skript startet.
      Gesamtpfad dann also z.B. "javascript.0.muell.restmuell"
      ! Hinweis: das Skript kann für alle Arten von Events genutzt werden, daher hier auf dne Begriff "Muell" verzichtet.
      ! */
      ! debug = true;
      ! const PFAD = "ical.2.events.";
      const EINTRAEGE = {
      "Restabfall": 'muell.restmuell',
      "Papiertonne": 'muell.papier',
      "Bioabfall": 'muell.bioabfall',
      "GelberSack": 'muell.gelbersack'
      };
      ! //States anlegen
      ! Object.keys(EINTRAEGE).forEach(key => {
      createState(EINTRAEGE[key], -1);
      if (debug) log("State "+EINTRAEGE[key] +" angelegt");
      });
      ! createState("muell.next"); // state, in den der kleinste Wert geschrieben wird, falls man z.B. auf einer Hauptübersicht immer nur den Wert bis zum nächsten Event (egal welches) sehen möchte)
      var idNext = "muell.next";
      ! function check() {
      ! var i;
      var min =0;
      ! Object.keys(EINTRAEGE).forEach(eintrag => {

          // erst prüfen, ob event heute vorliegt
          
          if ( getState(PFAD + 0 +".today." + eintrag).val === true) {   // Pfad weicht von den anderen Tagen ab!
          setState(EINTRAEGE[eintrag], 0);
          min = 0;
          if(debug) log(eintrag + " wird heute abgeholt");
          }
          
          // falls nicht, weiter schauen, wann es kommt
         
          else {
      
              for (i=1 ; i<90;i++) {                       // heute (0) wird separat geprüft, da dort ein andere Pfad zum Tragen kommt; max 90 Tage Vorschau 
                  if ( getState(PFAD + i +"." + eintrag).val === true) {
                  setState(EINTRAEGE[eintrag], i);
                  if (i < min) min = i;
                  if(debug) log(eintrag + " in "+i +" Tagen");
                  break;              // beim ersten gefundenen Eitnrag wird unterbrochen, da ja der nächste Termin gesucht wird
                  }
                  
              }   
          }    
      });
      

      ! // kleinsten Wert in next - State schreiben

      if(debug) log("Der nächste Müll ist in "+min +" Tagen");
      setState(idNext, min);
      

      ! }
      ! // Bei Start
      ! setTimeout(check, 5000); // 5 Sekunde warten, um beim erstmaligen Start Fehler zu vermeiden, die aus nicht existierenden States resultieren

      schedule('10 0 * * *', () => check() );

      ! ````

      Edit 2: Skript ist aktualisiert. Ich habe nun auch noch einen State mit eingebaut, der den geringsten Wert bis zum nächsten Event / Müll angibt. Eventuell kann es jemand gebrauchen `

      hey, funktioniert, vielen Dank und schöne Feiertage.

      posted in Praktische Anwendungen (Showcase)
      S
      smartyag
    • RE: Einfach mal zeigen will….. :-) - Teil 2

      @JoJ123:

      Ich habe das Müll Script angepasst.

      Wer nur die Tage bis zum Abholen der 4 Müllsorten benötigt, ist damit sicher einfacher bedient.

      Ihr müsst nur diese beiden Konstanten anpassen:

      • MUELL_KALENDER –> iCal Instanz mit dem jeweiligen Müll Kalender
      • MUELL_EINTRAEGE –> Müll Namen aus dem Kalender mit gewünschtem Object Name. (Werden unter der laufenden JavaScript Instanz angelegt)

      ! // Abruf der verbleibenden Tage bis zum nächsten Abholtermin // 16.12.2018 JoJ123 // v.0.0.1 ! const MUELL_KALENDER = "ical.2.data.html" const MUELL_EINTRAEGE = { "Restmüll": 'vis.muell.restmuell', "Papiertonne": 'vis.muell.papier', "Bioabfall": 'vis.muell.bioabfall', "Gelber Sack": 'vis.muell.gelbersack' }; ! debug = false; Object.keys(MUELL_EINTRAEGE).forEach(key => { createState(MUELL_EINTRAEGE[key], -1); }) ! function muell() { const contentString = readHTML(); if (debug) log(contentString); ! const dateRegExp = /[0-9]{2}.[0-9]{2}.[0-9]{4}/g; const rangeRegExp = /In [0-9] Tagen/g; const todayRegExp = /Heute/g; const tomorrowRegExp = /Morgen/g; const dayAfterTomorrowRegExp = /Übermorgen/g; ! Object.keys(MUELL_EINTRAEGE).forEach(eintrag => { if (debug) log("eintrag: " + eintrag); // Position bestimmen const pos = contentString.indexOf(eintrag, 1); if (debug) log("pos: " + pos); ! // Check Datum const date = contentString.substring((pos - 13), pos - 3); const range = contentString.substring((pos - 13), pos - 3); const today = contentString.substring((pos - 8), pos - 3); const tomorrow = contentString.substring((pos - 9), pos - 3); const dayAfterTomorrow = contentString.substring((pos - 13), pos - 3); if (dateRegExp.test(date)) { if (debug) log("datum ist: ---" + date + "---"); var newDateRegExp = /(\d{2}).(\d{2}).(\d{4})/; var dayArray = newDateRegExp.exec(date); const dateObj = new Date( (dayArray[3]), (dayArray[2]) - 1, (dayArray[1]) ); setState(MUELL_EINTRAEGE[eintrag], Math.ceil(((dateObj - new Date()) / (1000 * 60 * 60 * 24)))); } else if (rangeRegExp.test(range)) { if (debug) log("range ist: ---" + range + "---"); setState(MUELL_EINTRAEGE[eintrag], Number(range.substring(3, 4))); } else if (todayRegExp.test(today)) { if (debug) log("today ist: ---" + today + "---"); setState(MUELL_EINTRAEGE[eintrag], 0); } else if (tomorrowRegExp.test(tomorrow)) { if (debug) log("tomorrow ist: ---" + tomorrow + "---"); setState(MUELL_EINTRAEGE[eintrag], 1); } else if (dayAfterTomorrowRegExp.test(dayAfterTomorrow)) { if (debug) log("dayAfterTomorrow ist: ---" + dayAfterTomorrow + "---"); setState(MUELL_EINTRAEGE[eintrag], 2); } }); } ! function readHTML() { var contentString = getState(MUELL_KALENDER).val.toString(); // remove all inside SCRIPT and STYLE tags contentString = contentString.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, ""); contentString = contentString.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, ""); // remove BR tags contentString = contentString.replace(/ /gi, ""); contentString = contentString.replace(/<br\s\>/gi, ""); contentString = contentString.replace(/<br\>/gi, ""); // remove all else contentString = contentString.replace(/<(?:.|\s)*?>/g, ""); // get rid of html-encoded characters: contentString = contentString.replace(/ /gi, " "); contentString = contentString.replace(/&/gi, "&"); contentString = contentString.replace(/"/gi, '"'); contentString = contentString.replace(/</gi, '<'); contentString = contentString.replace(/>/gi, '>'); return contentString } ! schedule('10 0 * * *', () => muell()); muell();</br\></br\s\></style.*></script.*> `

      Hi,

      danke für das Skript. Ich erhalte leider auch ein -1 als Wert. Wie kann man das fixen? Mein Kalender sieht folgendermaßen aus:

      LOCATION;LANGUAGE=de

      UID:1944444

      DTSTAMP:20181220T015450Z

      DESCRIPTION;LANGUAGE=de:Leerungserinnerung

      SUMMARY;LANGUAGE=de:Papiermuell

      PRIORITY:9

      CLASS:PUBLIC

      STATUS:CONFIRMED

      END:VEVENT

      BEGIN:VEVENT

      DTSTART:20191104T080000

      DTEND:20191104T090000

      TRANSP:TRANSPARENT

      Danke und VG

      posted in Praktische Anwendungen (Showcase)
      S
      smartyag
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo