2. FHT8V einbinden / Umbenennen v. define-Namen

Begonnen von Stefan 69, 05 Januar 2013, 11:45:55

Vorheriges Thema - Nächstes Thema

Stefan 69

Hallo und ein gesundes neues Jahr wünsche ich noch.

Habe es in den letzten Tagen endlich hinbekommen (danke WIKI) einen Heizkörper mittels FHT8V und S300TH zu regeln und im Floorplan einzubinden.

Nun meine Fragen:

1.
Da ich die Zeilen einfach aus dem WIKI kopiert habe und die Regelung jetzt läuft, könnte man dann einfach in der .cfg zB. Heizkoerper_1_desired_temp
umbenennen, also was anderes hinschreiben oder muss das mit "rename" gemacht werden bzw. geht eine andere Bezeichnung nun nicht mehr?
Wegen der späteren Verständlichkeit würde ich eben die Begriffe gern anpassen.

2.
In die bestehende Regelung soll ein zweiter FHT8V mit eingebunden werden (sind eben zwei Heizkörper im Raum). Im WIKI steht, dass dem zweiten einfach die gleiche id des ersten zugewiesen werden kann.
Muss der Zweite nun auch den selben difine-Namen haben oder kann der anders lauten und nur die id muss die selbe sein?

3.
Heiz-Zeitplan
Es sollen später noch weitere Räume geregelt werden. Müssen dazu für jeden Raum die Schhritte aus dem WIKI für den Heiz-Zeitplan erstellt werden, oder gillt dieser für alle Räume?

Danke für Eure Geduld!

Gruß Stefan

kud

Hallo,

Zu 1. Kein "rename" einfach in die fhem.cfg und dann editieren. Bei Änderungen entsprechend auch die Befehle ändern.
      Die Namen müssen zueinander passen.
Zu 2. Noch nicht probiert,(habe nur die alten Einträge aus dem Wiki noch dringelassen) ich würde mal versuchen den 2. Antrieb ganz normal anzulegen und den Fühler des 1. Antriebs einzutragen. Auch das kannst Du in der fhem.cfg ändern.
Zu 3. Jeder Antrieb hat für jeden Tag seine eigenen Heizzeiten. Sind 2 im gleichen Raum müssen auch entsprechend gleiche Einträge gemacht werden.

Habe zZeit keine weite Zeit.
Bei Fragen bitte noch einmal nachhaken.

Gruss
Kai-Uwe

Stefan 69

Hallo Kai-Uwe,

danke für die Rückantwort.

Also 1. hab ich noch nicht gemacht, will erst ein Update von fhem machen (wegen dieser Passwortsache).

Bei 2. hab ich jetzt einfach erneut diesen pair vom bereits angelegten und funktionierenden FHT8V gemacht. Das funktioniert.
Laufen jetzt zwar beide unter dem selben Namen und sind somit nicht einzeln anzusteuern, das stört aber überhaupt nicht, da beide eh im selben Raum sind und somit ja sowieso gleich laufen müssen.

Bei Punkt 3 geht es mir darum. Ich möchte noch in zwei weiteren Räumen diese Kombi aus FHT8V und S300TH einrichten.
Die Frage ist, ob dann somit pro Raum (Kombination) die Einträge, welche unter dem Punkt "Einen Heiz-Zeitplan erstellen (mit Urlaubsfunktion)" beschrieben sind, erstellt werden müssen.
Ich dachte, dass folgender Eintrag von allen "Kombinationen" abgefragte werden kann:

# Frage jede 1/4 Stunde Heizzeiten.cfg ab
  define Heizschalter_alle_15_minuten at +*00:15:00 {sucheSchaltzeit()}
  attr Heizschalter_alle_15_minuten alignTime 00:00:00

Ebenso der darauf folgende, wobei durch die jeweiligen Zeilen

heizung.02 Heizkörper_1_desired_temp
bzw.
heizung.01 Heizkörper_2_desired_temp

die einzelnen Räume (Kombinationen) abgefragt werden.

