IPS-868 RGBW und Raumtemperatur

Hi,
wollte mal fragen ob einer ne ahnung hat, wie ich bei 15°c Raumtemperatur dunkel blaues licht bekomme und das Farbspektrum „durchfahren“ kann bis das licht rot ist. (bei ca. 25°c Raumtemperatur).

Als Temperaturfühler habe ich einen Raumfühler von Homematic oder einen PT100 zur auswahl der mit einer Siemens SPS in IPS Integriert ist.

in dem du eine RGB-LED Beleuchtung installierst und diese abhängig von der Temperatur ansteuerst

Du könntest die Temperaturdifferenz von 10°C umnormieren in 0 - 255.

Blauanteil = 255 - Temdiff in 0-255
Rotanteil = Tempdiff in 0-255

Ich glaube ja dass ich das ganze Jahr keinen Raum habe der auch nur in die Nähe von 15°C kommt…aber das ist nur eine rein private Beobachtung.

Ich könnte mir vorstellen, dass Du eher ab 18,5 Grad aufwärts loslegen solltest.

Gruss
B71

Danke für die antworten!

Wie kann man denn so was realisieren? Was für Befehle muss man haben?
Ich steh echt auf’m Schlauch.

Währe sehr dankbar für ein beispiel.

So mein Freund.

  • ID’s anpassen
  • Temperaturdifferenz anpassen
  • Spaß haben

Das Script ist für die IPS-RGB’s!!


<?
/*=============================================================
Temp_Visu - Martin Heinzel - 21.09.2011
Version: 1.0

Beschreibung:
Mit diesem Script wird ein Temperaturverlauf über RGB's dargestellt.

Änderungen
----------

tt.mm.jjjj von Version x.x -> y.y

Beschreibung:

================================================================*/

// Variablen Deklaration --------------------------------------

// ID's
//--------------
$id_RGB     	= 57093 /*[Schäferweg\Erdgeschoss\Wohnzimmer\.RGBW-868 (Stripe)]*/;
$id_IstTemp    = 17174 /*[Schäferweg\Erdgeschoss\Wohnzimmer\Temperatur\HM_Wohnen_Thermostat_Act\TEMPERATURE]*/;

// Variablen
//--------------
$TempUG        = 15.0;
$TempOG        = 25.0;

//-------------------------------------------------------------

//---------------------------- Main -----------------------------
//Einlesen der Isttemperatur
$TempAct			=  GetValueFloat($id_IstTemp);

//Bilden der Temperaturdifferenz in 0 - 255
$TempDiff_255  = (int)Scaling($TempAct, $TempUG, $TempOG, 0.0, 255.0);

$Rot = $TempDiff_255;
$Zeit_Rot = 0;

$Gruen = 0;
$Zeit_Gruen = 0;

$Blau = 255 - $TempDiff_255;
$Zeit_Blau = 0;


PJ_DimRGBW($id_RGB,$Rot,$Zeit_Rot,$Gruen,$Zeit_Gruen,$Blau,$Zeit_Blau,0,0);

//-------------------------- Main ENDE --------------------------

function Scaling($In, $InUG, $InOG, $OutUG, $OutOG)
			{
			/*=============================================================
			Scaling - Martin Heinzel - 21.09.2011
			Version: 1.0

			Beschreibung:
			Diese Funktion scaliert einen Wert nach der Form:
			
			      ( ( In - In_Min )                            )
			Out = (------------------- x ( Out_Max - Out_Min ) ) + Out_Min
			      (( In_Max - In_Min )                         )

			Änderungen
			----------

			tt.mm.jjjj von Version x.x -> y.y

			Beschreibung:

			================================================================*/

			//---------------------------- Main -----------------------------

			$In_InUG 		=	$In 		-	$InUG;
			$InOG_InUG     =	$InOG 	-	$InUG;
			$OutOG_OutUG   =  $OutOG   -  $OutUG;
			$Out 				=  ($In_InUG	/	$InOG_InUG	*	$OutOG_OutUG) +   $OutUG;
			
			//Begrenzung unten
			If ($Out <= $OutUG)
			{
        		$Out 			=  $OutUG;
			}
			
			//Begrenzung oben
			If ($Out >= $OutOG)
			{
        		$Out 			=  $OutOG;
			}

			return $Out;
			//-------------------------- Main ENDE --------------------------

			}

