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

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

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

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

Geplant Angeheftet Gesperrt Verschoben Blockly
blocklyjavascript
1.2k Beiträge 41 Kommentatoren 414.2k 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.
  • sigi234S sigi234

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

    und das ist der RAW vom device, nicht vom state MOTION, aber egal...

    {
      "type": "state",
      "common": {
        "def": false,
        "type": "boolean",
        "read": true,
        "write": false,
        "role": "sensor.motion",
        "name": "Bewegungsmelder Vorraum.MOTION"
      },
      "native": {
        "MIN": false,
        "OPERATIONS": 5,
        "MAX": true,
        "FLAGS": 1,
        "ID": "MOTION",
        "TYPE": "BOOL",
        "DEFAULT": false,
        "CONTROL": "MOTIONDETECTOR_TRANSCEIVER.MOTION_DETECTION_STATE"
      },
      "from": "system.adapter.hm-rega.0",
      "user": "system.user.admin",
      "ts": 1589987461346,
      "_id": "hm-rpc.1.00091A49A082FC.1.MOTION",
      "acl": {
        "object": 1636,
        "state": 1636,
        "owner": "system.user.admin",
        "ownerGroup": "system.group.administrator"
      }
    }
    
    javascript.0	2020-06-17 16:26:57.110	warn	(12088) at processTimers (internal/timers.js:492:7)
    javascript.0	2020-06-17 16:26:57.110	warn	(12088) at listOnTimeout (internal/timers.js:551:17)
    javascript.0	2020-06-17 16:26:57.109	warn	(12088) at Timeout._onTimeout (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\lib\sandbox.js:2039:34)
    javascript.0	2020-06-17 16:26:57.109	warn	(12088) at Object.<anonymous> (script.js.Ansage.Komplettansage:1210:7)
    javascript.0	2020-06-17 16:26:57.109	warn	(12088) at Fenster_zaehlen (script.js.Ansage.Komplettansage:1814:61)
    javascript.0	2020-06-17 16:26:57.109	warn	(12088) at stateText (script.js.Ansage.Komplettansage:924:12)
    javascript.0	2020-06-17 16:26:57.109	warn	(12088) getState "hm-rpc.0.OEQ0926852.1.INSTALL_TEST" not found (3) states[id]=null
    javascript.0	2020-06-17 16:26:57.109	warn	(12088) at processTimers (internal/timers.js:492:7)
    javascript.0	2020-06-17 16:26:57.109	warn	(12088) at listOnTimeout (internal/timers.js:551:17)
    javascript.0	2020-06-17 16:26:57.109	warn	(12088) at Timeout._onTimeout (C:\Program Files\iobroker\Test\node_modules\iobroker.javascript\lib\sandbox.js:2039:34)
    javascript.0	2020-06-17 16:26:57.108	warn	(12088) at Object.<anonymous> (script.js.Ansage.Komplettansage:1210:7)
    javascript.0	2020-06-17 16:26:57.108	warn	(12088) at Fenster_zaehlen (script.js.Ansage.Komplettansage:1814:9)
    javascript.0	2020-06-17 16:26:57.108	warn	(12088) at stateText (script.js.Ansage.Komplettansage:924:12)
    javascript.0	2020-06-17 16:26:57.108	warn	(12088) getState "hm-rpc.0.OEQ0926852.1.INSTALL_TEST" not found (3) states[id]=null
    

    Diese Warn kommt ja nur weil der State leer ist.

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

    @sigi234
    ich habe mir mal Dein RAW importiert, bei mir wird der BWM gefunden.

    Bildschirmfoto 2020-06-17 um 16.44.40.png

    1 Antwort Letzte Antwort
    0
    • sigi234S sigi234

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

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

      Diese Warn kommt ja nur weil der State leer ist.

      Wie meinst Du das ? Dieser state hat mit dem Blockly eigentlich nichts zu tun.
      Welche javascript Adapter Version und js-contoller Version setzt Du ein ?

      JS controller 3.1.5
      JS:  4.6.17
      
      dslraserD Offline
      dslraserD Offline
      dslraser
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #670

      @sigi234
      hm....ich kann Deinen Fehler leider nicht nachstellen. Warten wir mal ab, ob noch Jemand kommt, der Bewegungsmelder nutzt (am Besten auch HMIP).

      1 Antwort Letzte Antwort
      0
      • sigi234S sigi234

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

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

        Diese Warn kommt ja nur weil der State leer ist.

        Wie meinst Du das ? Dieser state hat mit dem Blockly eigentlich nichts zu tun.
        Welche javascript Adapter Version und js-contoller Version setzt Du ein ?

        JS controller 3.1.5
        JS:  4.6.17
        
        dslraserD Offline
        dslraserD Offline
        dslraser
        Forum Testing Most Active
        schrieb am zuletzt editiert von
        #671

        @sigi234
        mir ist an Deinem Bild erst jetzt aufgefallen, das da Batterien als Funktion steht, hast Du Batterien im Blockly auch auf wahr stehen ? (da ist auch nicht nur ein state ausgewählt)

        Hier Dein Bild
        1592387337474-screenshot-75.png

        falke69F sigi234S 2 Antworten Letzte Antwort
        0
        • dslraserD dslraser

          @sigi234
          mir ist an Deinem Bild erst jetzt aufgefallen, das da Batterien als Funktion steht, hast Du Batterien im Blockly auch auf wahr stehen ? (da ist auch nicht nur ein state ausgewählt)

          Hier Dein Bild
          1592387337474-screenshot-75.png

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

          @dslraser

          kannst Du mal bitte prüfen, ob bei Dir die Ansage über den Fensterstatus über Alexa funktioniert?
          Ich habe aktuell Probleme den Fensterstatus über Alexa abzufragen.
          Batterie und Licht funktioniert. Im iot und in Alexa habe ich alles rausgelöscht und neu erstllen / suchen lassen - leider ohne Erfolg.
          Auch nach der Ansage "Alexa Stop" funktioniert bei mir die Abfrage des Fensterstatus leider nicht.

          Ein manuelles löschen der Datenpunkte, blieb leider auch ohne positives Ergebnis.

          2020-06-18_185403.jpg 2020-06-18_185501.jpg

          dslraserD 2 Antworten Letzte Antwort
          0
          • falke69F falke69

            @dslraser

            kannst Du mal bitte prüfen, ob bei Dir die Ansage über den Fensterstatus über Alexa funktioniert?
            Ich habe aktuell Probleme den Fensterstatus über Alexa abzufragen.
            Batterie und Licht funktioniert. Im iot und in Alexa habe ich alles rausgelöscht und neu erstllen / suchen lassen - leider ohne Erfolg.
            Auch nach der Ansage "Alexa Stop" funktioniert bei mir die Abfrage des Fensterstatus leider nicht.

            Ein manuelles löschen der Datenpunkte, blieb leider auch ohne positives Ergebnis.

            2020-06-18_185403.jpg 2020-06-18_185501.jpg

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

            @falke69
            funktioniert bei mir.
            Wie viele Fenster hast Du ?
            Bzw. Wieviel zeichen ist die Ansage lang ?

            1 Antwort Letzte Antwort
            0
            • falke69F falke69

              @dslraser

              kannst Du mal bitte prüfen, ob bei Dir die Ansage über den Fensterstatus über Alexa funktioniert?
              Ich habe aktuell Probleme den Fensterstatus über Alexa abzufragen.
              Batterie und Licht funktioniert. Im iot und in Alexa habe ich alles rausgelöscht und neu erstllen / suchen lassen - leider ohne Erfolg.
              Auch nach der Ansage "Alexa Stop" funktioniert bei mir die Abfrage des Fensterstatus leider nicht.

              Ein manuelles löschen der Datenpunkte, blieb leider auch ohne positives Ergebnis.

              2020-06-18_185403.jpg 2020-06-18_185501.jpg

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

              @falke69

              Das habe ich weiter oben geschrieben.

              EDIT: Bei meiner Fensteransage (22 Fenster) kommt es regelmäßig dazu, das die Ansage nicht gestartet wird, da die 250 Zeichen Grenze überschritten wird. (Im Sommer sind halt mehrere Fenster auf) Da werde ich mir jetzt als nächstes was einfallen lassen.

              Vielleicht ist das auch bei Dir der Fall ?

              Auf meiner eigenen Testdatei habe ich schon was eingebaut, da spielt diese 250 Zeichen Grenze keine Rolle mehr, die würde ganze Bücher vorlesen.
              Das will ich aber erst in Ruhe testen.

              falke69F 1 Antwort Letzte Antwort
              0
              • dslraserD dslraser

                @falke69

                Das habe ich weiter oben geschrieben.

                EDIT: Bei meiner Fensteransage (22 Fenster) kommt es regelmäßig dazu, das die Ansage nicht gestartet wird, da die 250 Zeichen Grenze überschritten wird. (Im Sommer sind halt mehrere Fenster auf) Da werde ich mir jetzt als nächstes was einfallen lassen.

                Vielleicht ist das auch bei Dir der Fall ?

                Auf meiner eigenen Testdatei habe ich schon was eingebaut, da spielt diese 250 Zeichen Grenze keine Rolle mehr, die würde ganze Bücher vorlesen.
                Das will ich aber erst in Ruhe testen.

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

                @dslraser ich habe 12 Fenster, das sollte dann eigentlich noch im möglichen sein.
                Vielleicht ist auch die Bezeichnung der Geräte zu lang, dass ich dann trotzden über die 250 Zeichen komme.
                Habe jetzt mal bis auf zwei Fenster alle aus den Aufzählungen genommen, so das ich aktuell nur noch zwei Geräte zur Auswahl hatte. Es kam leider auch keine Ansage.

                Wenn es bei Dir funkioniert, muss ich mal schauen, was noch die Ursache sein könnte. :-)

                dslraserD 1 Antwort Letzte Antwort
                0
                • dslraserD dslraser

                  @sigi234
                  mir ist an Deinem Bild erst jetzt aufgefallen, das da Batterien als Funktion steht, hast Du Batterien im Blockly auch auf wahr stehen ? (da ist auch nicht nur ein state ausgewählt)

                  Hier Dein Bild
                  1592387337474-screenshot-75.png

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

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

                  mir ist an Deinem Bild erst jetzt aufgefallen, das da Batterien als Funktion steht, hast Du Batterien im Blockly auch auf wahr stehen ? (da ist auch nicht nur ein state ausgewählt)

                  Ja, aber ich habe das Skript mal deaktiviert, es bringt mein System an die Grenzen.

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

                  dslraserD 1 Antwort Letzte Antwort
                  0
                  • sigi234S sigi234

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

                    mir ist an Deinem Bild erst jetzt aufgefallen, das da Batterien als Funktion steht, hast Du Batterien im Blockly auch auf wahr stehen ? (da ist auch nicht nur ein state ausgewählt)

                    Ja, aber ich habe das Skript mal deaktiviert, es bringt mein System an die Grenzen.

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

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

                    Ja, aber ich habe das Skript mal deaktiviert, es bringt mein System an die Grenzen.

                    In wie fern ?

                    sigi234S 1 Antwort Letzte Antwort
                    0
                    • falke69F falke69

                      @dslraser ich habe 12 Fenster, das sollte dann eigentlich noch im möglichen sein.
                      Vielleicht ist auch die Bezeichnung der Geräte zu lang, dass ich dann trotzden über die 250 Zeichen komme.
                      Habe jetzt mal bis auf zwei Fenster alle aus den Aufzählungen genommen, so das ich aktuell nur noch zwei Geräte zur Auswahl hatte. Es kam leider auch keine Ansage.

                      Wenn es bei Dir funkioniert, muss ich mal schauen, was noch die Ursache sein könnte. :-)

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

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

                      Wenn es bei Dir funkioniert, muss ich mal schauen, was noch die Ursache sein könnte.

                      Lade es nochmal aus dem Beitrag runter.
                      Ich weiß nicht wann Du es geladen hattest. Das letzte, (ich hatte nochmal kleine Änderung gemacht) was da im Beitrag ist benutze ich auch.

                      falke69F 1 Antwort Letzte Antwort
                      0
                      • dslraserD dslraser

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

                        Ja, aber ich habe das Skript mal deaktiviert, es bringt mein System an die Grenzen.

                        In wie fern ?

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

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

                        In wie fern ?

                        JS reagiert sehr träge. Beim start des Skript dauert es lange bis die Bausteine angezeigt werden. Sind auch über 5000

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

                        dslraserD 1 Antwort Letzte Antwort
                        0
                        • sigi234S sigi234

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

                          In wie fern ?

                          JS reagiert sehr träge. Beim start des Skript dauert es lange bis die Bausteine angezeigt werden. Sind auch über 5000

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

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

                          JS reagiert sehr träge.

                          Kann ich bei mir nicht sagen.
                          Es kann aber sein das Du durch die "falschen Selektoren" bzw. das Du z.B. bei den Batterien das ganze Device oder den ganzen Channel in der Aufzählung hast nicht funktioniert. Dann mußt Du entweder die Aufzählungen anpassen wie beschrieben, oder Deinen Selektor anders einstellen, so das nur auf den benötigten state selektiert wird.

                          sigi234S 1 Antwort Letzte Antwort
                          0
                          • dslraserD dslraser

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

                            Wenn es bei Dir funkioniert, muss ich mal schauen, was noch die Ursache sein könnte.

                            Lade es nochmal aus dem Beitrag runter.
                            Ich weiß nicht wann Du es geladen hattest. Das letzte, (ich hatte nochmal kleine Änderung gemacht) was da im Beitrag ist benutze ich auch.

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

                            @dslraser jetzt geht es. Dann hatte ich bestimmt die erste Version :blush: :+1:

                            1 Antwort Letzte Antwort
                            1
                            • dslraserD dslraser

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

                              JS reagiert sehr träge.

                              Kann ich bei mir nicht sagen.
                              Es kann aber sein das Du durch die "falschen Selektoren" bzw. das Du z.B. bei den Batterien das ganze Device oder den ganzen Channel in der Aufzählung hast nicht funktioniert. Dann mußt Du entweder die Aufzählungen anpassen wie beschrieben, oder Deinen Selektor anders einstellen, so das nur auf den benötigten state selektiert wird.

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

                              @dslraser sagte in Fenster und andere Geräte zählen opt. Alexa Ansagen:
                              Dann mußt Du entweder die Aufzählungen anpassen wie beschrieben, oder Deinen Selektor anders einstellen, so das nur auf den benötigten state selektiert wird.

                              Jupp, ich werde alles mal kontrollieren. Es kommen noch einen Menge an Warnmeldungen.

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

                              1 Antwort Letzte Antwort
                              0
                              • dslraserD Offline
                                dslraserD Offline
                                dslraser
                                Forum Testing Most Active
                                schrieb am zuletzt editiert von dslraser
                                #683

                                Ist sowas für Euch auch von Interesse ?
                                (könnte man auch Ansagen lassen, per Telegram oder E-Mail versenden und eben als html Ausgabe verwenden, z.B. in iQontrol)

                                Screenshot_20200624-130823_Chrome.jpg

                                Wen es interessiert:
                                Als erstes habe ich mir eine neue Aufzählung, in meinem Fall Temperaturen angelegt.
                                Bildschirmfoto 2020-06-23 um 17.16.39.png
                                Man achte auf die Schreibweise ganz rechts(groß oder klein)

                                Danach habe ich mir mit dem alias erstellen Script von @paul53 für meine Thermostate aliase angelegt es geht immer nur einer auf einmal). (mit den Namen wie die dann auch heißen sollen, da die ja sonst oft irgendwelche Thermostatbezeichnungen haben.) Dieses Script packt die aliase auch gleich in diese Aufzählung (kann man im Script einstellen)

                                // Original-Datenpunkt
                                const idOrigin = 'hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE'/*Wandthermostat Gästezimmer:1 ACTUAL TEMPERATURE*/;
                                
                                // Alias-Datenpunkt
                                const idAlias = 'Temperaturen.Gaestezimmer';
                                var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                                // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                                nameAlias = 'Gaestezimmer';
                                //desc = 'per Script erstellt';
                                // typeAlias = 'boolean'; // oder 'number'
                                read = "Math.round(val * 10) / 10"
                                // write = "val ? 'Ein' : 'Aus'";
                                // role = 'indicator';
                                // min = 0; // nur Zahlen
                                // max = 100; // nur Zahlen
                                // unit = '%'; // nur für Zahlen
                                // states = {0: 'Aus', 1: 'Auto', 2: 'Ein'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein)
                                // custom = []; // verhindert doppelte Ausführung von history, ...
                                // raum = 'EG_Flur'; // Groß-/Kleinschreibung in der ID beachten !
                                gewerk = 'Temperaturen'; // Groß-/Kleinschreibung in der ID beachten !
                                
                                function createAlias(idSrc, idDst) {
                                 if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
                                 else {
                                    var obj = {};
                                    obj.type = 'state';
                                    obj.common = getObject(idSrc).common;
                                    obj.common.alias = {};
                                    obj.common.alias.id = idSrc;
                                    if(typeAlias) obj.common.type = typeAlias;
                                    if(obj.common.read !== false && read) obj.common.alias.read = read;
                                    if(obj.common.write !== false && write) obj.common.alias.write = write;
                                    if(nameAlias) obj.common.name = nameAlias;
                                    if(role) obj.common.role = role;
                                    if(desc) obj.common.desc = desc;
                                    if(min !== undefined) obj.common.min = min;
                                    if(max !== undefined) obj.common.max = max;
                                    if(unit) obj.common.unit = unit;
                                    if(states) obj.common.states = states;
                                    if(custom && obj.common.custom) obj.common.custom = custom;
                                    obj.native = {};
                                    setObject(idDst, obj);
                                    if(raum && getObject('enum.rooms.' + raum)) {
                                       let obj = getObject('enum.rooms.' + raum)
                                       obj.common.members.push(idDst);
                                       setObject('enum.rooms.' + raum, obj);
                                    }
                                    if(gewerk && getObject('enum.functions.' + gewerk)) {
                                       let obj = getObject('enum.functions.' + gewerk)
                                       obj.common.members.push(idDst);
                                       setObject('enum.functions.' + gewerk, obj);
                                    }
                                 } 
                                }
                                
                                createAlias(idOrigin, 'alias.0.' + idAlias);
                                
                                

                                so sehen die aliase bei mir aus
                                Bildschirmfoto 2020-06-24 um 13.07.11.png

                                Datenpunkte fürs Blockly
                                Bildschirmfoto 2020-06-24 um 13.06.14.png

                                dirk1962D 1 Antwort Letzte Antwort
                                1
                                • dslraserD Offline
                                  dslraserD Offline
                                  dslraser
                                  Forum Testing Most Active
                                  schrieb am zuletzt editiert von dslraser
                                  #684

                                  Zum Thema Textlänge (250 Zeichen) für die Ausgabe über Alexa.
                                  Ich habe damit jetzt ne ganze Menge getestet.

                                  Die Ausgabe über ssml ist so ca. auf 1000 Zeichen begrenzt. ssml interessiert auch die Trennung mit einem Semikolon nach 250 Zeichen nicht !

                                  Mit speak funktioniert diese Trennung über das Semikolon, dann ist die Ansage quasi nicht mehr begrenzt. Der Nachteil ist allerdings, man hat nur die Stimme von Alexa.

                                  Ich habe für mich eine Datei erstellt, die nur speak nutzt. Wenn die Gesamtansage (dazu zählt auch was vor und nach der eigentlichen Geräteansage angesagt wird, das sind schon alleine ca. 80 Zeichen) kürzer als 250 Zeichen ist, dann wird mit Komma getrennt, sonst mit Semikolon. Nachteil der Ansage länger als 250 Zeichen, sie ist langsamer, weil jedes Semikolon eine kleine Sprechpause bewirkt. Vorteil, die Ansage kommt immer, egal wie lang.
                                  Auch intern im Blockly habe ich Änderungen gemacht. (Sortierungen "korrigiert". Ich denke die Testdatei über ssml hat noch Fehler bei der Sortierung gehabt, auch wenn die nicht in jedem Fall zu sehen ist)

                                  Hier das Blockly inklusive Temperaturen, wie hier beschrieben


                                  wird gerade bearbeitet

                                  1 Antwort Letzte Antwort
                                  0
                                  • dslraserD dslraser

                                    Ist sowas für Euch auch von Interesse ?
                                    (könnte man auch Ansagen lassen, per Telegram oder E-Mail versenden und eben als html Ausgabe verwenden, z.B. in iQontrol)

                                    Screenshot_20200624-130823_Chrome.jpg

                                    Wen es interessiert:
                                    Als erstes habe ich mir eine neue Aufzählung, in meinem Fall Temperaturen angelegt.
                                    Bildschirmfoto 2020-06-23 um 17.16.39.png
                                    Man achte auf die Schreibweise ganz rechts(groß oder klein)

                                    Danach habe ich mir mit dem alias erstellen Script von @paul53 für meine Thermostate aliase angelegt es geht immer nur einer auf einmal). (mit den Namen wie die dann auch heißen sollen, da die ja sonst oft irgendwelche Thermostatbezeichnungen haben.) Dieses Script packt die aliase auch gleich in diese Aufzählung (kann man im Script einstellen)

                                    // Original-Datenpunkt
                                    const idOrigin = 'hm-rpc.0.xxx.1.ACTUAL_TEMPERATURE'/*Wandthermostat Gästezimmer:1 ACTUAL TEMPERATURE*/;
                                    
                                    // Alias-Datenpunkt
                                    const idAlias = 'Temperaturen.Gaestezimmer';
                                    var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                                    // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                                    nameAlias = 'Gaestezimmer';
                                    //desc = 'per Script erstellt';
                                    // typeAlias = 'boolean'; // oder 'number'
                                    read = "Math.round(val * 10) / 10"
                                    // write = "val ? 'Ein' : 'Aus'";
                                    // role = 'indicator';
                                    // min = 0; // nur Zahlen
                                    // max = 100; // nur Zahlen
                                    // unit = '%'; // nur für Zahlen
                                    // states = {0: 'Aus', 1: 'Auto', 2: 'Ein'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein)
                                    // custom = []; // verhindert doppelte Ausführung von history, ...
                                    // raum = 'EG_Flur'; // Groß-/Kleinschreibung in der ID beachten !
                                    gewerk = 'Temperaturen'; // Groß-/Kleinschreibung in der ID beachten !
                                    
                                    function createAlias(idSrc, idDst) {
                                     if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
                                     else {
                                        var obj = {};
                                        obj.type = 'state';
                                        obj.common = getObject(idSrc).common;
                                        obj.common.alias = {};
                                        obj.common.alias.id = idSrc;
                                        if(typeAlias) obj.common.type = typeAlias;
                                        if(obj.common.read !== false && read) obj.common.alias.read = read;
                                        if(obj.common.write !== false && write) obj.common.alias.write = write;
                                        if(nameAlias) obj.common.name = nameAlias;
                                        if(role) obj.common.role = role;
                                        if(desc) obj.common.desc = desc;
                                        if(min !== undefined) obj.common.min = min;
                                        if(max !== undefined) obj.common.max = max;
                                        if(unit) obj.common.unit = unit;
                                        if(states) obj.common.states = states;
                                        if(custom && obj.common.custom) obj.common.custom = custom;
                                        obj.native = {};
                                        setObject(idDst, obj);
                                        if(raum && getObject('enum.rooms.' + raum)) {
                                           let obj = getObject('enum.rooms.' + raum)
                                           obj.common.members.push(idDst);
                                           setObject('enum.rooms.' + raum, obj);
                                        }
                                        if(gewerk && getObject('enum.functions.' + gewerk)) {
                                           let obj = getObject('enum.functions.' + gewerk)
                                           obj.common.members.push(idDst);
                                           setObject('enum.functions.' + gewerk, obj);
                                        }
                                     } 
                                    }
                                    
                                    createAlias(idOrigin, 'alias.0.' + idAlias);
                                    
                                    

                                    so sehen die aliase bei mir aus
                                    Bildschirmfoto 2020-06-24 um 13.07.11.png

                                    Datenpunkte fürs Blockly
                                    Bildschirmfoto 2020-06-24 um 13.06.14.png

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

                                    Hallo @dslraser, habe für alle Thermostate die Aliase angelegt. Die Datenpunkte werden gefüllt und die html-Tabellen zeigen auch alles an. In iot werden die Aliase auch angezeigt und auch in der Alexa App werden die Aliase angezeigt. Wenn ich aber die Routinen anlegen will, werden die Aliase unter Smart Home nicht angezeigt.
                                    Irgendeine Idee?

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

                                    dslraserD 1 Antwort Letzte Antwort
                                    0
                                    • dirk1962D dirk1962

                                      Hallo @dslraser, habe für alle Thermostate die Aliase angelegt. Die Datenpunkte werden gefüllt und die html-Tabellen zeigen auch alles an. In iot werden die Aliase auch angezeigt und auch in der Alexa App werden die Aliase angezeigt. Wenn ich aber die Routinen anlegen will, werden die Aliase unter Smart Home nicht angezeigt.
                                      Irgendeine Idee?

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

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

                                      Hallo @dslraser, habe für alle Thermostate die Aliase angelegt. Die Datenpunkte werden gefüllt und die html-Tabellen zeigen auch alles an. In iot werden die Aliase auch angezeigt und auch in der Alexa App werden die Aliase angezeigt. Wenn ich aber die Routinen anlegen will, werden die Aliase unter Smart Home nicht angezeigt.
                                      Irgendeine Idee?

                                      Das hatte ich gar nicht probiert, aber Du hast recht.
                                      Die Gesamtansage aller Temperaturen als Routine funktioniert bei mir, also mit dem erstellten Datenpunkt vom Blockly.
                                      Screenshot_20200629-085543_Amazon Alexa.jpg
                                      Dann werden alle Temperaturen wie im Blockly hintereinander angesagt.

                                      Wenn ich einen alias in iot (einzelne Temperatur) einfüge, verhält sich dieser Datenpunkt wie das originale Gerät und lässt sich nicht in eine Routine einbinden. Das geht bei mir dann nur über eine erstellte Gruppe.
                                      Für die Aussentemperatur habe ich eben mal eine Gruppe Garten probiert und dort einen alias eingefügt.
                                      Screenshot_20200629-090047_Amazon Alexa.jpg

                                      Screenshot_20200629-090058_Amazon Alexa.jpg

                                      Dann geht zwar die Ansage, aber wie gewohnt....
                                      "Die Temperatur von Garten beträgt 19 Grad."

                                      dirk1962D 1 Antwort Letzte Antwort
                                      1
                                      • dslraserD dslraser

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

                                        Hallo @dslraser, habe für alle Thermostate die Aliase angelegt. Die Datenpunkte werden gefüllt und die html-Tabellen zeigen auch alles an. In iot werden die Aliase auch angezeigt und auch in der Alexa App werden die Aliase angezeigt. Wenn ich aber die Routinen anlegen will, werden die Aliase unter Smart Home nicht angezeigt.
                                        Irgendeine Idee?

                                        Das hatte ich gar nicht probiert, aber Du hast recht.
                                        Die Gesamtansage aller Temperaturen als Routine funktioniert bei mir, also mit dem erstellten Datenpunkt vom Blockly.
                                        Screenshot_20200629-085543_Amazon Alexa.jpg
                                        Dann werden alle Temperaturen wie im Blockly hintereinander angesagt.

                                        Wenn ich einen alias in iot (einzelne Temperatur) einfüge, verhält sich dieser Datenpunkt wie das originale Gerät und lässt sich nicht in eine Routine einbinden. Das geht bei mir dann nur über eine erstellte Gruppe.
                                        Für die Aussentemperatur habe ich eben mal eine Gruppe Garten probiert und dort einen alias eingefügt.
                                        Screenshot_20200629-090047_Amazon Alexa.jpg

                                        Screenshot_20200629-090058_Amazon Alexa.jpg

                                        Dann geht zwar die Ansage, aber wie gewohnt....
                                        "Die Temperatur von Garten beträgt 19 Grad."

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

                                        @dslraser Die Gesamtansage der Temperaturen wurde nicht automatisch in iot übernommen und deshalb habe ich das verpeilt:disappointed: . Habe den Datenpunkt von Hand nachgetragen und die Ansage über Alexa funktioiert jetzt einwandfrei. :+1: :+1:

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

                                        dslraserD 1 Antwort Letzte Antwort
                                        0
                                        • dirk1962D dirk1962

                                          @dslraser Die Gesamtansage der Temperaturen wurde nicht automatisch in iot übernommen und deshalb habe ich das verpeilt:disappointed: . Habe den Datenpunkt von Hand nachgetragen und die Ansage über Alexa funktioiert jetzt einwandfrei. :+1: :+1:

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

                                          @dirk1962
                                          ich habe jetzt bei mir alle relevanten Geräte auf Alias umgestellt. Jetzt kann/muss man sich zwischen Pest und Cholera entscheiden....
                                          Es geht mir speziell um die Temperaturen und die Batterien als Volt.

                                          Speak kann Zahlen mit Punkt oder Komma ansagen, wenn man die Ausgabe richtig baut.
                                          SSML kann nur mit Kommas umgehen und kann keine Zahlen mit Punkt ansagen (ist ja eigentlich Text)

                                          Hier mal zum testen eine Ansage. Dort ist ein Wert mit Komma und einer mit Punkt. Wenn Du diesen Satz mal bei speak einfügst, erfolgt die Ansage korrekt, selbst die ssml Zeichen werden ignoriert.

                                          Der gleiche Satz in den ssml DP vom Alexa2 Adapter geht dann eben nur korrekt bei dem Komma Wert.


                                          <speak><voice name="Alexa">Hier der Haus Temperaturenstatus für Dich. Aussentemperatur 19.8 Grad, Badezimmer 25,3 Grad , das wäre dann alles.</voice></speak>

                                          Jetzt stehe ich gerade vor der Entscheidung, nur noch speak zu verwenden. (auch wegen der 250 Zeichen Geschichte)

                                          Man kann die Temperaturen und auch die Volt Anzeigen direkt mit Komma im Alias anzeigen/erstellen (als Text und nicht als Zahl, wenn der Original DP read only ist), dann könnte man auch die Batterien absteigend/aufsteigend nach Volt in den Tabellen sortieren, das geht mit dem Punkt wiederum nicht. Aliase mit Komma lassen sich dann wiederum nicht iot als einzelnes Gerät nutzen, dort wird es als Zahl mit Punkt benötigt....

                                          Lange Rede kurzer Sinn, wenn es nur um die Anzeige / Ansage der vom Blockly erstellten Ansagen geht, dann gefällt mir speak mit Komma Werten zum sortieren besser.

                                          Hier mal gekürzte Scripte zum Alias erstellen

                                          // Original-Datenpunkt
                                          const idOrigin = 'hm-rpc.0.xxxx.1.ACTUAL_TEMPERATURE'/*Temperatursensor aussen ACTUAL TEMPERATURE*/
                                          
                                          // Alias-Datenpunkt
                                          const idAlias = 'Temperaturen.Aussentemperatur';
                                          var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                                          // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                                          nameAlias = 'Aussentemperatur';
                                          typeAlias = 'string'; // oder 'number'
                                          read = "val.toFixed(1).replace('.',',')";// write = "val ? 'Ein' : 'Aus'";
                                          role = 'value.temperature';
                                          unit = '°C'; // nur für Zahlen
                                          gewerk = 'temperaturen_alias'; // Groß-/Kleinschreibung in der ID beachten !
                                          
                                          function createAlias(idSrc, idDst) {
                                           if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
                                           else {
                                              var obj = {};
                                              obj.type = 'state';
                                              obj.common = getObject(idSrc).common;
                                              obj.common.alias = {};
                                              obj.common.alias.id = idSrc;
                                              if(typeAlias) obj.common.type = typeAlias;
                                              if(obj.common.read !== false && read) obj.common.alias.read = read;
                                              if(obj.common.write !== false && write) obj.common.alias.write = write;
                                              if(nameAlias) obj.common.name = nameAlias;
                                              if(role) obj.common.role = role;
                                              if(desc) obj.common.desc = desc;
                                              if(min !== undefined) obj.common.min = min;
                                              if(max !== undefined) obj.common.max = max;
                                              if(unit) obj.common.unit = unit;
                                              if(states) obj.common.states = states;
                                              if(custom && obj.common.custom) obj.common.custom = custom;
                                              obj.native = {};
                                              setObject(idDst, obj);
                                              if(raum && getObject('enum.rooms.' + raum)) {
                                                 let obj = getObject('enum.rooms.' + raum)
                                                 obj.common.members.push(idDst);
                                                 setObject('enum.rooms.' + raum, obj);
                                              }
                                              if(gewerk && getObject('enum.functions.' + gewerk)) {
                                                 let obj = getObject('enum.functions.' + gewerk)
                                                 obj.common.members.push(idDst);
                                                 setObject('enum.functions.' + gewerk, obj);
                                              }
                                           } 
                                          }
                                          
                                          createAlias(idOrigin, 'alias.0.' + idAlias);
                                          
                                          

                                          // Original-Datenpunkt
                                          const idOrigin = 'hm-rpc.0.0010D8A98AD4AC.1.ACTUAL_TEMPERATURE'/*Temperatursensor aussen ACTUAL TEMPERATURE*/
                                           
                                          // Alias-Datenpunkt
                                          const idAlias = 'Temperaturen_Punkt.Aussentemperatur';
                                          var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                                          // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                                          nameAlias = 'Aussentemperatur';
                                          //typeAlias = 'string'; // oder 'number'
                                          read = "Math.round(val * 10) / 10";// write = "val ? 'Ein' : 'Aus'";
                                          role = 'value.temperature';
                                          unit = '°C'; // nur für Zahlen
                                          gewerk = 'test'; // Groß-/Kleinschreibung in der ID beachten !
                                           
                                          function createAlias(idSrc, idDst) {
                                            if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
                                            else {
                                               var obj = {};
                                               obj.type = 'state';
                                               obj.common = getObject(idSrc).common;
                                               obj.common.alias = {};
                                               obj.common.alias.id = idSrc;
                                               if(typeAlias) obj.common.type = typeAlias;
                                               if(obj.common.read !== false && read) obj.common.alias.read = read;
                                               if(obj.common.write !== false && write) obj.common.alias.write = write;
                                               if(nameAlias) obj.common.name = nameAlias;
                                               if(role) obj.common.role = role;
                                               if(desc) obj.common.desc = desc;
                                               if(min !== undefined) obj.common.min = min;
                                               if(max !== undefined) obj.common.max = max;
                                               if(unit) obj.common.unit = unit;
                                               if(states) obj.common.states = states;
                                               if(custom && obj.common.custom) obj.common.custom = custom;
                                               obj.native = {};
                                               setObject(idDst, obj);
                                               if(raum && getObject('enum.rooms.' + raum)) {
                                                  let obj = getObject('enum.rooms.' + raum)
                                                  obj.common.members.push(idDst);
                                                  setObject('enum.rooms.' + raum, obj);
                                               }
                                               if(gewerk && getObject('enum.functions.' + gewerk)) {
                                                  let obj = getObject('enum.functions.' + gewerk)
                                                  obj.common.members.push(idDst);
                                                  setObject('enum.functions.' + gewerk, obj);
                                               }
                                            } 
                                          }
                                           
                                          createAlias(idOrigin, 'alias.0.' + idAlias);
                                          
                                          

                                          Hier noch für Batterien Volt mit Komma als Text

                                          // Original-Datenpunkt
                                          const idOrigin = 'hm-rpc.0.xxx.0.OPERATING_VOLTAGE'/*Bewegungsmelder 55 Kellertreppe:0 OPERATING VOLTAGE*/;
                                          // Alias-Datenpunkt
                                          const idAlias = 'Batterien_Volt.Bewegungsmelder_Kellertreppe';
                                          var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk;
                                          // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
                                          nameAlias = 'Bewegungsmelder Kellertreppe';
                                          typeAlias = 'string'; // oder 'number'
                                          read = "val.toFixed(1).replace('.',',')";// write = "val ? 'Ein' : 'Aus'";
                                          role = 'value.voltage';
                                          unit = 'Volt'; // nur für Zahlen
                                          custom = []; // verhindert doppelte Ausführung von history, ...
                                          gewerk = 'batterien_volt_alias'; // Groß-/Kleinschreibung in der ID beachten !
                                           
                                          function createAlias(idSrc, idDst) {
                                            if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
                                            else {
                                               var obj = {};
                                               obj.type = 'state';
                                               obj.common = getObject(idSrc).common;
                                               obj.common.alias = {};
                                               obj.common.alias.id = idSrc;
                                               if(typeAlias) obj.common.type = typeAlias;
                                               if(obj.common.read !== false && read) obj.common.alias.read = read;
                                               if(obj.common.write !== false && write) obj.common.alias.write = write;
                                               if(nameAlias) obj.common.name = nameAlias;
                                               if(role) obj.common.role = role;
                                               if(desc) obj.common.desc = desc;
                                               if(min !== undefined) obj.common.min = min;
                                               if(max !== undefined) obj.common.max = max;
                                               if(unit) obj.common.unit = unit;
                                               if(states) obj.common.states = states;
                                               if(custom && obj.common.custom) obj.common.custom = custom;
                                               obj.native = {};
                                               setObject(idDst, obj);
                                               if(raum && getObject('enum.rooms.' + raum)) {
                                                  let obj = getObject('enum.rooms.' + raum)
                                                  obj.common.members.push(idDst);
                                                  setObject('enum.rooms.' + raum, obj);
                                               }
                                               if(gewerk && getObject('enum.functions.' + gewerk)) {
                                                  let obj = getObject('enum.functions.' + gewerk)
                                                  obj.common.members.push(idDst);
                                                  setObject('enum.functions.' + gewerk, obj);
                                               }
                                            } 
                                          }
                                           
                                          createAlias(idOrigin, 'alias.0.' + idAlias);
                                          
                                          

                                          Ich überlege alles mit speak zu machen und ssml ganz raus zu werfen, was meinst Du ?

                                          dirk1962D sigi234S 2 Antworten Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          875

                                          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