###########################################
##### Hier werden die Heizzeiten definiert
# 0-6 Wochentag beginnt mit Sonntag
# 00-23 Volle Stunde
# 00 oder 15 oder 30 oder 45 Minute
# PID-Name
# Dummy-Name
# gewünschte Temp. in vollen Graden
###########################################
# Es folgen die Zeiten (Zeitraum zB. Urlaub) in denen nur Minimum (17 Grad) gefahren wird
# Bitte bei Minute immer 00 15 30 oder 45 eingeben
# BEACHTE: 24 Stunden vor Ablauf der Endzeit wird auf normalen Wochenschaltbetrieb zurückgeschaltet
# MINIMUM  als Wort
# 01.01.2012 12:30 als Begin des Minimum
# 12.01.2012 12:00 als Ende des Minimum
MINIMUM 14.11.2012 16:13 15.11.2012 12:00
#### Wochenschaltzeiten####################
 # Sonntag
 0 08 00 heizung.02 Heizkörper_1_desired_temp 20  
 0 21 00 heizung.02 Heizkörper_1_desired_temp 17
 #
 0 08 00 heizung.01 Heizkörper_2_desired_temp 20
 0 21 00 heizung.01 Heizkörper_2_desired_temp 17
 ############################################

Hoffe ich stelle mich nicht all zu dusselig an, aber irgendwie begreif ich es nicht.

Danke für eure Geduld.

Gruß Stefan

Stefan 69

So,

nur als Info.
Umbenennen in der .cfg hat funktioniert. Kam dann zwar beim speichern ne Fehlermeldung (please define .... first usw.) nach "shutdown restart" ist aber alles ok und die Regelung läuft soweit.

Gruß Stefan
 

kud

Hallo,
also diese "Heizzeiten" sind auf JE EINEN ANTRIEB einzutragen.
Keine Raumzusammenfassung oder Ä. Also Pro Antrieb eine Zeile in der Steuerdatei.

#### Wochenschaltzeiten####################
 # Sonntag
 0 08 00 heizung.01 Heizkörper_1_desired_temp 20  < schaltet den Antriebs-Dummy 01 auf 20 Grad
 0 12 30 heizung.01 Heizkörper_1_desired_temp 22  < schaltet den Antriebs-Dummy 01 auf 22 Grad
 0 17 30 heizung.01 Heizkörper_1_desired_temp 19  < schaltet den Antriebs-Dummy 01 auf 19 Grad
 0 21 30 heizung.01 Heizkörper_1_desired_temp 17  < schaltet den Antriebs-Dummy 01 auf 17 Grad
### Jetzt folgen die Zeiten des 2. Stellantriebs
 0 08 00 heizung.02 Heizkörper_2_desired_temp 20
 0 21 00 heizung.02 Heizkörper_2_desired_temp 17
 #
... danach folgen die Zeiten der Antriebe 3 bis xxx



Stefan 69

Hallo!

Muss noch einmal nachfragen wegen der Heizzeiten und der entsprechenden Einträge.
Stell mich scheinbar wieder zu blöd an. Beim Speichern der 99_Utils.pm kommen immer Fehlermeldungen.

Habe alles aus dem Wiki kopiert und versucht es auf meine Werte abzuändern, was scheinbar nicht so funktioniert hat.
Bei der 99_... fast am Ende "Jetzt Name des Antriebs und Dummys und Zieltemp" blicke ich nicht durch was wo hin eingetragen werden muss.


Zur besseren Übersicht stelle ich mal Teile der .cfg und der 99_Utils.pm sowie die Datei mit den HeizzeitenWZ hier rein.

.cfg

