NEWS
Problem bei Blockly und Shelly
-
Moin, ich bin neu in dem Thema, ich habe nun meinen ersten Skript mit Blockly angelegt. Leider schaltet der Shelly aber nicht zu den gewünschten Bedingungen. Was mache ich falsch?
-
@ronnyempire versuch mal so:
-
@fa-bio Danke für die schnelle Antwort. Ich finde jedoch einige von den Blöcken nicht die du verwendest. Unter anderem das "Und" Feld mit den zwei Ausgängen als auch das "falls mache, sonst mache". Wo verstecken die sich?
-
@ronnyempire und kann man mit rechtsklick auf extern oder interne Eingänge umstellen (ist aber nur Optik)
beim falls kann man mit dem Zahnrad noch sonst falls und falls reinholen.Aber was ist genau dein Plan bzw. was ist feedin? PV?
-
@maximal1981 ich möchte bei pv-überschuss meine Wärmepumpe beim Pool steuern
-
@ronnyempire nimm beim Trigger wurde geändert
warum machst du eine Verzögerung von 5 Minuten? absicht?Edit: hat aber @fa-bio schon gepostet^^
-
mit rechtsklick auf das und klicken
-
@ronnyempire
Und wenn der Trigger bereits auf Änderungen an "currentFeedIn" horcht, brauchst Du nicht mit "Wert von" arbeiten.Nimm stattdessen aus dem Bereich "Trigger" den Block "Objekt ID". Den kannst Du dann auf "Wert" ändern.
-
@ronnyempire Vorschlag:
-
@ronnyempire sagte: Was mache ich falsch?
Vermutlich sind die Verzögerungen von 5 Minuten dafür gedacht, dass nicht bei jeder kleinen Wolkenlücke eingeschaltet bzw. bei jeder kleinen Wolke ausgeschaltet wird? Das funktioniert so nicht. Vorschlag:
-
@paul53 Welchen Sinn hat die Abfrage, ob die Steckdose ein ist, bevor sie ausgeschaltet wird und andersrum? Dem js-controller ist es wurst, wenn der state mehrfach auf
false
odertrue
gesetzt wird. Mehr als AUS oder EIN gibt es nicht. -
@schmakus sagte: Dem js-controller ist es wurst, wenn der state mehrfach auf false gesetzt wird.
Dem js-controller schon, aber es wird unnötig gesendet, was andere zur gleichen Zeit gesendeten Telegramme stören kann.
-
@paul53 Kommt auf den jweiligen Adapter an. Die meisten Adapter verarbeiten oft nur ne Änderung eines Werts. Somit wird nix zusätzlich "gesendet".
-
@schmakus sagte: Die meisten Adapter verarbeiten oft nur ne Änderung eines Werts.
Sicher die meisten Adapter?
-
@paul53 dazu kann ich keine Aussage machen. Deckel drauf.
-
@maximal1981 Ich will damit verhindern, dass wenn sich mal eine Wolke vorbei schleicht und der Ertrag kurzfristig runter geht die Anlage nicht immer Aus/An springt, was ja nicht gut für die Lebensdauer der Pumpe ist.
-
@ronnyempire dachte ich mir, wollte nur nachfragen. Da bist du eh bei @paul53 gut aufgehoben.
-
@paul53 Vielen Dank für den Vorschlag. Kurze Rückfrage dazu. Die Limitierung auf vor 16:00Uhr gilt dem Einschalten. Ausschalten soll aber nach 16:00Uhr weiterhin möglich sein. Dies soll dazu dienen einen harten Cut zu machen, weil die Anlage bei den Schwankungen ab 16:00Uhr sonst wie bei den Wolken ständig ein und aus gehen würde. Wenn also nach 16:00Uhr die Anlage einmal aus geht, soll sie es bleiben. Ist das mit deinem Vorschlag so gemacht, ich lese das so (aber ich bin auch Anfänger), dass die Zeit 16:00Uhr für beide gilt.???
-
@ronnyempire sagte in Problem bei Blockly und Shelly:
bei den Schwankungen ab 16:00Uhr
Die sind aber Jahrezeitabhängig.
Im Hochsommer kann das auch deutlich später noch sinnvoll sein. Und im Winter eben nicht.
Da wäre es möglicherweise besser, die "Elevation" zu bestimmen und damit zu arbeiten.
Oder aber über die Astrofunktion einen Zeitraum zwischen Sonnenauf und -untergang bestimmen.Code dazu:
const suncalc = require('suncalc'); createState('0_userdata.0.Astro.Elevation', 0, {type: 'number', unit: '°'}) createState('0_userdata.0.Astro.Azimut', 0, {type: 'number', unit: '°'}) schedule("0 0 * * *", async function () { setState('0_userdata.0.Astro.Sonnenaufgang', getAstroDate("sunrise").toLocaleTimeString('de-DE',{ hour12: false, hour:'2-digit', minute:'2-digit' }), true); setState('0_userdata.0.Astro.Sonnenuntergang', getAstroDate("sunset").toLocaleTimeString('de-DE',{ hour12: false, hour:'2-digit', minute:'2-digit' }), true); }); schedule("* * * * *", function () { var now = new Date(); var sunpos = suncalc.getPosition(now, 51, 6); var h = sunpos.altitude * 180 / Math.PI; var a = sunpos.azimuth * 180 / Math.PI + 180; setState("0_userdata.0.Astro.Elevation", Math.round(10 * h) / 10, true); setState("0_userdata.0.Astro.Azimut", Math.round(a), true); });
-
@codierknecht Das ist nicht das Problem, der Pool steht nur von Mai bis September. Und was die Uhrzeit angeht, die ist noch nicht fix, ich muss beobachten bis wann das sinnvoll ist und würde das dann anpassen.