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. Script zur Abfrage und Variable schreiben

NEWS

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

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

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

Script zur Abfrage und Variable schreiben

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
7 Beiträge 3 Kommentatoren 894 Aufrufe
  • Ä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.
  • M Offline
    M Offline
    meicker
    schrieb am zuletzt editiert von
    #1

    Guten Morgen Community 🙂

    ich bin neu hier und ackere mich gerade durch ioBroker. Eine ganze Menge habe ich schon hin bekommen und beiße mir gerade mangels Programmierkenntnisse an einer sicherlich ganz einfachen Anfrage die Zähne aus :lol: Ich dachte mit Blocky ist das kein problem … pustekuchen 🙂

    Zum Problem:

    Ich habe mit dem Parser zwei sensoren abgefragt die den Zustand meiner Balkontüre abfragen. True ist geschlossen. Ich habe einen oben und einen unten. Also habe ich folgende mögliche Zustände:

    geklappt - oben false // unten true

    offen - oben false // unten false

    geschlossen - oben true // unten true

    Ich möchte gerne in VIS eine Variable abfragen auf: geklappt, geschlossen oder offen und entsprechend den Zusatnd abbilden.

    Ich bekomme aber leider das script nicht hin ... kann mir jemand aufs Pferd helfen, bitte ? 🙂

    Viele Grüße,

    Marc

    1 Antwort Letzte Antwort
    0
    • B Offline
      B Offline
      bassface
      schrieb am zuletzt editiert von
      #2

      Moin,

      ich würde es so versuchen:

      7795_2018-08-09_08_35_38-javascript_-_iobroker.png

       <xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="PV@wi;P(7Or}IFr]G;w#" x="-462" y="-413"><field name="COMMENT">Variable erzeugen</field>
          <next><block type="create" id="hugGY.kjQ/6JbAbp0Coq"><field name="NAME">Fenster.Beispiel</field>
              <next><block type="comment" id="RpMUzedZCNLNs1nvcTPp"><field name="COMMENT">Trigger auf beide Sensoren</field>
                  <next><block type="on_ext" id="fvW|9PA`%/Ku(:D{Ja*]"><mutation items="2"></mutation>
                      <field name="CONDITION">any</field>
      
                      <value name="OID0"><shadow type="field_oid" id="9MI^=*PdUsRSBiUgrdTM"><field name="oid">default</field></shadow></value> 
                      <value name="OID1"><shadow type="field_oid" id="c|b?yGNJrfUJHum.{_vw"><field name="oid">default</field></shadow></value> 
                      <statement name="STATEMENT"><block type="comment" id="4{-X-xbR}W-oA.g80Rj)"><field name="COMMENT">geklappt, offen, geschlossen</field>
                          <next><block type="controls_if" id="8.Y]Z%8a[u@``jU=KJn0"><mutation elseif="2"></mutation>
                              <value name="IF0"><block type="logic_operation" id="6#2g!iIGE*p(|-pLgwc;"><field name="OP">AND</field>
                                  <value name="A"><block type="logic_compare" id="Xr07{sCUI~9=X.S-YKGM"><field name="OP">EQ</field>
                                      <value name="A"><block type="get_value" id="0}BQ|J#W|Vw/tT(bNjt%"><field name="ATTR">val</field>
                                          <field name="OID">ID auswählen</field></block></value> 
                                      <value name="B"><block type="logic_boolean" id="s]6]r!8A:yN,*bvr6f+{"><field name="BOOL">FALSE</field></block></value></block></value> 
                                  <value name="B"><block type="logic_compare" id="e98Sejq:A3AQ:A#GS@.C"><field name="OP">EQ</field>
                                      <value name="A"><block type="get_value" id="QfR[~u%#|Ls}hkSe{w8h"><field name="ATTR">val</field>
                                          <field name="OID">ID auswählen</field></block></value> 
                                      <value name="B"><block type="logic_boolean" id="^H![P|cPcmdge|+.*yo%"><field name="BOOL">TRUE</field></block></value></block></value></block></value> 
                              <statement name="DO0"><block type="update" id="a6_rcw(oeo?0R{!KboQ]"><mutation delay_input="false"></mutation>
                                  <field name="OID">javascript.0.Fenster.Beispiel</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE"><block type="text" id="Z5rAFVN;NX`P8HwBhMQZ"><field name="TEXT">geklappt</field></block></value></block></statement> 
                              <value name="IF1"><block type="logic_operation" id="k@q5C{Lpaee|s*mt8+^a"><field name="OP">AND</field>
                                  <value name="A"><block type="logic_compare" id="]7Lkad!(T0p={_+_HwXF"><field name="OP">EQ</field>
                                      <value name="A"><block type="get_value" id=".K^*@R+;*QibAU[0.9+_"><field name="ATTR">val</field>
                                          <field name="OID">ID auswählen</field></block></value> 
                                      <value name="B"><block type="logic_boolean" id=",tO!n!:nl,[Ip/aL!wX)"><field name="BOOL">FALSE</field></block></value></block></value> 
                                  <value name="B"><block type="logic_compare" id="Ro%]a)~T2f1ssk7p-H~3"><field name="OP">EQ</field>
                                      <value name="A"><block type="get_value" id=".0M-VQgDL)ad3(R^d(VN"><field name="ATTR">val</field>
                                          <field name="OID">ID auswählen</field></block></value> 
                                      <value name="B"><block type="logic_boolean" id="yD/JCW`;myUubZxKZ@(L"><field name="BOOL">FALSE</field></block></value></block></value></block></value> 
                              <statement name="DO1"><block type="update" id="W5tQbsYs9^`ZWjx]`OBn"><mutation delay_input="false"></mutation>
                                  <field name="OID">javascript.0.Fenster.Beispiel</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE"><block type="text" id="IT`QVa.4WL1^LFH;@9%9"><field name="TEXT">offen</field></block></value></block></statement> 
                              <value name="IF2"><block type="logic_operation" id="m:]a)s.C{D;7o~JJ27L@"><field name="OP">AND</field>
                                  <value name="A"><block type="logic_compare" id="^PqvNp!a_YLTXW=eMf{P"><field name="OP">EQ</field>
                                      <value name="A"><block type="get_value" id="N}L}/|]wJ@7K7v*wMq-F"><field name="ATTR">val</field>
                                          <field name="OID">ID auswählen</field></block></value> 
                                      <value name="B"><block type="logic_boolean" id="dL!C)uUUW+/FN+-z,0.6"><field name="BOOL">FALSE</field></block></value></block></value> 
                                  <value name="B"><block type="logic_compare" id="j0xXDheR61i8vDfT8vn4"><field name="OP">EQ</field>
                                      <value name="A"><block type="get_value" id="u22,f18P,,#F~P;FRVK?"><field name="ATTR">val</field>
                                          <field name="OID">ID auswählen</field></block></value> 
                                      <value name="B"><block type="logic_boolean" id="=1dQnj(#f]Auc.^}hE+2"><field name="BOOL">TRUE</field></block></value></block></value></block></value> 
                              <statement name="DO2"><block type="update" id="0z~WEv|~p-dn4hXzA_!s"><mutation delay_input="false"></mutation>
                                  <field name="OID">javascript.0.Fenster.Beispiel</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE"><block type="text" id="QhMt4p4iTcaD!{AxyiH5"><field name="TEXT">geschlossen</field></block></value></block></statement></block></next></block></statement></block></next></block></next></block></next></block></xml> 
      

      Geht bestimmt auch noch eleganter…

      1 Antwort Letzte Antwort
      0
      • AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        schrieb am zuletzt editiert von
        #3

        Habe kein Blockly zum basteln, Skript sollte ich aber so hinbekommen (ungetestet):

        // hier die IDs der Sensor-Datenpunkte eintragen
        const idOben = "ID-Sensor-oben";
        const idUnten = "ID-Sensor-unten";
        const idZustand = `javascript.${instance}.Tuer_Zustand`; // <= sollte immer unter javascript.x angelegt werden, daher keine anderen Prefixe vergeben. Vorsicht bei den Anführungszeichen, das sind Backticks, keine doppelten!
        
        createState(idZustand, {type: "string"});
        
        on([idOben, idUnten], (obj) => {
            const obenGeschlossen = getState(idOben).val;
            const untenGeschlossen = getState(idUnten).val;
        
            let zustand;
            if (obenGeschlossen && untenGeschlossen) {
            	zustand = "geschlossen";
            } else if (!obenGeschlossen && untenGeschlossen) {
                zustand = "geklappt";
            } else {
                zustand = "offen";
            }
            setState(idZustand, zustand);
        });
        
        

        Edit: Ist im wesentlichen gleich mit dem Blockly meines Vorredners, nur wird der Wert der Zustände in Variablen zwischengespeichert.

        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

        1 Antwort Letzte Antwort
        0
        • M Offline
          M Offline
          meicker
          schrieb am zuletzt editiert von
          #4

          Vielen Dank euch beiden !!! ich werde gleich mal testen ! 🙂

          1 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            meicker
            schrieb am zuletzt editiert von
            #5

            DANKESCHÖN - Hat einwandfrei funktioniert und ich habe dazu gelernt ! 😉

            1 Antwort Letzte Antwort
            0
            • AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von
              #6

              Markierst du das Thema bitte noch als gelöst?

              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

              1 Antwort Letzte Antwort
              0
              • M Offline
                M Offline
                meicker
                schrieb am zuletzt editiert von
                #7

                @AlCalzone

                ja, mache ich später 🙂 Ich hab gerade nämlich noch etwas geändert und dabei ist mir was aufgefallen:

                Problem ist: Wenn iibroker frisch gestartet wurde hat die Balkontüre keinen Status. Erst wenn sie das erste mal verändert wurde ändert sich der Status zu einem gültigen Status.

                Jetzt dachte ich mir ich nehme einfach mal noch die Aktualisierungszeit vom Homepilot dazu als Trigger. Das funktioniert auch, bei der ersten Änderung bekomme ich für die Balkontüre den korrekten Status angezeigt, ABER es erscheint auch eine Warnung im Log mit der ich nichts anfangen kann.

                13:33:27.798	[warn]	javascript.0 at Object. (script.js.Homepilot.Balkontuere:12:5)
                ````//aus dem Script Editor
                
                

                javascript.0 2018-08-13 13:33:27.796 warn at Object. <anonymous>(script.js.Homepilot.Balkontuere:12:5)
                javascript.0 2018-08-13 13:33:27.791 warn Wrong type of javascript.0.scriptEnabled.Homepilot.Balkontuere: "string". Please fix, while deprecated and will not work in next versions.</anonymous>

                
                Jetzt ist das genau die Stelle an der das Script 'geschlossen' schreibt und der Status bereits 'geschlossen' ist. Hängt das damit zusammen ? Aber die Fehlermeldung hat ja etwas mit 'String' zun tun … :?:
                
                Eines jedenfalls ist sicher, es kommt durch die hinzugefügte object.ID homepilot.uws.aktualisiert
                
                Hier noch das script
                

                <xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="PV@wi;P(7Or}IFr]G;w#" x="-462" y="-413"><field name="COMMENT">Variable erzeugen</field>
                <next><block type="create" id="hugGY.kjQ/6JbAbp0Coq"><field name="NAME">scriptEnabled.Homepilot.Balkontuere</field>
                <next><block type="comment" id="RpMUzedZCNLNs1nvcTPp"><field name="COMMENT">Trigger auf beide Sensoren</field>
                <next><block type="on_ext" id="fvW|9PA`%/Ku(:D{Ja*]"><mutation items="3"></mutation>
                <field name="CONDITION">ne</field>

                            <value name="OID0"><shadow type="field_oid" id="9MI^=*PdUsRSBiUgrdTM"><field name="oid">parser.0.homepilot.fenstersensor.balkontüre-oben</field></shadow></value> 
                            <value name="OID1"><shadow type="field_oid" id="c|b?yGNJrfUJHum.{_vw"><field name="oid">parser.0.homepilot.fenstersensor.balkontüre-unten</field></shadow></value> 
                            <value name="OID2"><shadow type="field_oid" id="K%VOr7K8/vt-1ZLkZ{5m"><field name="oid">parser.0.homepilot.uws.aktualisiert</field></shadow></value> 
                            <statement name="STATEMENT"><block type="comment" id="4{-X-xbR}W-oA.g80Rj)"><field name="COMMENT">geklappt, offen, geschlossen</field>
                                <next><block type="controls_if" id="8.Y]Z%8a[u@``jU=KJn0"><mutation elseif="2"></mutation>
                                    <value name="IF0"><block type="logic_operation" id="6#2g!iIGE*p(|-pLgwc;"><field name="OP">AND</field>
                                        <value name="A"><block type="logic_compare" id="Xr07{sCUI~9=X.S-YKGM"><field name="OP">EQ</field>
                                            <value name="A"><block type="get_value" id="0}BQ|J#W|Vw/tT(bNjt%"><field name="ATTR">val</field>
                                                <field name="OID">parser.0.homepilot.fenstersensor.balkontüre-oben</field></block></value> 
                                            <value name="B"><block type="logic_boolean" id="s]6]r!8A:yN,*bvr6f+{"><field name="BOOL">FALSE</field></block></value></block></value> 
                                        <value name="B"><block type="logic_compare" id="e98Sejq:A3AQ:A#GS@.C"><field name="OP">EQ</field>
                                            <value name="A"><block type="get_value" id="QfR[~u%#|Ls}hkSe{w8h"><field name="ATTR">val</field>
                                                <field name="OID">parser.0.homepilot.fenstersensor.balkontüre-unten</field></block></value> 
                                            <value name="B"><block type="logic_boolean" id="^H![P|cPcmdge|+.*yo%"><field name="BOOL">TRUE</field></block></value></block></value></block></value> 
                                    <statement name="DO0"><block type="update" id="a6_rcw(oeo?0R{!KboQ]"><mutation delay_input="false"></mutation>
                                        <field name="OID">javascript.0.scriptEnabled.Homepilot.Balkontuere</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE"><block type="text" id="Z5rAFVN;NX`P8HwBhMQZ"><field name="TEXT">geklappt</field></block></value></block></statement> 
                                    <value name="IF1"><block type="logic_operation" id="k@q5C{Lpaee|s*mt8+^a"><field name="OP">AND</field>
                                        <value name="A"><block type="logic_compare" id="]7Lkad!(T0p={_+_HwXF"><field name="OP">EQ</field>
                                            <value name="A"><block type="get_value" id=".K^*@R+;*QibAU[0.9+_"><field name="ATTR">val</field>
                                                <field name="OID">parser.0.homepilot.fenstersensor.balkontüre-oben</field></block></value> 
                                            <value name="B"><block type="logic_boolean" id=",tO!n!:nl,[Ip/aL!wX)"><field name="BOOL">FALSE</field></block></value></block></value> 
                                        <value name="B"><block type="logic_compare" id="Ro%]a)~T2f1ssk7p-H~3"><field name="OP">EQ</field>
                                            <value name="A"><block type="get_value" id=".0M-VQgDL)ad3(R^d(VN"><field name="ATTR">val</field>
                                                <field name="OID">parser.0.homepilot.fenstersensor.balkontüre-unten</field></block></value> 
                                            <value name="B"><block type="logic_boolean" id="yD/JCW`;myUubZxKZ@(L"><field name="BOOL">FALSE</field></block></value></block></value></block></value> 
                                    <statement name="DO1"><block type="update" id="W5tQbsYs9^`ZWjx]`OBn"><mutation delay_input="false"></mutation>
                                        <field name="OID">javascript.0.scriptEnabled.Homepilot.Balkontuere</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE"><block type="text" id="IT`QVa.4WL1^LFH;@9%9"><field name="TEXT">offen</field></block></value></block></statement> 
                                    <value name="IF2"><block type="logic_operation" id="m:]a)s.C{D;7o~JJ27L@"><field name="OP">AND</field>
                                        <value name="A"><block type="logic_compare" id="^PqvNp!a_YLTXW=eMf{P"><field name="OP">EQ</field>
                                            <value name="A"><block type="get_value" id="N}L}/|]wJ@7K7v*wMq-F"><field name="ATTR">val</field>
                                                <field name="OID">parser.0.homepilot.fenstersensor.balkontüre-oben</field></block></value> 
                                            <value name="B"><block type="logic_boolean" id="dL!C)uUUW+/FN+-z,0.6"><field name="BOOL">TRUE</field></block></value></block></value> 
                                        <value name="B"><block type="logic_compare" id="j0xXDheR61i8vDfT8vn4"><field name="OP">EQ</field>
                                            <value name="A"><block type="get_value" id="u22,f18P,,#F~P;FRVK?"><field name="ATTR">val</field>
                                                <field name="OID">parser.0.homepilot.fenstersensor.balkontüre-unten</field></block></value> 
                                            <value name="B"><block type="logic_boolean" id="=1dQnj(#f]Auc.^}hE+2"><field name="BOOL">TRUE</field></block></value></block></value></block></value> 
                                    <statement name="DO2"><block type="update" id="0z~WEv|~p-dn4hXzA_!s"><mutation delay_input="false"></mutation>
                                        <field name="OID">javascript.0.scriptEnabled.Homepilot.Balkontuere</field>
                                        <field name="WITH_DELAY">FALSE</field>
                                        <value name="VALUE"><block type="text" id="QhMt4p4iTcaD!{AxyiH5"><field name="TEXT">geschlossen</field></block></value></block></statement></block></next></block></statement></block></next></block></next></block></next></block></xml> 
                
                
                Hat jemand eine Idee ?
                
                vg,
                
                Marc
                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

                751

                Online

                32.4k

                Benutzer

                81.4k

                Themen

                1.3m

                Beiträge
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                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