?>

wow, das ist ja der Kracher, wat für’n Service!

:wink:

Geil! Sollte auf jeden Fall bei den nützlichen Skripts verlinkt werden!!

Besten Dank!

Manchmal kann man es nicht glauben. :):slight_smile:

Vielen Dank! @ Schablone

Super Skript!

Kann man auch Grün noch dazu nehmen?

Ich Habe mal dran gedacht, dass die Farben wiefolgt ausgegeben werden:

Temp bereich: 18-28°C

Farbverlauf:

Blau -> bei 18°C ->

dazwischen der Verlauf von cyan>Grün>Gelb>Orange>Mangenta

Rot -> Bei 28°C

Hallo mein neuer Freund. :wink:

Ich weiß zwar zum verrecken nicht wofür man das braucht, aber dein Wunsch ist mir Befehl. :smiley:


<?
/*=============================================================
Temp_Visu - Martin Heinzel - 21.09.2011
Version: 1.1

Beschreibung:
Mit diesem Script wird ein Temperaturverlauf über RGB's dargestellt.

Änderungen
----------

22.09.2011 von Version 1.0 -> 1.1

Beschreibung:

Farbe Grün integriert.

================================================================*/

// Variablen Deklaration --------------------------------------

// ID's
//--------------
$id_RGB         = 57093 /*[Schäferweg\Erdgeschoss\Wohnzimmer\.RGBW-868 (Stripe)]*/;
$id_IstTemp    = 17174 /*[Schäferweg\Erdgeschoss\Wohnzimmer\Temperatur\HM_Wohnen_Thermostat_Act\TEMPERATURE]*/;

// Variablen
//--------------
$TempUG        = 18.0;
$TempOG        = 28.0;

//-------------------------------------------------------------

//---------------------------- Main -----------------------------
//Einlesen der Isttemperatur
$TempAct            =  GetValueFloat($id_IstTemp);

//Berechnung der Mittentemperatur
$Center        =  $TempUG + (( $TempOG - $TempUG ) / 2);

//Rotanteil
//----------
$Rot = (int)Scaling($TempAct, $Center, $TempOG, 0.0, 255.0);
//Begrenzen Min
If ($Rot < 0) 		$Rot = 0;
//Begrenzen Max
If ($Rot > 255) 	$Rot = 255;
$Zeit_Rot = 0;

//Grümanteil
//----------
If ($TempAct <= $Center)
{
	$Gruen = (int)Scaling($TempAct, $TempUG, $Center, 0.0, 255.0);
}
else
{
	$Gruen = (int)Scaling($TempAct, $Center, $TempOG, 255.0, 0.0);
}
//Begrenzen Min
If ($Gruen < 0) 		$Gruen = 0;
//Begrenzen Max
If ($Gruen > 255) 	$Gruen = 255;
$Zeit_Gruen = 0;

//Blauanteil
//----------
$Blau = (int)Scaling($TempAct, $TempUG, $Center, 255.0, 0.0);
//Begrenzen Min
If ($Blau < 0) 		$Blau = 0;
//Begrenzen Max
If ($Blau > 255) 		$Blau = 255;
$Zeit_Blau = 0;

PJ_DimRGBW($id_RGB,$Rot,$Zeit_Rot,$Gruen,$Zeit_Gruen,$Blau,$Zeit_Blau,0,0);

//-------------------------- Main ENDE --------------------------

function Scaling($In, $InUG, $InOG, $OutUG, $OutOG)
            {
            /*=============================================================
            Scaling - Martin Heinzel - 21.09.2011
            Version: 1.0

            Beschreibung:
            Diese Funktion scaliert einen Wert nach der Form:

                  ( ( In - In_Min )                            )
            Out = (------------------- x ( Out_Max - Out_Min ) ) + Out_Min
                  (( In_Max - In_Min )                         )

            Änderungen
            ----------

            tt.mm.jjjj von Version x.x -> y.y

            Beschreibung:

            ================================================================*/

            //---------------------------- Main -----------------------------

            return ($In - $InUG) / ($InOG - $InUG) * ($OutOG - $OutUG) + $OutUG;

            //-------------------------- Main ENDE --------------------------

            }
?>

Viel Spaß damit.

ah, wir haben einen Auftrags-Programmierer, klasse!:smiley: Kann ich meine Themen auch gleich einkippen oder muss ich einen extra Thread aufmachen?

:smiley: super Job! :wink:

Das ganze für Chromoflex…falls die Arbeit ausgehen sollte :slight_smile:
Um beim Thema zu bleiben :slight_smile:

Hallo Bernardo71,

ich weiss nicht wie man die Chromoflex ansteuert.
Ich könnte aber aus dem Script eine allgemeine Funktion machen.

Der Funktion übergebe ich die Ist-Temperatur und die TempUG und TempOG.
Zurück bekomme ich die RGB-Werte in 0-100%.

Ist das OK für Dich? Oder hast Du ne bessere Idee?

PS: Aber nochmal. Wofür braucht man das? Wenn ich friere ist es zu kalt. Wenn ich schwitze ist es zu warm.

Oder habt Ihr einen Gen-Defekt den ich noch nicht kenne? :wink:

Ne…aber ich kenne hier 2 mit diesem Defekt in meinem Umfeld :slight_smile:

Ist jetzt nicht irgendetwas was ich unmittelbar brauchen würde, aber ich überlege gerade, ob man damit die Aussentemperatur als Frostwarnung am Frühstückstisch auf den LEDs signalisiert und dadurch entsprechend wachsam in den Tag startet.

Früher wollte ich mal einen leichten Sonnen Auf/Untergang realisieren…aber das ist irgendwie nie zum Leben erweckt worden.

Also mach da mal keinen Akt deswegen…wobei diese Generische Funktion eventuell Abnehmer finden sollte.

Gruß
B71

Geht ja gut ab hier.:smiley:
Was habe ich hier nur ausgelöst?

Das ganze dient als ambiente Beleuchtung für Terrarien.

Anfangs habe Ich mit dem Gedanken gespielt das als Backofen vorheiz Anzeige zu nutzen oder als Warnung bei Kühlschränken, vor defekt.

Ist das gleiche prinzip wie bei dem duschkopf der die Farbe wechselt, bei Temperatur Änderung.

Ist alles etwas spielerei, aber wofür gibt es IPS denn?
Ich würde mal sagen, genau deshalb. Oder?

Super Arbeit! Ich muss mich etwas mehr mit php beschäftigen, aber die Zeit lässt es nicht immer zu.

Danke, nochmal!

Hallo Bernado71.

Ich habe gerade gesehen das die Ansteuerung der Chromoflex auch von 0-255 geht.

Somit kannst Du das Script stumpf übernehmen. Lediglich die Ansteuerung muss geändert werden.

Also, an der Stelle kommt deine Chromoflexansteuerung rein.


PJ_DimRGBW($id_RGB,$Rot,$Zeit_Rot,$Gruen,$Zeit_Gruen,$Blau,$Zeit_Blau,0,0); 

Die Zeitwerte stehen alle auf „0“. Also uninteressant.

In den Variablen $Rot, $Gruen und $Blau stehen die Farbwerte in 0 - 255

Cool…teste ich die Tage mal…

Ich habe mir meine Edelstahlhausnummern (solche aus 3mm Edelstahlblech mit Bolzen hinten dran zum „blinden befestigen“ an der Hauswand) auf der Rückseite mit RGB und Warmweiss LEDs beklebt. Diese werden (zukünftig, Garage mit der Wand für die Nummern ist noch nicht fertig verputzt) von einem 868 RGBW angesteuert und Strahlen dann quasi eine Farbaura seitlich ab - über die Reflektion des weissen Putzes.

Durch das Verknüpfen der Farbe mit der Temperatur kann ich direkt die Temp abschätzen…

Ist halt so irgendwie das Tüpfelchen auf dem „i“.

Es wird auch noch ein „Rettungsdienst“ Knopf im WF geben, da wird dann die Hausnummer rot blinken…

Das ist doch mal ein sehr gute Idee :D, hilft beim Finden.