################################################################################
#Heizkörpersteuerung im Wohnzimmer
define stellantriebeWZ FHT8V 1234
attr stellantriebeWZ room Heizungen
###
define heizungWZ PID TempFeuchte_Sensor_1 stellantriebeWZ
attr heizungWZ alias Heizung_WZ
attr heizungWZ room Heizungen
### Darstellung im Floorplan
define HeizkoerperWZ_Wunschtemp dummy
attr HeizkoerperWZ_Wunschtemp fp_Erdgeschoss 400,757,2,Wunschtemperatur
attr HeizkoerperWZ_Wunschtemp room Heizungen
attr HeizkoerperWZ_Wunschtemp setList state:17,18,20,21,21.5,22,22.5
attr HeizkoerperWZ_Wunschtemp webCmd state
### Der Notivy steuert das Zusammenspiel Änderung (Change)im Floorplan und
### Weitergabe an FHEM
define Change_heizungWZ notify HeizkoerperWZ_Wunschtemp  {\
        my $neuer_wert = ReadingsVal  ("HeizkoerperWZ_Wunschtemp","state","0") ;;\
        fhem("set heizungWZ desired $neuer_wert");;\
   }
attr Change_heizungWZ room Heizungen
### Frage jede 1/4 Stunde Heizzeiten.cfg ab
define Heizschalter_alle_15_minuten at +*00:15:00 {sucheSchaltzeit()}
attr Heizschalter_alle_15_minuten alignTime 00:00:00

################################################################################


99_Utils

##############################################
# $Id: 99_Utils.pm 1932 2012-10-06 20:15:33Z ulimaass $
package main;

use Time::Local;
use strict;
use warnings;
use POSIX;

sub
Utils_Initialize($$)
{
  my ($hash) = @_;
}

sub
time_str2num($)
{
  my ($str) = @_;
  my @a = split("[- :]", $str);
  return mktime($a[5],$a[4],$a[3],$a[2],$a[1]-1,$a[0]-1900,0,0,-1);
}

sub
min($$)
{
  my ($a,$b) = @_;
  return $a if($a lt $b);
  return $b;
}

sub
max($$)
{
  my ($a,$b) = @_;
  return $a if($a gt $b);
  return $b;
}

sub
abstime2rel($)
{
  my ($h,$m,$s) = split(":", shift);
  $m = 0 if(!$m);
  $s = 0 if(!$s);
  my $t1 = 3600*$h+60*$m+$s;

  my @now = localtime;
  my $t2 = 3600*$now[2]+60*$now[1]+$now[0];
  my $diff = $t1-$t2;
  $diff += 86400 if($diff <= 0);

  return sprintf("%02d:%02d:%02d", $diff/3600, ($diff/60)%60, $diff%60);
}

