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
Da fehlt ja der Trigger.
Wann (durch was) soll den geschalten werden ? -
@djmarc75
Wenn switch = 0oder reicht das nicht als Trigger?
-
-
@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.
-
@crepp1967 sagte in Timer:
die trigger mit und zu verknüpfen.
das sind keine Trigger sondern Abhängigkeiten
-
@djmarc75
OK, danke für die Klarstellung.
Ich werde Deine Version einrichten u. das Thema so lang offen lassen.Gruß
Torsten -
@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.
-
@djmarc75
eigentlich ganz einfach...
Ich war blind...Danke!
-
Läuft jetzt seit zwei Stunden auber durch...
Was ich noch nicht verstanden habe, das markierte heisst, der Schalter ist nicht true? -
@crepp1967 sagte in Timer:
der Schalter ist nicht true?
richtich
Wenn der Switch auf false steht, dann...
-
@crepp1967
das Markierte heißt übersetzt:
not false
und könnte genau so gut als= true
notiert werden. Kommt aufs Gleiche raus, spart aber einen Vergleich.Edit:
Es wird quasi der "Kehrwert" vom Status des Shelly gebildet.
Wenn der Shelly auffalse
steht, ergibt einnot Wert
danntrue
.
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.
-
@paul53
Jaja, immer diese Typunsicherheit. In typisierten Sprachen kann ein Bool halt nurtrue
oderfalse
sein. 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"