Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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

Scheduled Pinned Locked Moved Skripten / Logik
7 Posts 3 Posters 894 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    meicker
    wrote on last edited by
    #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 Reply Last reply
    0
    • B Offline
      B Offline
      bassface
      wrote on last edited by
      #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 Reply Last reply
      0
      • AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        wrote on last edited by
        #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 Reply Last reply
        0
        • M Offline
          M Offline
          meicker
          wrote on last edited by
          #4

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

          1 Reply Last reply
          0
          • M Offline
            M Offline
            meicker
            wrote on last edited by
            #5

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

            1 Reply Last reply
            0
            • AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              wrote on last edited by
              #6

              Markierst du das Thema bitte noch als gelöst?

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

              1 Reply Last reply
              0
              • M Offline
                M Offline
                meicker
                wrote on last edited by
                #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 Reply Last reply
                0
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                Support us

                ioBroker
                Community Adapters
                Donate

                445

                Online

                32.4k

                Users

                81.4k

                Topics

                1.3m

                Posts
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                ioBroker Community 2014-2025
                logo
                • Login

                • Don't have an account? Register

                • Login or register to search.
                • First post
                  Last post
                0
                • Recent
                • Tags
                • Unread 0
                • Categories
                • Unreplied
                • Popular
                • GitHub
                • Docu
                • Hilfe