sub
sucheSchaltzeit() {
### Ermittle aktuelle Rechnerzeit /datum/ zeit/ tag etc. #####################
my ($Sekunde, $Minute, $Stunde, $Monatstag, $Monat,
   $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $jetztzeit = time();
my @Zeilen = ("");
# my @zeilen_werte = ("");
### öffne Steuerdatei nur zum Lesen
  open(HEIZDAT,'<','/usr/share/fhem/FHEM/HeizzeitenWZ.cfg') || die "Datei mit
  Heizzeiten nicht gefunden";
while(<HEIZDAT>)
{
 push(@Zeilen,$_);
}
close(HEIZDAT);
### entferne alle \n-Zeichen
chomp (@Zeilen);
for(@Zeilen)
{
    # in $_ steht die aktuelle Zeile und die wird per Leerzeichen aufgedröselt
    my @zeilen_werte = split(/ /,$_);
    ### Abfrage ob es eine Kommentarzeile ist - Kennzeichen ein #
    if (($zeilen_werte[0]) ne "#"){
         #Abfrage ob Urlaubszeit (Minimum)
         if (($zeilen_werte[0]) eq "MINIMUM"){
              ### Minimumzeitraum berechnen
#              my $sekunde_tmp = "0";
              my @array_datumsplit = split(/\./, $zeilen_werte[1]);
              my @array_zeitsplit = split(/:/, $zeilen_werte[2]);              
              my $minimum_begin =  timelocal($sekunde_tmp,$array_zeitsplit[1],
              $array_zeitsplit[0],$array_datumsplit[0],$array_datumsplit[1]-1,
              $array_datumsplit[2]-1900);
              my @array_datumsplit2 = split(/\./, $zeilen_werte[3]);
              my @array_zeitsplit2 = split(/:/, $zeilen_wert[4]);              
        ### Endzeit = eingetragen Endzeit - 1 Tag
        my $minimum_ende =  timelocal($sekunde_tmp,$array_zeitsplit2[1],
        $array_zeitsplit2[0],$array_datumsplit2[0],$array_datumsplit2[1],
        $array_datumsplit2[2]-1900) - 86400;
        if (($jetztzeit > $minimum_begin ) && ( $jetztzeit <  $minimum_ende)) {
             Log 3, "Habe Urlaub Heizung auf 17 Grad Minimum Jetzt: $jetztzeit
             Start:$minimum_begin Ende:$minimum_ende";
             fhem "set AZ_desired_temp 17" ;
             fhem "set Keller_desired_temp 17" ;
           }
           } else {
           ### Abfrage ob heute entsprechender Tag
           if ($zeilen_werte[0] == $Wochentag){
            ## abprüfen ob Stunde erreicht
            if ($zeilen_werte[1] == $Stunde){
             ## abprüfen ob Minute erreicht
             if ($zeilen_werte[2] == $Minute){
              ### Jetzt Name des Antriebs und Dummys und Zieltemp
              ### einlesen sowie Befehle absetzen
              #fhem "set " . $zeilen_werte[3] . " desired " . $zeilen_werte[5] ;
                       fhem "set " . $zeilen_werte[4] . " " . $zeilen_werte[5] ;
                       Log 3, "$zeilen_werte[3] geaendert auf $zeilen_werte[5]";
             }}}
        } # Endif Minimum
    } # Endif # Kommentar
}  # EndeFor
}
################### Ende SUB sucheSchaltzeit#######################


HeizzeitenWZ

###########################################
##### Hier werden die Heizzeiten definiert
# 0-6 Wochentag beginnt mit Sonntag
# 00-23 Volle Stunde
# 00 oder 15 oder 30 oder 45 Minute
# PID-Name
# Dummy-Name
# gewünschte Temp. in vollen Graden
#### Wochenschaltzeiten####################
 # Sonntag
 0 08 15 heizungWZ HeizkoerperWZ_Wunschtemp 21
 0 19 30 heizungWZ HeizkoerperWZ_Wunschtemp 22
 0 22 30 heizungWZ HeizkoerperWZ_Wunschtemp 18
 #
 ############################################
 # Montag
 1 05 45 heizungWZ HeizkoerperWZ_Wunschtemp 21
 1 06 45 heizungWZ HeizkoerperWZ_Wunschtemp 18
 1 13 00 heizungWZ HeizkoerperWZ_Wunschtemp 21
 1 19 30 heizungWZ HeizkoerperWZ_Wunschtemp 22
 1 22 30 heizungWZ HeizkoerperWZ_Wunschtemp 18
 #
 ############################################
 # Dienstag
 2 05 45 heizungWZ HeizkoerperWZ_Wunschtemp 21
 2 06 45 heizungWZ HeizkoerperWZ_Wunschtemp 18
 2 13 00 heizungWZ HeizkoerperWZ_Wunschtemp 21
 2 19 30 heizungWZ HeizkoerperWZ_Wunschtemp 22
 2 22 30 heizungWZ HeizkoerperWZ_Wunschtemp 18
 #
 ############################################
 # Mittwoch
 3 05 45 heizungWZ HeizkoerperWZ_Wunschtemp 21
 3 06 45 heizungWZ HeizkoerperWZ_Wunschtemp 18
 3 13 00 heizungWZ HeizkoerperWZ_Wunschtemp 21
 3 19 30 heizungWZ HeizkoerperWZ_Wunschtemp 22
 3 22 30 heizungWZ HeizkoerperWZ_Wunschtemp 18
 #
 ############################################
 # Donnerstag
 4 05 45 heizungWZ HeizkoerperWZ_Wunschtemp 21
 4 06 45 heizungWZ HeizkoerperWZ_Wunschtemp 18
 4 13 00 heizungWZ HeizkoerperWZ_Wunschtemp 21
 4 19 30 heizungWZ HeizkoerperWZ_Wunschtemp 22
 4 22 30 heizungWZ HeizkoerperWZ_Wunschtemp 18
 #
 ############################################
 # Freitag
 5 05 45 heizungWZ HeizkoerperWZ_Wunschtemp 21
 5 06 45 heizungWZ HeizkoerperWZ_Wunschtemp 18
 5 13 00 heizungWZ HeizkoerperWZ_Wunschtemp 21
 5 19 30 heizungWZ HeizkoerperWZ_Wunschtemp 22
 5 22 45 heizungWZ HeizkoerperWZ_Wunschtemp 18
 #
 ############################################
 # Samstag
 6 08 15 heizungWZ HeizkoerperWZ_Wunschtemp 21
 6 19 30 heizungWZ HeizkoerperWZ_Wunschtemp 22
 6 22 45 heizungWZ HeizkoerperWZ_Wunschtemp 18
###########################################
# Es folgen die Zeiten (Zeitraum zB. Urlaub) in denen nur Minimum (17 Grad)
# gefahren wird
# Bitte bei Minute immer 00 15 30 oder 45 eingeben
# BEACHTE: 24 Stunden vor Ablauf der Endzeit wird auf normalen
# Wochenschaltbetrieb zurückgeschaltet
# MINIMUM  als Wort
# TT.MM.JJJJ HH:MM als Begin des Minimum
# TT.MM.JJJJ HH:MM als Ende des Minimum
MINIMUM 14.11.2012 16:13 15.11.2012 12:00


Ich danke für eure Bemühungen!

Gruß Stefan

Dietmar63

Ich hatte eine ähnliches Problem und habe letzte Woche ein neues Modul Heating_Control erstellt.
Das Modul scheint mir insgesamt viel einfacher zu fuktionieren und ist viel flexibler als die Definiton in 99_Util ... mit der Pflege der zusätzlichen Datei.

vielleicht prüfst du mal den folgenden Beitrag:
Link

Dietmar
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

kud

Hallöchen,
bin wieder im Lande.
So nun los mal.
Geht bei Dir der Dummy "HeizkoerperWZ_Wunschtemp" ? per Webinterface.
Wenn Ja gut.
2. Frage : Hast Du in der 99_myUtils.pm was geändert?
In dieser Funktion fhem "set " . $zeilen_werte[4] . " " . $zeilen_werte[5] ; steht übersetzt
set HeizkoerperWZ_Wunschtemp 22
Also die letzten beiden Einträge der Zeile der Heizeiten.cfg. (Jeder Eintrag pro Zeile ist mit einem Leerzeichen getrennt. Begonnen wird mit der Null)
Letzte Frage.
Warum hast Du die Heizeiten.cfg umgestellt?
Es macht keinen Sinn nach dem Urlaub abzuprüfen, wenn Du schon alles eingestellt hast.
Also bitte überprüfe Deine "Umbauten".

Gruss
Kai-Uwe

kud

Nächste Frage .
Hast Du nur einen Stellantrieb?
Deine Steuerdatei heißt HeizzeitenWZ.cfg ?
Meine Heizzeiten.cfg regelt alle 4 Antriebe.
Siehe hier:

# Dummy-Name
# gewünschte Temp. in vollen Graden
###########################################
# Es folgen die Zeiten (Zeitraum zB. Urlaub) in denen nur Minimum (17 Grad) gefahren wird
# Bitte bei Minute immer 00 15 30 oder 45 eingeben
# BEACHTE: Einen Tag vor Ablauf der Endzeit wird auf normalen Wochenschaltbetrieb zurückgeschaltet
# MINIMUM  als Wort
# 01.01.2012 12:30 als Begin des Minimum
# 12.01.2012 12:00 als Ende des Minimum
MINIMUM 07.01.2013 16:13 11.01.2013 17:00
#### Wochenschaltzeiten####################
# Sonntag
0 08 00 heizung.02 AZ_desired_temp 20
0 21 00 heizung.02 AZ_desired_temp 17
#
0 08 00 heizung.01 Keller_desired_temp 20
0 21 00 heizung.01 Keller_desired_temp 17
#
0 08 00 heizung.03 WZ_desired_temp 20
0 21 00 heizung.03 WZ_desired_temp 17
#
0 08 00 heizung.04 KZ_desired_temp 20
0 21 00 heizung.04 KZ_desired_temp 17
############################################


Bitte checken.

Gruss KU

Stefan 69

Selber Hallöchen :-)

