NEWS
Pause bei wertabhängigem Schalten
-
Hallo zusammen,
ich habe im Grunde was einfaches vor, scheitere aber an den unterschiedlichen Möglichkeiten.
Abhängig von einem gemessenen Wert ("Helligkeit") möchte ich über den Ausgang eines Shelly UNI eine Pumpe ein- bzw. ausschalten. Da sich der gemessene Wert um die eingestellte Schwelle schnell ändert möchte ich verhindern, dass die Pumpe zu schnell an- und wieder ausgeschaltet wird. Also eine Pause zwischen den Schaltvorgängen einbauen.
In Blockly habe ich dafür mit fast allen "Timeouts"-Bausteinen experimentiert, aber weder "Pause" noch "Ausführen Intervall..." oder "Ausführen Timeout..." bringen die Schaltung dazu, dass sich die Schaltung des Ausgangs nicht alle paar Sekunden ändert, wenn die gemessene Helligkeit gerade um den eingestellten Schwellwert herum sich verändert.
Hier nur ein Beispiel, wie ich es versucht habe:

<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on" id="clZzcvwIS].n)#lS$o,q" x="688" y="-1062"> <field name="OID">shelly.0.SHUNI-1#C8C9A31B58D6#1.ADC.Power</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="4=@4i]+bf9bp`[zMliGU"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="zKH59J2NUNAMR*6o+~8e"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="`B@E~98@l0`21L9U5zi}"> <field name="ATTR">val</field> <field name="OID">shelly.0.SHUNI-1#C8C9A31B58D6#1.ADC.Power</field> </block> </value> <value name="B"> <block type="math_number" id="eFg3Ac*G|0*/q0C%e!yb"> <field name="NUM">9.7</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_wait" id="x=j%4(?JfTD}k3xD*2|D"> <field name="DELAY">10</field> <field name="UNIT">sec</field> <next> <block type="control" id="Ep/x,Ezj!8Yrn5p}YV6{"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">shelly.0.SHUNI-1#C8C9A31B58D6#1.Relay0.Switch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="+tJG-dM(fF9P=1OJW_-i"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </statement> <statement name="ELSE"> <block type="timeouts_wait" id="4kEC!1@LlG-33}!]-A1-"> <field name="DELAY">10</field> <field name="UNIT">sec</field> <next> <block type="control" id="GyV5Ul6ky8!R-mI!OvKI"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">shelly.0.SHUNI-1#C8C9A31B58D6#1.Relay0.Switch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="?9V=L,}ebv*uh-Tvxky^"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </xml>Danke für einen kleien Hinweis, was ich falsch gemacht habe bzw. wie ich einfach eine Verzögerung zwischen die Schaltvorgänge bekomme.
Grüßle,
Markus -
Hallo zusammen,
ich habe im Grunde was einfaches vor, scheitere aber an den unterschiedlichen Möglichkeiten.
Abhängig von einem gemessenen Wert ("Helligkeit") möchte ich über den Ausgang eines Shelly UNI eine Pumpe ein- bzw. ausschalten. Da sich der gemessene Wert um die eingestellte Schwelle schnell ändert möchte ich verhindern, dass die Pumpe zu schnell an- und wieder ausgeschaltet wird. Also eine Pause zwischen den Schaltvorgängen einbauen.
In Blockly habe ich dafür mit fast allen "Timeouts"-Bausteinen experimentiert, aber weder "Pause" noch "Ausführen Intervall..." oder "Ausführen Timeout..." bringen die Schaltung dazu, dass sich die Schaltung des Ausgangs nicht alle paar Sekunden ändert, wenn die gemessene Helligkeit gerade um den eingestellten Schwellwert herum sich verändert.
Hier nur ein Beispiel, wie ich es versucht habe:

