Füllstandsanzeige in cm bis oberer Rand

Kabellose und kabelgebundene Sender und Empfänger der klassischen Homematic-Serie

Moderator: Co-Administratoren

Antworten
Detlef_834
Beiträge: 29
Registriert: 17.12.2014, 00:51

Füllstandsanzeige in cm bis oberer Rand

Beitrag von Detlef_834 » 02.09.2021, 22:57

Guten Abend liebe Wissenden,

ich möchte gerne auf meinem HomeStatus Display (ich weiß, nicht mehr ganz aktuell, aber dennoch im Einsatz) den Füllstand in cm ausgeben (das klappt) und zusätzlich dahinter die cm die bis zum oberen Rand noch fehlen.

Das Ganze dient dem Zweck, den Füllstand eines Grundwasser Kontrollschachts anzuzeigen.

Hier der funktionierende Code für den Füllstand,

Code: Alles auswählen

var D1C4 = dom.GetObject("hs_display1:c3");
var Level = dom.GetObject("BidCos-RF.LEQ0384891:1.FILLING_LEVEL").Value();
real LiterFull = 100;

if (Level > 65 )
{
if (Level > 85)
{
var string = "{color:white}{backgroundColor:red}{img:tank_64.png}{fontSize:17}{text:Grundwasser Stufe 3<br>";
}
else
{
var string = "{color:black}{backgroundColor:#FAAC58}{img:tank_64.png}{fontSize:17}{text:Grundwasser Stufe 2<br>";
}
}
else
{
var string = "{color:black}{backgroundColor:#81BEF7}{img:tank_64.png}{fontSize:17}{text:Grundwasser Stufe1<br>";
}

real Liter;
Level = 0.00 + Level; ! + 0.0 wegen Typisierung des Ergebnisses
Liter = 0.00 + (Level /-100.0) * LiterFull ; ! + 0.0 wegen Typisierung des Ergebnisses
var stringC4 = string + "<b>" + Level.ToInteger().ToString(1) + "cm = " + Liter.ToInteger().ToString() + " cm</b>}";

D1C4.State(stringC4 );
und so sieht das Ergebnis im Script Parser aus:

{
"Liter": "-70.000000",
"Level": "70.000000",
"D1C4": "hs_display1:c3",
"sessionId": "",
"stringC4": "\{color:black}\{backgroundColor:#FAAC58}\{img:tank_64.png}\{fontSize:17}\{text:Grundwasser Stufe 2<br><b>70cm = -70 cm<\/b>}",
"httpUserAgent": "",
"string": "\{color:black}\{backgroundColor:#FAAC58}\{img:tank_64.png}\{fontSize:17}\{text:Grundwasser Stufe 2<br>",
"LiterFull": "100",
"STDOUT": ""
}

an der fett gedruckten Stelle soll nun, bei 70cm Füllhöhe, als Ergebnis stehen Beispiel: (100-70cm = 30cm)

[img][
Unbenannt.JPG
/img]
Wie kann man das lösen, bzw. geht so etwas überhaupt?

Vielen Dank für eure Unterstützung,

Viele Grüße
Detlef

MichaelN
Beiträge: 9657
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Füllstandsanzeige in cm bis oberer Rand

Beitrag von MichaelN » 03.09.2021, 00:10

Wieso soll das nicht gehen? Einfach ausrechnen und in den String einsetzen
Übrigens werden Strings mit # verkettet, nicht mit +
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
Baxxy
Beiträge: 10792
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2209 Mal

Re: Füllstandsanzeige in cm bis oberer Rand

Beitrag von Baxxy » 03.09.2021, 00:12

Detlef_834 hat geschrieben:
02.09.2021, 22:57
Wie kann man das lösen, bzw. geht so etwas überhaupt?
Warum sollte das nicht gehen?
Man braucht doch nur den aktuellen Füllstand vom maximal Füllstand abziehen.
Wenn ich das richtig verstanden habe dann sollte das so gehen...
(gleich noch etwas gekürzt und aufgeräumt :wink: )

Code: Alles auswählen

var D1C4 = dom.GetObject("hs_display1:c3");
real Level = dom.GetObject("BidCos-RF.LEQ0384891:1.FILLING_LEVEL").Value();
real LevelFull = 100.0;

string format; string outputC4;

format = "{color:black}{backgroundColor:#81BEF7}{img:tank_64.png}{fontSize:17}{text:Grundwasser Stufe1<br>";
if (Level > 65.0) {
if (Level > 85.0) {
format = "{color:white}{backgroundColor:red}{img:tank_64.png}{fontSize:17}{text:Grundwasser Stufe 3<br>"; }
else {
format = "{color:black}{backgroundColor:#FAAC58}{img:tank_64.png}{fontSize:17}{text:Grundwasser Stufe 2<br>";
}}
outputC4 = format #"<b>"# Level.ToString(0) #"cm = "# (LevelFull - Level).ToString(0) #"cm</b>}";
D1C4.State(outputC4);
WriteLine(outputC4);

Detlef_834
Beiträge: 29
Registriert: 17.12.2014, 00:51

Re: Füllstandsanzeige in cm bis oberer Rand

Beitrag von Detlef_834 » 03.09.2021, 21:47

Ganz herzlichen Dank, Dein Script funktioniert perfekt !!! :D

Antworten

Zurück zu „HomeMatic Aktoren und Sensoren (klassisch)“