Skip to content
  • 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
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Skriptsammlung für den neuen ALEXA2.0 Adapter

NEWS

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

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

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

Skriptsammlung für den neuen ALEXA2.0 Adapter

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
184 Beiträge 45 Kommentatoren 45.2k Aufrufe 19 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 Offline
    dslraserD Offline
    dslraser
    Forum Testing Most Active
    schrieb am zuletzt editiert von
    #148

    @tadek:

    kurze Hilfeanfrage: Nachdem ich mein Amazon PW geändert habe habe ich den Adapter neu istalliert.

    Jetzt wird der auch grün und alle Geräte werden angezeigt.

    Aber weder weder bekomme ich ein update der History noch funktioniert Speech für die Sprachausgabe.

    Hat jemand eine Idee, woran das liegen könnte? ` Haken bei Pushverbindung gesetzt ?

    1 Antwort Letzte Antwort
    0
    • M Offline
      M Offline
      Mr.X
      schrieb am zuletzt editiert von
      #149

      ja, der war standardmäßig an.

      Auch kommt kein Update, wenn ich den manuel über History –> #trigger anstoße

      1 Antwort Letzte Antwort
      0
      • Rene.HomeR Offline
        Rene.HomeR Offline
        Rene.Home
        schrieb am zuletzt editiert von
        #150

        Hallo,

        ich habe da mit dem triggern des Fensterskriptes ein Logik-Problem. Es werden die Fenster gezählt aber ich bekomme es gedanklich nicht auf die Reihe wie die Zählung angetriggert wird

        Die Einrichtung habe ich wie folgt gemacht:

        1. das Skript "Fensterstatus" mit dem folgenden Inhalt angelegt und laufen gelassen.

        ! ````
        // Status Fenster. Das Script zählt alle Fenster im Gewerk Verschluss mit der id=*.STATE
        !
        ! var logging = false;
        !
        ! var
        ! idAnzahlAuf = 'javascript.0.Status.Fenster.Anzahl_auf',
        ! idAnzahl = 'javascript.0.Status.Fenster.Anzahl',
        ! idText = 'javascript.0.Status.Fenster.Text',
        ! idRaum = 'javascript.0.Status.Fenster.Raum',
        ! idAnsage = 'javascript.0.Status.Fenster.Ansage';
        !
        ! // Ab hier nix mehr ändern
        ! createState(idAnzahl, { // Anzahl der vorhandenen Fenster
        ! type: 'number',
        ! name: 'Anzahl aller Fenster',
        ! min: 0,
        ! def: 0,
        ! role: 'value'
        ! });
        ! createState(idAnzahlAuf, { // Anzahl der Fenster, die auf sind
        ! type: 'number',
        ! name: 'Anzahl der geoeffneten Fenster',
        ! min: 0,
        ! def: 0,
        ! role: 'value'
        ! });
        ! createState(idText, { // Anzahl der geoeffneten Fenster und deren Namen
        ! type: 'string',
        ! name: 'geoeffnete Fenster',
        ! desc: 'Namen der geoeffneten Fenster',
        ! def: ' ',
        ! role: 'value'
        ! });
        ! createState(idAnsage, {
        ! type: 'string',
        ! name: 'geoeffnete Fenster (Ansage)',
        ! desc: 'Namen der geoeffneten Fenster (für Ansage aufbereitet)',
        ! def: ' ',
        ! role: 'value'
        ! });
        ! createState(idRaum, { // Räume, in denen Fenster geoeffnet sind
        ! type: 'string',
        ! name: 'Räume mit geoeffneten Fenster',
        ! desc: 'Namen der Räume, in denen Fenster geoeffnet sind',
        ! def: ' ',
        ! role: 'value'
        ! });
        !
        ! var cacheSelectorState = $('channelstate.id=*.STATE'); // Gewerk Verschluss
        ! function checkDevices(obj) {
        ! // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Verschluss auf 0
        ! var anzahlFensterAuf = 0;
        ! var anzahlFenster = 0;
        ! var textFensterAuf = [];
        ! var textRaum = [];
        ! if (logging) {
        ! log('++++++ Fenster Anzahl ++++ ');
        ! log('#### SCHALTER ##### ');
        ! }
        ! cacheSelectorState.each(function(id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Verschluss
        ! var obj = getObject(id);
        ! var name = getObject(id).common.name;
        ! var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
        ! var devicename = name.substring(0, name.indexOf(".STATE")); //.STATE aus Text entfernen
        ! var raumname = getObject(id, "rooms");
        !
        ! if (logging) {
        ! log('-------');
        ! log('Kanal: ' + name);
        ! log('Status: ' + status);
        ! }
        ! if (status) { // wenn Zustand = true, dann wird die Anzahl der Fenster hochgezählt
        ! ++anzahlFensterAuf;
        ! textFensterAuf.push(devicename); // Zu Array hinzufügen
        ! textRaum.push(raumname.enumNames); //
        ! }
        ! ++anzahlFenster; // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
        ! });
        ! textRaum = deleteDuplicates(textRaum);
        !
        ! // Array mit Fensternamen sortieren
        ! textFensterAuf.sort();
        ! textRaum.sort();
        ! // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon auf) ausgegeben
        ! if (logging) log("Text: " + textFensterAuf);
        ! if (logging) log("Anzahl Fenster: " + anzahlFenster + " # davon Fenster auf: " + anzahlFensterAuf);
        ! // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
        ! setState(idText, textFensterAuf.join(',\nund\n')); // Schreibt die aktuelle Namen der geoeffneten Fenster
        ! setState(idAnzahlAuf, textFensterAuf.length); // Schreibt die aktuelle Anzahl der geoeffneten Fenster
        ! setState(idAnzahl, anzahlFenster); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Verschluss
        ! // setState(idRaum, textRaum.join(',
        ')); // Räume, in denen Fenster geoeffnet sind
        ! setState(idRaum, textRaum.join(',\nund\n')); // Räume, in denen Fenster geoeffnet sind
        ! }
        !
        ! // Trigger
        ! cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Verschluss
        ! if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
        ! checkDevices();
        ! });
        !
        ! function main() {
        ! setTimeout(function() {
        ! if (logging) log('Auslöser Skriptstart');
        ! checkDevices();
        ! }, 2000);
        ! }
        !
        ! main(); // Skriptstart-Auslöser
        !
        ! // Aufbereitung für Ansage
        ! function strip_tags(data) {
        ! var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
        ! return (rueckgabe);
        ! }
        !
        ! on(idText, function(obj) {
        ! var text = obj.state.val;
        ! text = (text.length > 1) ? ' ' + strip_tags(text) : 'Alle Fenster geschlossen';
        ! setState(idAnsage, text);
        ! });

        
        das Ergebnis war dann die richtige Anzahl an Fenster
        
        2\. das Skript "deleteDuplicates" unter Global gepackt
        
        3\. das Blocky Skript mit dem Namen "Fensterabfrage" eingerichtet und entsprechend an den Echo angepasst. Die Ausgabe funktioniert.
        
        4\. in der Cloud das Skript "scriptEnabled.rules.Alexa_sagt.Fensterabfrage" als Smart Gerät eingefügt.
        
        Jetzt kommt mein Verständnisproblem. Das Fensterabfrage-Blocky-Skript macht ja nur eine Ausgabe. Die Ermittlung der offenen und geschlossenen Fenster erfolgt ja in dem Skript unter Punkt 1\. Müsste ich dieses dann nicht als Smart Gerät einbinden? Wenn ich das aber mache, wie wird dann das Blocky aufgerufen um die Ausgabe an den Speak vom Echo zu geben?
        
        Kann mir das bitte einer erklären. Wo liegt mein Fehler in der Logik.Für mich ist das interessant da ich noch andere Themen umsetzen will und entsprechende Skripte entwickeln und implementieren möchte.
        
        Vielen Dank schon mal im Vorfeld
        1 Antwort Letzte Antwort
        0
        • dslraserD Offline
          dslraserD Offline
          dslraser
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #151

          @Rene.Home:

          Hallo,

          ich habe da mit dem triggern des Fensterskriptes ein Logik-Problem. Es werden die Fenster gezählt aber ich bekomme es gedanklich nicht auf die Reihe wie die Zählung angetriggert wird

          Die Einrichtung habe ich wie folgt gemacht:

          1. das Skript "Fensterstatus" mit dem folgenden Inhalt angelegt und laufen gelassen.

          ! ````
          // Status Fenster. Das Script zählt alle Fenster im Gewerk Verschluss mit der id=*.STATE
          !
          ! var logging = false;
          !
          ! var
          ! idAnzahlAuf = 'javascript.0.Status.Fenster.Anzahl_auf',
          ! idAnzahl = 'javascript.0.Status.Fenster.Anzahl',
          ! idText = 'javascript.0.Status.Fenster.Text',
          ! idRaum = 'javascript.0.Status.Fenster.Raum',
          ! idAnsage = 'javascript.0.Status.Fenster.Ansage';
          !
          ! // Ab hier nix mehr ändern
          ! createState(idAnzahl, { // Anzahl der vorhandenen Fenster
          ! type: 'number',
          ! name: 'Anzahl aller Fenster',
          ! min: 0,
          ! def: 0,
          ! role: 'value'
          ! });
          ! createState(idAnzahlAuf, { // Anzahl der Fenster, die auf sind
          ! type: 'number',
          ! name: 'Anzahl der geoeffneten Fenster',
          ! min: 0,
          ! def: 0,
          ! role: 'value'
          ! });
          ! createState(idText, { // Anzahl der geoeffneten Fenster und deren Namen
          ! type: 'string',
          ! name: 'geoeffnete Fenster',
          ! desc: 'Namen der geoeffneten Fenster',
          ! def: ' ',
          ! role: 'value'
          ! });
          ! createState(idAnsage, {
          ! type: 'string',
          ! name: 'geoeffnete Fenster (Ansage)',
          ! desc: 'Namen der geoeffneten Fenster (für Ansage aufbereitet)',
          ! def: ' ',
          ! role: 'value'
          ! });
          ! createState(idRaum, { // Räume, in denen Fenster geoeffnet sind
          ! type: 'string',
          ! name: 'Räume mit geoeffneten Fenster',
          ! desc: 'Namen der Räume, in denen Fenster geoeffnet sind',
          ! def: ' ',
          ! role: 'value'
          ! });
          !
          ! var cacheSelectorState = $('channelstate.id=*.STATE'); // Gewerk Verschluss
          ! function checkDevices(obj) {
          ! // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Verschluss auf 0
          ! var anzahlFensterAuf = 0;
          ! var anzahlFenster = 0;
          ! var textFensterAuf = [];
          ! var textRaum = [];
          ! if (logging) {
          ! log('++++++ Fenster Anzahl ++++ ');
          ! log('#### SCHALTER ##### ');
          ! }
          ! cacheSelectorState.each(function(id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Verschluss
          ! var obj = getObject(id);
          ! var name = getObject(id).common.name;
          ! var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
          ! var devicename = name.substring(0, name.indexOf(".STATE")); //.STATE aus Text entfernen
          ! var raumname = getObject(id, "rooms");
          !
          ! if (logging) {
          ! log('-------');
          ! log('Kanal: ' + name);
          ! log('Status: ' + status);
          ! }
          ! if (status) { // wenn Zustand = true, dann wird die Anzahl der Fenster hochgezählt
          ! ++anzahlFensterAuf;
          ! textFensterAuf.push(devicename); // Zu Array hinzufügen
          ! textRaum.push(raumname.enumNames); //
          ! }
          ! ++anzahlFenster; // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
          ! });
          ! textRaum = deleteDuplicates(textRaum);
          !
          ! // Array mit Fensternamen sortieren
          ! textFensterAuf.sort();
          ! textRaum.sort();
          ! // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon auf) ausgegeben
          ! if (logging) log("Text: " + textFensterAuf);
          ! if (logging) log("Anzahl Fenster: " + anzahlFenster + " # davon Fenster auf: " + anzahlFensterAuf);
          ! // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
          ! setState(idText, textFensterAuf.join(',\nund\n')); // Schreibt die aktuelle Namen der geoeffneten Fenster
          ! setState(idAnzahlAuf, textFensterAuf.length); // Schreibt die aktuelle Anzahl der geoeffneten Fenster
          ! setState(idAnzahl, anzahlFenster); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Verschluss
          ! // setState(idRaum, textRaum.join(',
          ')); // Räume, in denen Fenster geoeffnet sind
          ! setState(idRaum, textRaum.join(',\nund\n')); // Räume, in denen Fenster geoeffnet sind
          ! }
          !
          ! // Trigger
          ! cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Verschluss
          ! if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
          ! checkDevices();
          ! });
          !
          ! function main() {
          ! setTimeout(function() {
          ! if (logging) log('Auslöser Skriptstart');
          ! checkDevices();
          ! }, 2000);
          ! }
          !
          ! main(); // Skriptstart-Auslöser
          !
          ! // Aufbereitung für Ansage
          ! function strip_tags(data) {
          ! var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
          ! return (rueckgabe);
          ! }
          !
          ! on(idText, function(obj) {
          ! var text = obj.state.val;
          ! text = (text.length > 1) ? ' ' + strip_tags(text) : 'Alle Fenster geschlossen';
          ! setState(idAnsage, text);
          ! });

          
          das Ergebnis war dann die richtige Anzahl an Fenster
          
          2\. das Skript "deleteDuplicates" unter Global gepackt
          
          3\. das Blocky Skript mit dem Namen "Fensterabfrage" eingerichtet und entsprechend an den Echo angepasst. Die Ausgabe funktioniert.
          
          4\. in der Cloud das Skript "scriptEnabled.rules.Alexa_sagt.Fensterabfrage" als Smart Gerät eingefügt.
          
          Jetzt kommt mein Verständnisproblem. Das Fensterabfrage-Blocky-Skript macht ja nur eine Ausgabe. Die Ermittlung der offenen und geschlossenen Fenster erfolgt ja in dem Skript unter Punkt 1\. Müsste ich dieses dann nicht als Smart Gerät einbinden? Wenn ich das aber mache, wie wird dann das Blocky aufgerufen um die Ausgabe an den Speak vom Echo zu geben?
          
          Kann mir das bitte einer erklären. Wo liegt mein Fehler in der Logik.Für mich ist das interessant da ich noch andere Themen umsetzen will und entsprechende Skripte entwickeln und implementieren möchte.
          
          Vielen Dank schon mal im Vorfeld `  
          

          Ich habe mir einen extra Datenpunkt angelegt, denn wenn Du das Script in den Cloudadapter packst sabbelt Alexa ja auch beim Scriptstart los. Bei mehreren Scripten wird das dann lustig. (oder beim JS Adapter Neustart….oder mitten in der Nacht)

          z.B. so,

          //Alexa Fensterabfrage-Ansage
          createState("Eigene_Datenpunkte.Alexa_antwortet.Fensteransage", {
              name: 'Alexa_Fensteransage', 
              role: 'switch',
              type: 'boolean', 
              read:  true, 
              write: true,
              "smartName": {
              "de": "Alexa Fensteransage",
              "smartType": "SWITCH"
          }
          });
          

          kannst aber auch einen Button machen

          //Alexa Fensterabfrage-Ansage
          createState("Eigene_Datenpunkte.Alexa_antwortet.Fensteransage", {
              name: 'Alexa_Fensteransage', 
              "type": "object",
              "role": "button",
              read:  true, 
              write: true,
              "smartName": {
              "de": "Alexa Fensteransage",
              "smartType": "SWITCH"
          }
          });
          

          Dann noch ein Blockly was die Fensterdatenpunkte (oder auch Licht, oder Steckdosen usw) von Deinem Script abfragt.

          z.B. so (Screenshot passt nicht ganz drauf)
          3822_bildschirmfoto_2018-11-08_um_21.44.59.png

          Und in der Alexa App auf dem Handy eine neue Routine anlegen, wo dann Dein neuer Datenpunkt geschaltet wird….z.B. Alexa, sind noch Fenster auf.

          Hier noch der Blockly Export

          ! ````
          <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="4O(a~f,K8t9;VKQ1gVX*" x="-538" y="-1138"><mutation items="1"></mutation>
          <field name="CONDITION">any</field>

          <value name="OID0"><shadow type="field_oid" id="gVMgi@bFNV0L^d#eht9#"><field name="oid">javascript.0.Eigene_Datenpunkte.Alexa_antwortet.Fensteransage</field></shadow></value> 
          <statement name="STATEMENT"><block type="controls_if" id="{_JT|3Mpv*tSOVWD3Pz6"><value name="IF0"><block type="logic_compare" id="D?,*QGBBwauCm,Qte=Q-"><field name="OP">EQ</field>
                  <value name="A"><block type="get_value" id="]irLwLWGul].x{m`.#.@"><field name="ATTR">val</field>
                      <field name="OID">javascript.0.Status.Fenster.Anzahl_auf</field></block></value> 
                  <value name="B"><block type="math_number" id="5LL6xi4F_7}-aEi^jHY@"><field name="NUM">0</field></block></value></block></value> 
              <statement name="DO0"><block type="variables_set" id="5VFfHYTB!S7A^A*?SicA"><field name="VAR">Ausgabetext</field>
                  <value name="VALUE"><block type="text_join" id="4?k[0reCRn.mjkxHg41~"><mutation items="2"></mutation>
                      <value name="ADD0"><block type="text" id="75Z)Wn`YF@;38~bIM;pA"><field name="TEXT">aktuell sind,</field></block></value> 
                      <value name="ADD1"><block type="get_value" id="Vh/8rxU]yD!3mT}0y[eC"><field name="ATTR">val</field>
                          <field name="OID">javascript.0.Status.Fenster.Ansage</field></block></value></block></value> 
                  <next><block type="timeouts_settimeout" id="xA_MJ^@=AB=-WtDTe(3}"><field name="NAME">timeout</field>
                      <field name="DELAY">500</field>
                      <field name="UNIT">ms</field>
                      <statement name="STATEMENT"><block type="comment" id="s30b2{fSQ:a0uC3`+QWU"><field name="COMMENT">Wohnzimmer</field>
                          <next><block type="controls_if" id="l(E24=q]l]b,GJDj4dSj"><value name="IF0"><block type="logic_compare" id="MKwJn0C!O]xc!~.9|B`*"><field name="OP">EQ</field>
                                  <value name="A"><block type="get_value" id="p-SHbJ5Dmwr6djxg2ohH"><field name="ATTR">val</field>
                                      <field name="OID">alexa2.0.History.name</field></block></value> 
                                  <value name="B"><block type="text" id="?}A;8(IyMF%F@(t]Kc~+"><field name="TEXT">Wohnzimmer</field></block></value></block></value> 
                              <statement name="DO0"><block type="control" id=")M^jLcZ!hCpj,X={-`nV"><mutation delay_input="false"></mutation>
                                  <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE"><block type="variables_get" id="p)bNOdcZFVoq1e^M5V-."><field name="VAR">Ausgabetext</field></block></value></block></statement> 
                              <next><block type="comment" id="As,dG(xO[B@wIYcyAG?h"><field name="COMMENT">Küche</field>
                                  <next><block type="controls_if" id="wrH-}P(84mn7Y/rg8A[."><value name="IF0"><block type="logic_compare" id="kg.QKB751NaS#Ihk1Vlg"><field name="OP">EQ</field>
                                          <value name="A"><block type="get_value" id="qnTz1Oe31sq:NXjmbxIJ"><field name="ATTR">val</field>
                                              <field name="OID">alexa2.0.History.name</field></block></value> 
                                          <value name="B"><block type="text" id="3=W.?c8BZN+QrGX4xL}h"><field name="TEXT">Küche</field></block></value></block></value> 
                                      <statement name="DO0"><block type="control" id="}?dK++*V.7JQcjG{3uhB"><mutation delay_input="false"></mutation>
                                          <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                          <field name="WITH_DELAY">FALSE</field>
                                          <value name="VALUE"><block type="variables_get" id="qHoN]~u1FI@iDQs*2C2v"><field name="VAR">Ausgabetext</field></block></value></block></statement> 
                                      <next><block type="comment" id="_amxz6B=9F}_2uEGsK}`"><field name="COMMENT">Badezimmer</field>
                                          <next><block type="controls_if" id=".n7JtGwDJDGfaeyl!8*B"><value name="IF0"><block type="logic_compare" id="I-@9%{Ng!%}9rE#IESc;"><field name="OP">EQ</field>
                                                  <value name="A"><block type="get_value" id="c?dSeG!fu]W8UO@?D4I3"><field name="ATTR">val</field>
                                                      <field name="OID">alexa2.0.History.name</field></block></value> 
                                                  <value name="B"><block type="text" id="MivGV@*kt)3rY9COKpKA"><field name="TEXT">Badezimmer</field></block></value></block></value> 
                                              <statement name="DO0"><block type="control" id="zTwXc~r8Ldt0u-5TNcVn"><mutation delay_input="false"></mutation>
                                                  <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                                  <field name="WITH_DELAY">FALSE</field>
                                                  <value name="VALUE"><block type="variables_get" id="*X*~qQG3]~[NC{WMMndW"><field name="VAR">Ausgabetext</field></block></value></block></statement> 
                                              <next><block type="comment" id="CJNG59[?CJ|U-=Bf]c)z"><field name="COMMENT">Gästezimmer</field>
                                                  <next><block type="controls_if" id="OC]k1_}iDlExQPVc=(ib"><value name="IF0"><block type="logic_compare" id="OBIXw6hJ@]2Xr`HBIz5h"><field name="OP">EQ</field>
                                                          <value name="A"><block type="get_value" id="=x~5W)ns/VV;c|RFqQcE"><field name="ATTR">val</field>
                                                              <field name="OID">alexa2.0.History.name</field></block></value> 
                                                          <value name="B"><block type="text" id="IxW:hplIvDQm1ax=@X+M"><field name="TEXT">Gästezimmer</field></block></value></block></value> 
                                                      <statement name="DO0"><block type="control" id="g+2]wvsrhR8vxv7c,kJ_"><mutation delay_input="false"></mutation>
                                                          <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                                          <field name="WITH_DELAY">FALSE</field>
                                                          <value name="VALUE"><block type="variables_get" id="5q6/z~S`0DeJ6sYrWhj1"><field name="VAR">Ausgabetext</field></block></value></block></statement> 
                                                      <next><block type="comment" id="C6,wSh?BEZ,G:B9Tl@#w"><field name="COMMENT">Flur</field>
                                                          <next><block type="controls_if" id="l/g@UNw6pzeQ6_698R:-"><value name="IF0"><block type="logic_compare" id="=Z)D6qrCzY2oU/fVV93A"><field name="OP">EQ</field>
                                                                  <value name="A"><block type="get_value" id="StsaG2CB;*5f5wIvH,kE"><field name="ATTR">val</field>
                                                                      <field name="OID">alexa2.0.History.name</field></block></value> 
                                                                  <value name="B"><block type="text" id="7N;yy7cC=tE`}MYOFfF6"><field name="TEXT">Flur</field></block></value></block></value> 
                                                              <statement name="DO0"><block type="control" id="5#-V887QhCCSAzI+twok"><mutation delay_input="false"></mutation>
                                                                  <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                                                  <field name="WITH_DELAY">FALSE</field>
                                                                  <value name="VALUE"><block type="variables_get" id="NurE:%K_z!^Vlj(fn5qI"><field name="VAR">Ausgabetext</field></block></value></block></statement> 
                                                              <next><block type="comment" id="qKD3bDxHV;NBtuFFs|e."><field name="COMMENT">Schlafzimmer</field>
                                                                  <next><block type="controls_if" id="iMz(H}c1#NO@KVNnhnlQ"><value name="IF0"><block type="logic_compare" id="z`vyyAWvaYdxt8YZt,0O"><field name="OP">EQ</field>
                                                                          <value name="A"><block type="get_value" id="mEF)naqwJ#xLCe1NeKO:"><field name="ATTR">val</field>
                                                                              <field name="OID">alexa2.0.History.name</field></block></value> 
                                                                          <value name="B"><block type="text" id="F7::fb4cokeJJD:fk~pV"><field name="TEXT">Schlafzimmer</field></block></value></block></value> 
                                                                      <statement name="DO0"><block type="control" id="{2s/h/xpkm]F+1ik-f4m"><mutation delay_input="false"></mutation>
                                                                          <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                                                          <field name="WITH_DELAY">FALSE</field>
                                                                          <value name="VALUE"><block type="variables_get" id="ft7Uf33@IB1zu_xdTAxn"><field name="VAR">Ausgabetext</field></block></value></block></statement> 
                                                                      <next><block type="comment" id="wIYZ1bLOSjFi=NxT9WcM"><field name="COMMENT">Keller-Flur</field>
                                                                          <next><block type="controls_if" id="%EEK(pKJ%lGo)32cR7qF"><value name="IF0"><block type="logic_compare" id="7Mb(anM]kR9056)gxqnW"><field name="OP">EQ</field>
                                                                                  <value name="A"><block type="get_value" id="xF~b7`{fV||4n}zB-}.u"><field name="ATTR">val</field>
                                                                                      <field name="OID">alexa2.0.History.name</field></block></value> 
                                                                                  <value name="B"><block type="text" id="VH^2CJsPGOd!6hGoqdK4"><field name="TEXT">Keller-Flur</field></block></value></block></value> 
                                                                              <statement name="DO0"><block type="control" id="F_[xezXeyr~*(A=q.YFJ"><mutation delay_input="false"></mutation>
                                                                                  <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                                                                  <field name="WITH_DELAY">FALSE</field>
                                                                                  <value name="VALUE"><block type="variables_get" id="SjtrIJ?gA20oj88N|srb"><field name="VAR">Ausgabetext</field></block></value></block></statement> 
                                                                              <next><block type="comment" id="E#D1a/,rcH`dm3?Nx^:q"><field name="COMMENT">Werkstatt</field>
                                                                                  <next><block type="controls_if" id="=s~d:-WIg1#TE`^zf9[4"><value name="IF0"><block type="logic_compare" id="*:X%VM^+2MoYl-:u!WK`"><field name="OP">EQ</field>
                                                                                          <value name="A"><block type="get_value" id="6fnRWyK0;P(.x;H{)22T"><field name="ATTR">val</field>
                                                                                              <field name="OID">alexa2.0.History.name</field></block></value> 
                                                                                          <value name="B"><block type="text" id="S:#keRENw1gGjHWLUD!-"><field name="TEXT">Werkstatt</field></block></value></block></value> 
                                                                                      <statement name="DO0"><block type="control" id="ql@`4(PNtjS_AM0bEqD+"><mutation delay_input="false"></mutation>
                                                                                          <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                                                                          <field name="WITH_DELAY">FALSE</field>
                                                                                          <value name="VALUE"><block type="variables_get" id="P[ojMqQDVRouu#vN~{[%"><field name="VAR">Ausgabetext</field></block></value></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></statement> 
              <next><block type="controls_if" id="N+F+/fYbDeMZL#(HaEo|"><value name="IF0"><block type="logic_compare" id="T+)nZ(]w4LgDY/|?p56g"><field name="OP">NEQ</field>
                      <value name="A"><block type="get_value" id="k=BXdEuQo7?Mo%bdfdng"><field name="ATTR">val</field>
                          <field name="OID">javascript.0.Status.Fenster.Anzahl_auf</field></block></value> 
                      <value name="B"><block type="math_number" id="j-blGyC;V4jTLHKvikXr"><field name="NUM">0</field></block></value></block></value> 
                  <statement name="DO0"><block type="variables_set" id="mk,--n%8x}e1WshOCBc."><field name="VAR">Ausgabetext</field>
                      <value name="VALUE"><block type="text_join" id="Ew3VTw7qG|Fx:}vq3hIR"><mutation items="3"></mutation>
                          <value name="ADD0"><block type="text" id="Lo0@rGsN^gt1iZ#@~A/7"><field name="TEXT">aktuell sind im,</field></block></value> 
                          <value name="ADD1"><block type="get_value" id="i?[Ze,W23|M`_S5@d?;q"><field name="ATTR">val</field>
                              <field name="OID">javascript.0.Status.Fenster.Raum</field></block></value> 
                          <value name="ADD2"><block type="text" id="NqEob9;8UT11wT`dCQi#"><field name="TEXT">geöffnete Fenster</field></block></value></block></value> 
                      <next><block type="timeouts_settimeout" id="^c,bQ)^![(HGz2QrWw/u"><field name="NAME">timeout2</field>
                          <field name="DELAY">500</field>
                          <field name="UNIT">ms</field>
                          <statement name="STATEMENT"><block type="comment" id="3e5[cR-lQ2P@g3-V]T.*"><field name="COMMENT">Wohnzimmer</field>
                              <next><block type="controls_if" id="KauxWUEJAP2sp)D%Cdm9"><value name="IF0"><block type="logic_compare" id="F4MK(fbY8WU[yWO)@Z~O"><field name="OP">EQ</field>
                                      <value name="A"><block type="get_value" id="Oe@)VM+1Y`_1YJn?6xyl"><field name="ATTR">val</field>
                                          <field name="OID">alexa2.0.History.name</field></block></value> 
                                      <value name="B"><block type="text" id="Q8@T8q|P]D*WR6aG#*j0"><field name="TEXT">Wohnzimmer</field></block></value></block></value> 
                                  <statement name="DO0"><block type="control" id="r|w?GKF2R8A%WSX@AP[|"><mutation delay_input="false"></mutation>
                                      <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                      <field name="WITH_DELAY">FALSE</field>
                                      <value name="VALUE"><block type="variables_get" id="HTcKd2V9F)=k:Ae4mS}F"><field name="VAR">Ausgabetext</field></block></value></block></statement> 
                                  <next><block type="comment" id="Lg@:ha-a2x,0rfhC.]_="><field name="COMMENT">Küche</field>
                                      <next><block type="controls_if" id="DTWD3KK_f2CmowWl}Dw+"><value name="IF0"><block type="logic_compare" id="*r~k%Po!vzUQHybU`)sv"><field name="OP">EQ</field>
                                              <value name="A"><block type="get_value" id="285L,qT@eWkZS(#hgXnl"><field name="ATTR">val</field>
                                                  <field name="OID">alexa2.0.History.name</field></block></value> 
                                              <value name="B"><block type="text" id="w!HtM,nb,KI1aqaOeI36"><field name="TEXT">Küche</field></block></value></block></value> 
                                          <statement name="DO0"><block type="control" id="_H{%k4b|sj!:P^rDu%};"><mutation delay_input="false"></mutation>
                                              <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                              <field name="WITH_DELAY">FALSE</field>
                                              <value name="VALUE"><block type="variables_get" id="~51B8(3{stq1BpR1J~p%"><field name="VAR">Ausgabetext</field></block></value></block></statement> 
                                          <next><block type="comment" id="0Y;8c=RG%f;qqP2yyjbm"><field name="COMMENT">Badezimmer</field>
                                              <next><block type="controls_if" id="JS`zfpqZ~NiBhWxa_;gH"><value name="IF0"><block type="logic_compare" id="-7AVWpsa42LalJseqzv{"><field name="OP">EQ</field>
                                                      <value name="A"><block type="get_value" id="cm6sMr|*pCsxx{9uCMrm"><field name="ATTR">val</field>
                                                          <field name="OID">alexa2.0.History.name</field></block></value> 
                                                      <value name="B"><block type="text" id="7+szyIbBBP!dtC~D1h)O"><field name="TEXT">Badezimmer</field></block></value></block></value> 
                                                  <statement name="DO0"><block type="control" id="Hg;Dq%gJEXg{SLV;t6{6"><mutation delay_input="false"></mutation>
                                                      <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                                      <field name="WITH_DELAY">FALSE</field>
                                                      <value name="VALUE"><block type="variables_get" id="*lX{ZM`VBTc}A`1!gM9H"><field name="VAR">Ausgabetext</field></block></value></block></statement> 
                                                  <next><block type="comment" id=":Ka+W*uwIV:h(pjzq_h,"><field name="COMMENT">Gästezimmer</field>
                                                      <next><block type="controls_if" id="Ug#8mH1FI!icK/)QEYjQ"><value name="IF0"><block type="logic_compare" id=")@76q4MZ/}oCH_mLKWO4"><field name="OP">EQ</field>
                                                              <value name="A"><block type="get_value" id="iI-HkvUXFC@;;_+[TcRP"><field name="ATTR">val</field>
                                                                  <field name="OID">alexa2.0.History.name</field></block></value> 
                                                              <value name="B"><block type="text" id="#:=Dp]Dt1gil*WOPj/h{"><field name="TEXT">Gästezimmer</field></block></value></block></value> 
                                                          <statement name="DO0"><block type="control" id="yoHnz^WG58=+X)|S-u8#"><mutation delay_input="false"></mutation>
                                                              <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                                              <field name="WITH_DELAY">FALSE</field>
                                                              <value name="VALUE"><block type="variables_get" id="Y8LHCPPH..OnEJN^sjFQ"><field name="VAR">Ausgabetext</field></block></value></block></statement> 
                                                          <next><block type="comment" id="!40Mmgu)T0A3-qPaF9yO"><field name="COMMENT">Flur</field>
                                                              <next><block type="controls_if" id="b/SgE1YjT,ld[nn}{%RH"><value name="IF0"><block type="logic_compare" id="c)SjW;jeX|#Fh/Cha,,3"><field name="OP">EQ</field>
                                                                      <value name="A"><block type="get_value" id="H9=}F/!XKY9UBnnbr~D/"><field name="ATTR">val</field>
                                                                          <field name="OID">alexa2.0.History.name</field></block></value> 
                                                                      <value name="B"><block type="text" id="r^EgI!FQ;-DPWFF_D!C1"><field name="TEXT">Flur</field></block></value></block></value> 
                                                                  <statement name="DO0"><block type="control" id=";7jyou9f+V(`5**;CDV?"><mutation delay_input="false"></mutation>
                                                                      <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                                                      <field name="WITH_DELAY">FALSE</field>
                                                                      <value name="VALUE"><block type="variables_get" id="Q_k9kSJVNP5e%a8((xhe"><field name="VAR">Ausgabetext</field></block></value></block></statement> 
                                                                  <next><block type="comment" id="`?k8YL[;!mE5;-NddVTc"><field name="COMMENT">Schlafzimmer</field>
                                                                      <next><block type="controls_if" id="zyeAn3wMc!;hYZDhK)hy"><value name="IF0"><block type="logic_compare" id="bq=B-rG}sw}7gG1{/Y-."><field name="OP">EQ</field>
                                                                              <value name="A"><block type="get_value" id="Zr`S-l8E!}8.4{,qM9*i"><field name="ATTR">val</field>
                                                                                  <field name="OID">alexa2.0.History.name</field></block></value> 
                                                                              <value name="B"><block type="text" id="te+gSwhWiVR4,scYV%ca"><field name="TEXT">Schlafzimmer</field></block></value></block></value> 
                                                                          <statement name="DO0"><block type="control" id="grH6#whY1.N-q[pLM5X."><mutation delay_input="false"></mutation>
                                                                              <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                                                              <field name="WITH_DELAY">FALSE</field>
                                                                              <value name="VALUE"><block type="variables_get" id="[hMf^;p|,CaZVyd+qTm~"><field name="VAR">Ausgabetext</field></block></value></block></statement> 
                                                                          <next><block type="comment" id="N3@K2BRC7C5N9daBycv_"><field name="COMMENT">Keller-Flur</field>
                                                                              <next><block type="controls_if" id="HPxOdxs4N%j2umWTfUNG"><value name="IF0"><block type="logic_compare" id="DX=kCQ/,E6kqYsQ}/=[e"><field name="OP">EQ</field>
                                                                                      <value name="A"><block type="get_value" id="XionPRa91nQ16NK(N9+."><field name="ATTR">val</field>
                                                                                          <field name="OID">alexa2.0.History.name</field></block></value> 
                                                                                      <value name="B"><block type="text" id="ZB}mEWERKZ/fb~*Lwd1A"><field name="TEXT">Keller-Flur</field></block></value></block></value> 
                                                                                  <statement name="DO0"><block type="control" id="kPLG+9decg*iGUm87`-2"><mutation delay_input="false"></mutation>
                                                                                      <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                                                                      <field name="WITH_DELAY">FALSE</field>
                                                                                      <value name="VALUE"><block type="variables_get" id="}.I+7-Frw4fjj1-N[AeP"><field name="VAR">Ausgabetext</field></block></value></block></statement> 
                                                                                  <next><block type="comment" id="C~L9w[G_b.Hb*%7oT~aE"><field name="COMMENT">Werkstatt</field>
                                                                                      <next><block type="controls_if" id="`;ot|i:*)I|EwW@zS,B2"><value name="IF0"><block type="logic_compare" id="H!ldSYtR|C|^VcqxS;Xt"><field name="OP">EQ</field>
                                                                                              <value name="A"><block type="get_value" id="I)o6A2U2(,A7e|4.8lo."><field name="ATTR">val</field>
                                                                                                  <field name="OID">alexa2.0.History.name</field></block></value> 
                                                                                              <value name="B"><block type="text" id="s4owS.Ww){6ayek?VzFb"><field name="TEXT">Werkstatt</field></block></value></block></value> 
                                                                                          <statement name="DO0"><block type="control" id="5Gh*aVl-x(IPCnF@5,5/"><mutation delay_input="false"></mutation>
                                                                                              <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field>
                                                                                              <field name="WITH_DELAY">FALSE</field>
                                                                                              <value name="VALUE"><block type="variables_get" id="dmO{yR;|g@(rZJE,HX4k"><field name="VAR">Ausgabetext</field></block></value></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></statement></block></next></block></statement></block></xml> 
          
          1 Antwort Letzte Antwort
          0
          • Rene.HomeR Offline
            Rene.HomeR Offline
            Rene.Home
            schrieb am zuletzt editiert von
            #152

            Ja verstehe… aber damit löse ich doch immer nur das Blocky-Skript aus. Dieses liest aber nur den Inhalt der Variablen aus.

            Aber wie werden die Inhalte der Variablen aktualisiert. Dieses wird doch in dem ersten Skript gemacht. Ich sehe immer noch nicht die Verbindung oder ist es so das das erste Skript zum aktualisieren der Variablen einen Timer bekommen muss der unabhängig von der Abfrage via Alexa läuft.

            Ich bin immer davon ausgegangen das die Aufforderung an Alexa erst einmal eine Prüfung ablaufen lässt gefolgt von der Ausgabe.

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

              @Rene.Home:

              Ja verstehe… aber damit löse ich doch immer nur das Blocky-Skript aus. Dieses liest aber nur den Inhalt der Variablen aus.

              Aber wie werden die Inhalte der Variablen aktualisiert. Dieses wird doch in dem ersten Skript gemacht. Ich sehe immer noch nicht die Verbindung oder ist es so das das erste Skript zum aktualisieren der Variablen einen Timer bekommen muss der unabhängig von der Abfrage via Alexa läuft.

              Ich bin immer davon ausgegangen das die Aufforderung an Alexa erst einmal eine Prüfung ablaufen lässt gefolgt von der Ausgabe. ` ich verstehe nicht so ganz was Du meinst. Das Fensterscript läuft ja immer, somit sind die Datenpunkte auch immer aktuell (offene Fenster).

              Das Blockly greift ja wiederum nur diese Datenpunkte vom Fensterscript ab und gibt diese per Speak wieder.

              Das Blockly selbst wird nur über einen Datenpunkt getriggert damit es los läuft wenn der Datenpunkt aktualisiert wurde. Das geschiet durch Deine Anfrage bei Alexa.

              Vielleicht verstehe ich auch nicht was Du meinst ?

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

                …...

                hier stand was für einen anderen Beitrag drinn...

                1 Antwort Letzte Antwort
                0
                • Rene.HomeR Offline
                  Rene.HomeR Offline
                  Rene.Home
                  schrieb am zuletzt editiert von
                  #155

                  Das mit dem Blocky war mir klar und ich habe mich nochmals mit dem Fensterskript beschäftigt und den trigger-Part in dem Skript übersehen der auf die Änderung in dem Status des betreffenden Objekte reagiert.

                  ! ````
                  // Trigger
                  ! cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Verschluss
                  ! if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                  ! checkDevices();
                  ! });

                  
                  Dadurch schläft das Skript und aktualisiert nur die Werte in den Variablen wenn ein Triggerevent durch die Gewerke ausgelöst wurde.
                  
                  Somit ist alles klar…..
                  1 Antwort Letzte Antwort
                  0
                  • M Offline
                    M Offline
                    Mr.X
                    schrieb am zuletzt editiert von
                    #156

                    Hätte vielleicht noch jemand ideen, warum der skill die History nicht updatet?

                    1 Antwort Letzte Antwort
                    0
                    • H Offline
                      H Offline
                      HoffmannOs
                      schrieb am zuletzt editiert von
                      #157

                      Was mache ich bei diesem Script falsch?

                      on({id: '"hm-rpc.1.NEQxxxxx1.PRESS_SHORT"/', change: "any"}, function (obj) {
                        var value = obj.state.val;
                        var oldValue = obj.oldState.val;
                        setState("alexa2.0.Echo-Devices.XXX.Commands.speak"/*speak*/, 'Mach die scheisse Tür auf!');
                      });
                      
                      
                      1 Antwort Letzte Antwort
                      0
                      • modmaxM Offline
                        modmaxM Offline
                        modmax
                        schrieb am zuletzt editiert von
                        #158

                        Schon mal so versucht?

                        on({id: '"hm-rpc.1.NEQxxxxx1.PRESS_SHORT"/', val: true}, function (obj) {
                          log("Sprich Alexa, sprich!");
                          setState("alexa2.0.Echo-Devices.XXX.Commands.speak"/*speak*/, 'Mach die scheisse Tür auf!');
                        });
                        
                        

                        Hinzugefügt habe ich nur val=true, da das immer auf true gesetzt wird; dafür change gelöscht.

                        Log-Ausgabe nur um zu sehen, ob der Trigger greift.

                        1 Antwort Letzte Antwort
                        0
                        • H Offline
                          H Offline
                          HoffmannOs
                          schrieb am zuletzt editiert von
                          #159

                          @modmax:

                          Schon mal so versucht?

                          on({id: '"hm-rpc.1.NEQxxxxx1.PRESS_SHORT"/', val: true}, function (obj) {
                            log("Sprich Alexa, sprich!");
                            setState("alexa2.0.Echo-Devices.XXX.Commands.speak"/*speak*/, 'Mach die scheisse Tür auf!');
                          });
                          
                          

                          Hinzugefügt habe ich nur val=true, da das immer auf true gesetzt wird; dafür change gelöscht.

                          Log-Ausgabe nur um zu sehen, ob der Trigger greift. ` Vielen Dank, hab den Fehler gefunden! Funzt!

                          Gesendet von meinem SM-G965F mit Tapatalk

                          1 Antwort Letzte Antwort
                          0
                          • S Offline
                            S Offline
                            Sprite01
                            schrieb am zuletzt editiert von
                            #160

                            Ich hatte ja mal von diesem Thread das Lichtscript verwendet und mir daraus das Fensterscript gebastelt.

                            Haben auch beide funktioniert. Nun habe ich mit dem Fensterstatus ein Problem, bei alles geschlossen

                            bleibt das Objekt Ansage leer. Dort sollte ja dann eigentlich "Alle Fenster geschlossen" stehen.
                            137_fenster.jpg
                            Der berühmte Spruch: Ich habe nichts geändert - ist mir zwar peinlich, aber stimmt. 🙂

                            Außer Updates habe ich hier nichts verändert.

                            Kann mal jemand darüber schauen warum das Objekt Fenster Ansage dann leer bleibt ?

                            Das von 19 Fenstern 0 offen sind wird ja richtig gezählt.

                            ! ````
                            // Status Zahl Fenster
                            ! var logging = true;
                            ! var idAnzahlAuf = 'javascript.0.Status.Fenster.Anzahl_auf',
                            idAnzahl = 'javascript.0.Status.Fenster.Anzahl',
                            idText = 'javascript.0.Status.Fenster.Text',
                            idRaum = 'javascript.0.Status.Fenster.Raum',
                            idAnsage = 'javascript.0.Status.Fenster.Ansage';
                            ! // Ab hier nix mehr ändern
                            createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Fenster
                            type: 'number',
                            name: 'Anzahl aller Fenster',
                            min: 0,
                            def: 0,
                            role: 'value'
                            });
                            createState(idAnzahlAuf, { // Anzahl der Fenster, die auf sind als Variable unter Javascript.0 anlegen
                            type: 'number',
                            name: 'Anzahl der geoeffneten Fenster',
                            min: 0,
                            def: 0,
                            role: 'value'
                            });
                            createState(idText, { // Anzahl der geoeffneten Fenster und deren Namen als Variable unter Javascript.0 anlegen
                            type: 'string',
                            name: 'geoeffnete Fenster',
                            desc: 'Namen der geoeffneten Fenster',
                            def: ' ',
                            role: 'value'
                            });
                            createState(idAnsage, {
                            type: 'string',
                            name: 'geoeffnete Fenster (Ansage)',
                            desc: 'Namen der geoeffneten Fenster (für Ansage aufbereitet)',
                            def: ' ',
                            role: 'value'
                            });
                            createState(idRaum, { // Räume, in denen Fenster geoeffnet sind
                            type: 'string',
                            name: 'Räume mit geoeffneten Fenster',
                            desc: 'Namen der Räume, in denen Fenster geoeffnet sind',
                            def: ' ',
                            role: 'value'
                            });
                            ! var cacheSelectorState = $('channelstate.id=*.STATE'); // Gewerk Fenster
                            ! function checkDevices(obj) {
                            // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Fenster auf 0
                            var anzahlFensterAuf = 0;
                            var anzahlFenster = 0;
                            var textFensterAuf = [];
                            var textRaum = [];
                            if (logging) {
                            log('++++++ Fenster Anzahl ++++ ');
                            log('#### SCHALTER ##### ');
                            }
                            cacheSelectorState.each(function(id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
                            var obj = getObject(id);
                            var name = getObject(id).common.name;
                            var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                            var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
                            var raumname = getObject(id, "rooms");
                            ! if (logging) {
                            log('-------');
                            log('Kanal: ' + name);
                            log('Status: ' + status);
                            }
                            if (status) { // wenn Zustand = true, dann wird die Anzahl der Fenster hochgezählt
                            ++anzahlFensterAuf;
                            textFensterAuf.push(devicename); // Zu Array hinzufügen
                            textRaum.push(raumname.enumNames); //
                            }
                            ++anzahlFenster; // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
                            });

                            textRaum = deleteDuplicates(textRaum);

                            // Array mit Fensternamen sortieren
                            textFensterAuf.sort();
                            textRaum.sort();
                            // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon auf) ausgegeben
                            if (logging) log("Text: " + textFensterAuf);
                            if (logging) log("Anzahl Fenster: " + anzahlFenster + " # davon Fenster auf: " + anzahlFensterAuf);
                            // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                            setState(idText, textFensterAuf.join(', und ')); // Schreibt die aktuelle Namen der geoeffneten Fenster
                            setState(idAnzahlAuf, textFensterAuf.length); // Schreibt die aktuelle Anzahl der geoeffneten Fenster
                            setState(idAnzahl, anzahlFenster); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Fenster
                            // setState(idRaum, textRaum.join(',
                            

                            ')); // Räume, in denen Fenster geoeffnet sind
                            setState(idRaum, textRaum.join(', und ')); // Räume, in denen Fenster geoeffnet sind
                            }

                            ! // Trigger
                            cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Fenster
                            if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                            checkDevices();
                            });
                            ! function main() {
                            setTimeout(function() {
                            if (logging) log('Auslöser Skriptstart');
                            checkDevices();
                            }, 2000);
                            }
                            ! main(); // Skriptstart-Auslöser
                            ! // Aufbereitung für Ansage
                            function strip_tags(data) {
                            var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
                            return (rueckgabe);
                            }
                            ! on(idText, function(obj) {
                            var text = obj.state.val;
                            text = (getState(idAnzahl).val > 0) ? '' + strip_tags(text) : 'Alle Fenster geschlossen';
                            setState(idAnsage, text);
                            });

                            Gruß

                            Dirk

                            http://www.DessauWetter.de

                            (ioBroker auf IntelNuc und Proxmox)

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

                              @Sprite01:

                              Ich hatte ja mal von diesem Thread das Lichtscript verwendet und mir daraus das Fensterscript gebastelt.

                              Haben auch beide funktioniert. Nun habe ich mit dem Fensterstatus ein Problem, bei alles geschlossen

                              bleibt das Objekt Ansage leer. Dort sollte ja dann eigentlich "Alle Fenster geschlossen" stehen.
                              filename="fenster.JPG" index="0">~~
                              Der berühmte Spruch: Ich habe nichts geändert - ist mir zwar peinlich, aber stimmt. 🙂

                              Außer Updates habe ich hier nichts verändert.

                              Kann mal jemand darüber schauen warum das Objekt Fenster Ansage dann leer bleibt ?

                              Das von 19 Fenstern 0 offen sind wird ja richtig gezählt.

                              ! ````
                              // Status Zahl Fenster
                              ! var logging = true;
                              ! var idAnzahlAuf = 'javascript.0.Status.Fenster.Anzahl_auf',
                              idAnzahl = 'javascript.0.Status.Fenster.Anzahl',
                              idText = 'javascript.0.Status.Fenster.Text',
                              idRaum = 'javascript.0.Status.Fenster.Raum',
                              idAnsage = 'javascript.0.Status.Fenster.Ansage';
                              ! // Ab hier nix mehr ändern
                              createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Fenster
                              type: 'number',
                              name: 'Anzahl aller Fenster',
                              min: 0,
                              def: 0,
                              role: 'value'
                              });
                              createState(idAnzahlAuf, { // Anzahl der Fenster, die auf sind als Variable unter Javascript.0 anlegen
                              type: 'number',
                              name: 'Anzahl der geoeffneten Fenster',
                              min: 0,
                              def: 0,
                              role: 'value'
                              });
                              createState(idText, { // Anzahl der geoeffneten Fenster und deren Namen als Variable unter Javascript.0 anlegen
                              type: 'string',
                              name: 'geoeffnete Fenster',
                              desc: 'Namen der geoeffneten Fenster',
                              def: ' ',
                              role: 'value'
                              });
                              createState(idAnsage, {
                              type: 'string',
                              name: 'geoeffnete Fenster (Ansage)',
                              desc: 'Namen der geoeffneten Fenster (für Ansage aufbereitet)',
                              def: ' ',
                              role: 'value'
                              });
                              createState(idRaum, { // Räume, in denen Fenster geoeffnet sind
                              type: 'string',
                              name: 'Räume mit geoeffneten Fenster',
                              desc: 'Namen der Räume, in denen Fenster geoeffnet sind',
                              def: ' ',
                              role: 'value'
                              });
                              ! var cacheSelectorState = $('channelstate.id=*.STATE'); // Gewerk Fenster
                              ! function checkDevices(obj) {
                              // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Fenster auf 0
                              var anzahlFensterAuf = 0;
                              var anzahlFenster = 0;
                              var textFensterAuf = [];
                              var textRaum = [];
                              if (logging) {
                              log('++++++ Fenster Anzahl ++++ ');
                              log('#### SCHALTER ##### ');
                              }
                              cacheSelectorState.each(function(id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
                              var obj = getObject(id);
                              var name = getObject(id).common.name;
                              var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                              var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
                              var raumname = getObject(id, "rooms");
                              ! if (logging) {
                              log('-------');
                              log('Kanal: ' + name);
                              log('Status: ' + status);
                              }
                              if (status) { // wenn Zustand = true, dann wird die Anzahl der Fenster hochgezählt
                              ++anzahlFensterAuf;
                              textFensterAuf.push(devicename); // Zu Array hinzufügen
                              textRaum.push(raumname.enumNames); //
                              }
                              ++anzahlFenster; // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
                              });

                              textRaum = deleteDuplicates(textRaum);

                              // Array mit Fensternamen sortieren
                              textFensterAuf.sort();
                              textRaum.sort();
                              // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon auf) ausgegeben
                              if (logging) log("Text: " + textFensterAuf);
                              if (logging) log("Anzahl Fenster: " + anzahlFenster + " # davon Fenster auf: " + anzahlFensterAuf);
                              // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                              setState(idText, textFensterAuf.join(', und ')); // Schreibt die aktuelle Namen der geoeffneten Fenster
                              setState(idAnzahlAuf, textFensterAuf.length); // Schreibt die aktuelle Anzahl der geoeffneten Fenster
                              setState(idAnzahl, anzahlFenster); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Fenster
                              // setState(idRaum, textRaum.join(',
                              

                              ')); // Räume, in denen Fenster geoeffnet sind
                              setState(idRaum, textRaum.join(', und ')); // Räume, in denen Fenster geoeffnet sind
                              }

                              ! // Trigger
                              cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Fenster
                              if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                              checkDevices();
                              });
                              ! function main() {
                              setTimeout(function() {
                              if (logging) log('Auslöser Skriptstart');
                              checkDevices();
                              }, 2000);
                              }
                              ! main(); // Skriptstart-Auslöser
                              ! // Aufbereitung für Ansage
                              function strip_tags(data) {
                              var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
                              return (rueckgabe);
                              }
                              ! on(idText, function(obj) {
                              var text = obj.state.val;
                              text = (getState(idAnzahl).val > 0) ? '' + strip_tags(text) : 'Alle Fenster geschlossen';
                              setState(idAnsage, text);
                              });
                              ```` ` starte mal den JavaScript Adapter neu und probiere noch mal.

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

                                Unten im Script habe ich das bei mir auch mal geändert

                                on(idText, function(obj) {
                                    var text = obj.state.val;
                                    text = (text.length > 1) ? ' ' + strip_tags(text) : 'Alle Fenster geschlossen';
                                    setState(idAnsage, text);
                                });
                                
                                1 Antwort Letzte Antwort
                                0
                                • S Offline
                                  S Offline
                                  Sprite01
                                  schrieb am zuletzt editiert von
                                  #163

                                  dslraser, ich habe den unteren Teil mal geändert. Leider mit gleichem Ergebnis.

                                  (Könntest du dein komplettes Script hier bitte noch mal zur Verfügung stellen ?)

                                  PS:

                                  Kommando zurück, Neustart Javascript und reales öffnen/schließen eines Fensters hat geholfen.

                                  Das Programm im Script neu aufzurufen (hatte ich vorher probiert) brachte noch nicht das Ergebnis.

                                  Gruß

                                  Dirk

                                  http://www.DessauWetter.de

                                  (ioBroker auf IntelNuc und Proxmox)

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

                                    prima, mit geädertem Scriptteil, oder so wie es war ?

                                    1 Antwort Letzte Antwort
                                    0
                                    • S Offline
                                      S Offline
                                      Sprite01
                                      schrieb am zuletzt editiert von
                                      #165

                                      Öffnen/Schließen habe ich nur mit dem neuen Teil probiert.

                                      Daher kann ich dir nicht sagen ob es auch mit dem alten Teil funktioniert hätte.

                                      Da hatte ich nur Javascript neu gestartet und Script neu geladen, ohne positivem Ergebnis.

                                      Gruß

                                      Dirk

                                      http://www.DessauWetter.de

                                      (ioBroker auf IntelNuc und Proxmox)

                                      1 Antwort Letzte Antwort
                                      0
                                      • totocotonioT Offline
                                        totocotonioT Offline
                                        totocotonio
                                        schrieb am zuletzt editiert von
                                        #166

                                        @Chaot:

                                        @Blackeye

                                        Türklingel über Sonoff?

                                        War eigentlich ganz einfach.

                                        • Einen schönen Taster ausgesucht:

                                        https://www.amazon.de/gp/product/B00YS9 … UTF8&psc=1

                                        • Am Eingangsbereich einen Sonoff Basic installiert.

                                        • Am Sonoff DHT22 und Taster angeschlossen

                                        • Zusätzlich die Ausßenbeleuchtung aufgeklemmt und dazu ebenfalls Taster am Sonoff angeschlossen

                                        • Im ioBroker den Taster des Sonoff (GPIO 14) auslesen und per TR064 Adapter am Hasutelefon klingeln lassen.

                                        • Dazu noch an Alexa2 Adapter senden um die Klingel noch Ansagen zu lassen.

                                        Was ich noch vergessen habe, aber in den nächsten Tagen ändern werde ist die Steuerung der Außenbeleuchtung.

                                        Ich werde zusätzlich zur bisherigen Steuerung (bei Dämmerung an bis 23 Uhr und ab 5 Uhr bis Sonnenaufgang) noch eine Funktion einbauen die die Außenbeleuchtung für 5 Minuten Einschaltet (nur Nachts) wenn die Klingel betätigt wird.

                                        Ist zwar bisschen Bastelarbeit, aber ich bin der Meinung das sich das echt gelohnt hat. Mein Vorteil ist das ich neben der Eingangstür eine Unterverteilung habe in der ich den ganzen Kram verstauen konnte.

                                        Der Basic ist jetzt allerdings auch komplett ausgereizt.

                                        GPIO 14 - Klingeltaster

                                        GPIO 1 - DHT 22

                                        GPIO 3 - Taster für Außenleuchte

                                        Das Gehäuse des Sonoff musste dran glauben und ich habe das Ganze in eine Schalterdose verbaut. `

                                        Hi,

                                        das hört sich interassant an.

                                        Hast du das über ein blockly gemacht?

                                        Wie kann man den das Telefon über den TR64 ansteuern, wie oft klingelt es denn, nur wenn der Taster gedrückt wird.

                                        Gruß Totocotonio

                                        Bin noch Anfänger in Sachen IO-Broker und lerne gerne dazu. :P

                                        1 Antwort Letzte Antwort
                                        0
                                        • ChaotC Offline
                                          ChaotC Offline
                                          Chaot
                                          schrieb am zuletzt editiert von
                                          #167

                                          @ totocotonio

                                          Das Script ist in JS geschrieben:

                                          var sperre = false;
                                          
                                          on({id: 'sonoff.0.Eingang.POWER2', change: "any"}, function (obj) {
                                            if(!sperre) {
                                              sperre = true;
                                              setState("tr-064.0.states.ring"/*ring*/, '**610, 15');
                                              sendTo("pushover", "send", {
                                                 message: 'Klingel',
                                                 sound: ""
                                              });
                                              setState("alexa2.0.Echo-Devices.G2A0P30XXXXXXLLE.Commands.speak"/*speak*/, 'Mach ma Tür auf');
                                              setTimeout(function() {
                                                 sperre = false;
                                              }, 5000); 
                                            }  
                                          });
                                          

                                          Der Teil "Sperre" wird benötigt, da der erste der geklingelt hat ein kleiner Nachbarsjunge war. Der hat dann mehrfach schnell hintereinander auf den Taster gedrückt und dadurch das Klingeln gestoppt.

                                          Der Bereich :````
                                          */, '**610, 15');

                                          
                                          Weiter unten ist dann noch Pushover integriert das mir eine Meldung aufs Smartphone zaubert wenn ich nicht zu Hause bin.
                                          
                                          Zu guter Letzt ist dann noch die Sprachausgabe über Alexa realisiert die mit beliebigen Text gefüttert werden kann.
                                          
                                          Den Originaltext: "Mach mal de scheiße Tür auf" musste ich nach kleineren Diskussionen mit meiner Frau dann doch ändern :(
                                          
                                          Dabei war der eigentlich gut: [https://www.youtube.com/watch?v=-kxXSk7nqcw](https://www.youtube.com/watch?v=-kxXSk7nqcw)

                                          ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

                                          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

                                          743

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe