Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Zu viele Trigger, Hilfe für alternative - TV Lift

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Zu viele Trigger, Hilfe für alternative - TV Lift

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

      Moin,
      ich bastel gerade an einem Skript, das meinen TV Schrank steuern soll.
      Nun hab ich aber das Problem, das ich zu viele Trigger verwende, und darauf hin das Blockly abschmiert.

      TV_Block.PNG

      Das Javascript dazu sieht so aus.

      // TV ist an und Klappe fährt runter
      on({ id: [].concat(['shelly.0.shellyplus1pm#08f9e0ffddb8#1.Relay0.Power']), change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        if (getState('shelly.0.shellyplus1pm#08f9e0ffddb8#1.Relay0.Power').val > 20) {
          setState('sonoff.0.TV_IO_01.POWER4' /* TV_IO_01 POWER4 */, true);
          setStateDelayed('sonoff.0.TV_IO_02.POWER3' /* TV_IO_02 POWER3 */, false, 1000, false);
        }
      });
      // Klappe ist unten und fährt auf
      on({ id: [].concat(['sonoff.0.TV_IO_02.POWER2']), change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        if (getState('sonoff.0.TV_IO_02.POWER2').val == true) {
          setState('sonoff.0.TV_IO_01.POWER4' /* TV_IO_01 POWER4 */, true);
          setStateDelayed('sonoff.0.TV_IO_01.POWER3' /* TV_IO_01 POWER3 */, false, 1000, false);
        }
      });
      // Klappe ist offen und TV fährt hoch
      on({ id: [].concat(['sonoff.0.TV_IO_01.POWER1']), change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        if ((getState('sonoff.0.TV_IO_01.POWER1').val == true && (getState('sonoff.0.TV_IO_02.POWER2').val == true && getState('sonoff.0.TV_IO_03.POWER3').val == true))) {
          setState('sonoff.0.TV_IO_03.POWER4' /* TV_IO_03 POWER4 */, true);
          setStateDelayed('shelly.0.shellyplus2pm#a0a3b3c43630#1.Cover0.Open' /* Open */, true, true, 2000, false);
          setState('sonoff.0.TV_IO_01.POWER4' /* TV_IO_01 POWER4 */, false);
        } else {
          setState('shelly.0.shellyplus2pm#a0a3b3c43630#1.Cover0.Stop' /* Stop */, true);
        }
      });
      on({ id: [].concat(['sonoff.0.TV_IO_03.POWER1']), change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        if (getState('sonoff.0.TV_IO_03.POWER1').val == true) {
          setState('sonoff.0.TV_IO_03.POWER4' /* TV_IO_03 POWER4 */, false);
        }
      });
      // TV geht aus und fährt runter
      on({ id: [].concat(['shelly.0.shellyplus1pm#08f9e0ffddb8#1.Relay0.Power']), change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        if ((getState('shelly.0.shellyplus1pm#08f9e0ffddb8#1.Relay0.Power').val < 20 && getState('sonoff.0.TV_IO_03.POWER3').val == true && getState('sonoff.0.TV_IO_03.POWER2').val == false)) {
          setState('sonoff.0.TV_IO_03.POWER4' /* TV_IO_03 POWER4 */, true);
          setStateDelayed('shelly.0.shellyplus2pm#a0a3b3c43630#1.Cover0.Close' /* Close */, true, true, 2000, false);
        }
      });
      // TV ist unten und Klappe fährt zu
      on({ id: [].concat(['sonoff.0.TV_IO_03.POWER2']), change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        if (getState('sonoff.0.TV_IO_03.POWER2').val == true) {
          setState('sonoff.0.TV_IO_03.POWER4' /* TV_IO_03 POWER4 */, false);
          setState('sonoff.0.TV_IO_01.POWER4' /* TV_IO_01 POWER4 */, true);
          setStateDelayed('sonoff.0.TV_IO_01.POWER3' /* TV_IO_01 POWER3 */, true, 1000, false);
        }
      });
      // Wenn klappe wieder zu, dann hochfahren
      on({ id: [].concat(['sonoff.0.TV_IO_01.POWER2']), change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        if (getState('sonoff.0.TV_IO_01.POWER2').val == true) {
          setState('sonoff.0.TV_IO_01.POWER4' /* TV_IO_01 POWER4 */, false);
          setState('sonoff.0.TV_IO_02.POWER3' /* TV_IO_02 POWER3 */, true);
        }
      });
      

      Die Frage dazu jetzt, warum schmiert das Blockly ab?
      Fehler_Block.PNG

      Wie kann man das ändern?

      Was gibt es dafür eine Alternative, so ein Blockly zu basteln?
      Grundlegend zum Ablauf.
      Ein Shelly PM1 überwacht den Strom vom TV.
      Wenn der Strom größer als 20 Watt ist., soll das Programm starten.
      Der Deckel fährt runter -> Wemos D1 mini mit Tasmota steuert einen Arduino der einen Servo steuert.
      Wenn der Deckel unten ist, kann er verschoben werden. -> Wemos D1 mini mit Tasmota steuert einen Arduino der einen Stepper steuert.
      Wenn der Deckel offen ist, kann ein Shelly PM2 einen Motor steuern, der den TV hoch fährt.
      Wenn der TV aus geht, das ganze natürlich genau andersrum.

      Alle Positionen haben Endschalter zur Überwachung.
      Stehe da gerade ein wenig aufm Schlauch, wie ich an die Sache ran gehen soll und wäre über Hilfe sehr dankbar.

      Codierknecht liv-in-sky haus-automatisierung 3 Replies Last reply Reply Quote 0
      • Codierknecht
        Codierknecht Developer Most Active @AtomicIX last edited by Codierknecht

        @atomicix sagte in Zu viele Trigger, Hilfe für alternative - TV Lift:

        Nun hab ich aber das Problem, das ich zu viele Trigger verwende

        6 Trigger sind bestimmt nicht "zu viele".
        Aber Du solltest im Trigger nicht nochmal den Wert des Objektes auslesen.
        https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps/5

        Und auf einen State setzt man nur einen Trigger. Darin kann man dann mit "Falls" prüfen, welchen Wert der zugehörige State hat.

        12e62b6e-634c-4248-ad30-efb6c85c0201-image.png

        AtomicIX 1 Reply Last reply Reply Quote 0
        • AtomicIX
          AtomicIX @Codierknecht last edited by

          @codierknecht
          Ok danke, ja das würde Performance sparen, aber ist das die Lösung zum Problem?
          Mein IoBroker läuft unter Proxmox auf einem NUC i9 mit 32GB Ram. Leistung ist eigentlich genug vorhanden.
          Ich werde es mal testen. Schade nur immer um die unnötige Arbeit, wenns nicht geht.
          Ansonsten eine andere Idee, das ohne die Trigger zu machen?

          1 Reply Last reply Reply Quote 0
          • liv-in-sky
            liv-in-sky @AtomicIX last edited by liv-in-sky

            @atomicix den fehler habe ich in letzter zeit auch öfters

            das ist bei mir kein problem vom script selbst

            die blocklys selbst werden zerschossen

            wenn du die fehlermeldung bestätigst, kannst du dann das blockly exportieren ? wen ja - in eine neues script einsetzen und versuchen dann zu speichern

            AtomicIX 1 Reply Last reply Reply Quote 0
            • AtomicIX
              AtomicIX @liv-in-sky last edited by

              @liv-in-sky
              jein, exportieren kann ich es, aber nur einen Teil davon und der Kryptisch Teil am ende fürs Blockly fehlt.
              Also ein Import geht nicht.
              Habe auch schon ältere Javascript Adapter probiert, aber ohne Erfolg.

              liv-in-sky Codierknecht 2 Replies Last reply Reply Quote 0
              • liv-in-sky
                liv-in-sky @AtomicIX last edited by

                @atomicix

                ich mußte alte backups öffnen und die blocklys wieder rausholen

                ist das ein altes blockly oder hast du das gerade erstellt

                AtomicIX 1 Reply Last reply Reply Quote 0
                • AtomicIX
                  AtomicIX @liv-in-sky last edited by

                  @liv-in-sky das ist neu erstellt. Also 1 Tag alt.

                  liv-in-sky 3 Replies Last reply Reply Quote 0
                  • liv-in-sky
                    liv-in-sky @AtomicIX last edited by liv-in-sky

                    @haus-automatisierung

                    kannst du da irgendwie helfen - den fehler oben kenne ich - die blocklys sind irgendwie defekt - bei mir kommt das öfters bei alten blocklys vor, die ich ändern will oder nur einen block verschieben will - beim speichern kommt dann der fehler

                    @AtomicIX eventuell nochmal ein neues probieren und immer zwischenspeichern pro trigger

                    leider kann ich dazu nicht mehr sagen und dir weiterhelfen

                    haus-automatisierung 1 Reply Last reply Reply Quote 0
                    • liv-in-sky
                      liv-in-sky @AtomicIX last edited by

                      @atomicix

                      evtl ist das ein browser - server - connection problem - war so meine vermutung - da ich den script tab eigentlich dauerhaft offen habe

                      1 Reply Last reply Reply Quote 0
                      • Codierknecht
                        Codierknecht Developer Most Active @AtomicIX last edited by

                        @atomicix sagte in Zu viele Trigger, Hilfe für alternative - TV Lift:

                        der Kryptisch Teil am ende fürs Blockly fehlt

                        Und genau der Teil ist das eigentliche Blockly.
                        Dahinter verbirgt sich (base64 codiert) das XML.

                        Als Workaround könntest Du den generierten JS-Code nehmen und in ein reines JS-Script einfügen.
                        Dann wäre es zumindest mal lauffähig.

                        1 Reply Last reply Reply Quote 0
                        • haus-automatisierung
                          haus-automatisierung Developer Most Active @liv-in-sky last edited by

                          @liv-in-sky sagte in Zu viele Trigger, Hilfe für alternative - TV Lift:

                          kannst du da irgendwie helfen - den fehler oben kenne ich - die blocklys sind irgendwie defekt

                          Ohne genauere Angaben zu Adapter-Versionen usw. und das Blockly-XML eher nicht.

                          Das passiert in 99% der Fälle dann, wenn man Blöcke von anderen Adaptern verwendet und dann die Adapter gelöscht wurden.

                          1 Reply Last reply Reply Quote 0
                          • haus-automatisierung
                            haus-automatisierung Developer Most Active @AtomicIX last edited by

                            @atomicix sagte in Zu viele Trigger, Hilfe für alternative - TV Lift:

                            Die Frage dazu jetzt, warum schmiert das Blockly ab?

                            Das Blockly "schmiert nicht ab". Das ist ein Problem auf Client-Seite im Browser. Der Server weiß davon gar nix. Bitte das Blockly-XML (oder das ganze Script-Objekt) teilen.

                            1 Reply Last reply Reply Quote 0
                            • liv-in-sky
                              liv-in-sky @AtomicIX last edited by liv-in-sky

                              @atomicix

                              mal den browser cache löschen oder anderen browser verwenden und nochmal probieren - hast du noch mehr infos für @haus-automatisierung

                              AtomicIX 1 Reply Last reply Reply Quote 0
                              • AtomicIX
                                AtomicIX @liv-in-sky last edited by

                                @liv-in-sky @haus-automatisierung
                                Also das Blockly läuft auch weiterhin. Nur mit Fehlern im Code, die ich noch ändern muss.
                                Adapter habe ich keine gelöscht.
                                Aktuelle JavaScript Version ist 7.11.1 aber unter 7.10.1 ist der Fehler auch.

                                Node.js. 18.09.0
                                NPM 10.2.3

                                Das hier ist das Exportierte Blockly

                                <xml xmlns="https://developers.google.com/blockly/xml">
                                  <block type="comment" id="WGe.@DWf%)qRNRH%Y{49" x="0" y="0">
                                    <field name="COMMENT">TV ist an und Klappe fährt runter</field>
                                    <next>
                                      <block type="on_ext" id="E=uv^eoNgYYEU@G;JKW]">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                        <field name="CONDITION">ne</field>
                                        <field name="ACK_CONDITION"></field>
                                        <value name="OID0">
                                          <shadow type="field_oid" id="t1vZ)O#6L^ut]KeU:C}c">
                                            <field name="oid">shelly.0.shellyplus1pm#08f9e0ffddb8#1.Relay0.Power</field>
                                          </shadow>
                                        </value>
                                        <statement name="STATEMENT">
                                          <block type="controls_if" id="i);A|o`aKcGX;%+9fAkF">
                                            <value name="IF0">
                                              <block type="logic_compare" id="z)65/yKi!(L]k9KyAO~Y">
                                                <field name="OP">GT</field>
                                                <value name="A">
                                                  <block type="get_value" id="PO3MBLQ3Y+Uv=]NYT,S,">
                                                    <field name="ATTR">val</field>
                                                    <field name="OID">shelly.0.shellyplus1pm#08f9e0ffddb8#1.Relay0.Power</field>
                                                  </block>
                                                </value>
                                                <value name="B">
                                                  <block type="math_number" id="zjjZk/^T1[s1/Lg~}WuM">
                                                    <field name="NUM">20</field>
                                                  </block>
                                                </value>
                                              </block>
                                            </value>
                                            <statement name="DO0">
                                              <block type="control" id="J=OFFZqnO/wXA/:R|fIS">
                                                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                <field name="OID">sonoff.0.TV_IO_01.POWER4</field>
                                                <field name="WITH_DELAY">FALSE</field>
                                                <value name="VALUE">
                                                  <block type="logic_boolean" id="yDV5DVi(3gVl)nx)pYL)">
                                                    <field name="BOOL">TRUE</field>
                                                  </block>
                                                </value>
                                                <next>
                                                  <block type="control" id="U=N(Px5I:h-CU`D}AY.4">
                                                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                    <field name="OID">sonoff.0.TV_IO_02.POWER3</field>
                                                    <field name="WITH_DELAY">TRUE</field>
                                                    <field name="DELAY_MS">1000</field>
                                                    <field name="UNIT">ms</field>
                                                    <field name="CLEAR_RUNNING">FALSE</field>
                                                    <value name="VALUE">
                                                      <block type="logic_boolean" id="^NfaYbkWmX6@}DZ(YDUW">
                                                        <field name="BOOL">FALSE</field>
                                                      </block>
                                                    </value>
                                                  </block>
                                                </next>
                                              </block>
                                            </statement>
                                          </block>
                                        </statement>
                                        <next>
                                          <block type="comment" id="*=-5fY_`1xJ/IY/.C:nE">
                                            <field name="COMMENT">Klappe ist unten und fährt auf</field>
                                            <next>
                                              <block type="on_ext" id=";]`f5udbbkynLT+^wJz(">
                                                <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                                <field name="CONDITION">ne</field>
                                                <field name="ACK_CONDITION"></field>
                                                <value name="OID0">
                                                  <shadow type="field_oid" id="`ZcBzG+?BuY2/cYBe$5M">
                                                    <field name="oid">sonoff.0.TV_IO_02.POWER2</field>
                                                  </shadow>
                                                </value>
                                                <statement name="STATEMENT">
                                                  <block type="controls_if" id="~bgCAd`:R9Qa6psrCPt,">
                                                    <value name="IF0">
                                                      <block type="logic_compare" id="mrnN4?RB71(VzMSY7ukp">
                                                        <field name="OP">EQ</field>
                                                        <value name="A">
                                                          <block type="get_value" id="VQ@d4QJr?1Rs:wXlxyUF">
                                                            <field name="ATTR">val</field>
                                                            <field name="OID">sonoff.0.TV_IO_02.POWER2</field>
                                                          </block>
                                                        </value>
                                                        <value name="B">
                                                          <block type="logic_boolean" id="hEtoM8ee_@iRK9zopvM,">
                                                            <field name="BOOL">TRUE</field>
                                                          </block>
                                                        </value>
                                                      </block>
                                                    </value>
                                                    <statement name="DO0">
                                                      <block type="control" id="ypwi]XhW=R|`f|h@Rj75">
                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                        <field name="OID">sonoff.0.TV_IO_01.POWER4</field>
                                                        <field name="WITH_DELAY">FALSE</field>
                                                        <value name="VALUE">
                                                          <block type="logic_boolean" id="CcX!goju[]aTWSoV$O%c">
                                                            <field name="BOOL">TRUE</field>
                                                          </block>
                                                        </value>
                                                        <next>
                                                          <block type="control" id="!~PL+)oL;%D9?)v:18d`">
                                                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation>
                                                            <field name="OID">sonoff.0.TV_IO_01.POWER3</field>
                                                            <field name="WITH_DELAY">TRUE</field>
                                                            <field name="DELAY_MS">1000</field>
                                                            <field name="UNIT">ms</field>
                                                            <field name="CLEAR_RUNNING">FALSE</field>
                                                            <value name="VALUE">
                                                              <block type="logic_boolean" id="+usxVhl%$dZ{G?L!~r5]">
                                                                <field name="BOOL">FALSE</field>
                                                              </block>
                                                            </value>
                                                          </block>
                                                        </next>
                                                      </block>
                                                    </statement>
                                                  </block>
                                                </statement>
                                                <next>
                                                  <block type="comment" id=")9f:}WJL|B:#FaNf+J(t">
                                                    <field name="COMMENT">Klappe ist offen und TV fährt hoch</field>
                                                    <next>
                                                      <block type="on_ext" id="L2=5BH_z#InOmocd)4D.">
                                                        <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                                                        <field name="CONDITION">ne</field>
                                                        <field name="ACK_CONDITION"></field>
                                                        <value name="OID0">
                                                          <shadow type="field_oid" id="22SXZF-kttF?1WT(AN]s">
                                                            <field name="oid">sonoff.0.TV_IO_01.POWER1</field>
                                                          </shadow>
                                                        </value>
                                                        <statement name="STATEMENT">
                                                          <block type="controls_if" id="VCEd#8Dj2AL9[b$)!X^h">
                                                            <mutation else="1"></mutation>
                                                          </block>
                                                        </statement>
                                                      </block>
                                                    </next>
                                                  </block>
                                                </next>
                                              </block>
                                            </next>
                                          </block>
                                        </next>
                                      </block>
                                    </next>
                                  </block>
                                </xml>
                                
                                

                                Arbeiten tue ich mit Chrome.
                                Jetzt aktuell über IoBroker Pro per Fernzugriff.
                                Über EDGE geht es gar nicht. Da kann man die Bausteine nicht zusammen fügen.

                                Habe ich noch was vergessen?

                                Codierknecht haus-automatisierung 2 Replies Last reply Reply Quote 0
                                • Codierknecht
                                  Codierknecht Developer Most Active @AtomicIX last edited by

                                  @atomicix
                                  Lässt sich einwandfrei importieren, ändern und speichern.

                                  37a08bb2-1fe8-44ab-b920-17433ba6e382-image.png

                                  JS 7.11.1

                                  1 Reply Last reply Reply Quote 1
                                  • haus-automatisierung
                                    haus-automatisierung Developer Most Active @AtomicIX last edited by

                                    @atomicix sagte in Zu viele Trigger, Hilfe für alternative - TV Lift:

                                    Jetzt aktuell über IoBroker Pro per Fernzugriff.

                                    Das wird das Problem sein. Auf den ioBroker Servern läuft eine ältere Version des JavaScript-Adapters und dann gibt es manche Blockly-Definitionen nicht.

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

                                      Das hab ich habe auch mit direkter Verbindung von zuhause.

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

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      869
                                      Online

                                      32.0k
                                      Users

                                      80.4k
                                      Topics

                                      1.3m
                                      Posts

                                      blockly javascript
                                      4
                                      17
                                      472
                                      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