Blockly Script für Fernsehbeleuchtung.

  • Moin... Bin ja absolut blutiger Blockly Anfänger...

    Ich versuche grade unsere Fernseh-Hintergrundbeleuchtung per Script zu steuern... (Die Beleuchtung und der TV laufen beide über einen Sonoff)

    Leider bin ich nach diversen Tutorials und Beschreibungen immernoch so schlau wie vorher...

    Mein Zeil...

    Wenn der Fernseher an ist, soll zum Sonnenuntergang die Beleuchtung angehen...

    Also wenn Fernseher an und Sonnenuntergang noch nicht.... dann Licht nicht an...

    wenn Fernseher an und Sonnenuntergang jetzt... dann Licht an...

    wenn Sonnenuntergang schon gewesen und Fernseher geht jetzt an.. dann Licht an...

    Wenn Fernseher aus und Sonnenuntergang dann logischerweise kein Licht.

    Ich gehe mal davon aus, das das wieder total simpel ist aber ich komme bisher noch nicht hinter die Blockly-Logik....

    --- Signaturen werden völlig überbewertet --- X/

  • Such mal nach dem Astrozeiten Script, da ist auch der Sonnenuntergang als Zeit in einem PD hinterlegt und den machst dann einfach mit ner UND Verknüpfung und ner nem Vergleich zur aktuellen Zeit als "falls" Bedingung und schon ist das Blockly fertig. Als Trigger kannst den "Power on" vom TV verwenden.

    Sollte sehr einfach sein und nur durch selber basteln lernt man am schnellste und versteht auch die Funktion der einzelnen Blöcke. Wenn's nicht auf Anhieb klappt, mach ein Screenshot vom Blockly und stell in hier ein.

  • Das Script hat den Vorteil, dass man eben die Zeiten direkt in einem DP zur Verfügung hat, wobei das auch nicht unbedingt nötig ist. Man kann dazu natürlich auch die Astro Zeiten Blöcke direkt aus Blockly verwenden.

    Wie immer gibts hier nicht "die" Lösung, sondern mehrere Möglichkeiten die zum selben Ziel führen.

  • Booohr mich nervt dieses Blockly grade so richtig ab...

    Wie zur Hölle passt da irgendwo diese "und"-Verknüpfung rein?????

    logisch wärs doch, wenn die "und"-Verknüpfung ganz oben steht und das Atro-Ding quasi als ein Argument...

    dieses Astro-Ding passt aber nirgendwo rein???



    --- Signaturen werden völlig überbewertet --- X/

  • In dem Fall ist wohl die Verwendung des Astro Zeiten Script für die Bereitstellung des DP "nächster Sonnenuntergang Uhrzeit" einfacher.

    Das sollte so laufen wie gewünscht. Die Lampe schaltet nur an, wenn der TV läuft und die Zeit größer als die Zeit des Sonnenuntergang ist. Triger hier ist der TV Schalter, somit schaltet die Lampe auch wieder aus, wenn der TV ausgeht.

    Der zweite Block schaltet einfach die Lampe an,, wenn der TV schon läuft und der Sonnenuntergang erreicht ist;)

  • Das ist nicht wirklich kompliziert. Mir ist auf die Schnelle nur nicht eingefallen, wie man das ohne das zusätzliche Astro Zeiten Script lösen könnte. Da müsste ich jetzt selber basteln.

    Ich meine Auf Github gibts ne Anleitung zu Blockly, wobei ich die nur mal kurz überflogen habe. Der Aha Effekt kommt beim Basteln eigentlich von alleine, da die meisten Blöcke sich selbst erklären.

  • Leo888 Ganz ehrlich gesagt habe ich beim Blockly bisher noch keinen so richtigen "AHA" Effekt gehabt. Ich finde das Programm eher umständlich und die Befehle keineswegs selbsterklärend.

    Beispiel Trigger:

    falls Objekt

    xxx - soweit noch klar

    wurde geändert -- auch gerade noch klar

    anerkannt ist egal - hä? was bitte?

    Dabei ist Blockly nach meiner Meinung auch noch furchtbar schlecht dokumentiert. Für einen Laien wie mich ist das wirklich nicht sooo einfach und selbsterklärend.

  • Ich bin da auch recht neu drin, aber habe das recht schnell verstanden. Das "anerkannt ist", ist wirklich etwas blöd formuliert aber wie alles andere auch hab ich das durch ausprobieren mal raus gefunden. Wenn das auf "Befehl" steht, dann erfolgt der Trigger nur wenn der DP sich durch einen Befehl ändert, sprich ich setzte den von Hand. Was das soll, kein Plan da das mit "egal" eigentlich in allen meinen Scripten läuft und somit nicht weiter von Interesse war.

    Man muss auch nicht immer alles 100% verstehen. Wenn ein Script nicht so läuft wie erwartet, dann wird eben so lange gebastelt, bis es passt und dadurch lernt man sehr schnell was hie wie funktioniert ;)

  • Aber wenn ich in einem Befehl Parameter drin habe die in ihrer Funktion vollkommen unerklärlich sind ist das nach meiner Meinung eher Kontraproduktiv.

    Ebenso widerstrebt es mir "so lange zu basteln bis es funktioniert". Das ist kein vernünftiges Arbeiten und ich bin mir nicht sicher ob man damit Blockly "lernen" kann, weil man ja nie so richtig versteht was man da eben gemacht hat.

    Ich nutze zwar auch Blockly um manche Sachen zu erstellen, aber sobald ich etwas komplexere Dinge darstellen möchte scheidet Blockly komplett aus.

    Nur mal so als Beispiel:

    Versuche mal die Formel in Blockly darzustellen:

    ((79-Sensor1)/260,7)+((60-Sensor2)/336)+((Sensor3/5)*0,19)

    Ich habe mich notgedrungen etwas in Javascript eingearbeitet um wirklich vernünftig Scripte erstellen zu können. Mittlerweile nutze ich Blockly meist nur in einem inaktivem script um die Beschreibungen der gewünschten Objekte per Copy/paste abzurufen und in meine Scripte einzufügen.

    Was gefühlsmäßig eher logisch aufgebaut ist ist Node Red. Aber da muss ich erst noch ein paar Wochen damit arbeiten um für mich eine vernünftige Aussage zu treffen.

  • Kommt eben drauf an, was man machen möchte und da ich von Java Script nichts verstehe, bin ich eben auf Blockly angewiesen. Wenn's dann mal klemmt, holt man sich Hilfe im IOBroker Forum.

    Ich habe meine Heizungssteuerung und meine Rollläden über Blockly am Laufen, war alles recht schnell zusammen gestellt und läuft wie geplant.

    Supermicha wollte ja auch nur was recht einfaches haben und das Blockly Script, dass ich dafür gebastelt habe sollte eigentlich auch bei Ihm laufen und ist wirklich sehr übersichtlich.

  • Ja, da hast du schon Recht.

    Es ist ja auch eher ein subjektiver Eindruck. Manche kommen wirklich gut mit Blockly zurecht und ich denke das dein Script wirklich gut funktionieren dürfte.

    Ist nur eben für mich zu unübersichtlich oder ich versuche eine Logik zu erkennen die vielleicht gar nicht vorhanden ist.

  • Um mich da mal kurz einzuhängen...

    Ich sehe das wie Chaot

    mein "einfaches" Script war für mich schon recht kompliziert. Es funktioniert zwar, aber ich steige immernoch nicht durch warum das so aussehen muss wie es aussieht..

    "falls Objekt 'Schalter Fernseher' wurde geändert...." ist mir schon klar. Aber dann gehts schon los..

    die "falls" Bedingung verstehe ich null...

    "falls Wert vom Objekt 'Schalter Fernseher' und Aktuelle Zeit größer als Sonnenuntergang" ???

    Was hat da der Wert vom Objekt nochmal drin zu suchen? Darum gehts doch oben schon in dem "falls Objekt" Block... und woher weiß Blockly, an der Stelle das der Wert von dem Objekt "true" sein muss?

    Ich finde die Syntax echt grenzwertig.. vielleicht isses nur schlecht übersetzt...

    aber "mache steuere 'Schalter Fernsehbeleuchtung' mit 'wahr'" ist nicht wirklich das, was ich mir unter einer einfachen Programmierung vorstelle.

    Wenn man sich dann hinterher mal den js-code anguckt ist das oft nur eine Zeile... und dafür soviel Block-Gebastel...

    Ich bin schon kurz davor mich wirklich nochmal mit js zu beschäftigen...

    Chaot hast du da ein vernünftiges Tutorial zur Hand?

    --- Signaturen werden völlig überbewertet --- X/

  • Wie geschrieben, das meiste erklärt sich von selbst.

  • Leo888

    Vielen Dank. So eine ausführliche, verständliche Erklärung zu einem Block hatte ich noch nirgendwo gefunden.

    Wären die alle so gut dokumentiert, wie du das hier erklärst, würden das wohl viel mehr verstehen.

    Auf die Idee mit dem MouseOver bin ich echt noch nicht gekommen.

    --- Signaturen werden völlig überbewertet --- X/