Meine erste OH3 Rule, Lichtsteuerung bei Pause

  • Hallo smarte Gemeinde,

    habe mich mal etwas mit den neuen Rules beschäftigt, bei Pause soll das Licht leicht angehen und beim fortsetzen wieder aus. Dieses soll nur passieren wenn das Licht während der Wiedergabe aus ist und auch nur dann wenn mein Dämmerungswächter sagt es ist dunkel genug. Vielleicht kann von euch ja jemand was mit anfangen.


    Spoiler anzeigen


    Clients: 2 Shield TV2019 je mit Flirc und Harmony.
    Mediaserver: Board Asrock H270M PRO4, CPU I5-7600T, RAM ADATA 16Gb, SSD850PRO 256GB, HDD 4*WD-Red, DD-S2 V7a, Win10PRO 64bit, Emby...

    Smarthome: OH3 auf Raspberry PI4, Homematic, Harmony-Hub, Philips Hue usw.


  • Hallo!
    Danke fürs posten. Aber, soll ich ehrlich sein? Mehrere IFs ineinander zu schachteln sollten man aus Gründen der Lesbarkeit nicht tun. Verknüpfe die einzelnen Bedingungen mit einem logischen UND.
    Auch das else if ist im Prinzip unnötig, da die Bedingung (Fernbedienung == 'PAUSE') der ersten IF Verzeigung (Verschachtelung) ja sowieso nicht gleichzeitig mit (Fernbedienung == 'PLAY') vorkommen kann. Man kann das else weg lassen.

  • Moin,

    ja ok, danke für das Feedback. Ich bin halt kein Programmierer, ist nur ein Hobby und bin schon froh das es so funktioniert. Das man das Skript hätte auch einfacher halten können dachte ich mir, werde da vielleicht nochmal nachbessern wenn alles Andere läuft.

    Spoiler anzeigen


    Clients: 2 Shield TV2019 je mit Flirc und Harmony.
    Mediaserver: Board Asrock H270M PRO4, CPU I5-7600T, RAM ADATA 16Gb, SSD850PRO 256GB, HDD 4*WD-Red, DD-S2 V7a, Win10PRO 64bit, Emby...

    Smarthome: OH3 auf Raspberry PI4, Homematic, Harmony-Hub, Philips Hue usw.


  • Na erstmal läuft es ja, und wenn ich Pause drücke sehe ich den unschönen Code ja nicht [ae] Werde das aber bestimmt noch aufarbeiten, lerne ja momentan ja auch viel dazu.
    Nein ich wollte den Code einfach mal zur Verfügung stellen, gibt bestimmt den ein oder anderen der damit was anfangen kann. Bin ja selber auch immer nach neuen Ideen am schauen, nur Licht an und aus ist ja langweilig zumal ja Hardware inzwischen ausreichend da ist.

    Für eure Hinweise zum Code bin auch echt dankbar, wenn es einfacher und übersichtlicher geht sollte man das auch so machen. Wie gesagt, werde da noch nacharbeiten und laufen tut es ja auch so sehr gut.

    Spoiler anzeigen


    Clients: 2 Shield TV2019 je mit Flirc und Harmony.
    Mediaserver: Board Asrock H270M PRO4, CPU I5-7600T, RAM ADATA 16Gb, SSD850PRO 256GB, HDD 4*WD-Red, DD-S2 V7a, Win10PRO 64bit, Emby...

    Smarthome: OH3 auf Raspberry PI4, Homematic, Harmony-Hub, Philips Hue usw.


  • Mein letzter Beitrag sollte auch keine Kritik sein. Aber vermutlich ist das bei Programmierern eines der häufigsten Sätze: Werde ich später überarbeiten.
    Was natürlich nie passiert. Deswegen musste ich lachen, als ich das las.

    Ich bin auch kein erfahrener Programmierer. Habe aber die eine oder andere Schulung, bzw. Workshop hinter mir. Und was man immer vermittelt bekommt, ist das die Lesbarkeit von Code mit das aller Wichtigste ist.
    Und wenn ich ehrlich bin, kenne ich das auch selber, dass ich bereits nach relativ kurzer Zeit nicht mehr weiß, was ich da überhaupt gemacht habe. Und das einzige, was dann hilft, ist leserlicher Code, um selber wieder schnell rein zu kommen. Von anderen, die den Code pflegen müssen, überhaupt erst nicht zu reden.

  • Eure Tipps bzgl. schönem Code und dem Überarbeiten stimmen auf jeden Fall! :D

    Nur alle Bed. in einer Zeile halte ich nicht für besser lesbar. Gibt auch teilw. Konvetionen, die die max Länge einer Zeile angeben (weil zu lange Zeilen wirklich nicht mehr gut lesbar sind, man muss da einen Mittelweg finden).
    Eine lange Zeile kann man ja auch sicher mit einem Zeilenumbruch brechen, aber hat man dann was gewonnen?
    Grade wenn man nochmal dran muss, und die Konditionen überprüfen will, weil eine vielleicht nicht mehr das macht, was sie soll, zerpflückt man diese lange Zeile ggf. wieder.
    Und der Code von oben ist ja jetzt auch nicht so mächtig oder wird in einem Open Source Projekt eingesetzt, von daher muss nur der TE damit klarkommen.

    Überarbeite den Code irgendwann oder lasse es so und freue dich dran, deine ersten Schritte erfolgreich gemacht zu haben! :)

  • Eine lange Zeile kann man ja auch sicher mit einem Zeilenumbruch brechen, aber hat man dann was gewonnen?

    Ja eindeutig!
    Die einzelnen Bedingungen untereinander in einer eigenen Zeile mit && verknüpft lässt sich einfacher lesen.
    Natürlich darf man das nicht in einer langen Zeile alles hintereinander klatschen. Das wird dann in der Tat unübersichtlicher.

    In einer "echten" Programmiersprache würde ich das ganze vermutlich noch anders lösen, um die Bedingungen lesbarer zu gestalten.

  • Ob du ein if-condition verwendest oder && wurde für mich hier keinen großen unterschied machen. Grade in dem oben erwähnten use case, wenn man nochmal dran muss, würde mich das nur stören.

    Was viel mehr Lesbarkeit bringen würde, wäre, wenn man auf das itemRegistry.getItem verzichten könnte.
    Braucht man das überhaupt?
    Man kann doch auch so auf items zugreifen oder täusche ich mich?

  • Das ist doch Javascript und keine DSL Regel, oder? Deswegen denke ich, kann man da nicht drauf verzichten.

    Bei IFs ineinander geschachtelt muss ich persönlich das gedanklich immer verunden. Und vor allem muss man erst einmal schauen, ob in einer if-Verzweigung nicht doch noch etwas anderes stattfindet, als nur eine weitere if. Was dann eben keine und-Verknüpfung mehr.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!