Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Script zur Abfrage und Variable schreiben

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Script zur Abfrage und Variable schreiben

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      meicker last edited by

      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 Reply Quote 0
      • B
        bassface last edited by

        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 Reply Quote 0
        • AlCalzone
          AlCalzone Developer last edited by

          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.

          1 Reply Last reply Reply Quote 0
          • M
            meicker last edited by

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

            1 Reply Last reply Reply Quote 0
            • M
              meicker last edited by

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

              1 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer last edited by

                Markierst du das Thema bitte noch als gelöst?

                1 Reply Last reply Reply Quote 0
                • M
                  meicker last edited by

                  @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 Reply Quote 0
                  • First post
                    Last post

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  763
                  Online

                  31.7k
                  Users

                  79.9k
                  Topics

                  1.3m
                  Posts

                  3
                  7
                  844
                  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