Spass beiseite - Lohnt Tausch 100er gegen 1300er ?

Moin zusammen,

jetzt mal Spass und überflüssige Kommentare und so zu Seite :cool:

Ich spiele mit dem Gedanken, meine 1000er gegen eine 1300er zu tauschen - nicht, weil die 1300er KS300-Daten empfangen kann, vielmehr wegen der hier im Forum beschriebenen „Tauglichkeit“ für besseren Empfang der FHT-Daten.

Ich steuer bei mir den Heizungsvorlauf zwischen 20 und 60 Grad. Nachdem ich Außentemperatur, Target- und Temp-Abhängigkeit und Pos-Werte der Stellmototren in verschiedenen Abhängigkeiten und Konstellationen dazu verwendet habe, benutze ich im Moment nur die POS-Werte der FHTs (und das mit noch besserem Erfolg gegenüber den anderen Lösungen - die Heizung läuft seltener)

Nachdem ich jetzt ein paar Tage mitgeloggt habe, wie oft meine FHTs senden, bin ich (fast) geschockt :eek:

  • Die Targettemp kommt nur an den Umschaltzeitpunkten im Autobetrieb oder beim „Rädchen“ drahen
  • Temp-Werte kommen sehr unregelmäßig zwischen 12 und 60 Minuten
  • Mode kommt nur beim manuellen Wechsel (oder IPS-Command)
  • POS kommt manchmal alle 2 Minuten, manchmal ein paar Stunden garnicht, es sein denn, der Wert ändert sich

Wenn die Werte bei der 1300er wirklich alle im 2-Minuten Abstand kommen, brauche ich unbedingt so’n Teil (vielleicht schonmal eine Aufforderung an Steiner: bitte um Angebot (ohne IPS, hab ich ja schon, vielleicht mit WAGO-Starterkit 100MBit/s :confused: )

Also meine Frage an euch (Bitte nur mit Ja oder Nein beantworten :wink: ) : IST DAS SO - kommen bei der 1300er die FHT-Werte alle 2 Minuten ???

Thx for your answers

Jörg

Was verstehst du unter „Werte“ ? Meinst du damit „alle“ ?

Also die FHTs senden nur den Fensterstatus, Ventilposition und akuelle Temperatur regelmässig. Wie oft,und in welchen abständen hängt wohl von der Anzahl der FHT’s ab. 2 Minuten Takt ist da wohl eher upotisch.
Richtig erkannt hast du, das die Target Werte nur reinkommen, wenn du am Rädchen drehst, oder ein Fenster aufgeht und du ein Fensterkontakt hast.
Deshalb sende ich einen Targetwert zu einem FHT, vergleiche dann die letzte Targetwertveränderung mit der aktuellen Zeit, und wenn die Temperaturdifferenz innerhalb eines definiertem Zeitrahmens nicht um mindestens x Grad gefallen ist (definiere ich auch je nach Beschaffenheit und grösse des Raumes) gefallen ist, dann sende ich Target nochmals.
Das klappt jetzt wunderbar nach ein paar Tagen „einlernens“. Ich analysierte alle Grafiken, und passte die Werte je nach Raum an.
Seitdem klappt alles wun-der-bar !

Was ich bis jetzt mitbekommen habe sendet die FHZ1300 öfters die Ventilpositionen. GGGSs kann dir sicherlich mehr sagen, denn der hat ja „umgebaut“

Von seitens der IPS „direktion“ wirst du auf Angebotsvorschläge auf taube Ohren stossen, leider ! Die interne Politik sieht wohl nur Angebote vor, die jeweils eine IPS Lizenz beinhalten. Doch für bereits „IPSler“ wird kaum was geboten. :frowning:

mfG Franz

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:

naja…

Umwalzpumpe steueren mit IP-Symcon = FHZ1300 kaufen oder innerhalb von monate neue umwalzpumpe…

Fredje

Hallo Fredtje,

ja, Umwaelzpumpe ist bei mir auch beim anrollen, damit ich die Heizungssteuerung dann so machen kann, wie ich will und nicht wie jetzt, wie die Pumpe will.:mad:

Aber noch etwas zu Deinem Loggingscript: In welchem Zeitfenster wird das denn immer aufgerufen? Und mit welchen Parameter hast Du die DB erstellt?

Gruss Torro

logging script heizung jede minute

batch-file um die rrd-db an zu fertigen :
rrdtool create kel.rrd --start 1129232081 --step 60 DS:out:GAUGE:300:-30:100 DS:in1:GAUGE:300:-30:100 DS:in2:GAUGE:300:-30:100 DS:net:GAUGE:300:0:1 DS:brander:GAUGE:300:0:1 DS:p1:GAUGE:300:0:1 DS:p2:GAUGE:300:0:1 DS:tout:GAUGE:300:-35:50 RRA:AVERAGE:0.5:1:400 RRA:AVERAGE:0.5:10:800 RRA:AVERAGE:0.5:60:800 RRA:AVERAGE:0.5:1140:365 RRA:MAX:0.5:10:800 RRA:MAX:0.5:60:800 RRA:MIN:0.5:10:800 RRA:MIN:0.5:60:800

logging script gibt folgendes resultat :
http://brua.gallon.tzo.com:8080/basement.php

PS: gemessen wird uber standard LM35 temp.fuhler uber die analoge eingänge des Velleman-USB board.

IP-Symcon-corner.jpg

LM35.jpg

electrical.jpg