NEO Farbänderung im Text, mit webserver, php, CCU temperatur

Haussteuerung mittels mediola

Moderator: Co-Administratoren

Antworten
33zdenko
Beiträge: 343
Registriert: 21.12.2013, 16:50
Danksagung erhalten: 4 Mal

NEO Farbänderung im Text, mit webserver, php, CCU temperatur

Beitrag von 33zdenko » 25.01.2016, 10:20

Hallo
Im Mediola Forum hat ein User nach farblicher Darstellung von CCU Variablen / Geräte Werten, in Textfeldern von NEO abhängig vom wert der Variable gefragt.
http://answers.mediola.com/1903738/Farb ... ng-im-Text
Da Neo das noch nicht unterstützt, ist es nur möglich mit dem Umweg über eine Webseite, welche dann im NEO über einen Webseiten Element, darstellbar ist.
Also wer einen Webserver hat, lokal auf einem Server oder im Web, kann es auf folgender Weise machen:

Dort geht es um den Temperaturwert in Farbe anzuzeigen von einem CCU Thermostaten, abhängig von der Temperatur welche das Thermostat liefert.
Möglich ist das homematic Script auch auf für Variablen oder andere Geräte anzupassen:

Hier das script welches wir in einem Programm brauchen mit CUXD:
Da ich keinen aussentemperatur sensor habe, habe ich den wandthermostat HM-TC-IT-WM-W-EU zum testen...also unter <Sensor Name> gebe ich den namen für kanal 1, welcher in der ccu den namen
Wohnzimmertermtemp hat.
In dem script sind die zeilen var temp= mit ! davor für die, welche den Heizungsthermostat HM-CC-RT-DN benutzen oder die aussentemperatur in eine variable haben, z.b. wunderground wetter script
wo der name der temperatur variable Wetter_Temperatur lautet.
also einfach das zeichen ! wegnehmen in der zeile die für eigenes gerät zutrifft...

Code: Alles auswählen

!abfrage der temperatur mit seriennummer des Heizungsthermostats HM-CC-RT-DN und datenpunktes 4
!var temp = dom.GetObject("BidCos-RF.KEQ0654208:4.ACTUAL_TEMPERATURE").Value().ToString(2);
!abfrage der temperatur aus der system variable Wetter_Temperatur
var temp = dom.GetObject("Wetter_Temperatur").Value().ToString(2);
!abfrage der temperatur des Wandthermostates HM-TC-IT-WM-W-EU über den namen des sensors: bei mir Wohnzimmertermtemp und kanal 1 TEMPERATURE
!var temp = dom.GetObject("Wohnzimmertermtemp").DPByHssDP("TEMPERATURE").Value();.ToString(2);
WriteLine(temp);
!hier die ip adresse eueren servers/webseite ersetzen, z.b. meine-homepage.de
string url="wget -q -O - 'http://192.168.1.44/temp.php?temp="#temp#"'";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(url);
dieses script für die, welche kein cuxd benutzen, aber empfehlung ist CUXD für die system exec aufrufe, auf der ccu:

Code: Alles auswählen

var temp = dom.GetObject("Wohnzimmertermtemp").DPByHssDP("TEMPERATURE").Value().ToString(2);
string stdout;
string stderr;
system.Exec("wget -q -O /dev/null 'http://192.168.1.44/farbe/temp.php?temp="#temp#"'"
, &stdout, &stderr);
abhängig vom abgefragtem gerät/variable die zeile var temp, aus dem CUXD script übernehmen.

Jetzt brauchen wir eine php datei die wir temp.php nennen, wenn anderer name benutzt wird, muss es im script entsprechend angepasst werden:

Code: Alles auswählen

<?php
if (isset($_GET["temp"])){ $temp1 = $_GET["temp"]; } else { $temp1="x"; }
if ($temp1 != x){
  file_put_contents("temperatur.dat", $temp1);  // die temperatur aus homematic script wird in temperatur.dat geschrieben
  

	if ($temp1 < 0){

	$color="blue"; // textfarbe wenn temperatur < wie 0 

	} elseif ($temp1 >= 0 && $temp1 < 24) {
    	$color="green"; // textfarbe wenn temperatur >= wie 0 und < 24
	} if ($temp1 >= 24){

	$color="red"; // textfarbe wenn temperatur >= wie 24 

	}
	} 
// hier wird die temperatur aus der datei temperatur.dat ausgelesen, für einbindung in mediola
	else {

	$datei = fopen("temperatur.dat","r+");
	$temp1 = fgets($datei);
	
	if ($temp1 < 0) {

	$color="blue"; // textfarbe wenn temperatur kleiner wie 0 
	} elseif ($temp1 >= 0 && $temp1 < 24) {
    	$color="green"; // textfarbe wenn temperatur >= wie 0 und <24
	} if ($temp1 >= 24){

	$color="red"; // textfarbe wenn temperatur >= wie 24 

	}
} 
?>
<html>
<head>
<title>Temperatur</title>
<style>
body {
    background-color: transparent;
}
</style>
</head>
<body>
<?php
echo "<div style=\"color: $color; font-family:Arial; font-size:20px\">$temp1 &deg;C</div>";
 
?>

</body>
</html>
jetzt noch eine datei temperatur.dat auf dem server anlegen, schreibrechte vergeben 766
diese brauchen wir um mit neo, den wert mit nur einer php datei auszulesen temp.php
aus dem homematic script wird die temperatur an diese datei mit temp.php?temp=aktuelletemperatur übergeben...
dieses kann man mit einem browser testen

Code: Alles auswählen

http://webserverip/temp.php?temp=21
abhängig von dem wert der temperatur wird der wert in entsprechenden farben im neo angezeigt.
diese webseite dann im neo webseitenelement eingeben:

Code: Alles auswählen

http://webserverip/temp.php
den hacken bei autorefresh setzen.

Noch ein programm auf der ccu welches das homematic script von oben ausführt, wenn die temperatur des thermostates oder der wert eine variable aktualisiert wird.
Bildschirmfoto 2016-01-25 um 10.17.43.png
Das wars schon, vielleicht hilft es jemandem, bis NEO die texte farblich abhängig von einem wert darstellen kann.

xdelta
Beiträge: 38
Registriert: 06.12.2015, 13:36
Wohnort: Meschede
Danksagung erhalten: 2 Mal

Re: NEO Farbänderung im Text, mit webserver, php, CCU temper

Beitrag von xdelta » 25.01.2016, 13:00

Vielen Dank für die Anleitung.

Grüße
Kai

onkel_peter
Beiträge: 90
Registriert: 08.12.2014, 22:16
Wohnort: Erfurt

Re: NEO Farbänderung im Text, mit webserver, php, CCU temper

Beitrag von onkel_peter » 29.02.2016, 16:39

Hallo 33zdenko,

diese Variante werde ich auf jeden Fall auch mal ausprobieren.
Momentan realisiere ich genau das gleiche Verhalten in der CCU mit einer SV vom Typ "Werteliste",
einem Programm, dass die definierten Temperaturbereiche bestimmt und diversen "Statusgrafiken"
zur Anzeige im Mediola Frontend.
Funktioniert ebenfalls zur vollsten Zufriedenheit.

Danke für die Anregung !

Ratzinger
Beiträge: 164
Registriert: 03.03.2013, 23:26
System: CCU
Wohnort: Villingen-Schwenningen
Kontaktdaten:

Re: NEO Farbänderung im Text, mit webserver, php, CCU temper

Beitrag von Ratzinger » 06.03.2016, 22:47

Es gibt da noch eine zweite alternative Möglichkeit.

Hört sich komplizierter als es ist, aber eigentlich ist es ein simpler Trick, in dem zwei Textfeld übereinander angelegt werden - eines mit farbigem Text, eines mit normalem Text, von denen aber immer nur eines angezeigt wird, weil das andere dann mit Leerzeichen beschrieben ist.

1. Systemvariablen anlegen
- Text1Normal (Zeichenkette)
- Text1Minus (Zeichenkette)

2. Programme anlegen
Farbig1Haupt
Ein Programm anlegen, welches wie folgt steuert:

Code: Alles auswählen

WENN Temperatur ÜBER 0
DANN Text1Normal mit Temperaturwert füllen
UND Text1Minus mit Leerzeichen beschreiben
(wie Du eine Variable mit einem Wert beschreibst, findest Du im HomeMatic-Forum)

WENN Temperatur UNTER 0
DANN Text1Normal mit Leerzeichen beschreiben
UND Text1Minus mit Temperaturwert füllen
3. Integration in AIO
Ein Textfeld erstellen und als Status die Variable Text1Normal einstellen. Dieses Textfeld kopieren und einfügen und genau ÜBER das Text1Normal-Textfeld legen (die Werte bei Position müssen genau übereinstimmen). In dem neuen Textfeld bei Status die Variable Text1Minus einstellen und bei diesem Textfeld z.B. Textfarbe Rot auswählen.

Funktionsweise
Ist die Temperatur über 0° so wird nur der Wert in Variable Text1Normal angezeigt (denn die Variable Text1Minus ist ja mit Leerzeichen beschrieben). Ist die Temperatur unter 0° so wird nur der Wert in Variable Text1Minus angezeigt (denn dann ist ja die Variable Text1Normal mit Leerzeichen beschrieben).

Bei mir funktioniert es (als Behelfslösung) perfekt.

Viele Grüße,
Dominik
248 Kanäle in 57 Geräten: (seit 20.02.2013):

16x HM-LC-Sw1-Pl-2, 4x HM-Sec-MDIR, 2x HM-RC-19, 1x HmIP-RCV-50, 2x HM-OU-CFM-Pl, 2x HmIP-eTRV-B, 1x HM-EM-CMM, 4x VIR-LG-DIM, 7x VIR-LG-RGBW-DIM, 1x VIR-HUE-GTW, 1x HM-Sec-WDS, 1x HM-OU-LED16, 1x HM-LC-Dim1TPBU-FM, 1x HM-LC-Sw1PBU-FM, 1x HM-RC-12-B, 2x HM-PB-2-WM55, 2x HM-CC-TC, 2x HM-Sec-SC, 1x HmIP-SWDM, 1x HM-Sec-SC-2, 1x HM-ES-PMSw1-Pl

(Stand 15.07.2023)

Die erste twitternde Wohnung aus DE: http://twitter.com/dominikswohnung (vorübergehend offline)

Antworten

Zurück zu „mediola“