<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on" id="clZzcvwIS].n)#lS$o,q" x="688" y="-1062"> <field name="OID">shelly.0.SHUNI-1#C8C9A31B58D6#1.ADC.Power</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="4=@4i]+bf9bp`[zMliGU"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="zKH59J2NUNAMR*6o+~8e"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="`B@E~98@l0`21L9U5zi}"> <field name="ATTR">val</field> <field name="OID">shelly.0.SHUNI-1#C8C9A31B58D6#1.ADC.Power</field> </block> </value> <value name="B"> <block type="math_number" id="eFg3Ac*G|0*/q0C%e!yb"> <field name="NUM">9.7</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_wait" id="x=j%4(?JfTD}k3xD*2|D"> <field name="DELAY">10</field> <field name="UNIT">sec</field> <next> <block type="control" id="Ep/x,Ezj!8Yrn5p}YV6{"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">shelly.0.SHUNI-1#C8C9A31B58D6#1.Relay0.Switch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="+tJG-dM(fF9P=1OJW_-i"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </statement> <statement name="ELSE"> <block type="timeouts_wait" id="4kEC!1@LlG-33}!]-A1-"> <field name="DELAY">10</field> <field name="UNIT">sec</field> <next> <block type="control" id="GyV5Ul6ky8!R-mI!OvKI"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">shelly.0.SHUNI-1#C8C9A31B58D6#1.Relay0.Switch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="?9V=L,}ebv*uh-Tvxky^"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </xml>Danke für einen kleien Hinweis, was ich falsch gemacht habe bzw. wie ich einfach eine Verzögerung zwischen die Schaltvorgänge bekomme.
Grüßle,
Markus@markus-7 sagte in Pause bei wertabhängigem Schalten:
aber weder "Pause" noch "Ausführen Intervall..." oder "Ausführen Timeout..." bringen die Schaltung dazu,
zumindest bei dieser Pause ist es klar. Wenn der Wert innerhalb der 10 Sec erneut triggert, nutz das gar nichts.
Du musst mit einer Hysterese arbeiten.
an bei >9.7, aus bei kleiner 9 (als sonst wenn)
-
@markus-7 sagte in Pause bei wertabhängigem Schalten:
aber weder "Pause" noch "Ausführen Intervall..." oder "Ausführen Timeout..." bringen die Schaltung dazu,
zumindest bei dieser Pause ist es klar. Wenn der Wert innerhalb der 10 Sec erneut triggert, nutz das gar nichts.
Du musst mit einer Hysterese arbeiten.
an bei >9.7, aus bei kleiner 9 (als sonst wenn)
-
Kann ich nicht einfach die ganze Abfrage in eine Schleife oder ähnliches packen, die nur alle X Sekunden durchlaufen wird?
-
Kann ich nicht einfach die ganze Abfrage in eine Schleife oder ähnliches packen, die nur alle X Sekunden durchlaufen wird?
@markus-7 javascript arbeitet eventbasiert.
Alle paar Sekunden triggern um nur wenige Schaltvorgänge zu erreichen ist nicht sinnvoll.Wie oft ändert sich der Triggerwert und wie oft sollte dier Schalter wirklich sinnvoll schalten?
-
@markus-7 javascript arbeitet eventbasiert.
Alle paar Sekunden triggern um nur wenige Schaltvorgänge zu erreichen ist nicht sinnvoll.Wie oft ändert sich der Triggerwert und wie oft sollte dier Schalter wirklich sinnvoll schalten?
@homoran said in Pause bei wertabhängigem Schalten:
Wie oft ändert sich der Triggerwert und wie oft sollte dier Schalter wirklich sinnvoll schalten?
Es wird über eine Photodiode die Sonneneinstrahlung gemessen, um bei voller Einstrahlung die Pumpe eine kleine Solarthermie geschaltet wird.
Dabei kommt es bei kleinen Wölkchen schon vor, dass der eingestellte Schwellwert in kurzer Zeit mehrmals unter- bzw. überschritten wird.
Ich möchte, dass nach einem Schaltvorgang (Pumpe ein oder Pumpe aus) dieser Status mindestens 30 Sekunden beibehalten wird.
-
@homoran said in Pause bei wertabhängigem Schalten:
Wie oft ändert sich der Triggerwert und wie oft sollte dier Schalter wirklich sinnvoll schalten?
Es wird über eine Photodiode die Sonneneinstrahlung gemessen, um bei voller Einstrahlung die Pumpe eine kleine Solarthermie geschaltet wird.
Dabei kommt es bei kleinen Wölkchen schon vor, dass der eingestellte Schwellwert in kurzer Zeit mehrmals unter- bzw. überschritten wird.
Ich möchte, dass nach einem Schaltvorgang (Pumpe ein oder Pumpe aus) dieser Status mindestens 30 Sekunden beibehalten wird.
@markus-7 Man könnte auch über ein Schieberegister die Helligkeitswerte glätten.
Aber die Frage war eigentlich nach der Sinnhaftigkeit häufigen Schaltens.
Ich denke nicht, dass ein 30 sekündliches Intervall
- der Pumpe gut tut
- für die Effektivität der Solarthermie unbedingt notwendig ist
ganz abgesehen davon, ob der Helligkeitswert überhaupt dafür geeignet ist.
-
@markus-7 Man könnte auch über ein Schieberegister die Helligkeitswerte glätten.
Aber die Frage war eigentlich nach der Sinnhaftigkeit häufigen Schaltens.
Ich denke nicht, dass ein 30 sekündliches Intervall
- der Pumpe gut tut
- für die Effektivität der Solarthermie unbedingt notwendig ist
ganz abgesehen davon, ob der Helligkeitswert überhaupt dafür geeignet ist.
Da haste im Grunde schon recht. Ich sollte nur dazu erwähnen, dass die Solarthermie nur aus sowas wie 200 m schwarzem Schlauch besteht und zwei kleine 20 EUR Pumpen mittels einem 100 W Solarpanele bestrohmt sind.
Das letzte Jahr ist die Anlage schon gelaufen und die Steuerung der Pumpen wurde über ein Dämmerungsschalter (Platinenbausatz) vorgenommen. Da gab es regelmäßig die Situation, dass das Schaltrelais über mehrere Sekunden lang mehrmals pro Sekunde geschaltet hat

