Button / Anzeige / Skript kombinieren

Grüatzi,

ich habe aktuell folgendes Problem:
Ich regele die Raumtemperaturen kalendergesteuert - das funktioniert auch ganz gut soweit.
Allerdings kommt es natürlich immer einmal vor, dass es irgendwo zu kalt oder zu warm ist.

Dazu habe ich Variablen angelegt:

Aufheizzeit_Bad
Aufheizzeit_Küche

etc.
Mit einem Skript vom Webfront setze ich diese nun auf 60 min, mit weiterer Ausführung auf 120 etc. bis max. 240min.
Dadurch wird die Kalendersteuerung für den betreffenden Raum auf „High“ gesetzt und die Variable wird alle 5min um 5 reduziert.
Danach läuft die Kalendersteuerung wieder.
Jetzt möchte ich (für den Fall „zu warm“) die Variable in den Negativ-Bereich setzen.
Soweit ist das auch kein Problem, mein Problem ist aber die Übersichtlichkeit im Webfront, wenn ich nun zu der angezeigten Variable noch ein zweites Skript habe für „Absenken“, sind das 3 Zeilen/Raum - ohne den Krempel vom Thermostat.

Wäre es nicht irgendwie möglich, dass man nur eine Zeile hat in der ca. folgendes steht:

Aufheizen/Ansenken << 50min >>

Wobei dann >> + << Buttons sind, die das jeweilige Skript ausführen.
Ich habe mal etwas rumprobiert, bekomme da aber ehrlich gesagt nichts richtig auf die Reihe - funktioniert hat bisher nichts.

Wäre für Hilfe dankbar!

Gruß,
Matthias

PS: Screenshot vom aktuellen Webfront-Teil (ohne Absenken-Skript) anbei.

Hi

So out of the box gibt es da nichts.
Man könnte aber mit Associationen arbeiten und das Variablenprofil dauernd überschrieben.
Ist allerdings ein gröbere Hack.

Hmm, ja das müßte klappen.

gruß
bb

Ich würde statt dem Hacking eine Variable für Dauer und ein Enum für Absenken/Kalender/Aufheizen machen. Absenken und Aufheizen erhöhen jeweils die Zeit bzw. setzen sie auf 60 wenn vorher das jeweils andere aktiv war. Kalender setzt die Zeit auf 0. Wenn dein Timer bei 0 angekommen ist setzt er das Enum ebenfalls auf „Kalender“.

Danke Gucky, kannst Du das irgendwie auch so beschreiben, dass ich das verstehen kann :slight_smile:
Ich gebe mir zwar wirklich alle Mühe, allerdings habe ich wirklich keine Ahnung.

Also aktuell ist es so, dass der Kalender immer noch läuft wenn die Variable einen Wert>0 hat.
Es gibt dann ein Skript für die jew. Schichten und am Anfang des Skripts steht pro Raum (ein Skript regelt alle Räume nacheinander) eine Funktion, die den Raum aufheizt wenn die Variable einen pos. Wert hat.

Gruß,
Matthias

Hallo 28Maeffjus,

meine Lösung benötigt zwei Zeilen für jede Regelung. Du hast eine integer Variable „manual override time“ und eine integer Variable „manual override“ mit einem eigenen Profil (Profile verwalten -> Integer Profil anlegen -> speichern und dann in der Variable aussuchen) „0: manual heating, 1: manual cooling, 2: calendar“ und einer eigenen Aktion auf ein Skript „Manage manual override“. Das Skript versteckst du im WebFront. Das Skript sollte in etwa so aussehen:


<?
$overrideTime = GetValue(51559  /*[countdown]*/);

$oldValue = GetValue($_IPS['VARIABLE']);

//clear countdown if heating / cooling changed
if ($oldValue != $_IPS['VALUE']){
   $overrideTime = 0;
}

if ($_IPS['VALUE'] == 0 /*heating*/ || $_IPS['VALUE'] == 1 /*cooling*/){
	$overrideTime += 60;
} else {
	$overrideTime = 0;
}

SetValue(51559  /*[countdown]*/, $overrideTime);
SetValue($_IPS['VARIABLE']  /*[countdown]*/, $_IPS['VALUE']); //update enum

?>

Prinzipiell musst du dich jetzt noch selber darum kümmern, dass das Enum nach Ablauf der 60 Minuten auf 2 gesetzt wird damit im WebFront korrekt Kalender angezeigt wird.

Gruß,
gucky

Super, vielen, vielen Dank!
Sogar mit Code dazu - ich bin begeistert!

Ich muss allerdings Morgen bis Donnerstag nach Norwegen, wird dann sofort getestet!

Gruß,
Matthias

Hey,
muss das Thema nochmals „hochbringen“ - es hatte etwas länger gedauert - war nicht nur in Norwegen sondern auch in Slovenien, Kroatien und Indien - nachdem für die kommende Woche noch Südafrika auf dem Plan steht, hoffe ich wenigstens mal diese Woche etwas weiter zu kommen…

Ich habe nochmal was rum probiert - ginge das ganze nicht zu lösen wie eine Temperaturvariable?
(Ich habe ein Skript angelegt und dann der Variable zugewiesen) hier der Inhalt:

<?
if($_IPS["SENDER"] == "WebFront") {
    SetValue($_IPS["VARIABLE"], $_IPS["VALUE"]);
}
?>

Das funktioniert ganz gut mit Temperaturen, da kann man ja auch easy ins negative gehen.
Das wäre ja schon perfekt zum Heizen / Absenken (positiv= heizen, negativ=kühlen).
Allerdings hat das bei der von mir angelegten Float-Variable „Minuten“ leider keinerlei Effekt, also im Webfront werden keine „Steuerelemente“ gezeigt wenn ich das Skript zur Variable zuordne - hat jemand eine Idee wieso?

Achso und wenn das dann (hoffentlich mit Eurem Input) funktioniert, kann ich dann für die Variable eine (z.b.) 30er Schrittweite einstellen und das Heiz/Absenk-Skript kann diese aber in 1min-Schritten abarbeiten?

Danke und Gruß,
Matthias

Also ich habe jetzt nochmal etwas rumprobiert und komme auf keinen grünen Zweig:

Ich habe (wie im Post vorher) das Aktionsskript extra nochmal in der gleichen Kategorie hinterlegt - es ändert aber rein garnichts.
Für meinen Geschmack wäre es halt wesentlich einfacher wenn man anstatt des Skripts (also die Lösung von Gucky) meine zum Laufen bekommt.
Mir ist aber wirklich unklar wieso das ganze nicht funktioniert, das geht mittels Aktionsskripts doch nicht nur für Temperaturen oder?

Verzweifelten Gruß,
Matthias

Du musst ein Variablenprofil bei den Variablen zuordnen oder/und selbst eins erstellen.
Bei Interger z.b. Wertezuweisen oder Schrittweiten min/max… etc…
Michael

Das wars!
Ich hatte keine Schrittweite und kein Min/max - vielen, vielen Dank!!!