Seite 1 von 1

OH3 Zeitfenster in Blockly

Verfasst: 31. Jan 2022 10:33
von jack_low
Hallo.

Bin dabei von OH2 auf OH3 umzusteigen und versuche mich in Blockly einzuarbeiten bzw. versuche meine DSL Rules in Blockly zu machen weil es mir ganz gut gefällt :-)

Zu meiner Frage: wie kann ich im Blockly eine bestimme Zeitspanne bestimmen. Exemplarisch hätte ich dieses einfache DSL Script:

-------------------------------------------------------------------------------------------------------------
when
Item bewegungsmelder_oben_helligkeit changed or
Time cron "0 10 16 ? * *"

then
var Number hour = now.getHourOfDay
if (((hour >= 16) && (hour <= 23 )) && ((bewegungsmelder_oben_helligkeit.state == 35) || (bewegungsmelder_oben_helligkeit.state == 34)) )

sendCommand(arbeitszimmerlicht, ON)

end
------------------------------------------------------------------------------------------------------------

Im Anhang ist ein Screenshot des Blockly Scripts wie weit ich bin. Schon mal Danke im Voraus !!!
Bildschirmfoto 2022-01-31 um 10.08.47.png

Re: OH3 Zeitfenster in Blockly

Verfasst: 31. Jan 2022 15:10
von udo1toni
Möchtest Du das wirklich tun? Blockly ist nur eine grafische Entsprechung des passenden Codes, der einzige wirkliche Vorteil liegt darin, dass Du alle möglichen Befehle usw. als Blöcke sichtbar in der Seitenleiste hast. Ich gebe zu, dass es für die DSLleider keine vernünftige Befehlsreferenz gibt, aber Du hast ja nun schon DSL Rules da liegen, die musst Du ja nur in Teilen anpassen, also z.B. statt now.getHourOfDay ein now.getHour einsetzen.

Die Funktion now.getHour() sollte auch in Blockly zur Verfügung stehen, auch die Zuweisung zu einer lokalen Konstanten sollte möglich sein.

Re: OH3 Zeitfenster in Blockly

Verfasst: 31. Jan 2022 16:24
von jack_low
Hi udo1toni.

Ich dachte das der erstelle Code durch Blocky effizienter wäre wie der von DSL und auch das DSL Rules irgendwann obsolet sein werden.
Wenn du allerdings sagt, dass es Hose wie Jacke ist, ob ich Blocky oder weiter DSL Rules anwende, dann sollte es ja egal sein.

Allerdings würde es mich schon interessieren wie ich es in Blocky mit der Zeitspanne mache könnte :-) Hättest du eventuell eine Tipp für mich? Danke dir!

Re: OH3 Zeitfenster in Blockly

Verfasst: 31. Jan 2022 18:39
von udo1toni
Wie gesagt, das sollte genauso funktionieren wie in der DSL. Im Zweifel musst Du die Funktion irgendwo in ein Textfeld tippen, als Zuweisung zu einer Variablen. Ich habe mich mit Blockly noch nicht sehr intensiv auseinandergesetzt.

Mit Klicki-Bunti (sorry für die Polemik) kann gar nichts effizienter sein als über Textdateien. :) es wird lediglich eine niedrigere Schwelle suggeriert. Das ist aber wie im Mathe LK. Man muss schon wissen, wie eine Formel angewendet wird. Deshalb darf man auch eine Formelsammlung nutzen :) Aber die wird auch nicht mit vielen bunten Bildchen gedruckt, sondern die Formeln stehen im Klartext da, das nimmt viel weniger Platz ein.

Die DSL war mal als deprecated angekündigt, das ist aber nicht mehr aktuell. Die DSL wird also mit hoher Wahrscheinlichkeit weitgehend unverändert auch noch in openHAB4 vorhanden sein. Vielleicht gibt es in OH4 dann aber auch vernünftige Unterstützung für andere Programmiersprachen :) Aber solange man z.B. in Javascript ein Item nicht direkt ansprechen kann, sondern immer erst umständlich in der Itemregistry danach suchen muss, ist das alles aus Anwendersicht große Grütze.
Es mag sein, dass die Programme mit JS zehnmal schneller laufen, aber dafür sind sie auch dreimal größer und wesentlich unleserlicher. Mit Maschinencode könnte ich (höhö... 38 Jahre her... als ob... ;) ) die Abarbeitungszeit locker auf ein tausendstel reduzieren, wenn nicht gar ein hunderttausendstel, aber es ist halt wahnsinnig umständlich, selbst einfachste Dinge in Assembler zu programmieren...

Re: OH3 Zeitfenster in Blockly

Verfasst: 31. Jan 2022 21:01
von jack_low
Vielen Dank für diese ausführliche Erklärung zu diesen Thema. Wenn DLS weiter unterstützt wird, dann bleibe ich auch dabei und basta :-) Hatte ich auch eigentlich sehr gemocht muss ich sagen.

Dann noch mal großen Dank und auch für den super support hier im Forum !!!!

Grüße