Navigation

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

    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 1
    • Followers 0
    • Topics 0
    • Posts 2
    • Best 0
    • Groups 0

    mcshebi

    @mcshebi

    Elektriker, IT'ler, ein Bastler halt...

    0
    Reputation
    7
    Profile views
    2
    Posts
    0
    Followers
    1
    Following
    Joined Last Online

    mcshebi Follow

    Latest posts made by mcshebi

    • RE: Yahka lightbulb mit verschiedenen Datenpunkten

      @renderender
      das Problem hatte ich auch, die Lösung ist du darfst den Alias nicht händisch erstellen, sondern machst es mit dem Script aus dem vorhergehenden post.
      Mit hilfe des Scripts wird nämlich nur 1 Datenpunkt angelegt und nicht 2 wie bei dir (und bei mir...😅 )
      und dieser eine Alias datenpunkt vereint dann die 2 (den zu lesenden und den zu schreibenden)

      ich häng das script noch mal mit ran (mit deinem beispiel) und versuche mal kurz zu beschreiben wie es geht
      das Script kommt von @paul53 , siehe Link in meinem vorhergehenden post

      // Original-Datenpunkt, der zu schreibende, der Taster
      const idOrigin = 'hm-rpc.1.und.so.weiter'; 
      
      // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt, der zu lesende, der shellly
      // Bei Nicht-Verwendung Leerstring '' zuweisen
      const idRead = 'shelly.0.und.so.weiter';
      
      // Name des neuen Alias-Datenpunkt
      const idAlias = 'Licht.Garten.Wandlampe';
      
      //Name des Alias
      nameAlias = 'Wandlampe';
      
      var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
      desc = 'per Script erstellt';
      
      // Folgende befehle auskommentieren, wenn keine Änderung der Eigenschaft erforderlich
      
      // typeAlias = 'boolean'; // oder 'number'
      // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch  
      write = "val ? true : true";  //wichtig bei Tastern
      // role = 'value';
      // min = 0; // nur Zahlen
      // max = 100; // nur Zahlen
      // unit = '%'; // nur für Zahlen
      // states = {0: 'Aus', 1: 'Auto', 2: 'Ein'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein)
      // custom = []; // verhindert doppelte Ausführung von history, ...
      // raum = 'EG_Flur'; // Groß-/Kleinschreibung in der ID beachten !
      // gewerk = 'Licht'; // Groß-/Kleinschreibung in der ID beachten !
      
      // Ab hier nichts ändern !!
      function createAlias(idDst, idSrc, idRd) {
         if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
         else {
            var obj = {};
            obj.type = 'state';
            obj.common = getObject(idSrc).common;
            obj.common.alias = {};
            if(idRd) {
                obj.common.alias.id = {};
                obj.common.alias.id.read = idRd;
                obj.common.alias.id.write = idSrc;
                obj.common.read = true;
            } else obj.common.alias.id = idSrc;
            if(typeAlias) obj.common.type = typeAlias;
            if(obj.common.read !== false && read) obj.common.alias.read = read;
            if(obj.common.write !== false && write) obj.common.alias.write = write;
            if(nameAlias) obj.common.name = nameAlias;
            if(role) obj.common.role = role;
            if(desc) obj.common.desc = desc;
            if(obj.common.type == 'number') {
               if(min !== undefined) obj.common.min = min;
               if(max !== undefined) obj.common.max = max;
               if(unit) obj.common.unit = unit;
            } else {
               if(obj.common.min !== undefined) delete obj.common.min;
               if(obj.common.max !== undefined) delete obj.common.max;
               if(obj.common.unit) delete obj.common.unit;
            }
            if(states) obj.common.states = states;
            if(custom && obj.common.custom) obj.common.custom = custom;
            obj.native = {};
            setObject(idDst, obj, function() {
               if(idRd) setState(idRd, getState(idRd).val, true);
               else setState(idSrc, getState(idSrc).val, true); 
            });
            if(raum && existsObject('enum.rooms.' + raum)) {
               let obj = getObject('enum.rooms.' + raum)
               obj.common.members.push(idDst);
               setObject('enum.rooms.' + raum, obj);
            }
            if(gewerk && existsObject('enum.functions.' + gewerk)) {
               let obj = getObject('enum.functions.' + gewerk)
               obj.common.members.push(idDst);
               setObject('enum.functions.' + gewerk, obj);
            }
         } 
      }
      createAlias('alias.0.' + idAlias, idOrigin, idRead);
      
      

      Die wichtigsten Punkte sind im Script kommentiert.

      • du musst mindestens Zeile 2, 6, 9, 12 anpassen
      • Zeile 21 hab ich schon angepasst, so läuft es bei mir. Hier sagst du, das er deinen Taster Datenpunkt beim "ein & ausschalten" immer mit true schreiben muss, weil Taster.
        Ich weiß nur leider nicht wie es bei deinem hmIP Taster ist, da ich eine Siemens Logo nutze. Bei meinem S7-Adapter ist der Taster Datenpunkt auf "wp" = pulse eingestellt. D.h. ich steuere den Datenpunkt mit true an und er wird automatisch nach 250ms wieder auf false gesetzt.
      • du erstellst bei Skripte ein neues JS script und fügst den Code dort ein
      • die Anpassung vornehmen und dann das script einmal starten (bei jedem mal starten wird ein Datenpunkt erstellt)

      alias script.PNG

      posted in ioBroker Allgemein
      M
      mcshebi
    • RE: Yahka lightbulb mit verschiedenen Datenpunkten

      @renderender
      habe auch ähnliche "Besonderheit", es gibt ein Objekt welches den tast-Befehl auslöst und den Status beziehe ich über ein anderes Objekt.
      Gelöst habe ich das Problem über einen Alias, siehe in diesem Post beschrieben https://forum.iobroker.net/topic/27295/vorlage-alias-per-skript-erzeugen

      Ein Alias kann 2 Datenpunkte beinhalten, einen den er schreiben soll (dein Taster) und einen den er lesen soll (dein shelly).
      Im Yahka Adapter bindest du nur diesen einen Datenpunkt, den Alias ein (kein Multistate).

      Funktioniert bei mir super in Homekit.

      posted in ioBroker Allgemein
      M
      mcshebi
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo