Mein HS 3 war seit geraumer Zeit auf Firmware 4.3. In letzter Zeit hatte ich auch nichts Bemerkenswertes entwickelt. Zufällig sah ich, dass der aktuelle Stand der Firmware bei 4.8 ist. Leider nicht für meine Hardware! Ich habe festgestellt, dass sich beim Homeserver wider mein Erwarten wieder ein bißchen was tut und habe den Upgrade auf 4.5 durchgeführt. Beim Stöbern stellte ich fest, dass es Neues im Bereich der Entwicklung von Logikbausteinen gibt. Ich wollte eh eine kleine Logik bauen und hatte mich bereits wieder über die graphische Logik-Ebene geärgert, war also dabei, mir einen klitzekleinen Baustein zu erstellen. Da dachte ich, ich nutze mal HSL 2.0. Im Forum fand ich überhaupt nichts Brauchbares zu diesem Thema, was natürlich immer an falschen Suchbegriffen liegen kann. Also habe ich mich selbst durchgebissen.
Bis ich die Idee hinter HSL 2.0 in etwa begriffen hatte und in der Lage war damit umzugehen, habe ich schon ein paar Stunden gebraucht.
Der sogenannte "Generator" erzeugt einem aus einem XML-Skript indem man u.a. Ein- und Ausgänge des Logik-Bausteins definiert, ein Python-Skript, das wiederum diese Variablen enthält und das man um die eigentliche Logik ergänzen muß. Ich habe den Vorteil, dass ich bereits ein bißchen in Python programmiert habe. Insoweit tue ich mich, immer wieder mit einem Blick in die Python-Dokumentation, weil ich immer nur das lerne, was ich gerade brauche um es dann gleich wieder zu vergessen, nicht zu schwer.
Ich hatte relativ schnell eine brauchbar erscheinende Logik, baute gemäß Gebrauchsanleitung den entstanden ".hsl" Baustein in den Homeserver, bastelte mir eine Testmöglichkeit im Graphischen Logikeditor und der Visu und - es tat sich nichts! Bisher hatte ich auf der Debugseite immer unter Exceptions geschaut. Da war alles sauber. Dann fiel mir ein, dass HSL 2.0 auch eine Debug-Möglichkeit offeriert. Diese habe ich genutzt und siehe da, es war ein Fehler notiert. Ich hatte eine Variable in Großbuchstaben definiert und in Kleinbuchstaben angesprochen. Das mag Python nicht. Schnell korrigiert, wieder auf den Homeserver geladen und siehe da, es klappt. Was war passiert? HSL 2.0 nutzt nicht oder nicht nur Exceptions, dort hatte ich gesucht, für das Reporting von Fehlern, sondern eine neue Rubrik, HSL 2.0 und das ist auch noch der zweitletzte Eintrag. Ich habe dann noch ein paar Verbesserungen vorgenommen und nach einem weiteren kurzen Test, die neue Funktion scharfgeschaltet.
Vorläufiges Fazit:
Bisher hatte ich komplexe Logiken auf drei Ebenen gebaut. Die graphische Ebene muß sein, für einfachste Logiken reicht sie auch aus. Für meine Bedürfnisse bin ich recht oft auf die zweite Ebene, Erstellung eigener Logikbausteine, gegangen, die einem mehr Freiheiten und mehr Einfluß bietet. Wenn es aber komplexer wird, muß man in Python programmieren. Dazu hat mir Nils vor ein paar Jahren (2014) den Baustein "Beta: Logikbaustein 12253_LibLoader" zur Verfügung gestellt, Danke!. Er erlaubt selbst geschriebene Python-Module einzubinden. Das habe ich auch immer wieder genutzt.
Mit HSL 2.0 fallen jetzt die zweite (Logikbaustein bisheriger Art) und dritte Ebene (Python-Modul) wieder zusammen. Das macht natürlich auch die Skalierung von wenig komplex bis sehr komplex einfacher.
Mit dem Erstellen von Logiken in Python fällt auch der eine oder andere Komfort weg. Aufgefallen ist es mir bei den Ausgängen. Bisher mußte ich nur eine 1 oder 2 eingeben, um zu entscheiden zwischen Ausgabe bei Berechnung oder bei Änderung. Das muß ich jetzt ausprogrammieren mit "if ... then ... else". Der große Vorteil ist aber vor allem die erhöhte Transparenz und meine (fast) unbegrenzte Einflußmöglichkeit.
Was mir weniger gefällt, ist die Verteilung des Logikbausteins auf mehrere Dateien, die auch noch zu unterschiedlichen Sprachen, XML und Python, gehören.
Was mir wiederum sehr gut gefällt, ist die Möglichkeit, Tests außerhalb des Homerservers und das auch noch rekursiv zu fahren. Ich speichere meine Eingabewerte und kann diese nach einer Änderung des Quellcodes einfach wieder abrufen und die Tests erneut durchführen. Das ist schon sehr nett. Man kann auch die Debug-Seite außerhalb des Homeservers abrufen und so z.B. (siehe oben) Syntaxfehler vor der Übertragung auf den Homeserver finden.
Alles in allem würde ich sagen, ein wesentlicher Schritt vorwärts, jedenfalls für diejenigen, die sich trauen in Python zu programmieren. Möglicherweise gibt es aber noch bessere Lösungen. Eure Erfahrungen würden mich natürlich auch sehr interessieren. Ich hoffe, mein Beitrag war nicht zu lang
Bis ich die Idee hinter HSL 2.0 in etwa begriffen hatte und in der Lage war damit umzugehen, habe ich schon ein paar Stunden gebraucht.
Der sogenannte "Generator" erzeugt einem aus einem XML-Skript indem man u.a. Ein- und Ausgänge des Logik-Bausteins definiert, ein Python-Skript, das wiederum diese Variablen enthält und das man um die eigentliche Logik ergänzen muß. Ich habe den Vorteil, dass ich bereits ein bißchen in Python programmiert habe. Insoweit tue ich mich, immer wieder mit einem Blick in die Python-Dokumentation, weil ich immer nur das lerne, was ich gerade brauche um es dann gleich wieder zu vergessen, nicht zu schwer.
Ich hatte relativ schnell eine brauchbar erscheinende Logik, baute gemäß Gebrauchsanleitung den entstanden ".hsl" Baustein in den Homeserver, bastelte mir eine Testmöglichkeit im Graphischen Logikeditor und der Visu und - es tat sich nichts! Bisher hatte ich auf der Debugseite immer unter Exceptions geschaut. Da war alles sauber. Dann fiel mir ein, dass HSL 2.0 auch eine Debug-Möglichkeit offeriert. Diese habe ich genutzt und siehe da, es war ein Fehler notiert. Ich hatte eine Variable in Großbuchstaben definiert und in Kleinbuchstaben angesprochen. Das mag Python nicht. Schnell korrigiert, wieder auf den Homeserver geladen und siehe da, es klappt. Was war passiert? HSL 2.0 nutzt nicht oder nicht nur Exceptions, dort hatte ich gesucht, für das Reporting von Fehlern, sondern eine neue Rubrik, HSL 2.0 und das ist auch noch der zweitletzte Eintrag. Ich habe dann noch ein paar Verbesserungen vorgenommen und nach einem weiteren kurzen Test, die neue Funktion scharfgeschaltet.
Vorläufiges Fazit:
Bisher hatte ich komplexe Logiken auf drei Ebenen gebaut. Die graphische Ebene muß sein, für einfachste Logiken reicht sie auch aus. Für meine Bedürfnisse bin ich recht oft auf die zweite Ebene, Erstellung eigener Logikbausteine, gegangen, die einem mehr Freiheiten und mehr Einfluß bietet. Wenn es aber komplexer wird, muß man in Python programmieren. Dazu hat mir Nils vor ein paar Jahren (2014) den Baustein "Beta: Logikbaustein 12253_LibLoader" zur Verfügung gestellt, Danke!. Er erlaubt selbst geschriebene Python-Module einzubinden. Das habe ich auch immer wieder genutzt.
Mit HSL 2.0 fallen jetzt die zweite (Logikbaustein bisheriger Art) und dritte Ebene (Python-Modul) wieder zusammen. Das macht natürlich auch die Skalierung von wenig komplex bis sehr komplex einfacher.
Mit dem Erstellen von Logiken in Python fällt auch der eine oder andere Komfort weg. Aufgefallen ist es mir bei den Ausgängen. Bisher mußte ich nur eine 1 oder 2 eingeben, um zu entscheiden zwischen Ausgabe bei Berechnung oder bei Änderung. Das muß ich jetzt ausprogrammieren mit "if ... then ... else". Der große Vorteil ist aber vor allem die erhöhte Transparenz und meine (fast) unbegrenzte Einflußmöglichkeit.
Was mir weniger gefällt, ist die Verteilung des Logikbausteins auf mehrere Dateien, die auch noch zu unterschiedlichen Sprachen, XML und Python, gehören.
Was mir wiederum sehr gut gefällt, ist die Möglichkeit, Tests außerhalb des Homerservers und das auch noch rekursiv zu fahren. Ich speichere meine Eingabewerte und kann diese nach einer Änderung des Quellcodes einfach wieder abrufen und die Tests erneut durchführen. Das ist schon sehr nett. Man kann auch die Debug-Seite außerhalb des Homeservers abrufen und so z.B. (siehe oben) Syntaxfehler vor der Übertragung auf den Homeserver finden.
Alles in allem würde ich sagen, ein wesentlicher Schritt vorwärts, jedenfalls für diejenigen, die sich trauen in Python zu programmieren. Möglicherweise gibt es aber noch bessere Lösungen. Eure Erfahrungen würden mich natürlich auch sehr interessieren. Ich hoffe, mein Beitrag war nicht zu lang
Kommentar