Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Fenster und andere Geräte zählen opt. Alexa Ansagen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.6k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.8k

Fenster und andere Geräte zählen opt. Alexa Ansagen

Geplant Angeheftet Gesperrt Verschoben Blockly
blocklyjavascript
1.2k Beiträge 41 Kommentatoren 414.3k Aufrufe 71 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • dslraserD dslraser

    Geräte Ansage Dateien im ersten Beitrag sind ausgetauscht.

    falke69F Offline
    falke69F Offline
    falke69
    schrieb am zuletzt editiert von
    #468

    @dslraser

    bei meinen Lichtern erscheint immer noch,
    "Die Steckdosen sind überall ausgeschaltet" wenn kein Licht an ist.
    Die Anzahl der Lichter ist in den Objekten auf Mehrzahl, bei einem Licht.

    Beim EMail Versand stimmt die Ein/Mehrzahl.
    Im iot werden auch die Geräte auf Anhieb gefunden.

    Soweit meine ersten Erfahrungen.

    Meine Fensteranzahl steht übrigens wieder auf 22, statt auf 11. Keine Ahnung warum - ist aber nicht schlimm. :-)

    dslraserD 1 Antwort Letzte Antwort
    0
    • falke69F falke69

      @dslraser

      bei meinen Lichtern erscheint immer noch,
      "Die Steckdosen sind überall ausgeschaltet" wenn kein Licht an ist.
      Die Anzahl der Lichter ist in den Objekten auf Mehrzahl, bei einem Licht.

      Beim EMail Versand stimmt die Ein/Mehrzahl.
      Im iot werden auch die Geräte auf Anhieb gefunden.

      Soweit meine ersten Erfahrungen.

      Meine Fensteranzahl steht übrigens wieder auf 22, statt auf 11. Keine Ahnung warum - ist aber nicht schlimm. :-)

      dslraserD Offline
      dslraserD Offline
      dslraser
      Forum Testing Most Active
      schrieb am zuletzt editiert von dslraser
      #469

      @falke69 sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:

      bei meinen Lichtern erscheint immer noch,
      "Die Steckdosen sind überall ausgeschaltet" wenn kein Licht an ist.
      Die Anzahl der Lichter ist in den Objekten auf Mehrzahl, bei einem Licht.

      welches Blockly ? (Variante)
      bei mir stimmt es
      Bildschirmfoto 2020-05-20 um 16.53.21.png

      Bildschirmfoto 2020-05-20 um 17.00.33.png

      falke69F 2 Antworten Letzte Antwort
      0
      • dslraserD dslraser

        @falke69 sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:

        bei meinen Lichtern erscheint immer noch,
        "Die Steckdosen sind überall ausgeschaltet" wenn kein Licht an ist.
        Die Anzahl der Lichter ist in den Objekten auf Mehrzahl, bei einem Licht.

        welches Blockly ? (Variante)
        bei mir stimmt es
        Bildschirmfoto 2020-05-20 um 16.53.21.png

        Bildschirmfoto 2020-05-20 um 17.00.33.png

        falke69F Offline
        falke69F Offline
        falke69
        schrieb am zuletzt editiert von
        #470

        @dslraser

        oh Sorry, hatte die falsche Datei auf dem Desktop geöffnet. Habe jetzt gleich mal durchgekehrt.

        1 Antwort Letzte Antwort
        0
        • dslraserD dslraser

          @falke69 sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:

          bei meinen Lichtern erscheint immer noch,
          "Die Steckdosen sind überall ausgeschaltet" wenn kein Licht an ist.
          Die Anzahl der Lichter ist in den Objekten auf Mehrzahl, bei einem Licht.

          welches Blockly ? (Variante)
          bei mir stimmt es
          Bildschirmfoto 2020-05-20 um 16.53.21.png

          Bildschirmfoto 2020-05-20 um 17.00.33.png

          falke69F Offline
          falke69F Offline
          falke69
          schrieb am zuletzt editiert von falke69
          #471

          @dslraser

          Hier mal noch ein Vorschlag.
          Vielleicht könnte man die Strucktur noch ein wenig übersichtlicher gestalten - wenn möglich.
          Du klappst einmal das "Haus" auf und kannst dann gleicht zu den Fenstern, Steckdosen, Lichtern,....
          gehen.

          2020-05-20_170753.jpg

          dslraserD 1 Antwort Letzte Antwort
          0
          • falke69F falke69

            @dslraser

            Hier mal noch ein Vorschlag.
            Vielleicht könnte man die Strucktur noch ein wenig übersichtlicher gestalten - wenn möglich.
            Du klappst einmal das "Haus" auf und kannst dann gleicht zu den Fenstern, Steckdosen, Lichtern,....
            gehen.

            2020-05-20_170753.jpg

            dslraserD Offline
            dslraserD Offline
            dslraser
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #472

            @falke69
            Interessant wäre erstmal zu wissen ob alles funktioniert wie es soll.

            falke69F dirk1962D 2 Antworten Letzte Antwort
            1
            • dslraserD dslraser

              @falke69
              Interessant wäre erstmal zu wissen ob alles funktioniert wie es soll.

              falke69F Offline
              falke69F Offline
              falke69
              schrieb am zuletzt editiert von
              #473

              @dslraser

              oh verdammt. Alles IO!:+1:

              1 Antwort Letzte Antwort
              0
              • dslraserD dslraser
                Versionen 1.6.7
                aktualisiert am 23.12.2020
                Typ Blockly mit JavaScript Funktionen
                verwendete Adapter je nach dem was im Blockly aktiviert ist
                verwendete Geräte verschieden - gemischt
                was kann das Blockly wird hier beschrieben

                Hallo Zusammen.
                Ich stelle hier mein Blockly zum Geräte zählen und optional zum Ansagen über den Alexa2 Adapter über speak, sowie optionaler Versand über Telegram / E-Mail zur Verfügung.
                Das gesamte Blockly nutzt "alias'e". Alle anderen benötigten Datenpunkte erstellt und löscht das Blockly selbst, je nach dem was verwendet werden soll.
                Wer also keine alias erstellen oder nutzen möchte kann an dieser Stelle aufhören zu lesen, für alle anderen Interessierten versuche ich möglichst genau zu beschreiben was zu tun ist.

                Mit Alexa geht dann z.B.

                • Alexa, welche Fenster sind noch auf
                • Alexa, welche Türen sind noch auf
                • Alexa, welche Steckdosen sind noch an
                • Alexa, welche Lampen sind noch an
                • Alexa, was machen die Batterien
                • Alexa, welche Bewegungsmelder sind aktiv
                • Alexa, wie sind die Temperaturen (Ansage, aller Temperaturen meiner Räume und Außentemperatur nacheinander in einer Ansage)

                Welche Frage in welcher Formulierung gestellt wird bestimmt Ihr natürlich selbst, da dies über eine Routine in der Alexa App gesteuert wird. Dazu später mehr.

                Ein Hinweis gleich noch zu Beginn. Da die Ansage am angesprochenen ECHO erfolgen soll, kann es vorkommen, das, wenn es mehrere ECHO's in Hörweite gibt, die Ansage an einem anderen ECHO ausgegeben wird, weil sich ein anderer ECHO "angesprochen fühlt". Wenn ich in einem Raum bin, wo mich nur ein ECHO hören kann, funktioniert es bei mir zuverlässig.

                Meine verwendeten Adapter dafür sind:

                • Alexa2 Adapter 3.4.0
                • iot Adapter 1.8.8
                • Javascript Adapter 4.10.8
                • Telegram Adapter 1.5.9 (optional)
                • E-Mail Adapter 1.0.7 (optional)
                • und wenn gewünscht (optional) iQontrol 1.5.2
                • TR-064 4.2.1 Anruferansage (optional Telegram/EMAIL-extra Blockly im zweiten Beitrag)

                SmartGeräte für den iot Adapter werden direkt im Blockly erstellt, das sind dann die Button für die spätere Routine in der Amazon App.
                Das Blockly legt die benötigten Datenpunkte wahlweise unter 0_userdata.0 oder javascript.x selbst an (x=Javascript Instanznummer). Für die Erstellung der Datenpunkte nutze ich das Script von @Mic in einer Funktion. Dafür muß die Option "Erlaube das Kommando "setObject" im Javascript Adapter erlaubt sein.

                Bildschirmfoto 2020-04-08 um 12.05.38.png

                Der Versand aller Nachrichten (Telegram oder EMAIL) ist immer schaltbar, z.B. wenn man eine Anwesenheitsfunktion hat, dann könnte man den Versand bei Abwesenheit "scharf" schalten.
                Die Button hingegen funktionieren immer. Hier könnte man jeweils eine Routine in der Alexa App anlegen und den Versand des Gerätestatus-Versand auslösen.
                Z.B.
                Alexa, schicke mir den Fensterstatus.
                Alexa, schicke mir den Lichtstatus
                Alexa, schicke mir den Steckdosenstatus usw...

                Über diesen Weg lasse ich mir auch zum Beispiel auf Anforderung den Batteriestatus aller meiner Geräte mit Batterien als Liste schicken. Oder auch, Alexa schicke mir ein Bild von der Eingangskamera. Wenn man es auf die Spitze treibt, dann geht auch: Alexa, schicke mir den kompletten Status und dann trudeln bei mir nacheinander Bilder von drei Kameras, alle Batteriezustände, eine Liste mit geöffneten/gekippten Fenstern, ein Liste mit eingeschalteten Lampen usw. usw. usw. ein.

                Wenn Ihr nun Lust auf das Blockly habt, dann ist jetzt einmalig etwas Fleißarbeit angesagt. Bevor Ihr das Blockly nutzen könnt, müssen die Alias für Eure Geräte, die Ihr im Blockly verwenden wollt, erstellt werden. Dafür eignet sich die Scriptvorlage von @CruziX hervorragend. Mit dieser Vorlage können alle Alias auf einmal erstellt werden. Eine Vorlage als Beispiel findet Ihr im Spoiler. An dieser Stelle sei gleich gesagt, sinnvolle Namen im Alias zu verwenden (id ist egal, nur der Name ist gemeint), da diese Namen dann für alles im Blockly verwendet werden, also alle Gerätenamen allgemein. Also immer so erstellen, das sich der Name auch z.B. für Alexa aussprechen lässt.
                In der id keine Leerzeichen/Sonderzeichen oder Umlaute verwenden, damit vermeidet man direkt im Vorfeld mögliche Fehler.
                Als erstes solltet ihr in den Aufzählungen neue Funktionen erstellen, diese kann man dann gleich im alias Script benutzen. Da auf das Plus drücken.
                Bildschirmfoto 2020-06-29 um 21.16.04.png
                dann auf das Plus bei neue benutzerdefinierte Gruppe klicken
                Bildschirmfoto 2020-06-29 um 21.16.19.png

                Ich habe folgende erstellt (wenn Ihr die gleichen nehmt müsst Ihr das nichtmal im Blockly umstellen)

                batterien_voll_leer_alias
                batterien_volt_alias
                bewegungsmelder_alias
                fenster_alias
                licht_alias
                steckdosen_alias
                temperaturen_alias
                tueren_alias
                batterien_prozent_alias

                Das sind die Selektoren im Blockly

                Bildschirmfoto 2020-12-19 um 09.07.55.png
                Bildschirmfoto 2020-12-19 um 09.08.22.png
                Bildschirmfoto 2020-12-19 um 09.08.51.png
                Bildschirmfoto 2020-12-19 um 09.09.21.png
                Bildschirmfoto 2020-12-19 um 09.09.59.png
                Bildschirmfoto 2020-12-19 um 09.10.34.png
                Bildschirmfoto 2020-12-19 um 09.11.17.png
                Bildschirmfoto 2020-12-19 um 09.12.00.png
                Bildschirmfoto 2020-12-19 um 09.12.32.png

                Das ganze sieht dann nach dem Blockly Start in den Objekten z.B. so aus: (wenn alle Schalter im Blockly auf wahr stehen)

                Bildschirmfoto 2020-12-02 um 19.33.40.png

                01_Anzeigen_und_Listen

                Bildschirmfoto 2020-12-02 um 19.43.57.png

                02_Trigger_und_Schalter

                Bildschirmfoto 2020-12-02 um 19.44.12.png

                03_HTML_Daten hat zwei Unterordner

                Bildschirmfoto 2020-12-02 um 19.44.31.png

                01_HTML_Hell_Dunkel_Festeinstellung ist nicht veränderbar und sieht so aus (helle Einstellung aktiv)

                Bildschirmfoto 2020-12-02 um 19.45.09.png

                03_HTML_Eigene_Einstellung enthält die gleichen Datenpunkte und wird beim ersten verwenden des Triggers mit Standardwerten befüllt. Diese Werte können dann mit eigenen Werten überschrieben werden.

                Und hier noch der Rest

                Bildschirmfoto 2020-12-02 um 19.45.42.png

                Die Bilder bzw. Icon links und rechts habe ich als Base64 eingefügt. Ich benutze dafür das hier: https://www.base64-image.de/

                Wenn iQontrol installiert ist, dann funktioniert auch der Pfad zu einem Icon (einfach den eingestellten Pfad zum Icon aus iQontrol kopieren und einfügen)
                In den eigenen 02_HTML_Eigene_Einstellungen kann alles selbst an die eigenen Wünsche angepasst werden.

                Hier noch ein kurzes GiF
                (klick auf das linke Icon schaltet die Farbeinstellungen durch. klick auf das rechte Icon blendet die Tabelle ein und aus bzw. schaltet auf aktiv/inaktiv)
                20201202_200704.gif



                Das ganze sieht dann so bei mir aus (ich habe immer nur die ersten fünf auf den Bildern)

                Bildschirmfoto 2020-07-04 um 19.22.51.png

                Bildschirmfoto 2020-07-04 um 19.26.55.png

                Bildschirmfoto 2020-06-30 um 15.46.33.png

                Bildschirmfoto 2020-06-30 um 15.46.48.png

                Bildschirmfoto 2020-06-30 um 15.47.02.png

                Bildschirmfoto 2020-06-30 um 15.47.15.png

                Bildschirmfoto 2020-07-04 um 19.23.12.png

                Bildschirmfoto 2020-06-30 um 15.47.46.png


                Im Beispielvideo werden die eigenen Alias ab Zeile 271 eingefügt, also ab dem ersten createAlias
                Video Beispiel:
                Alias_per_Script_erstellen.m4v
                In der Vorlage habe ich jeweils zwei meiner verwendeten Geräte als Beispiel eingefügt.
                Hier und in den folgenden Beiträgen versuche ich die Alias Funktion vom Script etwas zu erklären:
                Klick Erklärung alias Funktion

                /**************************************************************
                Github - https://github.com/xCruziX/ioBroker-Creating-Alias/blob/master/CreateAlias.js
                   			Changelog
                Version 1.1.4
                - fix error by using bCreateAliasPath and bConvertExistingPath (has no target 9/Error creating alias-path)
                **************************************************************/
                
                /**************************************
                   	Flags /
                   	Variablen
                ***************************************/
                
                // typeAlias = 'boolean'; // oder 'number'
                // read = "val == 'Ein' ? true : false"; // Erkennung "Aus" --> false erfolgt automatisch  
                // write = "val ? 'Ein' : 'Aus'";
                // nameAlias = 'Licht Haustür';
                // role = 'switch';
                // desc = 'per Script erstellt';
                // 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)
                
                
                let bCreateAliasPath = true;  // If this flag is true, each folder is created seperately so rooms and functions can be assigned.
                
                /*
                Requirements: bCreateAliasPath == true
                If this flag is true, existing folders in the path will be converted so rooms and functions can be assigned.
                */
                let bConvertExistingPath = false;
                
                /***************************************
                   	Don't change anything from here /
                   	Ab hier nichts verändern
                ***************************************/
                
                let arEnum = [];
                let arId = [];
                let timeoutAssignEnum;
                var callbackAlias = undefined;
                function createAlias(idSrc, idDst,raum, gewerk,typeAlias, read, write, nameAlias, role, desc, min, max, unit, states) {
                 if(!idDst.includes('alias.0.'))
                     idDst = 'alias.0.' + idDst;
                 if(!existsObject(idSrc))
                 {
                     log('Source-Id ' + idSrc +' does not exists.','warn');
                     return;
                 }
                 
                 // Create the object Path for alias id, 
                 // so you can assign rooms and function to the parents
                 var createAliasPath = (id) => {
                      if(bCreateAliasPath){
                           let lisMergedIds = [];
                           let mergedId = 'alias.0';
                           id = id.replace(mergedId + '.', ''); // Remove prefix alias so it will not be changed
                           let split = id.split('.'); 
                           for(let i=0;i<split.length-1;i++){
                               mergedId += '.' + split[i];
                               lisMergedIds.push(mergedId);
                           }
                           
                           function path(){
                               if(lisMergedIds.length == 0) {
                                   alias();
                                   return;
                               }
                               let tmpId = lisMergedIds[0];
                               lisMergedIds.splice(0,1); // remove element
                               if(!existsObject(tmpId) || bConvertExistingPath){ // not exists
                                   let obj;
                                   if(existsObject(tmpId))
                                       obj = getObject(tmpId);
                                   else
                                       obj = {};
                
                                   let bApply = false;
                                   if(obj != undefined){
                                       if(obj.type == undefined || String(obj.type) != 'meta'){
                                           obj.type = 'meta';
                                           bApply = true;
                                       }
                                       if(obj.common == undefined){
                                           obj.common = {};
                                           obj.common.type = 'meta.folder';
                                           bApply = true;
                                       }
                                       else if(obj.common.type == undefined || String(obj.common.type) != 'meta.folder'){
                                           obj.common.type = 'meta.folder';
                                           bApply = true;
                                       }
                                       if(obj.native == undefined){
                                           obj.native = {};
                                           bApply = true;
                                       }
                                   }
                                   else{
                                       path();
                                       log('Object is undefined');
                                       return;
                                   }
                                   
                
                                   if(bApply){
                                       setObject(tmpId, obj, (err) =>{
                                       if(!err){
                                           log('Created Alias-Path ' + tmpId);
                                           path();
                                       }
                                       else
                                           log('Error creating alias-path','error');
                                   });
                                   }
                                   else
                                       path();
                                   
                               }
                           }
                           path();
                      }
                      else
                        alias();
                 }
                 
                 
                 function alias(){
                     // Create alias object
                     
                       if(!existsObject(idDst)){
                           let obj = {};
                           obj.type = 'state';
                           obj.common = getObject(idSrc).common;
                           obj.common.alias = {};
                           obj.common.alias.id = idSrc;
                           if(typeAlias !== undefined) 
                               obj.common.type = typeAlias;
                           if(obj.common.read !== undefined) 
                               obj.common.alias.read = read;
                           if(obj.common.write !== undefined) 
                               obj.common.alias.write = write;
                           if(nameAlias !== undefined) 
                               obj.common.name = nameAlias;
                           if(role !== undefined) 
                               obj.common.role = role;
                           if(desc !== undefined) 
                               obj.common.desc = desc;
                           if(min !== undefined) 
                               obj.common.min = min;
                           if(max !== undefined) 
                               obj.common.max = max;
                           if(unit !== undefined) 
                               obj.common.unit = unit;
                           if(states !== undefined) 
                               obj.common.states = states;
                
                           obj.native = {};
                           obj.common.custom = []; // Damit die Zuordnung zu iQontrol, Sql etc. nicht übernommen wird
                           log('Created Alias-State ' + idDst);
                           setObject(idDst, obj,(err) =>{ 
                               if(!err)
                                   startAttach(); 
                               else
                                   log('Error creating-alias','error');
                           });
                       }
                       else
                           startAttach();
                 }
                 
                 
                 // Save ID and Enum (room or function)
                 var attach = (id, enu,value) => {
                     if(id.length == 0){
                         log('ID has lenght 0, can not attach to enum','warn');
                         return;
                     }
                     if(value.length == 0){
                         log('Value has lenght 0','warn');
                         return;
                     }
                   
                     let sEnuId = 'enum.' + enu + '.' + value;
                     if(enu.length > 0 && existsObject(sEnuId)) 
                     {
                         let obj = getObject(sEnuId)
                         let members = obj.common.members;
                         if(!members.includes(id)){
                             arEnum.push(sEnuId);
                             arId.push(id);
                         }
                     }
                     else
                  	      log('Can not find enum ' + sEnuId,'warn');
                 }
                
                function startAttach(){
                   let bRoom = raum !== undefined && raum.length > 0;
                   let bGewerk = gewerk !== undefined && gewerk.length > 0;
                   
                   if(bRoom)
                       attach(idDst,'rooms',raum);
                   if(bGewerk)
                       attach(idDst,'functions',gewerk);
                   if(bRoom || bGewerk){
                           if(timeoutAssignEnum){
                               clearTimeout(timeoutAssignEnum);
                               timeoutAssignEnum = null;
                           }
                           timeoutAssignEnum = setTimeout(finishScript,100);
                   }
                }
                
                 createAliasPath(idDst);
                }
                
                function finishScript(){
                   assignEnums();
                }
                
                // Add the saved IDs to the rooms/functions
                function assignEnums(){
                if(arEnum.length == 0 || arId.length == 0){
                     return;
                }
                
                if(arEnum.length != arId.length){
                     log('Arrays have different size','error');
                     return;
                }
                let mapEnumId = new Map();
                
                for(let i=0;i < arEnum.length; i++){
                    let enu = arEnum[i];
                    let id = arId[i];
                    if(existsObject(id)){
                   	 let obj = getObject(enu)
                   	 let members;
                   	 if(!mapEnumId.has(enu)){
                   		 members = obj.common.members;
                   		 mapEnumId.set(enu,members);
                   	 }
                   	 else
                   		 members = mapEnumId.get(enu);    
                   	 if(!members.includes(id)){
                   		  log("Adding " + id + " to " + enu);
                   		  members.push(id);
                   	 }	      
                    }
                    else
                        log('Can not find Alias ' + id,'error');
                }
                 
                 function setMembers(members,enu,map){
                     let obj = getObject(enu);
                     obj.common.members = members;
                     setObject(enu,obj);
                 }
                 mapEnumId.forEach(setMembers);
                }
                
                /**********************************************************
                   	END /
                   	ENDE
                **********************************************************/
                
                //////////////////////////////
                //  Fenster
                //////////////////////////////
                //2 x Fenstersensoren HMIP
                //einfache HMIP Fenstersensoren über rpc-Adapter in function fenster_alias
                //{0: 'geschlossen', 1: 'geöffnet'}
                createAlias('hm-rpc.0.xxx.1.STATE'/*Wohnzimmer Fenster links STATE*/, 'Fenster.Wohnzimmer_Fenster_links', undefined, 'fenster_alias', 'number', undefined, undefined, 'Wohnzimmer links', 'window.value', 'per Script erstellt', 0, 1, '',{0: 'geschlossen', 1: 'geöffnet'})
                createAlias('hm-rpc.0.xxx.1.STATE'/*Küche Fenster links STATE*/, 'Fenster.Kueche_Fenster_links', undefined, 'fenster_alias', 'number',undefined, undefined, 'Küche links', 'window.value', 'per Script erstellt', 0, 1, '',{0: 'geschlossen', 1: 'geöffnet'})
                
                //2 x Fenstersensoren HM
                //einfache HM Fenstersensoren über rpc-Adapter in function fenster_alias
                //{false: 'geschlossen', true: 'geöffnet'}
                createAlias('hm-rpc.0.xxx.1.STATE'/*Wohnzimmer Fenster links STATE*/, 'Fenster.Wohnzimmer_Fenster_links', undefined, 'fenster_alias', 'boolean', undefined, undefined, 'Wohnzimmer links', 'window.value', 'per Script erstellt', undefined, undefined, undefined, {false: 'geschlossen', true: 'geöffnet'})
                createAlias('hm-rpc.0.xxx.1.STATE'/*Küche Fenster links STATE*/, 'Fenster.Kueche_Fenster_links', undefined, 'fenster_alias', 'boolean',undefined, undefined, 'Küche links', 'window.value', 'per Script erstellt', undefined, undefined, undefined, {false: 'geschlossen', true: 'geöffnet'})
                
                
                //2 x Fensterdrehgriffe HMIP
                //HMIP Fensterdrehgriffe über rpc-Adapter in function fenster_alias
                //{0: 'geschlossen', 1: 'gekippt', 2: 'geöffnet'}
                createAlias('hm-rpc.0.xxx.1.STATE'/*Keller W-Baum Fenster STATE*/, 'Fenster.Keller_Weihnachtsbaum_Fenster', undefined, 'fenster_alias', 'number',undefined, undefined, 'Keller W Baum', 'window.value', 'per Script erstellt', 0, 2, '',{0: 'geschlossen', 1: 'gekippt', 2: 'geöffnet'})
                createAlias('hm-rpc.0.xxx.1.STATE'/*Keller Wohnzimmer Fenster mitte STATE*/, 'Fenster.Keller_Wohnzimmer_Fenster_mitte', undefined, 'fenster_alias', 'number',undefined, undefined, 'Keller Wohnzimmer mitte', 'window.value', 'per Script erstellt', 0, 2, '',{0: 'geschlossen', 1: 'gekippt', 2: 'geöffnet'})
                
                //2 x Fenster(Türen) Sensoren HMIP
                //einfache HMIP Fenstersensoren über rpc-Adapter in function tueren_alias
                //{0: 'geschlossen', 1: 'geöffnet'}
                createAlias('hm-rpc.0.xxx.1.STATE'/*Wohnzimmer Terrassentür STATE*/, 'Tueren.Terrassentuer', undefined, 'tueren_alias', 'number',undefined, undefined, 'Terrassentür', 'window.value', 'per Script erstellt', 0, 1, '',{0: 'geschlossen', 1: 'geöffnet'})
                createAlias('hm-rpc.0.xxx.1.STATE'/*Haustür STATE*/, 'Tueren.Haustuer', undefined, 'tueren_alias', 'number',undefined, undefined, 'Haustür', 'window.value', 'per Script erstellt', 0, 1, '',{0: 'geschlossen', 1: 'geöffnet'})
                
                //////////////////////////////
                //  Steckdosen
                //////////////////////////////
                //2 x Steckdosen
                //HMIP Steckdosen über rpc-Adapter in function steckdosen_alias
                //{false: 'aus', true: 'an'}
                createAlias('hm-rpc.0.xxx.3.STATE'/*Waschmaschine STATE*/, 'Steckdosen.Waschmaschine', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Waschmaschine', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                createAlias('hm-rpc.0.xxx.3.STATE'/*Geschirrspueler STATE*/, 'Steckdosen.Geschirrspueler', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Geschirrspüler', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                
                //////////////////////////////
                //  Bewegungsmelder
                //////////////////////////////
                //2 x Bewegungsmelder und 2 x Präsenzmelder und 1 x Erschütterungssensor
                //HMIP Bewegungsmelder und Präsenzmelder über rpc-Adapter in function bewegungsmelder_alias
                //{false: 'inaktiv', true: 'aktiv'}
                createAlias('hm-rpc.0.xxx.1.MOTION'/*Bewegungsmelder Weihnachtsbaumkeller MOTION*/, 'Bewegungsmelder.Bewegungsmelder_Weihnachtsbaumkeller', undefined, 'bewegungsmelder_alias', 'boolean', undefined, undefined, 'W Baum Keller', 'sensor.motion', 'per Script erstellt', undefined, undefined, undefined, {false: 'inaktiv', true: 'aktiv'})
                createAlias('hm-rpc.0.xxx.1.MOTION'/*Bewegungsmelder Heizungskeller MOTION*/, 'Bewegungsmelder.Bewegungsmelder_Heizungskeller', undefined, 'bewegungsmelder_alias', 'boolean', undefined, undefined, 'Heizungskeller', 'sensor.motion', 'per Script erstellt', undefined, undefined, undefined, {false: 'inaktiv', true: 'aktiv'})
                //ab hier 2 x Präsenzmelder
                createAlias('hm-rpc.0.xxx.1.PRESENCE_DETECTION_STATE'/*Präsenzmelder Badezimmer PRESENCE DETECTION STATE*/, 'Bewegungsmelder.Praesenzmelder_Badezimmer', undefined, 'bewegungsmelder_alias', 'boolean', undefined, undefined, 'Badezimmer', 'sensor.motion', 'per Script erstellt', undefined, undefined, undefined, {false: 'inaktiv', true: 'aktiv'})
                createAlias('hm-rpc.0.xxx.1.PRESENCE_DETECTION_STATE'/*Präsenzmelder Dusche PRESENCE DETECTION STATE*/, 'Bewegungsmelder.Praesenzmelder_Dusche', undefined, 'bewegungsmelder_alias', 'boolean', undefined, undefined, 'Dusche', 'sensor.motion', 'per Script erstellt', undefined, undefined, undefined, {false: 'inaktiv', true: 'aktiv'})
                //ab hier 1 x Erschütterungssensor
                createAlias('hm-rpc.0.xxx.1.MOTION'/*Briefkasten MOTION*/, 'Bewegungsmelder.Praesenzmelder_Briefkasten', undefined, 'bewegungsmelder_alias', 'boolean', undefined, undefined, 'Briefkasten', 'sensor.motion', 'per Script erstellt', undefined, undefined, undefined, {false: 'inaktiv', true: 'aktiv'})
                
                //////////////////////////////
                //  Licht
                //////////////////////////////
                //2 x HUE und 5 x HMIP Licht über HUE und rpc-Adapter in function licht_alias
                //{false: 'aus', true: 'an'}
                createAlias('hue.0.Badezimmerlampe_links.on'/*Badezimmerlampe links on*/, 'Licht.Badezimmer_Licht_links', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Badezimmer links', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                createAlias('hue.0.Badezimmerlampe_rechts.on'/*Badezimmerlampe rechts on*/, 'Licht.Badezimmer_Licht_rechts', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Badezimmer rechts', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                
                //ab hier 2 x Licht HMIP Steckdosen über rpc Adapter
                createAlias('hm-rpc.0.xxx.3.STATE'/*Kugellampe STATE*/, 'Licht.Wohnzimmer_Kugel_Licht', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Kugellicht', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                createAlias('hm-rpc.0.xxx.3.STATE'/*Gäste WC Licht STATE*/, 'Licht.Gaeste_WC_Licht', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Gäste WC Licht', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                
                //////////////////////////////
                //  Temperaturen
                //////////////////////////////
                //HMIP 2 x Temperaturen über rpc-Adapter in function temperaturen_alias
                createAlias('hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE'/*Wandthermostat Schlafzimmer:1 ACTUAL TEMPERATURE*/, 'Temperaturen.Temperatur_Schlafzimmer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Schlafzimmer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                createAlias('hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE'/*Wandthermostat Wohnzimmer:1 ACTUAL TEMPERATURE*/, 'Temperaturen.Temperatur_Wohnzimmer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Wohnzimmer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                
                //////////////////////////////
                //  Batterien_voll_leer
                //////////////////////////////
                //2 x Batterien voll-leer über boolean Wert false/true in function batterien_voll_leer_alias
                createAlias('hm-rpc.0.xxx.0.LOW_BAT'/*Wohnzimmer Fenster links:0 LOW BAT*/, 'Batterien_voll_leer.Wohnzimmer_Fenster_links', undefined, 'batterien_voll_leer_alias', 'boolean', undefined, undefined, 'Wohnzimmer Fenster links', 'indicator.lowbat', 'per Script erstellt', undefined, undefined, undefined, {false: 'voll', true: 'leer'})
                createAlias('hm-rpc.0.xxx.0.LOW_BAT'/*Küche Fenster links:0 LOW BAT*/, 'Batterien_voll_leer.Kueche_Fenster_links', undefined, 'batterien_voll_leer_alias', 'boolean', undefined, undefined, 'Küche Fenster links', 'indicator.lowbat', 'per Script erstellt', undefined, undefined, undefined, {false: 'voll', true: 'leer'})
                
                //////////////////////////////
                //  Batterien_Volt
                //////////////////////////////
                //2 x Batterien Volt Anzeige in function batterien_volt_alias
                createAlias('hm-rpc.0.xxx.0.OPERATING_VOLTAGE'/*Wohnzimmer Fenster links:0 OPERATING VOLTAGE*/, 'Batterien_Volt.Wohnzimmer_Fenster_links', undefined, 'batterien_volt_alias', 'number', undefined, undefined, 'Wohnzimmer Fenster links', 'value.voltage', 'per Script erstellt', undefined, undefined, 'Volt', undefined)
                createAlias('hm-rpc.0.xxx.0.OPERATING_VOLTAGE'/*Küche Fenster links:0 OPERATING VOLTAGE*/, 'Batterien_Volt.Kueche_Fenster_links', undefined, 'batterien_volt_alias', 'number', undefined, undefined, 'Küche Fenster links', 'value.voltage', 'per Script erstellt', undefined, undefined, 'Volt', undefined)
                
                


                nach dem Alias erstellen das hier beachten: Klick


                bitte das Blockly auf den eigenen Rechner downloaden und dort mit einem Editor öffnen und den gesamten Inhalt der Textdatei in die Zwischenablage kopieren und anschließend in ein neues leeres Blockly importieren. Nicht direkt im Browser öffnen und kopieren, dann kommt es oft zu Umlaute Fehlern im Blockly.

                Hier ist der Blockly Export


                Temperaturen_1-6-7.zip


                Batterien_Volt_1-6-7.zip


                Steckdosen_1-6-7.zip


                Lichter_1-6-7.zip


                Bewegungsmelder_1-6-7.zip


                Batterien_voll_leer_1-6-7.zip


                Fenster_1-6-7.zip


                Tueren_1-6-7.zip


                Batterien_Prozent_1-6-7.zip

                meine iQontrol Einstellungen


                Bildschirmfoto 2020-12-03 um 08.00.37.png

                Bildschirmfoto 2020-12-03 um 08.00.50.png

                Bildschirmfoto 2020-12-03 um 08.02.31.png

                Bildschirmfoto 2020-12-03 um 08.03.03.png

                Bildschirmfoto 2020-12-03 um 08.03.44.png

                Bildschirmfoto 2020-12-03 um 08.04.20.png

                Bildschirmfoto 2020-12-03 um 08.05.09.png

                Bildschirmfoto 2020-12-03 um 08.06.48.png

                Bildschirmfoto 2020-12-03 um 08.07.24.png

                Bildschirmfoto 2020-12-03 um 08.08.20.png

                Bildschirmfoto 2020-12-03 um 08.09.00.png


                Hier der Export von diesem View
                2020-12-20_iqontrol_0_selected_views.json.zip

                20201220_092104.jpg




                Zuerst muß das neue SmartGerät aus iot gesucht und gefunden werden. Dazu ist es wichtig einmal den iot Adapter zu öffnen und in den Reiter "SMART-GERÄTE" zu wechseln. Das neue Gerät sollte da sein, aber wenn man diesen Schritt nicht macht, dann werden von Alexa keine neuen Geräte gefunden. Danach kann der Adapter wieder geschlossen werden.
                Bildschirmfoto 2020-04-26 um 15.34.49.png
                Nun entweder in der App neue Geräte suchen lassen, oder kurz den Sprachbefehl: "Alexa, suche neue Geräte" ausführen. Wenn das durchgelaufen ist und ein neues oder mehrere neue Geräte gefunden wurden, dann geht es mit dem Einrichten der Routine weiter.

                neue Geräte suchen lassen in der Alexa App

                2020-06-30 15.03.38.jpg

                ein neues Gerät (oder mehrere) wurde gefunden

                2020-06-30 15.04.00.jpg
                alles überspringen und dann zu den Routinen. Dort dann auf das Plus (oben rechts) drücken und eine neue Routine anlegen. Satz bzw. Frage eingeben bei Stimme

                2020-06-30 15.04.36.jpg

                Dann als nächstes die Aktion hinzufügen (SmartHome), alle Geräte auswählen und das passende Gerät einfügen.

                2020-06-30 15.04.55.jpg

                Oben rechts auf speichern, dann kurz warten und ausprobieren...

                sigi234S Online
                sigi234S Online
                sigi234
                Forum Testing Most Active
                schrieb am zuletzt editiert von sigi234
                #474

                @dslraser

                Licht geht leider nicht bei mir:

                Screenshot (2520).png

                Erledigt, Lichter gehört geschrieben.

                Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                Immer Daten sichern!

                1 Antwort Letzte Antwort
                0
                • dslraserD dslraser

                  @falke69
                  Interessant wäre erstmal zu wissen ob alles funktioniert wie es soll.

                  dirk1962D Offline
                  dirk1962D Offline
                  dirk1962
                  schrieb am zuletzt editiert von
                  #475

                  @dslraser sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:

                  Interessant wäre erstmal zu wissen ob alles funktioniert wie es soll.

                  Ich habe jetzt alle Blocklys vom 20.05.2020 installiert (Fenster, Steckdosen, Lichter, BWM).
                  Alphabetische Sortierung aktiv und inaktiv funktioniert.:+1:
                  Alexa Ansage (eine Instanz) funktioniert.:+1:
                  E-Mail Versand funktioniert.:+1:
                  Es ist Dir gelungen die eierlegende Wollmilchsau zu programmieren.:clap: :clap:
                  Tolle Arbeit, großer Respekt und vielen Dank, dass Du uns alles zur Verfügung stellst.

                  NUC8i5 mit Proxmox; Raspberrymatic in VM, iobroker, Motioneye, infuxDB und Grafana in CT.

                  1 Antwort Letzte Antwort
                  1
                  • K Offline
                    K Offline
                    Kueppert
                    schrieb am zuletzt editiert von
                    #476

                    Hallo @dslraser
                    ich versuche gerade, dein Temperaturskript bei mir zu implementieren (habe Zigbee-Sensoren; Datei 08Gesamttemperaturansage.txt). In der Anleitung steht, man soll den Datenpunkt Temperatur_zu_String_mit_Komma im JS-Element modifizieren - den gibts bei mir aber nicht? Hab schon die Blöcke verschoben, da versteckt der sich aber nicht...
                    1ab62bd4-95c1-4f32-bdf1-a72eba854ea0-grafik.png

                    UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                    dslraserD 1 Antwort Letzte Antwort
                    0
                    • K Kueppert

                      Hallo @dslraser
                      ich versuche gerade, dein Temperaturskript bei mir zu implementieren (habe Zigbee-Sensoren; Datei 08Gesamttemperaturansage.txt). In der Anleitung steht, man soll den Datenpunkt Temperatur_zu_String_mit_Komma im JS-Element modifizieren - den gibts bei mir aber nicht? Hab schon die Blöcke verschoben, da versteckt der sich aber nicht...
                      1ab62bd4-95c1-4f32-bdf1-a72eba854ea0-grafik.png

                      dslraserD Offline
                      dslraserD Offline
                      dslraser
                      Forum Testing Most Active
                      schrieb am zuletzt editiert von dslraser
                      #477

                      @Kueppert
                      ich schaue später mal.

                      Edit: Ich sehe schon was Du meinst. Du hast die Gesamtansage genommen. Das ist die Zusammenfassung von 01 bis 07. (wenn man die alle hat) Da ist fas nicht drinn. Nimm mal eine der anderen. Da muss ich die Anleitung verbessern.
                      Und noch eine Frage, welche Javascript Version hast Du ? Bei Dir werden auch zwei Funktionen (die von Alexa) als Fehlerhaft angezeigt.

                      K 1 Antwort Letzte Antwort
                      0
                      • dslraserD dslraser

                        @Kueppert
                        ich schaue später mal.

                        Edit: Ich sehe schon was Du meinst. Du hast die Gesamtansage genommen. Das ist die Zusammenfassung von 01 bis 07. (wenn man die alle hat) Da ist fas nicht drinn. Nimm mal eine der anderen. Da muss ich die Anleitung verbessern.
                        Und noch eine Frage, welche Javascript Version hast Du ? Bei Dir werden auch zwei Funktionen (die von Alexa) als Fehlerhaft angezeigt.

                        K Offline
                        K Offline
                        Kueppert
                        schrieb am zuletzt editiert von
                        #478

                        @dslraser danke dir :) Ich nutze wieder die 4.6.13. Kann die Finger von den neusten latest-Adaptern nicht weg lassen ^^

                        UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                        K 1 Antwort Letzte Antwort
                        0
                        • K Kueppert

                          @dslraser danke dir :) Ich nutze wieder die 4.6.13. Kann die Finger von den neusten latest-Adaptern nicht weg lassen ^^

                          K Offline
                          K Offline
                          Kueppert
                          schrieb am zuletzt editiert von Kueppert
                          #479

                          @dslraser bei Lichter hatte ich noch 2 unbekannte drin. Sind 2 Yeelight-Leuchtmittel.
                          Ein RAW-Datenpunkt hierzu (.power ist das was fehlt):

                          {
                            "from": "system.adapter.yeelight-2.0",
                            "ts": 1541241219406,
                            "common": {
                              "name": "Wohnzimmer-Stipe.power",
                              "role": "switch",
                              "type": "boolean",
                              "write": true,
                              "read": true,
                              "smartName": {
                                "de": "Yeelight-Wohnzimmerregal",
                                "smartType": "LIGHT"
                              }
                            },
                            "native": {},
                            "acl": {
                              "object": 1636,
                              "owner": "system.user.admin",
                              "ownerGroup": "system.group.administrator",
                              "state": 1636
                            },
                            "_id": "yeelight-2.0.stripe-0x0000000004986798.control.power",
                            "type": "state"
                          }
                          

                          hab den Code selbst eingepflegt, tuts jetzt wunderbar :)

                          if (name.substr( -6) == ('.power')) return name.slice(0, -6);
                          

                          UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                          1 Antwort Letzte Antwort
                          1
                          • K Offline
                            K Offline
                            Kueppert
                            schrieb am zuletzt editiert von Kueppert
                            #480

                            kleiner Hinweis für alle: ich hatte in meinem Fenster & Türen-Skript die Bezeichnung "Türen & Fenster" gewählt. Das hat bei mir dazugeführt, dass im iQontrol die HTML nicht korrekt angezeigt wurde. Hab jetzt auf "TuerenFenster" umgestellt und es geht.
                            Ob es mit der Bezeichnung die ich gewählt hatte zusammenhängt, weiß ich nicht genau. Die HTML wurde aber aktualisiert, aber in iQontrol trotzdem falsch angezeigt (ein offenes Fenster wurde als geschlossen ausgewiesen). Öffnete ich die HTML in WINSCP, war alles korrekt ausgewiesen.

                            UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                            1 Antwort Letzte Antwort
                            0
                            • falke69F Offline
                              falke69F Offline
                              falke69
                              schrieb am zuletzt editiert von
                              #481

                              Hi,

                              habe gerade gemerkt, dass mein HM-LC-RGBW-WM und der HM-LC-Dim1PWM-CV nicht mit in der Liste auftauchen. Habe bei beiden Geräten den Level mit zu "Lichter" hinzugefügt. Diese werden aber nicht mit erkannt.
                              Muss ich hier eine andere Auswahl treffen?

                              2020-05-22_144508.jpg

                              dslraserD 1 Antwort Letzte Antwort
                              0
                              • falke69F falke69

                                Hi,

                                habe gerade gemerkt, dass mein HM-LC-RGBW-WM und der HM-LC-Dim1PWM-CV nicht mit in der Liste auftauchen. Habe bei beiden Geräten den Level mit zu "Lichter" hinzugefügt. Diese werden aber nicht mit erkannt.
                                Muss ich hier eine andere Auswahl treffen?

                                2020-05-22_144508.jpg

                                dslraserD Offline
                                dslraserD Offline
                                dslraser
                                Forum Testing Most Active
                                schrieb am zuletzt editiert von dslraser
                                #482

                                @falke69 sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:

                                Level mit zu "Lichter"

                                level ist nicht dabei. welcher DP schaltet bei Dir an / aus ? WORKING vielleicht? Dann nimm mal den rein

                                falke69F 1 Antwort Letzte Antwort
                                0
                                • dslraserD dslraser

                                  @falke69 sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:

                                  Level mit zu "Lichter"

                                  level ist nicht dabei. welcher DP schaltet bei Dir an / aus ? WORKING vielleicht? Dann nimm mal den rein

                                  falke69F Offline
                                  falke69F Offline
                                  falke69
                                  schrieb am zuletzt editiert von
                                  #483

                                  @dslraser

                                  WORKING geht vor false auf true und wieder zurück. Das Gerät wird eigentlich hauptsächlich mit Alexa gesteuert. :-). Ansonsten noch mit HM-RC-2-PBU-FM. Die Änderung unter Working ist zu sehen, erscheint aber nicht mit in den Aufzählungen.

                                  Ist auch nicht wirklich schlimm.
                                  War mir nur jetzt erst aufgefallen.

                                  dslraserD 1 Antwort Letzte Antwort
                                  0
                                  • falke69F falke69

                                    @dslraser

                                    WORKING geht vor false auf true und wieder zurück. Das Gerät wird eigentlich hauptsächlich mit Alexa gesteuert. :-). Ansonsten noch mit HM-RC-2-PBU-FM. Die Änderung unter Working ist zu sehen, erscheint aber nicht mit in den Aufzählungen.

                                    Ist auch nicht wirklich schlimm.
                                    War mir nur jetzt erst aufgefallen.

                                    dslraserD Offline
                                    dslraserD Offline
                                    dslraser
                                    Forum Testing Most Active
                                    schrieb am zuletzt editiert von
                                    #484

                                    @falke69 sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:

                                    Die Änderung unter Working ist zu sehen, erscheint aber nicht mit in den Aufzählungen.

                                    Ich meinte damit ja auch ,das Du dann working in die Aufzählung packen sollst und level da raus nehmen sollst. Danach mal das Blockly neu starten.

                                    falke69F 1 Antwort Letzte Antwort
                                    0
                                    • dslraserD dslraser
                                      Versionen 1.6.7
                                      aktualisiert am 23.12.2020
                                      Typ Blockly mit JavaScript Funktionen
                                      verwendete Adapter je nach dem was im Blockly aktiviert ist
                                      verwendete Geräte verschieden - gemischt
                                      was kann das Blockly wird hier beschrieben

                                      Hallo Zusammen.
                                      Ich stelle hier mein Blockly zum Geräte zählen und optional zum Ansagen über den Alexa2 Adapter über speak, sowie optionaler Versand über Telegram / E-Mail zur Verfügung.
                                      Das gesamte Blockly nutzt "alias'e". Alle anderen benötigten Datenpunkte erstellt und löscht das Blockly selbst, je nach dem was verwendet werden soll.
                                      Wer also keine alias erstellen oder nutzen möchte kann an dieser Stelle aufhören zu lesen, für alle anderen Interessierten versuche ich möglichst genau zu beschreiben was zu tun ist.

                                      Mit Alexa geht dann z.B.

                                      • Alexa, welche Fenster sind noch auf
                                      • Alexa, welche Türen sind noch auf
                                      • Alexa, welche Steckdosen sind noch an
                                      • Alexa, welche Lampen sind noch an
                                      • Alexa, was machen die Batterien
                                      • Alexa, welche Bewegungsmelder sind aktiv
                                      • Alexa, wie sind die Temperaturen (Ansage, aller Temperaturen meiner Räume und Außentemperatur nacheinander in einer Ansage)

                                      Welche Frage in welcher Formulierung gestellt wird bestimmt Ihr natürlich selbst, da dies über eine Routine in der Alexa App gesteuert wird. Dazu später mehr.

                                      Ein Hinweis gleich noch zu Beginn. Da die Ansage am angesprochenen ECHO erfolgen soll, kann es vorkommen, das, wenn es mehrere ECHO's in Hörweite gibt, die Ansage an einem anderen ECHO ausgegeben wird, weil sich ein anderer ECHO "angesprochen fühlt". Wenn ich in einem Raum bin, wo mich nur ein ECHO hören kann, funktioniert es bei mir zuverlässig.

                                      Meine verwendeten Adapter dafür sind:

                                      • Alexa2 Adapter 3.4.0
                                      • iot Adapter 1.8.8
                                      • Javascript Adapter 4.10.8
                                      • Telegram Adapter 1.5.9 (optional)
                                      • E-Mail Adapter 1.0.7 (optional)
                                      • und wenn gewünscht (optional) iQontrol 1.5.2
                                      • TR-064 4.2.1 Anruferansage (optional Telegram/EMAIL-extra Blockly im zweiten Beitrag)

                                      SmartGeräte für den iot Adapter werden direkt im Blockly erstellt, das sind dann die Button für die spätere Routine in der Amazon App.
                                      Das Blockly legt die benötigten Datenpunkte wahlweise unter 0_userdata.0 oder javascript.x selbst an (x=Javascript Instanznummer). Für die Erstellung der Datenpunkte nutze ich das Script von @Mic in einer Funktion. Dafür muß die Option "Erlaube das Kommando "setObject" im Javascript Adapter erlaubt sein.

                                      Bildschirmfoto 2020-04-08 um 12.05.38.png

                                      Der Versand aller Nachrichten (Telegram oder EMAIL) ist immer schaltbar, z.B. wenn man eine Anwesenheitsfunktion hat, dann könnte man den Versand bei Abwesenheit "scharf" schalten.
                                      Die Button hingegen funktionieren immer. Hier könnte man jeweils eine Routine in der Alexa App anlegen und den Versand des Gerätestatus-Versand auslösen.
                                      Z.B.
                                      Alexa, schicke mir den Fensterstatus.
                                      Alexa, schicke mir den Lichtstatus
                                      Alexa, schicke mir den Steckdosenstatus usw...

                                      Über diesen Weg lasse ich mir auch zum Beispiel auf Anforderung den Batteriestatus aller meiner Geräte mit Batterien als Liste schicken. Oder auch, Alexa schicke mir ein Bild von der Eingangskamera. Wenn man es auf die Spitze treibt, dann geht auch: Alexa, schicke mir den kompletten Status und dann trudeln bei mir nacheinander Bilder von drei Kameras, alle Batteriezustände, eine Liste mit geöffneten/gekippten Fenstern, ein Liste mit eingeschalteten Lampen usw. usw. usw. ein.

                                      Wenn Ihr nun Lust auf das Blockly habt, dann ist jetzt einmalig etwas Fleißarbeit angesagt. Bevor Ihr das Blockly nutzen könnt, müssen die Alias für Eure Geräte, die Ihr im Blockly verwenden wollt, erstellt werden. Dafür eignet sich die Scriptvorlage von @CruziX hervorragend. Mit dieser Vorlage können alle Alias auf einmal erstellt werden. Eine Vorlage als Beispiel findet Ihr im Spoiler. An dieser Stelle sei gleich gesagt, sinnvolle Namen im Alias zu verwenden (id ist egal, nur der Name ist gemeint), da diese Namen dann für alles im Blockly verwendet werden, also alle Gerätenamen allgemein. Also immer so erstellen, das sich der Name auch z.B. für Alexa aussprechen lässt.
                                      In der id keine Leerzeichen/Sonderzeichen oder Umlaute verwenden, damit vermeidet man direkt im Vorfeld mögliche Fehler.
                                      Als erstes solltet ihr in den Aufzählungen neue Funktionen erstellen, diese kann man dann gleich im alias Script benutzen. Da auf das Plus drücken.
                                      Bildschirmfoto 2020-06-29 um 21.16.04.png
                                      dann auf das Plus bei neue benutzerdefinierte Gruppe klicken
                                      Bildschirmfoto 2020-06-29 um 21.16.19.png

                                      Ich habe folgende erstellt (wenn Ihr die gleichen nehmt müsst Ihr das nichtmal im Blockly umstellen)

                                      batterien_voll_leer_alias
                                      batterien_volt_alias
                                      bewegungsmelder_alias
                                      fenster_alias
                                      licht_alias
                                      steckdosen_alias
                                      temperaturen_alias
                                      tueren_alias
                                      batterien_prozent_alias

                                      Das sind die Selektoren im Blockly

                                      Bildschirmfoto 2020-12-19 um 09.07.55.png
                                      Bildschirmfoto 2020-12-19 um 09.08.22.png
                                      Bildschirmfoto 2020-12-19 um 09.08.51.png
                                      Bildschirmfoto 2020-12-19 um 09.09.21.png
                                      Bildschirmfoto 2020-12-19 um 09.09.59.png
                                      Bildschirmfoto 2020-12-19 um 09.10.34.png
                                      Bildschirmfoto 2020-12-19 um 09.11.17.png
                                      Bildschirmfoto 2020-12-19 um 09.12.00.png
                                      Bildschirmfoto 2020-12-19 um 09.12.32.png

                                      Das ganze sieht dann nach dem Blockly Start in den Objekten z.B. so aus: (wenn alle Schalter im Blockly auf wahr stehen)

                                      Bildschirmfoto 2020-12-02 um 19.33.40.png

                                      01_Anzeigen_und_Listen

                                      Bildschirmfoto 2020-12-02 um 19.43.57.png

                                      02_Trigger_und_Schalter

                                      Bildschirmfoto 2020-12-02 um 19.44.12.png

                                      03_HTML_Daten hat zwei Unterordner

                                      Bildschirmfoto 2020-12-02 um 19.44.31.png

                                      01_HTML_Hell_Dunkel_Festeinstellung ist nicht veränderbar und sieht so aus (helle Einstellung aktiv)

                                      Bildschirmfoto 2020-12-02 um 19.45.09.png

                                      03_HTML_Eigene_Einstellung enthält die gleichen Datenpunkte und wird beim ersten verwenden des Triggers mit Standardwerten befüllt. Diese Werte können dann mit eigenen Werten überschrieben werden.

                                      Und hier noch der Rest

                                      Bildschirmfoto 2020-12-02 um 19.45.42.png

                                      Die Bilder bzw. Icon links und rechts habe ich als Base64 eingefügt. Ich benutze dafür das hier: https://www.base64-image.de/

                                      Wenn iQontrol installiert ist, dann funktioniert auch der Pfad zu einem Icon (einfach den eingestellten Pfad zum Icon aus iQontrol kopieren und einfügen)
                                      In den eigenen 02_HTML_Eigene_Einstellungen kann alles selbst an die eigenen Wünsche angepasst werden.

                                      Hier noch ein kurzes GiF
                                      (klick auf das linke Icon schaltet die Farbeinstellungen durch. klick auf das rechte Icon blendet die Tabelle ein und aus bzw. schaltet auf aktiv/inaktiv)
                                      20201202_200704.gif



                                      Das ganze sieht dann so bei mir aus (ich habe immer nur die ersten fünf auf den Bildern)

                                      Bildschirmfoto 2020-07-04 um 19.22.51.png

                                      Bildschirmfoto 2020-07-04 um 19.26.55.png

                                      Bildschirmfoto 2020-06-30 um 15.46.33.png

                                      Bildschirmfoto 2020-06-30 um 15.46.48.png

                                      Bildschirmfoto 2020-06-30 um 15.47.02.png

                                      Bildschirmfoto 2020-06-30 um 15.47.15.png

                                      Bildschirmfoto 2020-07-04 um 19.23.12.png

                                      Bildschirmfoto 2020-06-30 um 15.47.46.png


                                      Im Beispielvideo werden die eigenen Alias ab Zeile 271 eingefügt, also ab dem ersten createAlias
                                      Video Beispiel:
                                      Alias_per_Script_erstellen.m4v
                                      In der Vorlage habe ich jeweils zwei meiner verwendeten Geräte als Beispiel eingefügt.
                                      Hier und in den folgenden Beiträgen versuche ich die Alias Funktion vom Script etwas zu erklären:
                                      Klick Erklärung alias Funktion

                                      /**************************************************************
                                      Github - https://github.com/xCruziX/ioBroker-Creating-Alias/blob/master/CreateAlias.js
                                         			Changelog
                                      Version 1.1.4
                                      - fix error by using bCreateAliasPath and bConvertExistingPath (has no target 9/Error creating alias-path)
                                      **************************************************************/
                                      
                                      /**************************************
                                         	Flags /
                                         	Variablen
                                      ***************************************/
                                      
                                      // typeAlias = 'boolean'; // oder 'number'
                                      // read = "val == 'Ein' ? true : false"; // Erkennung "Aus" --> false erfolgt automatisch  
                                      // write = "val ? 'Ein' : 'Aus'";
                                      // nameAlias = 'Licht Haustür';
                                      // role = 'switch';
                                      // desc = 'per Script erstellt';
                                      // 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)
                                      
                                      
                                      let bCreateAliasPath = true;  // If this flag is true, each folder is created seperately so rooms and functions can be assigned.
                                      
                                      /*
                                      Requirements: bCreateAliasPath == true
                                      If this flag is true, existing folders in the path will be converted so rooms and functions can be assigned.
                                      */
                                      let bConvertExistingPath = false;
                                      
                                      /***************************************
                                         	Don't change anything from here /
                                         	Ab hier nichts verändern
                                      ***************************************/
                                      
                                      let arEnum = [];
                                      let arId = [];
                                      let timeoutAssignEnum;
                                      var callbackAlias = undefined;
                                      function createAlias(idSrc, idDst,raum, gewerk,typeAlias, read, write, nameAlias, role, desc, min, max, unit, states) {
                                       if(!idDst.includes('alias.0.'))
                                           idDst = 'alias.0.' + idDst;
                                       if(!existsObject(idSrc))
                                       {
                                           log('Source-Id ' + idSrc +' does not exists.','warn');
                                           return;
                                       }
                                       
                                       // Create the object Path for alias id, 
                                       // so you can assign rooms and function to the parents
                                       var createAliasPath = (id) => {
                                            if(bCreateAliasPath){
                                                 let lisMergedIds = [];
                                                 let mergedId = 'alias.0';
                                                 id = id.replace(mergedId + '.', ''); // Remove prefix alias so it will not be changed
                                                 let split = id.split('.'); 
                                                 for(let i=0;i<split.length-1;i++){
                                                     mergedId += '.' + split[i];
                                                     lisMergedIds.push(mergedId);
                                                 }
                                                 
                                                 function path(){
                                                     if(lisMergedIds.length == 0) {
                                                         alias();
                                                         return;
                                                     }
                                                     let tmpId = lisMergedIds[0];
                                                     lisMergedIds.splice(0,1); // remove element
                                                     if(!existsObject(tmpId) || bConvertExistingPath){ // not exists
                                                         let obj;
                                                         if(existsObject(tmpId))
                                                             obj = getObject(tmpId);
                                                         else
                                                             obj = {};
                                      
                                                         let bApply = false;
                                                         if(obj != undefined){
                                                             if(obj.type == undefined || String(obj.type) != 'meta'){
                                                                 obj.type = 'meta';
                                                                 bApply = true;
                                                             }
                                                             if(obj.common == undefined){
                                                                 obj.common = {};
                                                                 obj.common.type = 'meta.folder';
                                                                 bApply = true;
                                                             }
                                                             else if(obj.common.type == undefined || String(obj.common.type) != 'meta.folder'){
                                                                 obj.common.type = 'meta.folder';
                                                                 bApply = true;
                                                             }
                                                             if(obj.native == undefined){
                                                                 obj.native = {};
                                                                 bApply = true;
                                                             }
                                                         }
                                                         else{
                                                             path();
                                                             log('Object is undefined');
                                                             return;
                                                         }
                                                         
                                      
                                                         if(bApply){
                                                             setObject(tmpId, obj, (err) =>{
                                                             if(!err){
                                                                 log('Created Alias-Path ' + tmpId);
                                                                 path();
                                                             }
                                                             else
                                                                 log('Error creating alias-path','error');
                                                         });
                                                         }
                                                         else
                                                             path();
                                                         
                                                     }
                                                 }
                                                 path();
                                            }
                                            else
                                              alias();
                                       }
                                       
                                       
                                       function alias(){
                                           // Create alias object
                                           
                                             if(!existsObject(idDst)){
                                                 let obj = {};
                                                 obj.type = 'state';
                                                 obj.common = getObject(idSrc).common;
                                                 obj.common.alias = {};
                                                 obj.common.alias.id = idSrc;
                                                 if(typeAlias !== undefined) 
                                                     obj.common.type = typeAlias;
                                                 if(obj.common.read !== undefined) 
                                                     obj.common.alias.read = read;
                                                 if(obj.common.write !== undefined) 
                                                     obj.common.alias.write = write;
                                                 if(nameAlias !== undefined) 
                                                     obj.common.name = nameAlias;
                                                 if(role !== undefined) 
                                                     obj.common.role = role;
                                                 if(desc !== undefined) 
                                                     obj.common.desc = desc;
                                                 if(min !== undefined) 
                                                     obj.common.min = min;
                                                 if(max !== undefined) 
                                                     obj.common.max = max;
                                                 if(unit !== undefined) 
                                                     obj.common.unit = unit;
                                                 if(states !== undefined) 
                                                     obj.common.states = states;
                                      
                                                 obj.native = {};
                                                 obj.common.custom = []; // Damit die Zuordnung zu iQontrol, Sql etc. nicht übernommen wird
                                                 log('Created Alias-State ' + idDst);
                                                 setObject(idDst, obj,(err) =>{ 
                                                     if(!err)
                                                         startAttach(); 
                                                     else
                                                         log('Error creating-alias','error');
                                                 });
                                             }
                                             else
                                                 startAttach();
                                       }
                                       
                                       
                                       // Save ID and Enum (room or function)
                                       var attach = (id, enu,value) => {
                                           if(id.length == 0){
                                               log('ID has lenght 0, can not attach to enum','warn');
                                               return;
                                           }
                                           if(value.length == 0){
                                               log('Value has lenght 0','warn');
                                               return;
                                           }
                                         
                                           let sEnuId = 'enum.' + enu + '.' + value;
                                           if(enu.length > 0 && existsObject(sEnuId)) 
                                           {
                                               let obj = getObject(sEnuId)
                                               let members = obj.common.members;
                                               if(!members.includes(id)){
                                                   arEnum.push(sEnuId);
                                                   arId.push(id);
                                               }
                                           }
                                           else
                                        	      log('Can not find enum ' + sEnuId,'warn');
                                       }
                                      
                                      function startAttach(){
                                         let bRoom = raum !== undefined && raum.length > 0;
                                         let bGewerk = gewerk !== undefined && gewerk.length > 0;
                                         
                                         if(bRoom)
                                             attach(idDst,'rooms',raum);
                                         if(bGewerk)
                                             attach(idDst,'functions',gewerk);
                                         if(bRoom || bGewerk){
                                                 if(timeoutAssignEnum){
                                                     clearTimeout(timeoutAssignEnum);
                                                     timeoutAssignEnum = null;
                                                 }
                                                 timeoutAssignEnum = setTimeout(finishScript,100);
                                         }
                                      }
                                      
                                       createAliasPath(idDst);
                                      }
                                      
                                      function finishScript(){
                                         assignEnums();
                                      }
                                      
                                      // Add the saved IDs to the rooms/functions
                                      function assignEnums(){
                                      if(arEnum.length == 0 || arId.length == 0){
                                           return;
                                      }
                                      
                                      if(arEnum.length != arId.length){
                                           log('Arrays have different size','error');
                                           return;
                                      }
                                      let mapEnumId = new Map();
                                      
                                      for(let i=0;i < arEnum.length; i++){
                                          let enu = arEnum[i];
                                          let id = arId[i];
                                          if(existsObject(id)){
                                         	 let obj = getObject(enu)
                                         	 let members;
                                         	 if(!mapEnumId.has(enu)){
                                         		 members = obj.common.members;
                                         		 mapEnumId.set(enu,members);
                                         	 }
                                         	 else
                                         		 members = mapEnumId.get(enu);    
                                         	 if(!members.includes(id)){
                                         		  log("Adding " + id + " to " + enu);
                                         		  members.push(id);
                                         	 }	      
                                          }
                                          else
                                              log('Can not find Alias ' + id,'error');
                                      }
                                       
                                       function setMembers(members,enu,map){
                                           let obj = getObject(enu);
                                           obj.common.members = members;
                                           setObject(enu,obj);
                                       }
                                       mapEnumId.forEach(setMembers);
                                      }
                                      
                                      /**********************************************************
                                         	END /
                                         	ENDE
                                      **********************************************************/
                                      
                                      //////////////////////////////
                                      //  Fenster
                                      //////////////////////////////
                                      //2 x Fenstersensoren HMIP
                                      //einfache HMIP Fenstersensoren über rpc-Adapter in function fenster_alias
                                      //{0: 'geschlossen', 1: 'geöffnet'}
                                      createAlias('hm-rpc.0.xxx.1.STATE'/*Wohnzimmer Fenster links STATE*/, 'Fenster.Wohnzimmer_Fenster_links', undefined, 'fenster_alias', 'number', undefined, undefined, 'Wohnzimmer links', 'window.value', 'per Script erstellt', 0, 1, '',{0: 'geschlossen', 1: 'geöffnet'})
                                      createAlias('hm-rpc.0.xxx.1.STATE'/*Küche Fenster links STATE*/, 'Fenster.Kueche_Fenster_links', undefined, 'fenster_alias', 'number',undefined, undefined, 'Küche links', 'window.value', 'per Script erstellt', 0, 1, '',{0: 'geschlossen', 1: 'geöffnet'})
                                      
                                      //2 x Fenstersensoren HM
                                      //einfache HM Fenstersensoren über rpc-Adapter in function fenster_alias
                                      //{false: 'geschlossen', true: 'geöffnet'}
                                      createAlias('hm-rpc.0.xxx.1.STATE'/*Wohnzimmer Fenster links STATE*/, 'Fenster.Wohnzimmer_Fenster_links', undefined, 'fenster_alias', 'boolean', undefined, undefined, 'Wohnzimmer links', 'window.value', 'per Script erstellt', undefined, undefined, undefined, {false: 'geschlossen', true: 'geöffnet'})
                                      createAlias('hm-rpc.0.xxx.1.STATE'/*Küche Fenster links STATE*/, 'Fenster.Kueche_Fenster_links', undefined, 'fenster_alias', 'boolean',undefined, undefined, 'Küche links', 'window.value', 'per Script erstellt', undefined, undefined, undefined, {false: 'geschlossen', true: 'geöffnet'})
                                      
                                      
                                      //2 x Fensterdrehgriffe HMIP
                                      //HMIP Fensterdrehgriffe über rpc-Adapter in function fenster_alias
                                      //{0: 'geschlossen', 1: 'gekippt', 2: 'geöffnet'}
                                      createAlias('hm-rpc.0.xxx.1.STATE'/*Keller W-Baum Fenster STATE*/, 'Fenster.Keller_Weihnachtsbaum_Fenster', undefined, 'fenster_alias', 'number',undefined, undefined, 'Keller W Baum', 'window.value', 'per Script erstellt', 0, 2, '',{0: 'geschlossen', 1: 'gekippt', 2: 'geöffnet'})
                                      createAlias('hm-rpc.0.xxx.1.STATE'/*Keller Wohnzimmer Fenster mitte STATE*/, 'Fenster.Keller_Wohnzimmer_Fenster_mitte', undefined, 'fenster_alias', 'number',undefined, undefined, 'Keller Wohnzimmer mitte', 'window.value', 'per Script erstellt', 0, 2, '',{0: 'geschlossen', 1: 'gekippt', 2: 'geöffnet'})
                                      
                                      //2 x Fenster(Türen) Sensoren HMIP
                                      //einfache HMIP Fenstersensoren über rpc-Adapter in function tueren_alias
                                      //{0: 'geschlossen', 1: 'geöffnet'}
                                      createAlias('hm-rpc.0.xxx.1.STATE'/*Wohnzimmer Terrassentür STATE*/, 'Tueren.Terrassentuer', undefined, 'tueren_alias', 'number',undefined, undefined, 'Terrassentür', 'window.value', 'per Script erstellt', 0, 1, '',{0: 'geschlossen', 1: 'geöffnet'})
                                      createAlias('hm-rpc.0.xxx.1.STATE'/*Haustür STATE*/, 'Tueren.Haustuer', undefined, 'tueren_alias', 'number',undefined, undefined, 'Haustür', 'window.value', 'per Script erstellt', 0, 1, '',{0: 'geschlossen', 1: 'geöffnet'})
                                      
                                      //////////////////////////////
                                      //  Steckdosen
                                      //////////////////////////////
                                      //2 x Steckdosen
                                      //HMIP Steckdosen über rpc-Adapter in function steckdosen_alias
                                      //{false: 'aus', true: 'an'}
                                      createAlias('hm-rpc.0.xxx.3.STATE'/*Waschmaschine STATE*/, 'Steckdosen.Waschmaschine', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Waschmaschine', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                                      createAlias('hm-rpc.0.xxx.3.STATE'/*Geschirrspueler STATE*/, 'Steckdosen.Geschirrspueler', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Geschirrspüler', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                                      
                                      //////////////////////////////
                                      //  Bewegungsmelder
                                      //////////////////////////////
                                      //2 x Bewegungsmelder und 2 x Präsenzmelder und 1 x Erschütterungssensor
                                      //HMIP Bewegungsmelder und Präsenzmelder über rpc-Adapter in function bewegungsmelder_alias
                                      //{false: 'inaktiv', true: 'aktiv'}
                                      createAlias('hm-rpc.0.xxx.1.MOTION'/*Bewegungsmelder Weihnachtsbaumkeller MOTION*/, 'Bewegungsmelder.Bewegungsmelder_Weihnachtsbaumkeller', undefined, 'bewegungsmelder_alias', 'boolean', undefined, undefined, 'W Baum Keller', 'sensor.motion', 'per Script erstellt', undefined, undefined, undefined, {false: 'inaktiv', true: 'aktiv'})
                                      createAlias('hm-rpc.0.xxx.1.MOTION'/*Bewegungsmelder Heizungskeller MOTION*/, 'Bewegungsmelder.Bewegungsmelder_Heizungskeller', undefined, 'bewegungsmelder_alias', 'boolean', undefined, undefined, 'Heizungskeller', 'sensor.motion', 'per Script erstellt', undefined, undefined, undefined, {false: 'inaktiv', true: 'aktiv'})
                                      //ab hier 2 x Präsenzmelder
                                      createAlias('hm-rpc.0.xxx.1.PRESENCE_DETECTION_STATE'/*Präsenzmelder Badezimmer PRESENCE DETECTION STATE*/, 'Bewegungsmelder.Praesenzmelder_Badezimmer', undefined, 'bewegungsmelder_alias', 'boolean', undefined, undefined, 'Badezimmer', 'sensor.motion', 'per Script erstellt', undefined, undefined, undefined, {false: 'inaktiv', true: 'aktiv'})
                                      createAlias('hm-rpc.0.xxx.1.PRESENCE_DETECTION_STATE'/*Präsenzmelder Dusche PRESENCE DETECTION STATE*/, 'Bewegungsmelder.Praesenzmelder_Dusche', undefined, 'bewegungsmelder_alias', 'boolean', undefined, undefined, 'Dusche', 'sensor.motion', 'per Script erstellt', undefined, undefined, undefined, {false: 'inaktiv', true: 'aktiv'})
                                      //ab hier 1 x Erschütterungssensor
                                      createAlias('hm-rpc.0.xxx.1.MOTION'/*Briefkasten MOTION*/, 'Bewegungsmelder.Praesenzmelder_Briefkasten', undefined, 'bewegungsmelder_alias', 'boolean', undefined, undefined, 'Briefkasten', 'sensor.motion', 'per Script erstellt', undefined, undefined, undefined, {false: 'inaktiv', true: 'aktiv'})
                                      
                                      //////////////////////////////
                                      //  Licht
                                      //////////////////////////////
                                      //2 x HUE und 5 x HMIP Licht über HUE und rpc-Adapter in function licht_alias
                                      //{false: 'aus', true: 'an'}
                                      createAlias('hue.0.Badezimmerlampe_links.on'/*Badezimmerlampe links on*/, 'Licht.Badezimmer_Licht_links', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Badezimmer links', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                                      createAlias('hue.0.Badezimmerlampe_rechts.on'/*Badezimmerlampe rechts on*/, 'Licht.Badezimmer_Licht_rechts', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Badezimmer rechts', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                                      
                                      //ab hier 2 x Licht HMIP Steckdosen über rpc Adapter
                                      createAlias('hm-rpc.0.xxx.3.STATE'/*Kugellampe STATE*/, 'Licht.Wohnzimmer_Kugel_Licht', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Kugellicht', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                                      createAlias('hm-rpc.0.xxx.3.STATE'/*Gäste WC Licht STATE*/, 'Licht.Gaeste_WC_Licht', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Gäste WC Licht', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                                      
                                      //////////////////////////////
                                      //  Temperaturen
                                      //////////////////////////////
                                      //HMIP 2 x Temperaturen über rpc-Adapter in function temperaturen_alias
                                      createAlias('hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE'/*Wandthermostat Schlafzimmer:1 ACTUAL TEMPERATURE*/, 'Temperaturen.Temperatur_Schlafzimmer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Schlafzimmer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                                      createAlias('hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE'/*Wandthermostat Wohnzimmer:1 ACTUAL TEMPERATURE*/, 'Temperaturen.Temperatur_Wohnzimmer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Wohnzimmer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                                      
                                      //////////////////////////////
                                      //  Batterien_voll_leer
                                      //////////////////////////////
                                      //2 x Batterien voll-leer über boolean Wert false/true in function batterien_voll_leer_alias
                                      createAlias('hm-rpc.0.xxx.0.LOW_BAT'/*Wohnzimmer Fenster links:0 LOW BAT*/, 'Batterien_voll_leer.Wohnzimmer_Fenster_links', undefined, 'batterien_voll_leer_alias', 'boolean', undefined, undefined, 'Wohnzimmer Fenster links', 'indicator.lowbat', 'per Script erstellt', undefined, undefined, undefined, {false: 'voll', true: 'leer'})
                                      createAlias('hm-rpc.0.xxx.0.LOW_BAT'/*Küche Fenster links:0 LOW BAT*/, 'Batterien_voll_leer.Kueche_Fenster_links', undefined, 'batterien_voll_leer_alias', 'boolean', undefined, undefined, 'Küche Fenster links', 'indicator.lowbat', 'per Script erstellt', undefined, undefined, undefined, {false: 'voll', true: 'leer'})
                                      
                                      //////////////////////////////
                                      //  Batterien_Volt
                                      //////////////////////////////
                                      //2 x Batterien Volt Anzeige in function batterien_volt_alias
                                      createAlias('hm-rpc.0.xxx.0.OPERATING_VOLTAGE'/*Wohnzimmer Fenster links:0 OPERATING VOLTAGE*/, 'Batterien_Volt.Wohnzimmer_Fenster_links', undefined, 'batterien_volt_alias', 'number', undefined, undefined, 'Wohnzimmer Fenster links', 'value.voltage', 'per Script erstellt', undefined, undefined, 'Volt', undefined)
                                      createAlias('hm-rpc.0.xxx.0.OPERATING_VOLTAGE'/*Küche Fenster links:0 OPERATING VOLTAGE*/, 'Batterien_Volt.Kueche_Fenster_links', undefined, 'batterien_volt_alias', 'number', undefined, undefined, 'Küche Fenster links', 'value.voltage', 'per Script erstellt', undefined, undefined, 'Volt', undefined)
                                      
                                      


                                      nach dem Alias erstellen das hier beachten: Klick


                                      bitte das Blockly auf den eigenen Rechner downloaden und dort mit einem Editor öffnen und den gesamten Inhalt der Textdatei in die Zwischenablage kopieren und anschließend in ein neues leeres Blockly importieren. Nicht direkt im Browser öffnen und kopieren, dann kommt es oft zu Umlaute Fehlern im Blockly.

                                      Hier ist der Blockly Export


                                      Temperaturen_1-6-7.zip


                                      Batterien_Volt_1-6-7.zip


                                      Steckdosen_1-6-7.zip


                                      Lichter_1-6-7.zip


                                      Bewegungsmelder_1-6-7.zip


                                      Batterien_voll_leer_1-6-7.zip


                                      Fenster_1-6-7.zip


                                      Tueren_1-6-7.zip


                                      Batterien_Prozent_1-6-7.zip

                                      meine iQontrol Einstellungen


                                      Bildschirmfoto 2020-12-03 um 08.00.37.png

                                      Bildschirmfoto 2020-12-03 um 08.00.50.png

                                      Bildschirmfoto 2020-12-03 um 08.02.31.png

                                      Bildschirmfoto 2020-12-03 um 08.03.03.png

                                      Bildschirmfoto 2020-12-03 um 08.03.44.png

                                      Bildschirmfoto 2020-12-03 um 08.04.20.png

                                      Bildschirmfoto 2020-12-03 um 08.05.09.png

                                      Bildschirmfoto 2020-12-03 um 08.06.48.png

                                      Bildschirmfoto 2020-12-03 um 08.07.24.png

                                      Bildschirmfoto 2020-12-03 um 08.08.20.png

                                      Bildschirmfoto 2020-12-03 um 08.09.00.png


                                      Hier der Export von diesem View
                                      2020-12-20_iqontrol_0_selected_views.json.zip

                                      20201220_092104.jpg




                                      Zuerst muß das neue SmartGerät aus iot gesucht und gefunden werden. Dazu ist es wichtig einmal den iot Adapter zu öffnen und in den Reiter "SMART-GERÄTE" zu wechseln. Das neue Gerät sollte da sein, aber wenn man diesen Schritt nicht macht, dann werden von Alexa keine neuen Geräte gefunden. Danach kann der Adapter wieder geschlossen werden.
                                      Bildschirmfoto 2020-04-26 um 15.34.49.png
                                      Nun entweder in der App neue Geräte suchen lassen, oder kurz den Sprachbefehl: "Alexa, suche neue Geräte" ausführen. Wenn das durchgelaufen ist und ein neues oder mehrere neue Geräte gefunden wurden, dann geht es mit dem Einrichten der Routine weiter.

                                      neue Geräte suchen lassen in der Alexa App

                                      2020-06-30 15.03.38.jpg

                                      ein neues Gerät (oder mehrere) wurde gefunden

                                      2020-06-30 15.04.00.jpg
                                      alles überspringen und dann zu den Routinen. Dort dann auf das Plus (oben rechts) drücken und eine neue Routine anlegen. Satz bzw. Frage eingeben bei Stimme

                                      2020-06-30 15.04.36.jpg

                                      Dann als nächstes die Aktion hinzufügen (SmartHome), alle Geräte auswählen und das passende Gerät einfügen.

                                      2020-06-30 15.04.55.jpg

                                      Oben rechts auf speichern, dann kurz warten und ausprobieren...

                                      sigi234S Online
                                      sigi234S Online
                                      sigi234
                                      Forum Testing Most Active
                                      schrieb am zuletzt editiert von
                                      #485

                                      @dslraser

                                      Hallo, wird Linkeddevices nicht unterstützt?

                                      Gerät unbekannt:

                                      Bad an, Funkschalter Vorraum 1 an, Schlafzimmer an, Büro aus, Geraet unbekannt aus, Hue Spot 1 aus, Hue Spot 2 aus, Hue lightstrip Küche aus
                                      

                                      Beispiel beim Licht Skript:

                                      Screenshot (2532)_LI.jpg

                                      Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                      Immer Daten sichern!

                                      K 1 Antwort Letzte Antwort
                                      0
                                      • sigi234S sigi234

                                        @dslraser

                                        Hallo, wird Linkeddevices nicht unterstützt?

                                        Gerät unbekannt:

                                        Bad an, Funkschalter Vorraum 1 an, Schlafzimmer an, Büro aus, Geraet unbekannt aus, Hue Spot 1 aus, Hue Spot 2 aus, Hue lightstrip Küche aus
                                        

                                        Beispiel beim Licht Skript:

                                        Screenshot (2532)_LI.jpg

                                        K Offline
                                        K Offline
                                        Kueppert
                                        schrieb am zuletzt editiert von
                                        #486

                                        @sigi234 zeig mal den RAW Datenpunkt :)

                                        UDM Pro, Intel NUC - ioBroker in Proxmox-VM, PiHole+Grafana&Influx+TasmoAdmin in LXCs, Raspberry Pi3 (als CCU), Zigbee-Stick Sonoff, Synology DS918+

                                        sigi234S 1 Antwort Letzte Antwort
                                        0
                                        • K Kueppert

                                          @sigi234 zeig mal den RAW Datenpunkt :)

                                          sigi234S Online
                                          sigi234S Online
                                          sigi234
                                          Forum Testing Most Active
                                          schrieb am zuletzt editiert von
                                          #487

                                          @Kueppert sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:

                                          @sigi234 zeig mal den RAW Datenpunkt :)

                                          {
                                            "from": "system.adapter.linkeddevices.0",
                                            "user": "system.user.admin",
                                            "ts": 1590156753378,
                                            "common": {
                                              "name": "Led Wohnzimmer",
                                              "type": "boolean",
                                              "role": "state",
                                              "desc": "Created by linkeddevices",
                                              "min": false,
                                              "max": true,
                                              "smartName": {
                                                "de": "Wohnzimmer Led",
                                                "smartType": "LIGHT"
                                              },
                                              "custom": {
                                                "linkeddevices.0": {
                                                  "enabled": true,
                                                  "parentId": "wifilight.0.192_168_178_28.on",
                                                  "parentType": "boolean",
                                                  "isLinked": true,
                                                  "mergeSettingsOnRestart": true
                                                }
                                              },
                                              "icon": "linkeddevices_small.png"
                                            },
                                            "native": {},
                                            "acl": {
                                              "object": 1636,
                                              "owner": "system.user.admin",
                                              "ownerGroup": "system.group.administrator",
                                              "state": 1636
                                            },
                                            "_id": "linkeddevices.0.Led Wohnzimmer.on",
                                            "type": "state"
                                          }
                                          

                                          Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                          Immer Daten sichern!

                                          K 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          861

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe