FHT über Designer bedienen

Hallo IPSler,

möchte über den Designer meine FHT´s bedienen. Ich habe bereits einen Button mit dem ich die Temperatur immer wenn ich diesen Button drücke um 0,5 Grad erhöhen möchte. Habe es mit folgenem Code probiert

FHT_SetTemperature(56380, +0,5);

Leider bringt es nicht den gewünschten Effekt.

Einer eine Idee wie es geht? :confused:

Grüße Mirco

Ich hab es so geregelt:


$temp = GetValueFloat("WZ_FHT_TargetTemp");
$temp=$temp+1;
SetValueFloat("WZ_FHT_TargetTemp", (float)$temp);
FHT_SetTemperature(13776, (float)$temp);

Hast du mal nachgeschlagen und gelesen wie das geht oder einfach nur geraten?

So wird das nichts. Die Funktion will einen Floatwert und mit so einem musst du sie bedienen.

nur so gehts.

Wenn du also die Temperatur um 0.5 Grad erhöhen willst musst du zunächst mal wissen wie warm es ist. Am besten setzt du die temperatur ersteinmal auf einen bestimmten Wert und merkst dir den. Wenn du sie dann 0.5 Grad höher haben willst nimmst du dir den gemerkten Wert, rechnest 0.5 dazu und setzt den neuen Wert. Den musst du dir freilich wieder merken für die nächste Änderung.

Schöner ist natürlich wenn du die aktuell gemessene Temperatur benutzen kannst. Aber das ist ein anderesThema.

Edit:

H-MAN war schneller. Genau das meine ich :wink:

Toni

Dafür hast du wenigstens eine ausführliche Erklärung abgegeben :smiley:

Na das würde Chaos pur, und du würdest deine FHZ zumüllen !

Du muss deine gewünsche Temperatur per Eingabefeld im Designer oder per Inkrement/Dekrement Funktion erst in einer Variable ablegen. Dann per ‚Send‘ Button diesen Wert per Set_Temp übermitteln.

mfG Franz

So sieht das in mein designer aus:

Der schiebe regler setzt die variable soll-temp. Uber ‚set‘ wird der neuer soll-wert zum FHT gesendet.
1x script und hopla. Total flexibel.

–edit–
naja 1x script war ein bisschen optimistisch … 4 scripte sind schon dabei
bei bedarf… hier fragen
–ende edit–

ScreenHunter_1.gif

Hallo
genauso würde es mir auch gefallen, wäre es möglich die Scripte zur Verfügung zu stellen, ich bin noch nicht soweit, um diese allein zu erstelleN:
Wie bindet man Scripte ein und wie werden Sie gestartet?

Gruss
computerpap

Aber gerne :wink:

Zur zeit bin ich noch geschaftlich unterwegs und bis Freitag solltest du noch geduld haben. Dann bin ich wieder zuhause…

Grusse,

Hallo

kein Problem, vielen Dank für deine Hilfe.

Gruss computerpap

Hier geht’s los:

Als erstes im designer ein schiebe regler einbauen mit 3 captions und 2 knopfe. ‚bild1.gif‘ (Angehängte grafiken)
„Was ist das denn alles“ denkt ihr vielleicht:

Ich nutze alles mit ein ‚touch‘ fahiger PC. Deshalb möchte ich die knopfe recht gross, und die prezision klein (mit dem finger zu drucken, mit dem nagel zu schieben). Deshalb meine wahl die soll-temp nur beschränkt änderen zu können. (Ist doch so? Wer ändert seine heizung mehr wie ±5°)
Also wird mein range vom schiebe regler dynamisch angepasst. Sehe bild2.gif (Angehängte grafiken), ist der gleiche schiebe regler aber 2s. später.

Was brauchen wir dafur? 3 variablen. min, aktueller wert und max. (Der aktueller habe ich gleich als ‚soll‘-temp genommen).
bild3: verknupfung der variablen in die property-page des schiebe reglers
bild4: verknupfung von die ‚soll‘ variable im ‚event‘ page. (gleicht die ‚position‘ variable des reglers.

Weiter noch etwas? Noch manches…
Ein script sorgt dafur das die min- und max-werte sich änderen in funktion von die aktuelle (soll) wert.


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Setminmax.ips.php
Trigger  : vliv_temp_state, vkeu_temp_state, vsl1_temp_state, vsl2_temp_state
Interval : ZnullZ
*/
//$IPS_VARIABLE="vliv_temp_state";  //  <- debug !!
$state=GetValueFloat($IPS_VARIABLE);
if ($state<17){
   $min=5.5;
   $max=17;
}elseif($state>24.5){
   $min=20;
   $max=30.5;
} else {
   $min=$state-3;  // <- hier variationen eingeben
   $max=$state+3;
}
/* um diese untere zeile 'arbeiten' zu lassen brauch man ein wenig
   'organisation' in die zuweisung von die Variabeln
   bei mir ist
   vliv_temp_state
             -----  state: eingestellter soll-wert am rad des FHT's
        ----        temp: es bezieht zu eine FHT (lamp: leuchte, swch: switch)
    ---             liv: der platz (keu: kuchen, sl1: schlaff1 ....
   -                v: wie Variable (s: script, t: trigger, o:output, m:mixed)
   Ihr braucht unbedingt feste-länge-variabln wenn diese Zeile arbeiten sollen
*/
SetValueFloat(substr($IPS_VARIABLE,0,10)."min",$min); /*nimm zb. vliv_temp_ aus
                                                        den $IPS_VARIABLE-string
                                                        und hange 'min' ran
                                                        also: vliv_temp_state
                                                        als resultat. */
SetValueFloat(substr($IPS_VARIABLE,0,10)."max",$max);
?>

Wie ihr sehen könnt, alles hängt so ziemlich an einander fest. (brunnen: sFHTs) Die genutzten variablen werden gemeinsam genutzt.

Das script sorgt dafur das bei kleine variationen, der min- max wert um 3° erzetst. und (oben-) unter-halb die comfort-zone (17-24) das ‚dynamisches‘ einstellvermögen (deutsch ??) ganz gross wird. (abschalten unter 17°, oder voll auf uber 24°).

OK. Wie wird dann der neue soll wert zum FHT gesendet? Nach die auswahl des neuen soll-temp, soll man unbedingt auf den ‚set‘ knopf drucken. Wieso? 1) Eine gezielte aktion - niks katze oder CAF, 2) keine uberflutung des FHT buffers.

Deshalb ein ‚set‘ knopf, wobei ein script angerufen wird. (bild 5)
(vergiss nicht die location ein zu tragen in die IPSYMID. (Hier ‚liv‘ im Bild)
Beim drucken des buttons wird dieser script ausgefuhrt…


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : ssystem_temp_sendstate.ips.php
Trigger  : (den designer)
Interval : 
*/
include(IPS_GetScriptFile("GlobalDefines"));
if ($IPS_SENDER=="Designer") $loc=$IPS_COMPONENT;
if ($IPS_SENDER=="Execute") $loc="liv";  // <- debug
if ($loc==""){
   echo("Sie haben vergessen den IPS_COMPONENT ein zu tragen im Designer");
   return; // vergessen IPS_COMPONENT ein zu tragen !!
}
$newsolltemp=GetValueFloat("v$loc"."_temp_state");
if ($newsolltemp=="5") $newsolltemp="5.5";
if ($newsolltemp=="31") $newsolltemp="30.5";
if (IPS_ModuleInstanceExists(constant("o$loc"."_temp"))){
   FHT_SetTemperature(constant("o$loc"."_temp"), $newsolltemp);
   // die instanz ID's kommen aus die angerufene 'GlobalDefines'
else
   echo("Dieser instanz ID ist ungultig: 'o$loc"."_temp' !!");
}
?>

Und weiter?
min-label und max. label einrichten… (ich möchte gerne wissen in was fur ne richtung ich schiebe ?) Bild6.gif - anknupfung der min-wert am schieberegler.

naja … und weiter ? … wenn ihr die sFHTs im einsatz habt : der knopf ‚std‘ drucken heisst das sFHTs script ausfuhren und alles wieder ‚normal‘ setzen. (Im ‚event‘ fenster vom knopf ‚set‘ den event auf sFHTs-script setzen und fertig)

Fertig… sieht scheiss ‚ugly‘ aus … aber funzt intelligent :smiley:

Ok ?
Was haben wir heute gelernt?

  1. ‚touch-able‘ applikationen haben so ihre eigenheiten.-> merk es euch
  2. comfort gleicht inteligenz
  3. Danke Michael und Michael fuer derren IPS
  4. ‚etwas‘ muhe ergibt ein tolles resultat -> mehr wie die home-automation kerle traumen durfen he he he tiscino EIB Vantage X-comfort uvm. f**k y*o sehe 7 - das können die nicht)

Fertig !
Bei ruckfragen : call GGGss
bei bugs : suche die fehler und melde euch :smiley:

Fredje ist in mittlerweile ganz fix und fertig : White rum killed me tonight

bild1.gif

bild2.gif

bild4.gif

und bild 7 :
bla bla bla (10 zeichen)

PS: die ganz intelligente unter euch aufmerken werden das:

  1. die soll-temp NICHT stimmt… (22,20° ist-temp … wieso hat er die soll von 22,00° uberschritten?)
  2. Wieso die heizung an ist… 22,2 > 22,0 (die heizung ist an: 57% ventile-offnung)
  3. Der ist-temp >> (lese: viel grösser) ist wie der solltemp …

logisch … sehe die gelbe-kurve (block) im diagramm (bild7) … seit 20h - den zeitpunkt wo ich angefangen habe diesem beitrag zu schreiben - steht als beispiel bild2 (Angehangter) zur verfügung … und da habe ich 23° gewahlt und ‚set‘ gedruckt (bild3 - angehangter) um die bilder machen zu können für diesem beitrag.

Super, super

excellent job done!

Anmerkung: Ich finde es wieder amüsierend, dass 2 Nachkommastellen bei den FHT Variablen angezeigt werden. Präzision, die niemand braucht! Zumindest nicht zur Heizungssteuerung. bitte, bitte macht das doch im Designer einstellbar.

@Fredje

naja oder wer es mir sonst beantworten kann :wink:

Wo stellt man es ein das, wie bei Dir Fredje, die Stellung der Stellantriebe als gelbe Fläche im Diagramm angezeigt wird ?

Horst,

Das ist eine nicht dokumentierte implementation von RRDTool.
Eigentlich lasse ich jede 10e minute einem mini graph machen mit nur die ventil position drin… sehe anhang.
Dies ist nicht möglich mit WIIPs sondern dafur muss das ganse wegschreiben und generieren von graphs manuel automatisiert werden.
Ich glaube nur Guyabano und ich nutzen dies…

Bei interesse : kasten bier hier weil der rhum mir schlecht entgegen gekommen ist heute (mein kopf)
Neen serieuse: das dokumentieren ist ne menge arbeit (mehr wie die 3 studen von gestern)
aber ein wenig off-topic jetzt

Grusse, fredje

trliv_perc.png

OK Danke, dann weiß ich bescheid.

Hallo

Im Designer lege ich über einen Schieberegler den Sollwert für die Temperatur des FHZ fest. Dazu habe ich folgendes Script geschrieben (abgeschrieben):

<?
$temp = GetValueFloat(„Soll_Temp_Vorgabe_IPS“ );
SetValueFloat(„Soll_Temp_Abfrage_FHZ“, (float)$temp);
FHT_SetTemperature(33730, (float)$temp);
?>

Im Designer habe ich außerdem noch einen Button, der beim Drücken das obige Script ausführt.

Meine Frage wäre, ob ich den Buffer meines FHZ mit dieser Lösung überlade, oder wird nur der eine Wert der gerade am Schieberegler eingestellt ist mit drücken des Buttons an den FHZ übergeben?

MfG
computerpap

nur dieser wert wird gesendet

Super

dann habe ich ja endlich das, was ich wollte, jetzt muß ich mir noch was einfallen lassen, wie ich per Button zu der Temperatur zurückschalte, die im normalen Programm hinterlegt ist, hätte da schon einer eine Lösung?

MfG
computerpap

Was nicht verhindert, dass man mehrfach auf SET klickt. Hier ist eine Function, mit dem man das verhindern oder vermindern kann.

Hallo Fredtje,

klar kannste mit WIIPS das alles so einrichten. WIIPS kann sogar noch mehr, das kannst Du aber doch gar nicht wissen, da Du es nicht benutzt. :smiley:

Gruss Torro