1300 = unbedingt nötig wenn auf %-werte gerechnet werden soll.
Mit FHZ1000 und 5 FHT’s kommen die stellantriebe %-werte nur 1 à 2 mal am tag von der laetzte. (Oder sogar nicht)
Mit FHZ1300 sind alle werte aktualisiert innerhalb von 6-12 minuten. Got sei Dank.
Jetzt lauft meine heizung uber 2 umwalzpumpe wie geplant. Die pumpe werden geschaltet uber die summe der %-werte. Ich schalte die pumpe mit der velleman usb. (der loggt auch vor- und rucklauf temp)
mein script (dirty & ugly) schwer beta, aber lauft:
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
*/
//File: kel_pompsturing.ips.php
include_once("scripts/GlobalDefines.ips.php");
//logfilepath
$logfilepath=__myhome."log/temp.txt";
// $logfilepath="C:/Program Files/IP-SYMCON/web/log/temp.txt";
// ********** END OF USER SETTINGS ************************************
//debug
//$IPS_VARIABLE = "vliv_temp_ist";
// MODIFIE BEYOND THESE LINE ON OWN RISK
// EXCEPT **DOTHESE**
//
$ldebug = GetValueBoolean("__debug");
if($IPS_SENDER <> "variable") $IPS_VARIABLE = " ";
$hartbeat = GetValueBoolean("vkel_hartbeat");
VELLEUSB_WriteDigitalChannel(mkel_vel,8,!$hartbeat);
SetValueBoolean("vkel_hartbeat",!$hartbeat);
$thistime = time();
if ($ldebug) $handle=fopen("$logfilepath", "a");
$livtempist=GetValueFloat("vliv_temp_ist");
$livtempisttime = $thistime - IPS_GetUpdateTime("vliv_temp_ist");
$livtempsoll = GetValueFloat("vliv_temp_soll");
$livtempsolltime = $thistime - IPS_GetUpdateTime("vliv_temp_soll");
$livtempperc=GetValueFloat("vliv_temp_perc");
$livtempperctime = $thistime - IPS_GetUpdateTime("vliv_temp_perc");
$keutempist=GetValueFloat("vkeu_temp_ist");
$keutempisttime = $thistime - IPS_GetUpdateTime("vkeu_temp_ist");
$keutempsoll = GetValueFloat("vkeu_temp_soll");
$keutempsolltime = $thistime - IPS_GetUpdateTime("vkeu_temp_soll");
$keutempperc = GetValueFloat("vkeu_temp_perc");
$keutempperctime = $thistime - IPS_GetUpdateTime("vkeu_temp_perc");
$sl1tempperc = GetValueFloat("vsl1_temp_perc");
$sl2tempperc = GetValueFloat("vsl2_temp_perc");
$di = VELLEUSB_ReadDigital(mkel_vel);
$di = sprintf("%08b",$di);
$action="";
//if ($IPS_VARIABLE == " "){
// every 5 minutes
// Read kelder values
$voorloop = VELLEUSB_ReadAnalogChannel(mkel_vel,1);
$terugloop = VELLEUSB_ReadAnalogChannel(mkel_vel,2);
$voorloop = $voorloop*ckel_aifaktor;
$terugloop = $terugloop*ckel_aifaktor;
SetValueFloat("vkel_ketel_tout", $voorloop);
SetValueFloat("vkel_ketel_tin", $terugloop);
$pomp1 = substr($di,5,1);
SetValueBoolean("vkel_pomp1", !$pomp1);
$pomp2 = substr($di,4,1);
SetValueBoolean("vkel_pomp2", !$pomp2);
$brander = substr($di,6,1);
SetValueBoolean("vkel_brander", !$brander);
$brandernet = substr($di,7,1);
SetValueBoolean("vkel_brandernet", !$brandernet);
//} else {
// triggered values
if ($livtempperc > 0 || $keutempperc > 0 || $sl1tempperc > 0 || $sl2tempperc > 0) {
//brander en pompen activeren
VELLEUSB_WriteDigitalChannel(mkel_vel,1,true);
SetValueBoolean("vkel_pomp1",true);
$action="pompen AAN";
} else {
VELLEUSB_WriteDigitalChannel(mkel_vel,1,false);
SetValueBoolean("vkel_pomp1",FALSE);
$action="pompen UIT";
}
//}
// indicatie van gemiddelde perc circuit 1
$percgem1 = intval(($livtempperc*255));
VELLEUSB_OutputAnalogChannel(mkel_vel,1,$percgem1);
$temppercint = intval($livtempperc*16);
//FS20_SetIntensity(oliv_bureel_lamp,$temppercint,-1);
// end indicatie
// Alarm function
// if ($livtempperctime > 1800 || $livtempisttime > 1800 || $keutempisttime > 1800 || $keutempperctime > 1800){
// shut down pumps
// if ($livtempperctime > 3600 || $livtempisttime > 3600 || $keutempisttime > 3600 || $keutempperctime > 3600) VELLEUSB_WriteDigitalChannel(mkel_vel,1,false);
if ($livtempperctime > 1800){
if ($ldebug) fwrite($handle, date("d.m.y")." ". date("H:i:s")." ALARM: 'Last Rx of livperc value too old'"."
");
}
if ($livtempisttime > 1800){
if ($ldebug) fwrite($handle, date("d.m.y")." ". date("H:i:s")." ALARM: 'Last Rx of livist value too old'"."
");
}
if ($keutempperctime > 1800){
if ($ldebug) fwrite($handle, date("d.m.y")." ". date("H:i:s")." ALARM: 'Last Rx of keuperc value too old'"."
");
}
if ($keutempisttime > 1800){
if ($ldebug) fwrite($handle, date("d.m.y")." ". date("H:i:s")." ALARM: 'Last Rx of keuist value too old'"."
");
}
// }
//LOGGING --> SEE RRDLOGGING
if ($ldebug) fwrite($handle, date("d.m.y")." ". date("H:i:s")." ".$IPS_VARIABLE." LIV ist: " . sprintf("%02.1f",$livtempist)."° "."soll: " . sprintf("%02.1f",$livtempsoll)."° perc: ". sprintf("%02.0f%%",$livtempperc)
." KEU ist: " . sprintf("%02.1f",$keutempist)."° "."soll: " . sprintf("%02.1f",$keutempsoll)."° perc: ". sprintf("%02.0f%%",$keutempperc)." action: $action
");
if ($ldebug) fclose($handle);
?>
und die logging :
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : RRDloggin.ips.php
Trigger :
Interval :
*/
include_once("scripts/GlobalDefines.ips.php");
//Debug
$ldebug = true;
//End debug
$dir = __myhome."system/";
//chdir($dir);
$result = array();
// ',' -> '.' !!
$temp=GetvalueString("vweather_temp");
$kommapos = strpos($temp,",");
if ($kommapos>0) $temp=substr($temp,0,$kommapos).".".substr($temp,-1);
// end
SetValueFloat("vout_temp",(float)$temp);
$press = (float)GetValueString("vweather_pres");
SetValueFloat("vout_press",$press);
$humm = (float)GetValueString("vweather_rh");
SetValueFloat("vout_humm",$humm);
IPS_Execute("$dir"."rrdtool.exe", " update $dir"."weather.rrd N:$temp:$press:$humm", false, true);
$rrdcount = GetValueInteger("RRDCount");
if ($rrdcount==0){
// only every 5 counts so every 5 minutes
for($teller = 1; $teller <= 4; $teller++){
if($teller==1) $loc = "liv";
if($teller==2) $loc = "keu";
if($teller==3) $loc = "sl1";
if($teller==4) $loc = "sl2";
$ist = sprintf("%0.1f",GetValueFloat("v$loc" . "_temp_ist"));
//state instead of soll state captures manual intervention too
$soll = GetValueFloat("v$loc" . "_temp_state");
$perc = sprintf("%0.1f",GetValueFLoat("v$loc" . "_temp_perc"));
$state = GetValueFloat("v$loc" . "_temp_state");
$mode = GetValueInteger("v$loc" . "_temp_mode");
IPS_Execute("$dir"."rrdtool.exe", " update $dir"."$loc.rrd N:$ist:$soll:$perc:$state:$mode", false, true);
//exec("rrdtool.exe update $loc.rrd N:$ist:$soll:$perc:$state:$mode",$result);
}//for
}//if
$voorloop = GetValueFloat("vkel_ketel_tout");
$terugloop = GetValueFloat("vkel_ketel_tin");
$terugloop2 = 0;
$pomp1 = (int)GetValueBoolean("vkel_pomp1");
$pomp2 = (int)GetValueBoolean("vkel_pomp2");
$brander = GetValueBoolean("vkel_brander");
$brandernet = GetValueBoolean("vkel_brandernet");
$tout = GetValueFloat("vout_temp");
if($brander && $brandernet){
$brander = true;
}else{
$brander = false;
}
$brandernet = (int)GetValueBoolean("vkel_brandernet");
$brander = (int)$brander;
IPS_Execute("$dir"."rrdtool.exe", " update $dir"."kel.rrd N:$voorloop:$terugloop:$terugloop2:$brandernet:$brander:$pomp1:$pomp2:$tout", false, true);
//exec("rrdtool.exe update kel.rrd N:$voorloop:$terugloop:$terugloop2:$brandernet:$brander:$pomp1:$pomp2:$tout");
//RESET working DIR
// chdir("C:/Program Files/IP-SYMCON/");
//RRDCount variable
$rrdcount += 1;
if ($rrdcount>4) $rrdcount = 0;
SetValueInteger("RRDCount",$rrdcount);
?>
UND GANZ WICHTIG: IPS_Shutdown-script
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
*/
//File: IPS_Shutdown.ips.php
include_once("scripts/GlobalDefines.ips.php");
// be sure before IPS is shut down that kelder is fully shut down
VELLEUSB_WriteDigital(mkel_vel,0);
?>
Beim durchlesen realisiere ich das ich das pumpe-script mal neu herstellen muss. Zu viel rum gebastellt. Oh jah: was ihr nicht lesen konnt: das ist Niederlandisch ![:smiley: :smiley:](https://community.symcon.de/images/emoji/win10/smiley.png?v=9)
naja…
Umwalzpumpe steueren mit IP-Symcon = FHZ1300 kaufen oder innerhalb von monate neue umwalzpumpe…
Fredje