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.9k

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

Geplant Angeheftet Gesperrt Verschoben Blockly
blocklyjavascript
1.2k Beiträge 41 Kommentatoren 414.4k 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

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

    Wie bekommst du denn die Schrift in eine kleine Kachel? Wenn ich die schmal und breit mache, verschwindet der Text.

    https://forum.iobroker.net/post/517951

    Ansonsten erstellt die Version 1.0 diese custom Daten für iQontrol aber auch schon selbst.
    (vorher alle Datenpunkte löschen, wenn Deine Datenpunkte mit einer älteren Version des Blockly erstellt wurden, dann mit dem Blockly 1.0 neu erstellen lassen)

    F Offline
    F Offline
    FuXXz2
    schrieb am zuletzt editiert von FuXXz2
    #948

    @dslraser
    Danke.

    iQontrol macht es hier einen echt nicht leicht. Ich versuche nun seit Stunden einfach eine Kachel zu haben, die den Status anzeigt.
    Diese soll immer so groß sein, wie deine Tabelle auch ist.
    In Jarvis, 1 Klick. In iQontrol ist das glaube ich gar nicht möglich oder? Zumindest sieht das alles kacke aus :)
    Screenshot 2020-11-11 192735.jpg

    dslraserD 2 Antworten Letzte Antwort
    0
    • F FuXXz2

      @dslraser
      Danke.

      iQontrol macht es hier einen echt nicht leicht. Ich versuche nun seit Stunden einfach eine Kachel zu haben, die den Status anzeigt.
      Diese soll immer so groß sein, wie deine Tabelle auch ist.
      In Jarvis, 1 Klick. In iQontrol ist das glaube ich gar nicht möglich oder? Zumindest sieht das alles kacke aus :)
      Screenshot 2020-11-11 192735.jpg

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

      @FuXXz2
      ich habe es so:
      Beispiel

      Screenshot_20201111-195617_Chrome.jpg

      F 1 Antwort Letzte Antwort
      0
      • F FuXXz2

        @dslraser
        Danke.

        iQontrol macht es hier einen echt nicht leicht. Ich versuche nun seit Stunden einfach eine Kachel zu haben, die den Status anzeigt.
        Diese soll immer so groß sein, wie deine Tabelle auch ist.
        In Jarvis, 1 Klick. In iQontrol ist das glaube ich gar nicht möglich oder? Zumindest sieht das alles kacke aus :)
        Screenshot 2020-11-11 192735.jpg

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

        @FuXXz2
        ich baue gerade eine Version so um, das nur die aktiven Geräte im HTML angezeigt werden. (Vielleicht mache ich dann auch noch die "Smiley" selbst auswählbar bzw. zum rein schreiben in den Datenpunkt. Ich muß nur irgendwie Zeit dafür finden)

        1 Antwort Letzte Antwort
        0
        • dslraserD dslraser

          @FuXXz2
          ich habe es so:
          Beispiel

          Screenshot_20201111-195617_Chrome.jpg

          F Offline
          F Offline
          FuXXz2
          schrieb am zuletzt editiert von FuXXz2
          #951

          @dslraser
          das ist eine vergrößerte, also aufgeklappte Kachel oder?
          Hast du den Datenpunkt im Feld State, URL, HTML, Background_URL oder Background_HTML eingefügt.
          Total das durcheinander, mit den HTML Features

          Trotzdem fehlen bei iQontrol dynamische Kacheln. :(

          Ne Version mit nur aktiven Geräten wäre cool, stimmt. Gerade bei Lichtern ist die Liste enorm lang.
          Du meinst die Icons richtig? Ja Material Arts Icons sind mittlerweile ne wirklich solide Basis, finde ich.

          dslraserD 1 Antwort Letzte Antwort
          0
          • F FuXXz2

            @dslraser
            das ist eine vergrößerte, also aufgeklappte Kachel oder?
            Hast du den Datenpunkt im Feld State, URL, HTML, Background_URL oder Background_HTML eingefügt.
            Total das durcheinander, mit den HTML Features

            Trotzdem fehlen bei iQontrol dynamische Kacheln. :(

            Ne Version mit nur aktiven Geräten wäre cool, stimmt. Gerade bei Lichtern ist die Liste enorm lang.
            Du meinst die Icons richtig? Ja Material Arts Icons sind mittlerweile ne wirklich solide Basis, finde ich.

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

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

            Background_HTML

            das ist bei mir eine 0,5 × 0,5 Kachel. Mit Klick darauf öffnet sich ein "Textfeld" mit dem HTML Inhalt.

            Screenshot_20201111-215434_Chrome.jpg

            Die andere Ansicht ist die vergrößerte auf Vollbild (oben rechts in der Ecke geklickt)

            Screenshot_20201111-215602_Chrome.jpg

            Eingerichtet über Wert

            Screenshot_20201111-215833_Chrome.jpg

            Screenshot_20201111-215901_Chrome.jpg

            Screenshot_20201111-215919_Chrome.jpg

            Screenshot_20201111-215946_Chrome.jpg

            Screenshot_20201111-220004_Chrome.jpg

            F 1 Antwort Letzte Antwort
            1
            • dslraserD dslraser

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

              Background_HTML

              das ist bei mir eine 0,5 × 0,5 Kachel. Mit Klick darauf öffnet sich ein "Textfeld" mit dem HTML Inhalt.

              Screenshot_20201111-215434_Chrome.jpg

              Die andere Ansicht ist die vergrößerte auf Vollbild (oben rechts in der Ecke geklickt)

              Screenshot_20201111-215602_Chrome.jpg

              Eingerichtet über Wert

              Screenshot_20201111-215833_Chrome.jpg

              Screenshot_20201111-215901_Chrome.jpg

              Screenshot_20201111-215919_Chrome.jpg

              Screenshot_20201111-215946_Chrome.jpg

              Screenshot_20201111-220004_Chrome.jpg

              F Offline
              F Offline
              FuXXz2
              schrieb am zuletzt editiert von FuXXz2
              #953

              @dslraser Ok, vielen Dank. Ich versuche mal mein Glück

              So hab es zusammen gemogelt. Die Tabellenhöhe stört nur noch ein wenig, sobald wenige Geräte gelistet sind. Dann zieht er die Zellen so groß
              Screenshot 2020-11-11 225113.jpg

              dslraserD 1 Antwort Letzte Antwort
              0
              • F FuXXz2

                @dslraser Ok, vielen Dank. Ich versuche mal mein Glück

                So hab es zusammen gemogelt. Die Tabellenhöhe stört nur noch ein wenig, sobald wenige Geräte gelistet sind. Dann zieht er die Zellen so groß
                Screenshot 2020-11-11 225113.jpg

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

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

                Die Tabellenhöhe stört nur noch ein wenig, sobald wenige Geräte gelistet sind. Dann zieht er die Zellen so groß

                Spiel mal mit den Zellenabständen in den Datenpunkten. Versuche mal kleinere Werte.

                F 1 Antwort Letzte Antwort
                0
                • dslraserD dslraser

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

                  Die Tabellenhöhe stört nur noch ein wenig, sobald wenige Geräte gelistet sind. Dann zieht er die Zellen so groß

                  Spiel mal mit den Zellenabständen in den Datenpunkten. Versuche mal kleinere Werte.

                  F Offline
                  F Offline
                  FuXXz2
                  schrieb am zuletzt editiert von
                  #955

                  @dslraser die Zellenabstände stehen auf 0
                  Der Grund für das Strecken ist Table height 400px
                  hier der Datenpunkt 0_userdata.0.Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Tueren_zaehlen.Haus.07_html_Tueren_Liste

                  <!DOCTYPE html><html lang="de"><head><title>Tueren</title><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body><table border="2em"  bordercolor="#3776CB" cellspacing="0em" cellpadding="0em" font-size:="2em" style="color:black ; font-family:apple ; background:rgba(255,255,255,0);" width="100%" height="400"><tbody><tr style="color:black; font-family:apple; font-weight: bold; font-size:1.2em"><td>Tueren Haus&ensp;&ensp;&ensp;</td><td>Status</td></tr><tr><td><span style="color:black;font-size:1.1em">Esszimmer Terrasse</span><td><span style="color:black;font-size:1.1em">geschlossen </span>✅<tr><td><span style="color:black;font-size:1.1em">Keller Tür</span><td><span style="color:black;font-size:1.1em">geschlossen </span>✅</table></body>
                  

                  Aber dafür gibt es keine Einstellung oder?

                  dslraserD 2 Antworten Letzte Antwort
                  0
                  • F FuXXz2

                    @dslraser die Zellenabstände stehen auf 0
                    Der Grund für das Strecken ist Table height 400px
                    hier der Datenpunkt 0_userdata.0.Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Tueren_zaehlen.Haus.07_html_Tueren_Liste

                    <!DOCTYPE html><html lang="de"><head><title>Tueren</title><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body><table border="2em"  bordercolor="#3776CB" cellspacing="0em" cellpadding="0em" font-size:="2em" style="color:black ; font-family:apple ; background:rgba(255,255,255,0);" width="100%" height="400"><tbody><tr style="color:black; font-family:apple; font-weight: bold; font-size:1.2em"><td>Tueren Haus&ensp;&ensp;&ensp;</td><td>Status</td></tr><tr><td><span style="color:black;font-size:1.1em">Esszimmer Terrasse</span><td><span style="color:black;font-size:1.1em">geschlossen </span>✅<tr><td><span style="color:black;font-size:1.1em">Keller Tür</span><td><span style="color:black;font-size:1.1em">geschlossen </span>✅</table></body>
                    

                    Aber dafür gibt es keine Einstellung oder?

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

                    @FuXXz2
                    in der nächsten Version gibt es den Datenpunkt auch. (ich bin die letzten Tage schon dabei die ganze Ausgabe responsiv zu gestalten, mal sehen wann das fertig wird. Jetzt am WE komme ich jedenfalls zu nix)
                    Du kannst diese Einstellung im Blockly auch selbst verändern, dazu mußt Du die eine Funktion öffen, ich versuche gleich einen Screenshot zu machen. Ich bin aber nur am Handy.

                    1 Antwort Letzte Antwort
                    0
                    • F FuXXz2

                      @dslraser die Zellenabstände stehen auf 0
                      Der Grund für das Strecken ist Table height 400px
                      hier der Datenpunkt 0_userdata.0.Geraete_zaehlen_optional_Ansagen.Geraete_zaehlen.Tueren_zaehlen.Haus.07_html_Tueren_Liste

                      <!DOCTYPE html><html lang="de"><head><title>Tueren</title><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body><table border="2em"  bordercolor="#3776CB" cellspacing="0em" cellpadding="0em" font-size:="2em" style="color:black ; font-family:apple ; background:rgba(255,255,255,0);" width="100%" height="400"><tbody><tr style="color:black; font-family:apple; font-weight: bold; font-size:1.2em"><td>Tueren Haus&ensp;&ensp;&ensp;</td><td>Status</td></tr><tr><td><span style="color:black;font-size:1.1em">Esszimmer Terrasse</span><td><span style="color:black;font-size:1.1em">geschlossen </span>✅<tr><td><span style="color:black;font-size:1.1em">Keller Tür</span><td><span style="color:black;font-size:1.1em">geschlossen </span>✅</table></body>
                      

                      Aber dafür gibt es keine Einstellung oder?

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

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

                      Aber dafür gibt es keine Einstellung oder?

                      hier findest Du das (jeweils die Funktion unten rechts)

                      Screenshot_20201114-141801_Chrome.jpg

                      Hier wird das html zusammengebaut

                      Screenshot_20201114-142029_Chrome.jpg

                      F 1 Antwort Letzte Antwort
                      1
                      • dslraserD dslraser

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

                        Aber dafür gibt es keine Einstellung oder?

                        hier findest Du das (jeweils die Funktion unten rechts)

                        Screenshot_20201114-141801_Chrome.jpg

                        Hier wird das html zusammengebaut

                        Screenshot_20201114-142029_Chrome.jpg

                        F Offline
                        F Offline
                        FuXXz2
                        schrieb am zuletzt editiert von
                        #958

                        @dslraser Ok hab es.
                        Für die Lichter habe ich testweise mal eine Variabel eingefügt, klappt alles.
                        Aber wenn du eh dabei bist, das zu integrieren, belasse ich es vorerst dabei den Wert 400 manuell zu löschen.

                        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...

                          S Offline
                          S Offline
                          sandro_gera
                          schrieb am zuletzt editiert von sandro_gera
                          #959

                          @dslraser

                          Hallo ich habe gerade nach dem folgenden Alias Skript meine Aliasse erstellen wollen.

                          /**************************************************************
                          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('deconz.0.Sensors.7.open'/*Fensterkontakt-Küche open*/, 'Fenster.Fensterkontakt_Kueche', undefined, 'fenster_alias', 'boolean', undefined, undefined, 'Fensterkontakt-Küche', '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('deconz.0.Lights.14.on'/*Steckdosenleiste-Abstellkammer on*/, 'Steckdosen.Abstellkammer.Steckdosenleiste_Abstellkammer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Steckdosenleiste-Abstellkammer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.15.on'/*Computer-1-Arbeitszimmer on*/, 'Steckdosen.Arbeitszimmer.Computer_1_Arbeitszimmer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Computer-1-Arbeitszimmer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.33.on'/*Computer-2-Arbeitszimmer on*/, 'Steckdosen.Arbeitszimmer.Computer_2_Arbeitszimmer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Computer_2_Arbeitszimmer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.31.on'/*Dunstabzugshaube-Küche on*/, 'Steckdosen.Kueche.Dunstabzugshaube_Kueche', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Dunstabzugshaube-Küche', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.13.on'/*Kaffeemaschine-Küche on*/, 'Steckdosen.Kueche.Kaffeemaschine_Kueche', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Kaffeemaschine-Küche', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.12.on'/*Fernseher-Küche on*/, 'Steckdosen.Kueche.Fernseher-Kueche', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Fernseher-Küche', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.7.on'/*Fernseher-Esszimmer on*/, 'Steckdosen.Esszimmer.Fernseher_Esszimmer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Fernseher-Esszimmer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.10.on'/*Media-Wohnzimmer on*/, 'Steckdosen.Wohnzimmer.Media_Wohnzimmer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Media-Wohnzimmer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.8.on'/*Netzteil-Laptop on*/, 'Steckdosen.Wohnzimmer.Netzteil_Laptop', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Netzteil-Laptop', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.11.on'/*Fernseher-Schlafzimmer on*/, 'Steckdosen.Schlafzimmer.Fernseher_Schlafzimmer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Fernseher-Schlafzimmer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.30.on'/*Pumpe-Schuppen on*/, 'Steckdosen.Schuppen.Pumpe_Schuppen', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Pumpe-Schuppen', '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('deconz.0.Lights.29.on'/*Deckenlampe-Arbeitszimmer on*/, 'Licht.Arbeitszimmer.Deckenlampe_Arbeitszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-Arbeitszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.28.on'/*Wandlampe-Arbeitszimmer on*/, 'Licht.Arbeitszimmer.Wandlampe_Arbeitszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Wandlampe-Arbeitszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.27.on'/*Deckenlampe-Badezimmer on*/, 'Licht.Badezimmer.Deckenlampe_Badezimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-Badezimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.17.on'/*Deckenlampe-Flur on*/, 'Licht.Flur.Deckenlampe_Flur', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-Flur', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.6.on'/*Lampe-Verteilung on*/, 'Licht.Flur.Lampe_Verteilung', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Lampe-Verteilung', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('sonoff.0.Shelly-Serienschalter-Bad.POWER1'/*Shelly-Serienschalter-Bad POWER1*/, 'Licht.Bad.Spot_Bad', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Spot-Bad', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('sonoff.0.Shelly-Serienschalter-Bad.POWER2'/*Shelly-Serienschalter-Bad POWER2*/, 'Licht.Bad.Sternenhimmel_Bad', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Sternenhimmel-Bad', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.20.on'/*Schrank-1-Bad on*/, 'Licht.Bad.Schrank_1_Bad', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Schrank-1-Bad', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.19.on'/*Schrank-2-Bad on*/, 'Licht.Bad.Schrank_2_Bad', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Schrank-2-Bad', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('sonoff.0.Sonoff-Serienschalter-Küche.POWER1'/*Sonoff-Serienschalter-Küche POWER1*/, 'Licht.Kueche.Deckenlampe_Kueche', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-Küche', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('sonoff.0.Sonoff-Serienschalter-Küche.POWER2'/*Sonoff-Serienschalter-Küche POWER2*/, 'Licht.Kueche.Lampe_1_Kueche', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Lampe-1-Küche', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.21.on'/*Spüle-Küche on*/, 'Licht.Kueche.Spuele_Kueche', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Spüle-Küche', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.22.on'/*Sitzecke-Küche on*/, 'Licht.Kueche.Sitzecke_Küche', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Sitzecke-Küche', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('sonoff.0.Sonoff-Serienschalter-Esszimmer.POWER1'/*Sonoff-Serienschalter-Esszimmer POWER1*/, 'Licht.Esszimmer.Deckenlampe_1_Esszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-1-Esszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('sonoff.0.Sonoff-Serienschalter-Esszimmer.POWER2'/*Sonoff-Serienschalter-Esszimmer POWER2*/, 'Licht.Esszimmer.Deckenlampe_2_Esszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-2-Esszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.23.on'/*Schrank-1-Esszimmer on*/, 'Licht.Esszimmer.Schrank_1_Esszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Schrank-1-Esszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.2.on'/*Schrank-2-Esszimmer on*/, 'Licht.Esszimmer.Schrank_2_Esszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Schrank-2-Esszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.24.on'/*Deckenlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Deckenlampe_Wohnzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-Wohnzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.3.on'/*Wandlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Wandlampe_Wohnzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Wandlampe-Wohnzimmer, 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.9.on'/*Deckenfluter-Wohnzimmer on*/, 'Licht.Wohnzimmer.Deckenfluter_Wohnzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenfluter-Wohnzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.1.on'/*Tischlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Tischlampe_Wohnzimmer, undefined, 'licht_alias', 'boolean', undefined, undefined, 'Tischlampe-Wohnzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.5.on'/*Deckenlampe-1-Schlafzimmer on*/, 'Licht.Schlafzimmer.Deckenlampe_1_Schlafzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-1-Schlafzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.26.on'/*Deckenlampe-2-Schlafzimmer on*/, 'Licht.Schlafzimmer.Deckenlampe_2_Schlafzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-2-Schlafzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.25.on'/*Deckenlampe-3-Schlafzimmer on*/, 'Licht.Schlafzimmer.Deckenlampe_3_Schlafzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-3-Schlafzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('sonoff.0.Lampe-Kellertreppe.POWER'/*Lampe-Kellertreppe POWER*/, 'Licht.Keller.Lampe_Kellertreppe', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Lampe-Kellertreppe', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                          createAlias('deconz.0.Lights.18.on'/*Lampen-Schuppen on*/, 'Licht.Schuppen.Lampen-Schuppen', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Lampen-Schuppen', '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('hmip.0.devices.3014F711A0000A1A49A53E9E.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Abstellkammer.Temperatur_Abstellkammer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Abstellkammer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                          createAlias('hmip.0.devices.3014F711A0000A1A49A533E3.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Arbeitszimmer.Temperatur_Arbeitszimmer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Arbeitszimmer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                          createAlias('hmip.0.devices.3014F711A0000A1A49A533DC.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Badezimmer.Temperatur_Badezimmer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Badezimmer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                          createAlias('hmip.0.devices.3014F711A0000A1A49A53F7A.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Bad.Temperatur_Bad', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Bad', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                          createAlias('hmip.0.devices.3014F711A0000A1A49A536FD.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Kueche.Temperatur_Kueche', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Küche', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                          createAlias('hmip.0.devices.3014F711A0000A1A49A534C1.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Esszimmer.Temperatur_Esszimmer_1', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Esszimmer-1', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                          createAlias('hmip.0.devices.3014F711A0000A1A49A545DA.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Esszimmer.Temperatur_Esszimmer_2', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Esszimmer-2', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                          createAlias('hmip.0.devices.3014F711A0000A1A49A53500.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Wohnzimmer.Temperatur_Wohnzimmer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Wohnzimmer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                          createAlias('hmip.0.devices.3014F711A0000A1A49A54635.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Schlafzimmer.Temperatur_Schlafzimmer_1', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Schlafzimmer-1', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                          createAlias('hmip.0.devices.3014F711A0000A1A49A533DB.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Schlafzimmer.Temperatur_Schlafzimmer_2', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Schlafzimmer-2', '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('deconz.0.Sensors.7.battery'/*Fensterkontakt-Küche battery*/, 'Batterien_voll_leer.Fensterkontakt_Kueche', undefined, 'batterien_voll_leer_alias', 'boolean', undefined, undefined, 'Fensterkontakt-Küche', 'indicator.lowbat', 'per Script erstellt', undefined, undefined, undefined, {false: 'voll', true: 'leer'})
                          createAlias('deconz.0.Sensors.3.battery'/*Bewegungsmelder battery*/, 'Batterien_voll_leer.Bewegungsmelder_Flur', undefined, 'batterien_voll_leer_alias', 'boolean', undefined, undefined, 'Bewegungsmelder-Flur', '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)
                          

                          Dabei bekomme ich im Log folgende Fehlermeldung:

                          javascript.0	2020-11-18 18:22:12.265	error	(2706) at processTicksAndRejections (internal/process/task_queues.js:97:5)
                          javascript.0	2020-11-18 18:22:12.265	error	(2706) at runMicrotasks (<anonymous>)
                          javascript.0	2020-11-18 18:22:12.264	error	(2706) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49
                          javascript.0	2020-11-18 18:22:12.264	error	(2706) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
                          javascript.0	2020-11-18 18:22:12.263	error	(2706) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17
                          javascript.0	2020-11-18 18:22:12.263	error	(2706) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1140:17
                          javascript.0	2020-11-18 18:22:12.263	error	(2706) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1559:17
                          javascript.0	2020-11-18 18:22:12.262	error	(2706) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1503:37)
                          javascript.0	2020-11-18 18:22:12.262	error	(2706) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1280:28)
                          javascript.0	2020-11-18 18:22:12.261	error	(2706) at Object.createScript (vm.js:261:10)
                          javascript.0	2020-11-18 18:22:12.261	error	(2706) at new Script (vm.js:88:7)
                          javascript.0	2020-11-18 18:22:12.260	error	(2706) SyntaxError: missing ) after argument list
                          javascript.0	2020-11-18 18:22:12.260	error	(2706) ^^^^^^^^^^^^^^^^^^^^^^^^
                          javascript.0	2020-11-18 18:22:12.259	error	(2706) createAlias('deconz.0.Lights.3.on'/*Wandlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Wandlampe_Wohnzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Wandlampe-Wohnzimmer, 'switch
                          javascript.0	2020-11-18 18:22:12.259	error	(2706) script.js.common.Test.Aliase compile failed: at script.js.common.Test.Aliase:350
                          

                          Ich hoffe mir kann jemand sagen wo meine Fehler liegen.

                          Vielen dank im Voraus

                          Master RPI4 8GB, Slave RPI3 1GB
                          Node.js v18.17.1, npm: 9.6.7,
                          JS-Controller: 5.0.16

                          dslraserD 2 Antworten Letzte Antwort
                          0
                          • S sandro_gera

                            @dslraser

                            Hallo ich habe gerade nach dem folgenden Alias Skript meine Aliasse erstellen wollen.

                            /**************************************************************
                            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('deconz.0.Sensors.7.open'/*Fensterkontakt-Küche open*/, 'Fenster.Fensterkontakt_Kueche', undefined, 'fenster_alias', 'boolean', undefined, undefined, 'Fensterkontakt-Küche', '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('deconz.0.Lights.14.on'/*Steckdosenleiste-Abstellkammer on*/, 'Steckdosen.Abstellkammer.Steckdosenleiste_Abstellkammer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Steckdosenleiste-Abstellkammer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.15.on'/*Computer-1-Arbeitszimmer on*/, 'Steckdosen.Arbeitszimmer.Computer_1_Arbeitszimmer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Computer-1-Arbeitszimmer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.33.on'/*Computer-2-Arbeitszimmer on*/, 'Steckdosen.Arbeitszimmer.Computer_2_Arbeitszimmer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Computer_2_Arbeitszimmer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.31.on'/*Dunstabzugshaube-Küche on*/, 'Steckdosen.Kueche.Dunstabzugshaube_Kueche', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Dunstabzugshaube-Küche', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.13.on'/*Kaffeemaschine-Küche on*/, 'Steckdosen.Kueche.Kaffeemaschine_Kueche', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Kaffeemaschine-Küche', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.12.on'/*Fernseher-Küche on*/, 'Steckdosen.Kueche.Fernseher-Kueche', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Fernseher-Küche', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.7.on'/*Fernseher-Esszimmer on*/, 'Steckdosen.Esszimmer.Fernseher_Esszimmer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Fernseher-Esszimmer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.10.on'/*Media-Wohnzimmer on*/, 'Steckdosen.Wohnzimmer.Media_Wohnzimmer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Media-Wohnzimmer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.8.on'/*Netzteil-Laptop on*/, 'Steckdosen.Wohnzimmer.Netzteil_Laptop', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Netzteil-Laptop', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.11.on'/*Fernseher-Schlafzimmer on*/, 'Steckdosen.Schlafzimmer.Fernseher_Schlafzimmer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Fernseher-Schlafzimmer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.30.on'/*Pumpe-Schuppen on*/, 'Steckdosen.Schuppen.Pumpe_Schuppen', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Pumpe-Schuppen', '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('deconz.0.Lights.29.on'/*Deckenlampe-Arbeitszimmer on*/, 'Licht.Arbeitszimmer.Deckenlampe_Arbeitszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-Arbeitszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.28.on'/*Wandlampe-Arbeitszimmer on*/, 'Licht.Arbeitszimmer.Wandlampe_Arbeitszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Wandlampe-Arbeitszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.27.on'/*Deckenlampe-Badezimmer on*/, 'Licht.Badezimmer.Deckenlampe_Badezimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-Badezimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.17.on'/*Deckenlampe-Flur on*/, 'Licht.Flur.Deckenlampe_Flur', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-Flur', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.6.on'/*Lampe-Verteilung on*/, 'Licht.Flur.Lampe_Verteilung', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Lampe-Verteilung', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('sonoff.0.Shelly-Serienschalter-Bad.POWER1'/*Shelly-Serienschalter-Bad POWER1*/, 'Licht.Bad.Spot_Bad', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Spot-Bad', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('sonoff.0.Shelly-Serienschalter-Bad.POWER2'/*Shelly-Serienschalter-Bad POWER2*/, 'Licht.Bad.Sternenhimmel_Bad', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Sternenhimmel-Bad', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.20.on'/*Schrank-1-Bad on*/, 'Licht.Bad.Schrank_1_Bad', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Schrank-1-Bad', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.19.on'/*Schrank-2-Bad on*/, 'Licht.Bad.Schrank_2_Bad', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Schrank-2-Bad', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('sonoff.0.Sonoff-Serienschalter-Küche.POWER1'/*Sonoff-Serienschalter-Küche POWER1*/, 'Licht.Kueche.Deckenlampe_Kueche', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-Küche', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('sonoff.0.Sonoff-Serienschalter-Küche.POWER2'/*Sonoff-Serienschalter-Küche POWER2*/, 'Licht.Kueche.Lampe_1_Kueche', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Lampe-1-Küche', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.21.on'/*Spüle-Küche on*/, 'Licht.Kueche.Spuele_Kueche', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Spüle-Küche', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.22.on'/*Sitzecke-Küche on*/, 'Licht.Kueche.Sitzecke_Küche', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Sitzecke-Küche', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('sonoff.0.Sonoff-Serienschalter-Esszimmer.POWER1'/*Sonoff-Serienschalter-Esszimmer POWER1*/, 'Licht.Esszimmer.Deckenlampe_1_Esszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-1-Esszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('sonoff.0.Sonoff-Serienschalter-Esszimmer.POWER2'/*Sonoff-Serienschalter-Esszimmer POWER2*/, 'Licht.Esszimmer.Deckenlampe_2_Esszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-2-Esszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.23.on'/*Schrank-1-Esszimmer on*/, 'Licht.Esszimmer.Schrank_1_Esszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Schrank-1-Esszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.2.on'/*Schrank-2-Esszimmer on*/, 'Licht.Esszimmer.Schrank_2_Esszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Schrank-2-Esszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.24.on'/*Deckenlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Deckenlampe_Wohnzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-Wohnzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.3.on'/*Wandlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Wandlampe_Wohnzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Wandlampe-Wohnzimmer, 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.9.on'/*Deckenfluter-Wohnzimmer on*/, 'Licht.Wohnzimmer.Deckenfluter_Wohnzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenfluter-Wohnzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.1.on'/*Tischlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Tischlampe_Wohnzimmer, undefined, 'licht_alias', 'boolean', undefined, undefined, 'Tischlampe-Wohnzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.5.on'/*Deckenlampe-1-Schlafzimmer on*/, 'Licht.Schlafzimmer.Deckenlampe_1_Schlafzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-1-Schlafzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.26.on'/*Deckenlampe-2-Schlafzimmer on*/, 'Licht.Schlafzimmer.Deckenlampe_2_Schlafzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-2-Schlafzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.25.on'/*Deckenlampe-3-Schlafzimmer on*/, 'Licht.Schlafzimmer.Deckenlampe_3_Schlafzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-3-Schlafzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('sonoff.0.Lampe-Kellertreppe.POWER'/*Lampe-Kellertreppe POWER*/, 'Licht.Keller.Lampe_Kellertreppe', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Lampe-Kellertreppe', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                            createAlias('deconz.0.Lights.18.on'/*Lampen-Schuppen on*/, 'Licht.Schuppen.Lampen-Schuppen', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Lampen-Schuppen', '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('hmip.0.devices.3014F711A0000A1A49A53E9E.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Abstellkammer.Temperatur_Abstellkammer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Abstellkammer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                            createAlias('hmip.0.devices.3014F711A0000A1A49A533E3.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Arbeitszimmer.Temperatur_Arbeitszimmer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Arbeitszimmer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                            createAlias('hmip.0.devices.3014F711A0000A1A49A533DC.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Badezimmer.Temperatur_Badezimmer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Badezimmer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                            createAlias('hmip.0.devices.3014F711A0000A1A49A53F7A.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Bad.Temperatur_Bad', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Bad', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                            createAlias('hmip.0.devices.3014F711A0000A1A49A536FD.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Kueche.Temperatur_Kueche', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Küche', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                            createAlias('hmip.0.devices.3014F711A0000A1A49A534C1.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Esszimmer.Temperatur_Esszimmer_1', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Esszimmer-1', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                            createAlias('hmip.0.devices.3014F711A0000A1A49A545DA.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Esszimmer.Temperatur_Esszimmer_2', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Esszimmer-2', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                            createAlias('hmip.0.devices.3014F711A0000A1A49A53500.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Wohnzimmer.Temperatur_Wohnzimmer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Wohnzimmer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                            createAlias('hmip.0.devices.3014F711A0000A1A49A54635.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Schlafzimmer.Temperatur_Schlafzimmer_1', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Schlafzimmer-1', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                            createAlias('hmip.0.devices.3014F711A0000A1A49A533DB.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Schlafzimmer.Temperatur_Schlafzimmer_2', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Schlafzimmer-2', '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('deconz.0.Sensors.7.battery'/*Fensterkontakt-Küche battery*/, 'Batterien_voll_leer.Fensterkontakt_Kueche', undefined, 'batterien_voll_leer_alias', 'boolean', undefined, undefined, 'Fensterkontakt-Küche', 'indicator.lowbat', 'per Script erstellt', undefined, undefined, undefined, {false: 'voll', true: 'leer'})
                            createAlias('deconz.0.Sensors.3.battery'/*Bewegungsmelder battery*/, 'Batterien_voll_leer.Bewegungsmelder_Flur', undefined, 'batterien_voll_leer_alias', 'boolean', undefined, undefined, 'Bewegungsmelder-Flur', '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)
                            

                            Dabei bekomme ich im Log folgende Fehlermeldung:

                            javascript.0	2020-11-18 18:22:12.265	error	(2706) at processTicksAndRejections (internal/process/task_queues.js:97:5)
                            javascript.0	2020-11-18 18:22:12.265	error	(2706) at runMicrotasks (<anonymous>)
                            javascript.0	2020-11-18 18:22:12.264	error	(2706) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49
                            javascript.0	2020-11-18 18:22:12.264	error	(2706) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
                            javascript.0	2020-11-18 18:22:12.263	error	(2706) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17
                            javascript.0	2020-11-18 18:22:12.263	error	(2706) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1140:17
                            javascript.0	2020-11-18 18:22:12.263	error	(2706) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1559:17
                            javascript.0	2020-11-18 18:22:12.262	error	(2706) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1503:37)
                            javascript.0	2020-11-18 18:22:12.262	error	(2706) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1280:28)
                            javascript.0	2020-11-18 18:22:12.261	error	(2706) at Object.createScript (vm.js:261:10)
                            javascript.0	2020-11-18 18:22:12.261	error	(2706) at new Script (vm.js:88:7)
                            javascript.0	2020-11-18 18:22:12.260	error	(2706) SyntaxError: missing ) after argument list
                            javascript.0	2020-11-18 18:22:12.260	error	(2706) ^^^^^^^^^^^^^^^^^^^^^^^^
                            javascript.0	2020-11-18 18:22:12.259	error	(2706) createAlias('deconz.0.Lights.3.on'/*Wandlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Wandlampe_Wohnzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Wandlampe-Wohnzimmer, 'switch
                            javascript.0	2020-11-18 18:22:12.259	error	(2706) script.js.common.Test.Aliase compile failed: at script.js.common.Test.Aliase:350
                            

                            Ich hoffe mir kann jemand sagen wo meine Fehler liegen.

                            Vielen dank im Voraus

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

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

                            Dabei bekomme ich im Log folgende Fehlermeldung:

                            in Zeile 350 fehlt z.B. hinten ein Semikolon bei

                            Wandlampe-Wohnzimmer

                            1 Antwort Letzte Antwort
                            0
                            • S sandro_gera

                              @dslraser

                              Hallo ich habe gerade nach dem folgenden Alias Skript meine Aliasse erstellen wollen.

                              /**************************************************************
                              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('deconz.0.Sensors.7.open'/*Fensterkontakt-Küche open*/, 'Fenster.Fensterkontakt_Kueche', undefined, 'fenster_alias', 'boolean', undefined, undefined, 'Fensterkontakt-Küche', '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('deconz.0.Lights.14.on'/*Steckdosenleiste-Abstellkammer on*/, 'Steckdosen.Abstellkammer.Steckdosenleiste_Abstellkammer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Steckdosenleiste-Abstellkammer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.15.on'/*Computer-1-Arbeitszimmer on*/, 'Steckdosen.Arbeitszimmer.Computer_1_Arbeitszimmer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Computer-1-Arbeitszimmer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.33.on'/*Computer-2-Arbeitszimmer on*/, 'Steckdosen.Arbeitszimmer.Computer_2_Arbeitszimmer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Computer_2_Arbeitszimmer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.31.on'/*Dunstabzugshaube-Küche on*/, 'Steckdosen.Kueche.Dunstabzugshaube_Kueche', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Dunstabzugshaube-Küche', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.13.on'/*Kaffeemaschine-Küche on*/, 'Steckdosen.Kueche.Kaffeemaschine_Kueche', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Kaffeemaschine-Küche', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.12.on'/*Fernseher-Küche on*/, 'Steckdosen.Kueche.Fernseher-Kueche', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Fernseher-Küche', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.7.on'/*Fernseher-Esszimmer on*/, 'Steckdosen.Esszimmer.Fernseher_Esszimmer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Fernseher-Esszimmer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.10.on'/*Media-Wohnzimmer on*/, 'Steckdosen.Wohnzimmer.Media_Wohnzimmer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Media-Wohnzimmer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.8.on'/*Netzteil-Laptop on*/, 'Steckdosen.Wohnzimmer.Netzteil_Laptop', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Netzteil-Laptop', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.11.on'/*Fernseher-Schlafzimmer on*/, 'Steckdosen.Schlafzimmer.Fernseher_Schlafzimmer', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Fernseher-Schlafzimmer', 'switch', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.30.on'/*Pumpe-Schuppen on*/, 'Steckdosen.Schuppen.Pumpe_Schuppen', undefined, 'steckdosen_alias', 'boolean', undefined, undefined, 'Pumpe-Schuppen', '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('deconz.0.Lights.29.on'/*Deckenlampe-Arbeitszimmer on*/, 'Licht.Arbeitszimmer.Deckenlampe_Arbeitszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-Arbeitszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.28.on'/*Wandlampe-Arbeitszimmer on*/, 'Licht.Arbeitszimmer.Wandlampe_Arbeitszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Wandlampe-Arbeitszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.27.on'/*Deckenlampe-Badezimmer on*/, 'Licht.Badezimmer.Deckenlampe_Badezimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-Badezimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.17.on'/*Deckenlampe-Flur on*/, 'Licht.Flur.Deckenlampe_Flur', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-Flur', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.6.on'/*Lampe-Verteilung on*/, 'Licht.Flur.Lampe_Verteilung', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Lampe-Verteilung', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('sonoff.0.Shelly-Serienschalter-Bad.POWER1'/*Shelly-Serienschalter-Bad POWER1*/, 'Licht.Bad.Spot_Bad', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Spot-Bad', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('sonoff.0.Shelly-Serienschalter-Bad.POWER2'/*Shelly-Serienschalter-Bad POWER2*/, 'Licht.Bad.Sternenhimmel_Bad', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Sternenhimmel-Bad', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.20.on'/*Schrank-1-Bad on*/, 'Licht.Bad.Schrank_1_Bad', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Schrank-1-Bad', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.19.on'/*Schrank-2-Bad on*/, 'Licht.Bad.Schrank_2_Bad', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Schrank-2-Bad', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('sonoff.0.Sonoff-Serienschalter-Küche.POWER1'/*Sonoff-Serienschalter-Küche POWER1*/, 'Licht.Kueche.Deckenlampe_Kueche', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-Küche', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('sonoff.0.Sonoff-Serienschalter-Küche.POWER2'/*Sonoff-Serienschalter-Küche POWER2*/, 'Licht.Kueche.Lampe_1_Kueche', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Lampe-1-Küche', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.21.on'/*Spüle-Küche on*/, 'Licht.Kueche.Spuele_Kueche', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Spüle-Küche', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.22.on'/*Sitzecke-Küche on*/, 'Licht.Kueche.Sitzecke_Küche', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Sitzecke-Küche', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('sonoff.0.Sonoff-Serienschalter-Esszimmer.POWER1'/*Sonoff-Serienschalter-Esszimmer POWER1*/, 'Licht.Esszimmer.Deckenlampe_1_Esszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-1-Esszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('sonoff.0.Sonoff-Serienschalter-Esszimmer.POWER2'/*Sonoff-Serienschalter-Esszimmer POWER2*/, 'Licht.Esszimmer.Deckenlampe_2_Esszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-2-Esszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.23.on'/*Schrank-1-Esszimmer on*/, 'Licht.Esszimmer.Schrank_1_Esszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Schrank-1-Esszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.2.on'/*Schrank-2-Esszimmer on*/, 'Licht.Esszimmer.Schrank_2_Esszimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Schrank-2-Esszimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.24.on'/*Deckenlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Deckenlampe_Wohnzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-Wohnzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.3.on'/*Wandlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Wandlampe_Wohnzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Wandlampe-Wohnzimmer, 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.9.on'/*Deckenfluter-Wohnzimmer on*/, 'Licht.Wohnzimmer.Deckenfluter_Wohnzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenfluter-Wohnzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.1.on'/*Tischlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Tischlampe_Wohnzimmer, undefined, 'licht_alias', 'boolean', undefined, undefined, 'Tischlampe-Wohnzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.5.on'/*Deckenlampe-1-Schlafzimmer on*/, 'Licht.Schlafzimmer.Deckenlampe_1_Schlafzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-1-Schlafzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.26.on'/*Deckenlampe-2-Schlafzimmer on*/, 'Licht.Schlafzimmer.Deckenlampe_2_Schlafzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-2-Schlafzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.25.on'/*Deckenlampe-3-Schlafzimmer on*/, 'Licht.Schlafzimmer.Deckenlampe_3_Schlafzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Deckenlampe-3-Schlafzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('sonoff.0.Lampe-Kellertreppe.POWER'/*Lampe-Kellertreppe POWER*/, 'Licht.Keller.Lampe_Kellertreppe', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Lampe-Kellertreppe', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                              createAlias('deconz.0.Lights.18.on'/*Lampen-Schuppen on*/, 'Licht.Schuppen.Lampen-Schuppen', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Lampen-Schuppen', '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('hmip.0.devices.3014F711A0000A1A49A53E9E.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Abstellkammer.Temperatur_Abstellkammer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Abstellkammer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                              createAlias('hmip.0.devices.3014F711A0000A1A49A533E3.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Arbeitszimmer.Temperatur_Arbeitszimmer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Arbeitszimmer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                              createAlias('hmip.0.devices.3014F711A0000A1A49A533DC.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Badezimmer.Temperatur_Badezimmer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Badezimmer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                              createAlias('hmip.0.devices.3014F711A0000A1A49A53F7A.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Bad.Temperatur_Bad', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Bad', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                              createAlias('hmip.0.devices.3014F711A0000A1A49A536FD.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Kueche.Temperatur_Kueche', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Küche', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                              createAlias('hmip.0.devices.3014F711A0000A1A49A534C1.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Esszimmer.Temperatur_Esszimmer_1', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Esszimmer-1', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                              createAlias('hmip.0.devices.3014F711A0000A1A49A545DA.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Esszimmer.Temperatur_Esszimmer_2', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Esszimmer-2', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                              createAlias('hmip.0.devices.3014F711A0000A1A49A53500.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Wohnzimmer.Temperatur_Wohnzimmer', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Wohnzimmer', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                              createAlias('hmip.0.devices.3014F711A0000A1A49A54635.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Schlafzimmer.Temperatur_Schlafzimmer_1', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Schlafzimmer-1', 'value.temperature', 'per Script erstellt', undefined, undefined, '°C', undefined)
                              createAlias('hmip.0.devices.3014F711A0000A1A49A533DB.channels.1.valveActualTemperature'/*valveActualTemperature*/, 'Temperaturen.Schlafzimmer.Temperatur_Schlafzimmer_2', undefined, 'temperaturen_alias', 'number', 'Math.round(val * 10) / 10', undefined, 'Schlafzimmer-2', '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('deconz.0.Sensors.7.battery'/*Fensterkontakt-Küche battery*/, 'Batterien_voll_leer.Fensterkontakt_Kueche', undefined, 'batterien_voll_leer_alias', 'boolean', undefined, undefined, 'Fensterkontakt-Küche', 'indicator.lowbat', 'per Script erstellt', undefined, undefined, undefined, {false: 'voll', true: 'leer'})
                              createAlias('deconz.0.Sensors.3.battery'/*Bewegungsmelder battery*/, 'Batterien_voll_leer.Bewegungsmelder_Flur', undefined, 'batterien_voll_leer_alias', 'boolean', undefined, undefined, 'Bewegungsmelder-Flur', '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)
                              

                              Dabei bekomme ich im Log folgende Fehlermeldung:

                              javascript.0	2020-11-18 18:22:12.265	error	(2706) at processTicksAndRejections (internal/process/task_queues.js:97:5)
                              javascript.0	2020-11-18 18:22:12.265	error	(2706) at runMicrotasks (<anonymous>)
                              javascript.0	2020-11-18 18:22:12.264	error	(2706) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49
                              javascript.0	2020-11-18 18:22:12.264	error	(2706) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
                              javascript.0	2020-11-18 18:22:12.263	error	(2706) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17
                              javascript.0	2020-11-18 18:22:12.263	error	(2706) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1140:17
                              javascript.0	2020-11-18 18:22:12.263	error	(2706) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1559:17
                              javascript.0	2020-11-18 18:22:12.262	error	(2706) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1503:37)
                              javascript.0	2020-11-18 18:22:12.262	error	(2706) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1280:28)
                              javascript.0	2020-11-18 18:22:12.261	error	(2706) at Object.createScript (vm.js:261:10)
                              javascript.0	2020-11-18 18:22:12.261	error	(2706) at new Script (vm.js:88:7)
                              javascript.0	2020-11-18 18:22:12.260	error	(2706) SyntaxError: missing ) after argument list
                              javascript.0	2020-11-18 18:22:12.260	error	(2706) ^^^^^^^^^^^^^^^^^^^^^^^^
                              javascript.0	2020-11-18 18:22:12.259	error	(2706) createAlias('deconz.0.Lights.3.on'/*Wandlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Wandlampe_Wohnzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Wandlampe-Wohnzimmer, 'switch
                              javascript.0	2020-11-18 18:22:12.259	error	(2706) script.js.common.Test.Aliase compile failed: at script.js.common.Test.Aliase:350
                              

                              Ich hoffe mir kann jemand sagen wo meine Fehler liegen.

                              Vielen dank im Voraus

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

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

                              Hallo ich habe gerade nach dem folgenden Alias Skript meine Aliasse erstellen wollen.

                              Es gibt auch eine neuere Version vom Script.

                              https://github.com/xCruziX/ioBroker-Creating-Alias/blob/master/CreateAlias.js

                              S 1 Antwort Letzte Antwort
                              0
                              • dslraserD dslraser

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

                                Hallo ich habe gerade nach dem folgenden Alias Skript meine Aliasse erstellen wollen.

                                Es gibt auch eine neuere Version vom Script.

                                https://github.com/xCruziX/ioBroker-Creating-Alias/blob/master/CreateAlias.js

                                S Offline
                                S Offline
                                sandro_gera
                                schrieb am zuletzt editiert von
                                #962

                                @dslraser

                                Danke, Das Semikolon hatte ich echt übersehen.

                                Die ne Version hatte ich gesehen bin damit nur nicht zurecht gekommen. ich wußte nicht wo ich da meine Geräte eingebe.

                                Semikolon habe ich gesetzt allerdings ändert sich nicht an der Fehlermeldung.

                                createAlias('deconz.0.Lights.3.on'/*Wandlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Wandlampe_Wohnzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Wandlampe-Wohnzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                                
                                
                                javascript.0	2020-11-18 19:04:57.921	error	(28754) at processTicksAndRejections (internal/process/task_queues.js:97:5)
                                javascript.0	2020-11-18 19:04:57.921	error	(28754) at runMicrotasks (<anonymous>)
                                javascript.0	2020-11-18 19:04:57.921	error	(28754) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49
                                javascript.0	2020-11-18 19:04:57.920	error	(28754) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
                                javascript.0	2020-11-18 19:04:57.920	error	(28754) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17
                                javascript.0	2020-11-18 19:04:57.920	error	(28754) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1140:17
                                javascript.0	2020-11-18 19:04:57.920	error	(28754) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1559:17
                                javascript.0	2020-11-18 19:04:57.920	error	(28754) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1503:37)
                                javascript.0	2020-11-18 19:04:57.919	error	(28754) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1280:28)
                                javascript.0	2020-11-18 19:04:57.919	error	(28754) at Object.createScript (vm.js:261:10)
                                javascript.0	2020-11-18 19:04:57.919	error	(28754) at new Script (vm.js:88:7)
                                javascript.0	2020-11-18 19:04:57.919	error	(28754) SyntaxError: missing ) after argument list
                                javascript.0	2020-11-18 19:04:57.919	error	(28754) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                javascript.0	2020-11-18 19:04:57.918	error	(28754) createAlias('deconz.0.Lights.1.on'/*Tischlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Tischlampe_Wohnzimmer, undefined, 'licht_alias', 'boolean', undefined, undefined, 'Tischlampe-Wohnzimmer', 's
                                javascript.0	2020-11-18 19:04:57.918	error	at script.js.common.Test.Aliase:352
                                javascript.0	2020-11-18 19:04:57.918	error	(28754) script.js.common.Test.Aliase compile failed:
                                

                                Master RPI4 8GB, Slave RPI3 1GB
                                Node.js v18.17.1, npm: 9.6.7,
                                JS-Controller: 5.0.16

                                dslraserD 1 Antwort Letzte Antwort
                                0
                                • S sandro_gera

                                  @dslraser

                                  Danke, Das Semikolon hatte ich echt übersehen.

                                  Die ne Version hatte ich gesehen bin damit nur nicht zurecht gekommen. ich wußte nicht wo ich da meine Geräte eingebe.

                                  Semikolon habe ich gesetzt allerdings ändert sich nicht an der Fehlermeldung.

                                  createAlias('deconz.0.Lights.3.on'/*Wandlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Wandlampe_Wohnzimmer', undefined, 'licht_alias', 'boolean', undefined, undefined, 'Wandlampe-Wohnzimmer', 'switch.light', 'per Script erstellt', undefined, undefined, undefined, {false: 'aus', true: 'an'})
                                  
                                  
                                  javascript.0	2020-11-18 19:04:57.921	error	(28754) at processTicksAndRejections (internal/process/task_queues.js:97:5)
                                  javascript.0	2020-11-18 19:04:57.921	error	(28754) at runMicrotasks (<anonymous>)
                                  javascript.0	2020-11-18 19:04:57.921	error	(28754) at /opt/iobroker/node_modules/standard-as-callback/built/index.js:19:49
                                  javascript.0	2020-11-18 19:04:57.920	error	(28754) at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:11:23)
                                  javascript.0	2020-11-18 19:04:57.920	error	(28754) at /opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:616:17
                                  javascript.0	2020-11-18 19:04:57.920	error	(28754) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1140:17
                                  javascript.0	2020-11-18 19:04:57.920	error	(28754) at /opt/iobroker/node_modules/iobroker.javascript/main.js:1559:17
                                  javascript.0	2020-11-18 19:04:57.920	error	(28754) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1503:37)
                                  javascript.0	2020-11-18 19:04:57.919	error	(28754) at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1280:28)
                                  javascript.0	2020-11-18 19:04:57.919	error	(28754) at Object.createScript (vm.js:261:10)
                                  javascript.0	2020-11-18 19:04:57.919	error	(28754) at new Script (vm.js:88:7)
                                  javascript.0	2020-11-18 19:04:57.919	error	(28754) SyntaxError: missing ) after argument list
                                  javascript.0	2020-11-18 19:04:57.919	error	(28754) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                  javascript.0	2020-11-18 19:04:57.918	error	(28754) createAlias('deconz.0.Lights.1.on'/*Tischlampe-Wohnzimmer on*/, 'Licht.Wohnzimmer.Tischlampe_Wohnzimmer, undefined, 'licht_alias', 'boolean', undefined, undefined, 'Tischlampe-Wohnzimmer', 's
                                  javascript.0	2020-11-18 19:04:57.918	error	at script.js.common.Test.Aliase:352
                                  javascript.0	2020-11-18 19:04:57.918	error	(28754) script.js.common.Test.Aliase compile failed:
                                  
                                  dslraserD Offline
                                  dslraserD Offline
                                  dslraser
                                  Forum Testing Most Active
                                  schrieb am zuletzt editiert von
                                  #963

                                  @sandro_gera
                                  jetzt wird Zeile 352 angemeckert (steht auch so in der Fehlermeldung)
                                  Da fehlt auch ein Semikolon, nur an anderer Stelle

                                  S 2 Antworten Letzte Antwort
                                  0
                                  • dslraserD dslraser

                                    @sandro_gera
                                    jetzt wird Zeile 352 angemeckert (steht auch so in der Fehlermeldung)
                                    Da fehlt auch ein Semikolon, nur an anderer Stelle

                                    S Offline
                                    S Offline
                                    sandro_gera
                                    schrieb am zuletzt editiert von
                                    #964

                                    @dslraser

                                    sorry ich hab es gerade gesehen.

                                    Master RPI4 8GB, Slave RPI3 1GB
                                    Node.js v18.17.1, npm: 9.6.7,
                                    JS-Controller: 5.0.16

                                    1 Antwort Letzte Antwort
                                    1
                                    • dslraserD dslraser

                                      @sandro_gera
                                      jetzt wird Zeile 352 angemeckert (steht auch so in der Fehlermeldung)
                                      Da fehlt auch ein Semikolon, nur an anderer Stelle

                                      S Offline
                                      S Offline
                                      sandro_gera
                                      schrieb am zuletzt editiert von
                                      #965

                                      @dslraser

                                      Schau mal einer an plötzlich gehts

                                      Master RPI4 8GB, Slave RPI3 1GB
                                      Node.js v18.17.1, npm: 9.6.7,
                                      JS-Controller: 5.0.16

                                      dslraserD 1 Antwort Letzte Antwort
                                      0
                                      • S sandro_gera

                                        @dslraser

                                        Schau mal einer an plötzlich gehts

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

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

                                        @dslraser

                                        Schau mal einer an plötzlich gehts

                                        😂👍

                                        S 1 Antwort Letzte Antwort
                                        0
                                        • dslraserD dslraser

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

                                          @dslraser

                                          Schau mal einer an plötzlich gehts

                                          😂👍

                                          S Offline
                                          S Offline
                                          sandro_gera
                                          schrieb am zuletzt editiert von
                                          #967

                                          @dslraser

                                          ok jetzt kann ich mir der Blocky Erstellung weiter machen. Mal sehen wie ich damit klar komme.
                                          Bezüglich der neuen Skript Version. Sollte ich daruf umstellen und wenn ja kannst du mir sagen wie ich das anstelle?

                                          Master RPI4 8GB, Slave RPI3 1GB
                                          Node.js v18.17.1, npm: 9.6.7,
                                          JS-Controller: 5.0.16

                                          dslraserD 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

                                          507

                                          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