Also die normale Regelung mit dem Dummy funktioniert soweit. Hab das nun schon einige Tage laufen. regel halt die Temp. seit her manuell.
Mir ist jedoch aufgefallen, dass die Soll-Temp immer ziemlich "überregelt" wird. Meine damit, wenn sie erreicht ist, das die Stellantriebe dann noch immer um die 40% geöffnet sind.
Die Raumtemp. liegt somit ca. 1 Grad höher als eingestellt. Somit entsteht halt eine relativ große Schwankung.

Die 99-datei habe ich eigentlich nur aus dem Wiki kopiert. Eigentlich hab ich da nix bewusst geändert, da ich ja eh nicht weis was ich da mache, deswegen hab ich ja hier gefragt :-(

Die Umstellung der Heizzeiten.cfg war ebenfalls nicht bewusst, Ist entstanden durch das einpflegen der Zeiten. dachte nicht, dass es von relevanz ist. sorry!

Zu den Stellantrieben:
Ich habe momentan nur einen Raum der geregelt wird. In zukunft sollen aber noch drei weitere folgen.
Der momentanige Raum hat jedoch zwei Stellantriebe. Diese haben jedoch den identischen Namen (habe beide gleichzeitig mit dem pair-Befehl angelernt, was auch super funktioniert). Somit können diese als EINER betrachtet werden. Mir war es zu aufregend beide separat einzubinden.


Überlege auch gerade dieses neue Modul von orti-otto zu nutzen. Das sieht auf den ersten Blick irgendwie einfacher aus. Natürlich kann ich die Unterschiede der Funktion nicht beurteilen. Es kommt also auf einen Versuch an.

Gruß Stefan

kud

Ok.
Dann sind die Grundlagen ja gleich.
Das "Hinterherhinken" kann ich leider nicht beurteilen, da unsere Heizung eigentlich immer am Limit arbeitet.
Diese Verhalten kann ich auch nicht so einfach beeinflussen, da es vom Modul FHT8V geregelt wird und ich nehme mal an, dass man per Delta-V die Regelung steuert.
Dieses neue Modul kenne ich nicht und kann nicht beurteilen, ob es "einfacher" ist.
Ich habe mir das mit der Heizzeiten.cfg ausgedacht und ist somit für mich schlüssig und sehr einfach zu erweitern oder abzuändern. (Ich sehe sofort den Tag , die Uhrzeit, den Dummy und die Zieltemp)
Bitte sag Bescheid, ob Du weitere  Hilfe brauchst.

Gruss
Kai-Uwe

Stefan 69

Danke für deine Hilfe!

Momentan "brummt" mir der Kopf. Werde morgen mal sehen, ob ich es hinbekomme.

Das einzige was mich noch grübeln lässt ist, muss ich in der "suche Schaltzeit-Datei" nicht noch irgendetwas anpassen(Namen von  meinen FHT bzw. S300)?

Bitte nicht hauen, aber irgendwie schein ichs noch nicht zu raffen :-(


Also, danke für die Geduld!

Gruß Stefan

kud

Das Einzige was passen muss ist der DUMMY.
HeizkoerperWZ_Wunschtemp