Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Funktion im Script lässt sich nicht erstellen

    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

    Funktion im Script lässt sich nicht erstellen

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

      Hallo,
      f
      ich versuche die im Bild 1 zu sehende Funktion einzubinden.

      gewollte Funktion

      Wenn ich diese einsprechend rein kopiere (Bild 2 + 3) kommt aber nur ein Teil der Funktion raus.

      Bild 2

      Bild 3

      Vorlage der Funktion aus dem Forum:

      /**
       * Beschreibe diese Funktion …
       */
      function setAutoMode(objectID, autoMode) {
          setState(objectID.replace("CONTROL_MODE", "AUTO_MODE"), autoMode);
      }
      
      /**
       * Beschreibe diese Funktion …
       */
      function setManuMode(objectID) {
          setState(objectID.replace("CONTROL_MODE", "AUTO_MODE"), false);
       
          getState(objectID.replace("CONTROL_MODE", "SET_TEMPERATURE"), function (err, state) {
              var value = state.val;
              setState(objectID.replace("CONTROL_MODE", "MANU_MODE"), value);
          });
      }
      
      Vielleicht sieht einer von Euch wo ich zu blind bin... ;)
      
      
      
      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @streetracer last edited by paul53

        @streetracer sagte:

        die im Bild 1 zu sehende Funktion einzubinden.

        Bild 1 ist unvollständig. Was soll erreicht werden ?

        Um in den Auto-Mode zu schalten, genügt

        setState(channelId + .'AUTO_MODE', true);
        

        Um andererseits in den Manu-Mode zu schalten, ohne den Sollwert zu ändern, genügt

        setState(channelId + '.MANU_MODE', getState(channelId + '.SET_TEMPERATURE').val);
        
        1 Reply Last reply Reply Quote 0
        • S
          streetracer last edited by streetracer

          Hi Paul.

          erreicht werden soll das wenn sich im yahka Adapter die Heizungssteuerung beim Start auf "aus" stellt diese wieder in den Modus "heizen" geht da sie sonst immer wieder manuell eingestellt werden muss.

          Anbei noch das vollständige Bild 1:

          Bild 1

          Swie der Link in den Thrad von damals zum besserern Verständnis: https://forum.iobroker.net/topic/7746/yahka-homematic-heizung/22

          Und noch eine Frage meinerseits zum Verständnis:

          Muss ich bei "setState(channelId .... noch etwas anpassen oder kann ich das so 1 zu 1 kopieren? Bin noch relativ neu in dem Thema und musste mich mit der Programmierung bisher noch nicht auseinander setzen...

          Grüsse Streetracer

          paul53 2 Replies Last reply Reply Quote 0
          • paul53
            paul53 @streetracer last edited by

            @streetracer sagte:

            Anbei noch das vollständige Bild 1:

            Wenn ein Thermostat auf Auto-Mode schaltet, wird noch mal ein Setzen auf Auto-Mode gesendet; ebenso mit Manu-Mode. Welchen Sinn soll das ergeben, den Mode in den gerade umgeschaltet wurde noch mal zu setzen ?

            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @streetracer last edited by paul53

              @streetracer sagte:

              Muss ich bei "setState(channelId .... noch etwas anpassen oder kann ich das so 1 zu 1 kopieren?

              Das läßt sich auch ohne Javascript-Funktion bewerkstelligen. Beispiel:

              Blockly_temp.JPG

              Stellt sich nur die Frage nach dem Sinn (s.o.).

              1 Reply Last reply Reply Quote 0
              • S
                streetracer last edited by

                @paul53 said in Funktion im Script lässt sich nicht erstellen:

                setState(channelId + .'AUTO_MODE', true);

                Sinn des ganzen soll sein das das im Homekit die Heizung eben nicht auf "aus" steht wenn man die App neu gestartet hat.

                Was mich schon wieder kiire macht:

                Auch in Deinem letzten Beispiel steht in dem lilanen Block:

                setManuMode mit
                channelID
                setpoint

                Wie zum Geier kommt dieser gesamte lilane Block zustande?

                Wenn ich in den Scripten unter "Funktionen" gehe gibt es da nur den schmalen Baustein "setManuMode"... Was hab ich verpasst?

                paul53 2 Replies Last reply Reply Quote 0
                • paul53
                  paul53 @streetracer last edited by

                  @streetracer sagte:

                  Wie zum Geier kommt dieser gesamte lilane Block zustande?

                  Im Block ganz links oben auf das Zahnrad klicken, dann kann man die Funktionsparameter rein ziehen und umbenennen.

                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @streetracer last edited by paul53

                    @streetracer sagte:

                    Sinn des ganzen soll sein das das im Homekit die Heizung eben nicht auf "aus" steht wenn man die App neu gestartet hat.

                    Ich kenne zwar Homekit nicht, aber was soll das Blockly daran ändern ?
                    Oder ist es so, dass die "read only"-Datenpunkte .CONTROL_MODE per Homekit geändert werden und damit diese Änderung auch wirksam wird, werden die tatsächlichen Modi durch das Blockly gesetzt ?

                    S 1 Reply Last reply Reply Quote 0
                    • S
                      streetracer @paul53 last edited by

                      @paul53

                      Wie gesagt, bin neu in dem Thema aber soweit ich es verstanden hab soll das Blockly die Datenpunkte setzen.

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @streetracer last edited by paul53

                        @streetracer
                        Das sollte auch ohne Funktionen gehen. RegExp triggert auf alle Datenpunkte .CONTROL_MODE:

                        Blockly_temp.JPG

                        Export:

                        <xml xmlns="http://www.w3.org/1999/xhtml">
                         <variables>
                           <variable type="" id="=t!1cC|1e%Ev0mw[[A;0">mode</variable>
                           <variable type="" id="Lui6%|lSgCbn.vyo_^nS">val</variable>
                         </variables>
                         <block type="on_ext" id="1iaR/3eXB;~Z]SUYZC^;" x="-282" y="-38">
                           <mutation items="1"></mutation>
                           <field name="CONDITION">ne</field>
                           <field name="ACK_CONDITION">false</field>
                           <value name="OID0">
                             <shadow type="field_oid" id="!^oYbWf~?OSyU`WXl-w!">
                               <field name="oid">default</field>
                             </shadow>
                             <block type="regex" id="crFJEDNpNG`y]c2^g8XI">
                               <field name="TEXT">*.CONTROL_MODE</field>
                             </block>
                           </value>
                           <statement name="STATEMENT">
                             <block type="controls_if" id="bmN[z081WkPaG{bHaMGo">
                               <mutation elseif="1"></mutation>
                               <value name="IF0">
                                 <block type="logic_compare" id="Hb4_c]70W~PGSbNN3MsN">
                                   <field name="OP">EQ</field>
                                   <value name="A">
                                     <block type="on_source" id="XI,+g]kF!G}pG)qo^k+|">
                                       <field name="ATTR">state.val</field>
                                     </block>
                                   </value>
                                   <value name="B">
                                     <block type="math_number" id="X=%5NGnfEpcr4~Vir|^[">
                                       <field name="NUM">0</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <statement name="DO0">
                                 <block type="variables_set" id=")8:OT8w~A$TT?jyBk1*j">
                                   <field name="VAR" id="=t!1cC|1e%Ev0mw[[A;0" variabletype="">mode</field>
                                   <value name="VALUE">
                                     <block type="text" id="F%W8)^FaiskU-ffnp`?:">
                                       <field name="TEXT">.AUTO_MODE</field>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="variables_set" id="I[}A%N6G]RnOM_j+an.H">
                                       <field name="VAR" id="Lui6%|lSgCbn.vyo_^nS" variabletype="">val</field>
                                       <value name="VALUE">
                                         <block type="logic_boolean" id="82d;kZyIKtYWI5Ai$)pJ">
                                           <field name="BOOL">TRUE</field>
                                         </block>
                                       </value>
                                     </block>
                                   </next>
                                 </block>
                               </statement>
                               <value name="IF1">
                                 <block type="logic_compare" id="Vn*$wi`)#opkYSe-48xF">
                                   <field name="OP">EQ</field>
                                   <value name="A">
                                     <block type="on_source" id="ddO}7*8fbr5AI+z3}N7|">
                                       <field name="ATTR">state.val</field>
                                     </block>
                                   </value>
                                   <value name="B">
                                     <block type="math_number" id="P_mn.o?zWP7vF7ax(A$r">
                                       <field name="NUM">1</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <statement name="DO1">
                                 <block type="variables_set" id="n17FxbP+$z_3`@)OWt6l">
                                   <field name="VAR" id="=t!1cC|1e%Ev0mw[[A;0" variabletype="">mode</field>
                                   <value name="VALUE">
                                     <block type="text" id="@3kX4#@$OhKao;YB.Of#">
                                       <field name="TEXT">.MANU_MODE</field>
                                     </block>
                                   </value>
                                   <next>
                                     <block type="variables_set" id=",hM-0+jA!Nw)b}Xqu8=y">
                                       <field name="VAR" id="Lui6%|lSgCbn.vyo_^nS" variabletype="">val</field>
                                       <value name="VALUE">
                                         <block type="get_value_var" id="|u+M.BU3@ZTlBqj3!5=k" inline="false">
                                           <field name="ATTR">val</field>
                                           <value name="OID">
                                             <shadow type="text" id="BMPBqY5bC8mSR5J*%}+b">
                                               <field name="TEXT"></field>
                                             </shadow>
                                             <block type="text_join" id="gTa#{}N~F8mUni9I,az-">
                                               <mutation items="2"></mutation>
                                               <value name="ADD0">
                                                 <block type="on_source" id="$=AmWh06P^U!^8%%%B9a">
                                                   <field name="ATTR">channelId</field>
                                                 </block>
                                               </value>
                                               <value name="ADD1">
                                                 <block type="text" id="?eJL%r2G0jj4Eenn*wLm">
                                                   <field name="TEXT">.SET_TEMPERATURE</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                     </block>
                                   </next>
                                 </block>
                               </statement>
                               <next>
                                 <block type="control_ex" id="D~dW`[Ubfv!+Y[GU-W]z">
                                   <field name="TYPE">false</field>
                                   <field name="CLEAR_RUNNING">FALSE</field>
                                   <value name="OID">
                                     <shadow type="field_oid" id="Y7_VcjK`Si=c9m(BzXtq">
                                       <field name="oid">Object ID</field>
                                     </shadow>
                                     <block type="text_join" id="QTO!+?OB+pHK_3q,vG9z">
                                       <mutation items="2"></mutation>
                                       <value name="ADD0">
                                         <block type="on_source" id="r4(SN!o-5D4*wKZftD`[">
                                           <field name="ATTR">channelId</field>
                                         </block>
                                       </value>
                                       <value name="ADD1">
                                         <block type="variables_get" id="Z6K@GQ,n|9sF?rBGR#/=">
                                           <field name="VAR" id="=t!1cC|1e%Ev0mw[[A;0" variabletype="">mode</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <value name="VALUE">
                                     <shadow type="logic_boolean" id="W,|74d+E2gL*L{w6{cnC">
                                       <field name="BOOL">TRUE</field>
                                     </shadow>
                                     <block type="variables_get" id="Hz5k1YKP)f4u}+U%OZMP">
                                       <field name="VAR" id="Lui6%|lSgCbn.vyo_^nS" variabletype="">val</field>
                                     </block>
                                   </value>
                                   <value name="DELAY_MS">
                                     <shadow type="math_number" id="s-!bQC)@.A2twxTN1O?y">
                                       <field name="NUM">0</field>
                                     </shadow>
                                   </value>
                                 </block>
                               </next>
                             </block>
                           </statement>
                         </block>
                        </xml>
                        

                        S 1 Reply Last reply Reply Quote 0
                        • S
                          streetracer @paul53 last edited by streetracer

                          @paul53
                          ich kann machen was ich will... ich hab Deine Codezeile in der Funktion hinten (siehe roter Kreis) eingegeben. Trotzdem taucht der Rest wie oben beschrieben nicht in der Funktion beim Zahnrad auf...

                          Bild

                          Bild
                          Auch in den Funktionen links gibt es diese Auswahl nicht.

                          Könntest Du mir Dein Blockly eventuell exportieren und zukommen lassen?

                          paul53 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @streetracer last edited by

                            @streetracer sagte:

                            Könntest Du mir Dein Blockly eventuell exportieren und zukommen lassen?

                            Habe ich im Post vorher mit einem alternativen Blockly (ohne Funktionen) gemacht.

                            S 1 Reply Last reply Reply Quote 0
                            • S
                              streetracer @paul53 last edited by

                              @paul53

                              sorry, den Spoiler hatte ich übersehen.

                              Da das Blockly mit dem regExp beim Importieren einen Fehler (nicht bekannt) gebracht hat hab ich jetzt mal testweise auf ein bestimmtes Thermostat abgeändert.

                              Die Auswahl "control_mode" sollte da ja auch passen, oder?

                              Blockly

                              sigi234 paul53 2 Replies Last reply Reply Quote 0
                              • sigi234
                                sigi234 Forum Testing Most Active @streetracer last edited by

                                @streetracer sagte in Funktion im Script lässt sich nicht erstellen:

                                @paul53

                                sorry, den Spoiler hatte ich übersehen.

                                Da das Blockly mit dem regExp beim Importieren einen Fehler (nicht bekannt) gebracht hat hab ich jetzt mal testweise auf ein bestimmtes Thermostat abgeändert.

                                Die Auswahl "control_mode" sollte da ja auch passen, oder?

                                Blockly

                                Bitte keinen externen Hoster nehmen. ICON Bild hochladen verwenden.

                                S 1 Reply Last reply Reply Quote 0
                                • S
                                  streetracer @sigi234 last edited by

                                  @sigi234 said in Funktion im Script lässt sich nicht erstellen:

                                  @streetracer sagte in Funktion im Script lässt sich nicht erstellen:

                                  @paul53

                                  sorry, den Spoiler hatte ich übersehen.

                                  Da das Blockly mit dem regExp beim Importieren einen Fehler (nicht bekannt) gebracht hat hab ich jetzt mal testweise auf ein bestimmtes Thermostat abgeändert.

                                  Die Auswahl "control_mode" sollte da ja auch passen, oder?

                                  Blockly

                                  Bitte keinen externen Hoster nehmen. ICON Bild hochladen verwenden.

                                  ok, sorry. Wurstel mich grad noch etwas durchs Forum. Aber ich gelobe Besserung 😉

                                  1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @streetracer last edited by

                                    @streetracer sagte:

                                    Blockly mit dem regExp beim Importieren einen Fehler (nicht bekannt) gebracht hat

                                    Alte Version des Javascript-Adapters ?

                                    @streetracer sagte in Funktion im Script lässt sich nicht erstellen:

                                    Die Auswahl "control_mode" sollte da ja auch passen, oder?

                                    Ja.

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      streetracer last edited by

                                      mit dem Script funktioniert es leider nicht. Aktueller Stand:

                                      Wenn ich im Homekit auf "heizen" stelle kann ich die Temperatur wählen und der Status des Thermostats bleibt auf "heizen".

                                      Ändert danach die CCU mittels ihres Automatikprogramms iwas am Thermostat wird dieser Wert nicht ins Homekit übernommen sondern das Thermostat schaltet sich dort auf "aus".

                                      Es muss doch möglich sein das der von der CCU geschaltete Status quasi als Aktualisierung auf den Adapter weitergereicht wird?

                                      paul53 1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 @streetracer last edited by

                                        @streetracer sagte:

                                        Wenn ich im Homekit auf "heizen" stelle

                                        Was ist "heizen" ?

                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          streetracer last edited by

                                          ich versuchs mal anhand der Bilder zu erkären...

                                          auf Bild 1 sieht man die möglichen Statuse des Thermostaten

                                          homekit1.JPG

                                          Normal sollte dieser immer wie im zweiten Bild zu sehen auf "heizen" (siehe Pfeil) stehen. Wenn man das anfangs
                                          da einstellt tut er das auch. Kommt aber ein Signal von der CCU geht der Status auf "Aus" und muss bei der nächsten
                                          Benutzung erst wieder händisch auf "heizen" gestellt werden bevor man dann die Temperatur auswählen kann.

                                          homekit.JPG

                                          Ich hoffe ich konnte es einigermassen rüber bringen....

                                          paul53 1 Reply Last reply Reply Quote 0
                                          • paul53
                                            paul53 @streetracer last edited by paul53

                                            @streetracer sagte:

                                            auf Bild 1 sieht man die möglichen Statuse des Thermostaten

                                            Es handelt sich nicht um HomeMatic-Thermostate ? Dann bin ich raus.
                                            Das Skript im ersten Post enthält typische Datenpunkt-Bezeichner von HomeMatic-Thermostaten. So sieht der CONTROL_MODE bei HomeMatic aus:

                                            Parameter CONTROL_MODE
                                            Typ: option
                                            Zugriffsart:

                                            • lesend
                                            • über Ereignisse

                                            Werteliste:
                                            0 = AUTO-MODE (Standard)
                                            1 = MANU-MODE
                                            2 = PARTY-MODE
                                            3 = BOOST-MODE

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            443
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            funktion script
                                            3
                                            29
                                            1681
                                            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