Ankündigung

Einklappen
Keine Ankündigung bisher.

Kombination von zwei Funktionen Badewanne LED-Steuerung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Codebeispiel] Kombination von zwei Funktionen Badewanne LED-Steuerung

    Hallo liebe EIB-PCler,

    nach fast zwei Jahren Pause habe ich mir mal wieder der Thematik angenommen und mit ein wenig Abstand sind viele Dinge wieder weit weg.

    Ich habe schon seit Jahren eine - zugegebenermaßen rudimentäre - Temperaturanzeige der Badewannentemperatur über die LED-Beleuchtung im Bad realisiert. Ich arbeite da mit Stufen Blau (zu kalt), Grün (angenehm für Familie) und rot (grenzwertig warm bis heiß). Ist die Themperatur zu kalt oder zu heiß ist die LED-Beleuchtung aus:

    //Der Badewannensensor gibt die Wannentemperatur über die LED-Leiste aus.
    if "Temp Bad WANNE-4/1/182"<27.99 then write("LED Fenster Bad B DIMMWERT-1/4/193",0%) endif
    if "Temp Bad WANNE-4/1/182"<27.99 then write("LED Fenster Bad G DIMMWERT-1/4/191",0%) endif
    if "Temp Bad WANNE-4/1/182"<27.99 then write("LED Fenster Bad R DIMMWERT-1/4/190",0%) endif
    if "Temp Bad WANNE-4/1/182">28.00 and "Temp Bad WANNE-4/1/182"<37.00 then write("LED Fenster Bad B DIMMWERT-1/4/193",15%) else write("LED Fenster Bad B DIMMWERT-1/4/193",0%) endif
    if "Temp Bad WANNE-4/1/182">36.00 and "Temp Bad WANNE-4/1/182"<40.00 then write("LED Fenster Bad G DIMMWERT-1/4/191",15%) else write("LED Fenster Bad G DIMMWERT-1/4/191",0%) endif
    if "Temp Bad WANNE-4/1/182">39.00 and "Temp Bad WANNE-4/1/182"<42.00 then write("LED Fenster Bad R DIMMWERT-1/4/190",15%) else write("LED Fenster Bad R DIMMWERT-1/4/190",0%) endif

    Durch die Überschneidungen der Kanäle in den Grenzbereichen gibt es dann auch Zwischenfarben. Schöner fände ich natürlich einen stufenlosen Übergang aber da weiss ich momentan zu wenig, wie man das realisiert. Vielleicht hat da jemand auch einen Tipp!

    Wenn die Badewanne nicht genutzt wird, fände ich es gut, dass dennoch die LED-Beleuchtung mal in Betrieb geht. Dazu habe ich eine RANDOM-Funktion in anderen Bereichen im EInsatz, Geschaltet werden soll diese über den zweiten Ausgang des Präsenzmelders. Der erste Ausgang schaltet das dezente Notlicht für schnelle Toilettengänge oder nachts. Der zweite Ausgang schaltet nach ca. 10 Minuten alle Lampen, Spiegelheizung, Lüftung, etc. aus.

    Hier der Code für so einen simplen Zufallsfarbton, wobei der BLAU-Kanal weniger Anteil haben soll, damit warme Farben dominieren:

    // RGB Farbton per gewichtete Zufallsfunktion via Bewegungsmelder Bad einschalten
    if ("PM Bad A2 SCHALTEN-4/5/181"==EIN) then \\
    write("LED Fenster Bad R DIMMWERT-1/4/190",u08,convert(random(50u32),0u08)); \\
    write("LED Fenster Bad G DIMMWERT-1/4/191",u08,convert(random(50u32),0u08)); \\
    write("LED Fenster Bad B DIMMWERT-1/4/193",u08,convert(random(20u32),0u08)) else \\
    write ("LED Fenster Bad R DIMMWERT-1/4/190"u08,0%); \\
    write ("LED Fenster Bad G DIMMWERT-1/4/191"u08,0%); \\
    write ("LED Fenster Bad B DIMMWERT-1/4/193"u08,0%) \\
    endif \\

    Diese Funktion soll generell laufen, wenn die Badewanne nicht in Betrieb ist, also einen Wert höher als 27,99 Grad hat...

    Vielleicht hat da ja jemand einen Tipp zur Verknüpfung der zwei Funktionen und vielleicht auch ggf.zur übergangslosen Anzeige der Badewannen-Themperatur.

    Liebe Grüße

    Gustav

    PS: Wohnt ein EibPCler vielleicht direkt bei mir in der Nähe Herne/Wanne-Eickel??? Wäre toll zum Austausch von ETS oder EIBPC-Fragen.

    #2
    Zitat von Baubär Beitrag anzeigen
    Diese Funktion soll generell laufen, wenn die Badewanne nicht in Betrieb ist, also einen Wert höher als 27,99 Grad hat...
    wie meinst Du das mit "immer"?
    Auch ohne Bewegung im Bad?
    Dann mach halt einen timer der z. B. alle 5 Min die Farbe wechselt.

    Zu Deinem "//Der Badewannensensor gibt die Wannentemperatur über die LED-Leiste aus.":
    da würde ich nur jeweils eine if Abfrage machen und alle drei write() reinschreiben.

    Zum fliesenden Übergange:
    müsste man sich "nur" eine passende Formel überlegen. Also wie man rein mathematisch, ohne if, aus der Temperatur die Farbe "berechnet". Sollt eigentlich kein Thema sein. Schreib dir mal die RGB Werte für die niedrigste und höchste Temperatur raus. Wenn der R z. B. 0 bei 30° und 100 bei 39° sein soll, dann wäre dass sowas wie R= (Temp - 30) / 9 * 100. Dann noch mit min und max auf bereich 0-100 begrenzen.
    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

    Kommentar


      #3
      //Der Badewannensensor gibt die Wannentemperatur über die LED-Leiste aus.
      if "Temp Bad WANNE-4/1/182"<27.99 then write("LED Fenster Bad B DIMMWERT-1/4/193",0%); \\
      write("LED Fenster Bad G DIMMWERT-1/4/191",0%); \\
      write("LED Fenster Bad R DIMMWERT-1/4/190",0%)
      endif

      Sieht so schon netter aus

      Die anderen drei Befehle decken ja unterschiedliche Temperaturbereiche ab, so dass ich diese nicht ohne weiters zusammenfassen kann wie oben...

      Immer heißt: Immer wenn man das Bad betritt und der PM auf Ausgang #2 ein "EIN" schaltet.

      Ich hatte irgendwann auch mal einen Beitrag über ein Aufwecklicht gesehen, wo es ohne Stufen gehen sollte. Das könnte man wahrscheinlich als Vorlage nehmen, wenn ich es als Vorlage noch mal finde. Das realisiere ich zurzeit auch noch unelegant mit "Stufen" Ansonsten werde ich Deinen Vorschlag mal testen...

      Kommentar


        #4
        Zitat von Baubär Beitrag anzeigen
        Immer heißt: Immer wenn man das Bad betritt und der PM auf Ausgang #2 ein "EIN" schaltet.
        Das hast Du doch aber schon!?

        Zitat von Baubär Beitrag anzeigen
        Ansonsten werde ich Deinen Vorschlag mal testen...
        Das wäre auf jeden Fall stufenlos und vom Code her vermutlich einfacher als viele Stufen.
        ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

        Kommentar


          #5
          Vom Prinzip her ja aber wenn ich in den Raum komme, möchte ich ja nicht, dass meine Anzeige der Temperatur gelöscht wird und durch den Zufallsfarbton ersetzt wird. Das Problem würde ja mit Sicherheit im Gradbereich von .27,99°C bis 42°C bestehen.

          Bei der zweiten Funktion müsste ich einen Ausschluss machen dass die Funktion nur ausgeführt wird, wenn Temp Bad WANNE-4/1/182" ist kleiner 27,99^C und grösser 42°C...

          Die folgende Zeile müsste ich dann entsprechend anpassen:

          if ("PM Bad A2 SCHALTEN-4/5/181"==EIN) then \\

          Also im Prinzip dann so:

          if ("PM Bad A2 SCHALTEN-4/5/181"==EIN) and (("Temp Bad WANNE-4/1/182"<27.99 or ("Temp Bad WANNE-4/1/182">42)) then \\

          Kann man das so machen?

          Kommentar


            #6
            klar, kann man so machen!

            Oder Du setzt Dir im "Badewannenteil" eine Variable "Badewanne_aktiv" auf EIN, die kannst Du dann anstatt der Temperaturabfrage verwenden, was zum einen übersichtlicher ist, zum anderen flexibler ist, falls Du z. B. die Temperaturen mal anpassen willst.
            ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

            Kommentar

            Lädt...
            X