Somit wäre ich mit einer Zyklusdauer von 30-60 Sekunden schon seeehr zufrieden :-)
PS: Den Schwellwert kann ich durch Widerstände und den daraus resultierenden Spannungswert des Shellys gut einstellen.
-
Da haste im Grunde schon recht. Ich sollte nur dazu erwähnen, dass die Solarthermie nur aus sowas wie 200 m schwarzem Schlauch besteht und zwei kleine 20 EUR Pumpen mittels einem 100 W Solarpanele bestrohmt sind.
Das letzte Jahr ist die Anlage schon gelaufen und die Steuerung der Pumpen wurde über ein Dämmerungsschalter (Platinenbausatz) vorgenommen. Da gab es regelmäßig die Situation, dass das Schaltrelais über mehrere Sekunden lang mehrmals pro Sekunde geschaltet hat

Somit wäre ich mit einer Zyklusdauer von 30-60 Sekunden schon seeehr zufrieden :-)
PS: Den Schwellwert kann ich durch Widerstände und den daraus resultierenden Spannungswert des Shellys gut einstellen.
Versuch mal so.

Die falls Abfrage auf wert > Limit und vorheriger Wert <= Limit dient dazu das der Rest nur aktiv wird wenn das Limit gerade überschritten wird. Wenn der Wert oberhalb der Schwelle zappelt ist das nicht interessant.A.
P.s. du musst natürlich die korrekten Objekt IDs eintragen, die hab ich nicht. -
@markus-7 sagte in Pause bei wertabhängigem Schalten:
Kann ich nicht einfach die ganze Abfrage in eine Schleife oder ähnliches packen, die nur alle X Sekunden durchlaufen wird?
Nein.
Versuch mal so

@asgothian said in Pause bei wertabhängigem Schalten:
Versuch mal so [...])
Ich stehe gerade auf dem Schlauch: Wo finde ich diesen Baustein?

(im deutschen Blockly)
-
@asgothian said in Pause bei wertabhängigem Schalten:
Versuch mal so [...])
Ich stehe gerade auf dem Schlauch: Wo finde ich diesen Baustein?

(im deutschen Blockly)
-
Danke dir! -
@homoran said in Pause bei wertabhängigem Schalten:
Wie oft ändert sich der Triggerwert und wie oft sollte dier Schalter wirklich sinnvoll schalten?
Es wird über eine Photodiode die Sonneneinstrahlung gemessen, um bei voller Einstrahlung die Pumpe eine kleine Solarthermie geschaltet wird.
Dabei kommt es bei kleinen Wölkchen schon vor, dass der eingestellte Schwellwert in kurzer Zeit mehrmals unter- bzw. überschritten wird.
Ich möchte, dass nach einem Schaltvorgang (Pumpe ein oder Pumpe aus) dieser Status mindestens 30 Sekunden beibehalten wird.
@markus-7 sagte: Dabei kommt es bei kleinen Wölkchen schon vor, dass der eingestellte Schwellwert in kurzer Zeit mehrmals unter- bzw. überschritten wird.
Wenn nicht auf jede kleine Wolke / Wolkenlücke reagiert werden soll, sollte die Ein-/Ausschaltdauer mind. 5 Minuten betragen. Vorschlag:

-
@markus-7 sagte: Dabei kommt es bei kleinen Wölkchen schon vor, dass der eingestellte Schwellwert in kurzer Zeit mehrmals unter- bzw. überschritten wird.
Wenn nicht auf jede kleine Wolke / Wolkenlücke reagiert werden soll, sollte die Ein-/Ausschaltdauer mind. 5 Minuten betragen. Vorschlag:

Danke euch erstmal vielmals @paul53 @Homoran @Asgothian für die Ideen und Vorschläge, ich teste jetzt die unterschiedlichen Möglichkeiten erstmal simuliert aus und melde mich dann, wie ich es letztendlich umgesetzt habe.
Und immer wieder schön, hier so eine hilfsbereite Community zu wissen

-
Danke euch erstmal vielmals @paul53 @Homoran @Asgothian für die Ideen und Vorschläge, ich teste jetzt die unterschiedlichen Möglichkeiten erstmal simuliert aus und melde mich dann, wie ich es letztendlich umgesetzt habe.
Und immer wieder schön, hier so eine hilfsbereite Community zu wissen

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



