Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Gelöst] [Frage] Skript zählen_Fenster

    NEWS

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    [Gelöst] [Frage] Skript zählen_Fenster

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators last edited by

      Und wurde nach hinzufügen in der Funktion/des gewerkes der hm-rega adapter neu gestartet?

      Ggf. Auch der hm-rpc incl. der Option Geräte neu einlesen?

      Gruß

      Rainer

      1 Reply Last reply Reply Quote 0
      • G
        Grenzwellen last edited by

        Ja, im Gewerk Fenster wird der Kontakt angezeigt.

        Adapter habe ich auch alle neugestartet bzw. einlesen lassen.

        In der vis kann ich den Kontakt auch auslesen.
        4187_screen_2.png
        4187_screen_3.png

        1 Reply Last reply Reply Quote 0
        • Dutchman
          Dutchman Developer Most Active Administrators last edited by

          Script Adapter neu gestartet? Der inhalt der enums (objecte) werden bei Adapter Start ausgewertet

          –-----------------------

          Send from mobile device

          1 Reply Last reply Reply Quote 0
          • G
            Grenzwellen last edited by

            Ja, an das Neu laden der Instanz javascript habe ich nicht gedacht. Nach Neustart wird der Kontakt im Script eingelesen und das script funktioniert ohne etwas anpassen zu müssen.

            Viele Dank !

            12:07:03.855	[info]	javascript.0 Start javascript script.js.common.zählen_Fenster
            12:07:03.855	[info]	javascript.0 script.js.common.zählen_Fenster: subscribe: {"pattern":{"id":"hm-rpc.0.KEQ0161964.1.STATE","change":"ne"},"name":"script.js.common.zählen_Fenster"}
            12:07:03.855	[info]	javascript.0 script.js.common.zählen_Fenster: subscribe: {"pattern":{"id":"hm-rpc.0.KEQ0847322.1.STATE","change":"ne"},"name":"script.js.common.zählen_Fenster"}
            12:07:03.855	[info]	javascript.0 script.js.common.zählen_Fenster: subscribe: {"pattern":{"id":"hm-rpc.0.KEQ0847736.1.STATE","change":"ne"},"name":"script.js.common.zählen_Fenster"}
            12:07:03.855	[info]	javascript.0 script.js.common.zählen_Fenster: subscribe: {"pattern":{"id":"hm-rpc.0.KEQ0847776.1.STATE","change":"ne"},"name":"script.js.common.zählen_Fenster"}
            12:07:03.855	[info]	javascript.0 script.js.common.zählen_Fenster: subscribe: {"pattern":{"id":"hm-rpc.0.KEQ0848058.1.STATE","change":"ne"},"name":"script.js.common.zählen_Fenster"}
            12:07:03.855	[info]	javascript.0 script.js.common.zählen_Fenster: subscribe: {"pattern":{"id":"hm-rpc.1.0000D709954C33.1.STATE","change":"ne"},"name":"script.js.common.zählen_Fenster"}
            12:07:03.855	[info]	javascript.0 script.js.common.zählen_Fenster: subscribe: {"pattern":{"id":"javascript.0.zählen_Fenster.textFensterauf","change":"ne"},"name":"script.js.common.zählen_Fenster"}
            12:07:03.855	[info]	javascript.0 script.js.common.zählen_Fenster: registered 7 subscriptions and 0 schedules
            
            1 Reply Last reply Reply Quote 0
            • flkontakt
              flkontakt last edited by

              Hallo zusammen, ich habe in der CCU2 meine Fenster in die Gewerke Fenster_Erdgeschoss und Fenster_Obergeschoss aufgeteilt. Was müsste im Script angepasst werden, um für beide Gewerke die entsprechenden Datenpunkte anzulegen? In der ursprünglichen Version kann doch nur 1 Gewerk ausgewertet werden, oder?

              Gesendet von meinem SM-G920F mit Tapatalk

              1 Reply Last reply Reply Quote 0
              • dslraser
                dslraser Forum Testing Most Active last edited by

                > Fenster_Erdgeschoss und Fenster_Obergeschoss aufgeteilt. Was müsste im Script angepasst werden, um für beide Gewerke die entsprechenden Datenpunkte anzulegen?

                Vorweg, ich bin Anfänger. Aber ich würde in dem Script nach allem was Fenster heißt suchen und das mit dem Begriff Fenster_Erdgeschoss ersetzen und schauen ob dann schonmal das Erdgeschoss richtig angezeigt wird, danach mit dem Obergeschoss weiter machen. (oder zwei Scripte, jeweils eins für jede Etage)

                LG Heiko

                1 Reply Last reply Reply Quote 0
                • flkontakt
                  flkontakt last edited by

                  Hallo, danke für die Info. Bin ebenso Anfänger, insbesondere im Scriptbereich. Versuche meine Themen mit Blockly zu lösen. Da es hier aber ein fertiges Script gibt, wollte ich dieses gerne nutzen. Habe schon experimentiert, aber ohne Erfolg (ersetzen Fenster durch Fenster_Erdgeschoss etc.)

                  Gesendet von meinem SM-G920F mit Tapatalk

                  1 Reply Last reply Reply Quote 0
                  • dslraser
                    dslraser Forum Testing Most Active last edited by

                    Ich habe mal meine Variante hier für Dich in den Spoiler gepackt und für Dich abgeändert(Erdgeschoss)

                    Ich habe allerdings die Drehgriffgeschichte bei mir rausgenommen. (zeigt nur offen und geschlossene Fenster im Telegram an, ohne den Zusatz Drehgriff gekippt oder offen) Ich nutze bisher keine Drehgriffe und habe ausschließlich IP Geräte)

                    Kannst ja mal so ausprobieren.

                    ! ````
                    createState('zählen_Fenster_Erdgeschoss.anzahlFenster_Erdgeschoss', { // wenn benötigt: Anzahl der vorhandenen Fenster_Erdgeschoss
                    type: 'number',
                    min: 0,
                    def: 0,
                    role: 'value'
                    });
                    createState('zählen_Fenster_Erdgeschoss.anzahlFenster_Erdgeschossauf', { // Anzahl der Fenster_Erdgeschoss, die auf sind als Variable unter Javascript.0 anlegen
                    type: 'number',
                    min: 0,
                    def: 0,
                    role: 'value'
                    });
                    createState('zählen_Fenster_Erdgeschoss.textFenster_Erdgeschossauf', { // Anzahl der offenen Fenster_Erdgeschoss und deren Namen als Variable unter Javascript.0 anlegen
                    type: 'string',
                    def: '',
                    role: 'value'
                    });
                    ! var cacheSelectorState = $('channelstate.id=*.STATE');
                    ! function countFenster_Erdgeschoss(obj) {
                    // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Fenster_Erdgeschoss auf 0
                    var anzahlFenster_Erdgeschoss = 0;
                    var anzahlFenster_Erdgeschossauf = 0;
                    var textFenster_Erdgeschossauf = [];
                    ! log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val); // Info im Log, welcher Zustand sich geändert hat
                    ! cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element .STATE im Gewerk Fenster_Erdgeschoss
                    var status = getState(id).val; // Zustand .STATE abfragen (jedes Element)
                    var obj = getObject(id);
                    var name = getObject(id).common.name;
                    var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
                    if ( status === 1 ) { // wenn Zustand offen, dann wird die Anzahl der Fenster_Erdgeschoss hochgezählt
                    ++anzahlFenster_Erdgeschossauf;
                    textFenster_Erdgeschossauf.push(devicename ); // Name und Zustand zum Array hinzufügen
                    }
                    log('Fenster_Erdgeschoss #' + (i+1) + ': ' + devicename + ' ' /
                    + ' (' + status + ' / ' + typeof status + ')'
                    /);
                    ++anzahlFenster_Erdgeschoss; // Zählt die Anzahl der vorhandenen Fenster_Erdgeschoss unabhängig vom Status
                    });
                    ! // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                    log("Text: " + textFenster_Erdgeschossauf);
                    log("Anzahl Fenster_Erdgeschoss: " + anzahlFenster_Erdgeschoss + " - davon Fenster_Erdgeschoss auf: " + textFenster_Erdgeschossauf.length);
                    ! // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                    setState("zählen_Fenster_Erdgeschoss.textFenster_Erdgeschossauf", textFenster_Erdgeschossauf.join(', ')); // Schreibt die aktuelle Namen der offenen Fenster_Erdgeschoss
                    setState("zählen_Fenster_Erdgeschoss.anzahlFenster_Erdgeschossauf", textFenster_Erdgeschossauf.length); // Schreibt die aktuelle Anzahl der offenen Fenster_Erdgeschoss
                    setState("zählen_Fenster_Erdgeschoss.anzahlFenster_Erdgeschoss", anzahlFenster_Erdgeschoss); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Fenster_Erdgeschoss
                    }
                    ! cacheSelectorState.on(function(obj) { // bei Zustandänderung *. STATE im Gewerk Fenster_Erdgeschoss
                    countFenster_Erdgeschoss(obj);
                    });
                    ! // Variable für Ansage aufbereiten
                    createState('zählen_Fenster_Erdgeschoss.textFenster_ErdgeschossaufAnsage', {
                    type: 'string',
                    def: '',
                    role: 'value'
                    });
                    // Anzahl der Fenster_Erdgeschoss, die auf sind, für Ansage aufbereitet
                    var idQuelle = 'javascript.0.zählen_Fenster_Erdgeschoss.textFenster_Erdgeschossauf',
                    idAnsage = 'javascript.0.zählen_Fenster_Erdgeschoss.textFenster_ErdgeschossaufAnsage';
                    ! on(idQuelle, function (obj) {
                    var text = obj.state.val;
                    text = (text.length > 1) ? 'Geöffnete Fenster_Erdgeschoss: ' + text : 'Alle Fenster_Erdgeschoss sind geschlossen';
                    setState(idAnsage, text);
                    });

                    
                    PS: ich sehe gerade das ich mit Blockly noch einen Fenstertrigger für die Telegram Nachrichten extra habe. Geht bestimmt auch einfacher, aber so habe ich es bei mir und es funktioniert so bei mir.
                    
                    >! ````
                     <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on" id="O?_eoVJ7/WyV.w@keIqU" x="88" y="-62"><field name="OID">javascript.0.zählen_Fenster.textFensteraufAnsage</field>
                        <field name="CONDITION">ne</field>
                    
                        <statement name="STATEMENT"><block type="telegram" id="eaX;19Y1[RB@YtwmW6ES"><value name="MESSAGE"><shadow type="text" id="~#dd18e%M;2EQA*/e7r1"><field name="TEXT">text</field></shadow> 
                              <block type="get_value" id="XIu+e0Ix@KX,a8ABBSB["><field name="ATTR">val</field>
                                <field name="OID">javascript.0.zählen_Fenster.textFensteraufAnsage</field></block></value></block></statement></block></xml> 
                    

                    3822_fenstertrigger.jpg

                    1 Reply Last reply Reply Quote 0
                    • flkontakt
                      flkontakt last edited by

                      Hallo,

                      vielen Dank für dein Script, funktioniert prima mit den "normalen" Fensterkontakten. Ich habe aber an allen Fenstern den Drehgriff montiert um Geschlossen/Gekippt/Offen auswerten zu können.

                      Im EG zusätzlich die optischen Fensterkontakte für die Alarmüberwachung, diese findet und wertet dein Script auch zuverlässig aus.

                      Könntest du die Drehgriffe wieder im Script vorsehen?

                      Weitere Frage: Ich habe meine opt. Fensterkontakte in einem eigenen Gewerk (Überwachung). Wenn ich in deinem Script alle entsprechenden Begriffe austausche, müsste ich das Script für die Überwachung nutzen können, oder?

                      Vielen Dank vorab für die Unterstützung, Gruß Frank

                      1 Reply Last reply Reply Quote 0
                      • dslraser
                        dslraser Forum Testing Most Active last edited by

                        Hallo Frank,
                        > vielen Dank für dein Script, funktioniert prima mit den "normalen" Fensterkontakten
                        Ich möchte nur kurz richtig stellen das dieses Script nicht von mir ist, sondern hier im Forum "zusammen gesucht" und für mich abgewandelt ist.

                        Zu Deinen Fragen, das sollte eigentlich alles machbar sein. Ich habe aber auch noch eine Frage, da ich (noch) keine Drehgriffe habe. Welche Datenpunkte haben die Griffe bei geschlossen/gekippt/ und offen ? (also geschlossen = 0 / gekippt = 1 / und offen = 2, oder ist das anders ?)

                        Das mit dem extra Blockly Trigger habe ich bei mir übrigens bewußt so gemacht, da man den dann auch mal eben schnell abschalten kann, aber trotzdem in Telegram das Script abfragen kann. (habe ich bei mir über Text2command gelöst, abfragen könnte ich dann über das Wort Fenster, siehe Anhang)

                        PS: ich habe bei mir gerade das original Script nochmal eingebaut und nachgesehen was da passiert. Ich habe nur die "normalen IP Fensterkontakte, die haben als Datenpunkt 0 = geschlossen und 1 = offen.(siehe Anhang) Es scheint aber so zu sein, das der Drehgriff auch 0 = geschlossen und bei gekippt = 1 und bei offen = 2 hat ? Wenn das so ist, dann wäre es blöd, weil dann 1= gekippt(Drehgriff) und 1=offen(TFK) bedeuten würde. Es sei denn der Griff hat 1 als offen und zwei für gekippt, dann würde das Script ja gehen. Die TFK Abfrage scheint für die "nicht IP Fensterkontakte" gedacht zu sein, weil die auf true regieren soll ?

                        PPS: vielleicht sollten wir einen eigenen Thread eröffnen, da dieser hier als gelöst gekennzeichnet ist ?

                        LG Heiko
                        3822_fenster.jpg
                        3822_t2cfenster.jpg
                        3822_fkontakt.jpg

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        909
                        Online

                        32.1k
                        Users

                        80.6k
                        Topics

                        1.3m
                        Posts

                        7
                        19
                        1964
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo