NEWS
Timer (Gelöst)
-
Hardware + Revision/Jahr Proxmox Container auf Minisforum Mini-PC Modell AMD Opteron 23xx (Gen 3 Class Opteron) RAM 11.45 GB Software js-controller: 4.0.24 node.js: 16.20 npm: 8.19.4 linux: debian (buster)Hallo,
Ich möchte über Blockly einen Timer programmieren bei dem 2 Geräte beteiligt sind die kurz hintereinander (im Abstand von 10sec) eingeschaltet werden (1 u. 10sec später 2) und in der umgekehrten Reihenfolge (2 u. 10sec später 1) ausgeschaltet werden.Die Schaltung funktioniert prinzipiell aber ich möchte es auf einen Zeitbereich eingrenzen (7:30 - 20:00)
Leider schaltet das Script in der vorliegenden Form nicht nur bis 20:00 sondern bis 0:00.
Heute früh 7:30 hat es dann nicht mehr geschaltet.
Habe ich einen prinzipiellen Fehler im Verständnis der Logik der Zeitschaltung?
Hier der Code:<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="timeout2">timeout2</variable> <variable type="interval" id="Intervall">Intervall</variable> <variable type="timeout" id="timeout">timeout</variable> </variables> <block type="comment" id="G6nRBEc^zS/s9ct)rggV" x="-438" y="-237"> <field name="COMMENT">test gewächshausbewässerung</field> <next> <block type="comment" id="$H)JV_C;0SG!E=4(sF3k"> <field name="COMMENT">Alle 15min - 3min lang Anfang 10sec versetzt</field> <next> <block type="comment" id="pb=Bz4)sA]{i4h2%FQ8*"> <field name="COMMENT">shelly3_1=pumpe --- shelly3_2=magnetventil</field> <next> <block type="controls_if" id="kLDXUw%]_)$a:B^.1Gr9"> <value name="IF0"> <block type="time_compare_ex" id="NSQCUt=Mq|RW8`HwZ?eU"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">between</field> <value name="START_TIME"> <shadow type="text" id="Y?a|Sdmbq2$6;S7Uv.WV"> <field name="TEXT">7:30</field> </shadow> </value> <value name="END_TIME"> <shadow type="text" id="Nblgnu+Vy18GD_Pd6{MO"> <field name="TEXT">20:00</field> </shadow> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="jduGaA(hQv#)H%!$)+`Q"> <value name="IF0"> <block type="logic_compare" id="Cs`~sO0:i^_=0M%N4m1c"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="c9DknPHn/*Cgso+8nj/f"> <field name="ATTR">val</field> <field name="OID">shelly.0.SHSW-25#D8BFC01A6588#1.Relay0.Switch</field> </block> </value> <value name="B"> <block type="math_number" id="rF%~6z`0_?R0SjDP?(%:"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_setinterval" id="trpw=Wz@}8x2/`0AGB^#"> <field name="NAME">Intervall</field> <field name="INTERVAL">15</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="control" id="M9LaUIsTA4EQE]C+uM,l"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">shelly.0.SHSW-25#D8BFC01A6588#1.Relay0.Switch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="i+(n?o.bc.B0z|%9)feT"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="bssz])u;c2M]k%V{h0FD"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">shelly.0.SHSW-25#D8BFC01A6588#1.Relay1.Switch</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">10</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="iNHW7V[}#N~yL,!sQegm"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="debug" id="~/JU`...F+f5?DO=DN_B"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="-CQN5[w/8CP(qr|]l2IC"> <field name="TEXT">***shelly3_1 u. shelly3_2 ein</field> </shadow> </value> <next> <block type="timeouts_settimeout" id="%?YX2J)iGt#;:Hg3@9!("> <field name="NAME">timeout</field> <field name="DELAY">3</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="control" id="!kWA7,9GbEJIt_RNoX.K"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">shelly.0.SHSW-25#D8BFC01A6588#1.Relay1.Switch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id=";Xf0ekrtXoq%[QSZL:H{"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="*PsU5V|@Xr0Pa~FVoXl2"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">shelly.0.SHSW-25#D8BFC01A6588#1.Relay0.Switch</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">10</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="1*Nz~BF?/=.n,#$y1Ue."> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="debug" id="znGcbg3HDwMu[IST[/sg"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="AP;LP1c[rcHX;I$F=:BD"> <field name="TEXT">***shelly3_2 u. shelly3_1 aus</field> </shadow> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> <block type="controls_if" id="[#yuEMitvp.=!`@Y*q#2" disabled="true" x="712" y="-288"> <value name="IF0"> <block type="time_compare" id="M(i4x-snE{2xS[1vhYh7"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true"></mutation> <field name="OPTION">between</field> <field name="START_TIME">6:00</field> <field name="END_TIME">23:00</field> </block> </value> </block> <block type="control" id=",:Yh]o7z)YKq}[*V%t!." disabled="true" x="988" y="-212"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.sonoffmini1.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="RTI?TA^8LNM.JlGoIM.C"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="debug" id="Qbg{Y?fTHqY*ijwv8tFr" disabled="true"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="0|4$`6c4Ry$,`BIM2slm"> <field name="TEXT">***sonoffmini1 ein</field> </shadow> </value> <next> <block type="timeouts_settimeout" id="TAtH0ckGP0CVw^HH/]v%" disabled="true"> <field name="NAME">timeout2</field> <field name="DELAY">5</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="control" id="mQA?SO)[3D)z[ap{}jY-"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">sonoff.0.sonoffmini1.POWER</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="8Jx[;jFWFMo?:u,9+WIz"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </xml>Ich wäre sehr dankbar für Tipps zur Lösung
Gruß
Torsten -
@crepp1967 zeig mal ein Screen vom Blockly bitte. Kann man dann auch am Smartphone ansehen.
-
@crepp1967 zeig mal ein Screen vom Blockly bitte. Kann man dann auch am Smartphone ansehen.
-
@crepp1967
Da fehlt ja der Trigger.
Wann (durch was) soll den geschalten werden ? -
@crepp1967
Da fehlt ja der Trigger.
Wann (durch was) soll den geschalten werden ? -
-
@djmarc75
Danke für Deinen Vorschlag, ist auf jeden Fall eine Überlegung wert die trigger mit und zu verknüpfen.Mittlerweile habe ich gesehen das er eingeschaltet hat...
7:55 obwohl ab 7:30 im Trigger steht - ich kann mir das nicht erklären aber ich möchte es verstehen.
Hast Du eine Erklärung für den Zeitversatz??? -
@djmarc75
Danke für Deinen Vorschlag, ist auf jeden Fall eine Überlegung wert die trigger mit und zu verknüpfen.Mittlerweile habe ich gesehen das er eingeschaltet hat...
7:55 obwohl ab 7:30 im Trigger steht - ich kann mir das nicht erklären aber ich möchte es verstehen.
Hast Du eine Erklärung für den Zeitversatz???@crepp1967 Wenn das in Deinem Skript ist dann sind 15 Minuten "Versatz" beim Starten des Skripts normal weil Intervall erst 15 Minuten später ausgeführt wird. Ich gehe davon aus dass Du um 7:40 Uhr das Skript neu gestartet hast.
Wie gesagt fehlt Deinem Skript jeglicher Trigger und wird als solches nie richtig laufen.
-
@djmarc75
Danke für Deinen Vorschlag, ist auf jeden Fall eine Überlegung wert die trigger mit und zu verknüpfen.Mittlerweile habe ich gesehen das er eingeschaltet hat...
7:55 obwohl ab 7:30 im Trigger steht - ich kann mir das nicht erklären aber ich möchte es verstehen.
Hast Du eine Erklärung für den Zeitversatz??? -
@crepp1967 sagte in Timer:
die trigger mit und zu verknüpfen.
das sind keine Trigger sondern Abhängigkeiten ;)
-
@crepp1967 sagte in Timer:
die trigger mit und zu verknüpfen.
das sind keine Trigger sondern Abhängigkeiten ;)
-
@djmarc75
Noch eine letzte Frage:
wo finde ich diesen Baustein:

Eigentlich sollte der in Logik zu finden sein...@crepp1967 ja, der UND Baustein... dort dann mit der rechten Maustaste draufklicken und externe Eingänge auswählen.
-
@crepp1967 ja, der UND Baustein... dort dann mit der rechten Maustaste draufklicken und externe Eingänge auswählen.
-
@crepp1967 ja, der UND Baustein... dort dann mit der rechten Maustaste draufklicken und externe Eingänge auswählen.
-
Läuft jetzt seit zwei Stunden auber durch...

Was ich noch nicht verstanden habe, das markierte heisst, der Schalter ist nicht true? -
Läuft jetzt seit zwei Stunden auber durch...

Was ich noch nicht verstanden habe, das markierte heisst, der Schalter ist nicht true?@crepp1967
das Markierte heißt übersetzt:
not falseund könnte genau so gut als= truenotiert werden. Kommt aufs Gleiche raus, spart aber einen Vergleich.Edit:
Es wird quasi der "Kehrwert" vom Status des Shelly gebildet.
Wenn der Shelly auffalsesteht, ergibt einnot Wertdanntrue.
Die Verkürzung sieht man am besten im JS-Code.
Einif (!value)ist das Gleiche wie ein
if (value == false)Ein Vergleich kostet etwas mehr Rechenzeit als ein einfaches Negieren.
-
@crepp1967
das Markierte heißt übersetzt:
not falseund könnte genau so gut als= truenotiert werden. Kommt aufs Gleiche raus, spart aber einen Vergleich.Edit:
Es wird quasi der "Kehrwert" vom Status des Shelly gebildet.
Wenn der Shelly auffalsesteht, ergibt einnot Wertdanntrue.
Die Verkürzung sieht man am besten im JS-Code.
Einif (!value)ist das Gleiche wie ein
if (value == false)Ein Vergleich kostet etwas mehr Rechenzeit als ein einfaches Negieren.
-
@crepp1967
das Markierte heißt übersetzt:
not falseund könnte genau so gut als= truenotiert werden. Kommt aufs Gleiche raus, spart aber einen Vergleich.Edit:
Es wird quasi der "Kehrwert" vom Status des Shelly gebildet.
Wenn der Shelly auffalsesteht, ergibt einnot Wertdanntrue.
Die Verkürzung sieht man am besten im JS-Code.
Einif (!value)ist das Gleiche wie ein
if (value == false)Ein Vergleich kostet etwas mehr Rechenzeit als ein einfaches Negieren.
@codierknecht sagte: ist das Gleiche wie ein
Nicht ganz.
if (!value)ist auch erfüllt bei null, undefined und NaN. Deshalb bevorzuge ich es.
-
@codierknecht sagte: ist das Gleiche wie ein
Nicht ganz.
if (!value)ist auch erfüllt bei null, undefined und NaN. Deshalb bevorzuge ich es.
@paul53
Jaja, immer diese Typunsicherheit. In typisierten Sprachen kann ein Bool halt nurtrueoderfalsesein. Ich bevorzuge es einfach nur wegen der kürzeren Notation und der Rechenzeit. Es gab mal Zeiten, da war sowas wichtig. Da hat aber ein gewisser Herr Gates auch noch gesagt "640 KB Hauptspeicher reichen für alle Ewigkeit" ;-)
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden


