Balontür auf / Heizung aus

Begonnen von AlterMann, 20 April 2018, 22:49:20

Vorheriges Thema - Nächstes Thema

AlterMann

Hi ich habe einen Devolo Kontakt an der Balkontür. Als Readings kommen Temperatur, Luftfeuchte Tür auf, Tür zu. Um die Türöffnung zu detektieren habe ich ein Notify gebastelt. Erst mal ist eine Funksteckdose angegangen wenn die Tür geschlossen wurde. Das war die Probe. Dann habe ich es wahrscheinlich übertrieben und gedacht ich kann alle vier Befehle unter Def einsetzen?


DEF
Balkontuer:doorWindow:.on set Heizung_links closed|Balkontuer:doorWindow:.on set Heizung_re closed|Balkontuer:doorWindow:.off set Heizung_links open|Balkontuer:doorWindow:.off set Heizung_re open


Doch das scheint nicht zu laufen. Muss ich für jedes Ventil und für jeden Zustand ein Notify machen oder habe ich im Def nur was falsch gemacht?

Danke schon mal Alter Mann
Ich bin Techniker und Anwender, kein Programmierer und genau deshalb will ich in FHEM einsteigen. Bald hab ich viel Zeit und Unkraut jäten is nich mein Ding.....

Otto123

#1
Guten Abend Alter Mann,

dein Code ist etwas verwirrend, aber ich glaube ich weiß was Du willst:
Balkontuer:doorWindow:.on set Heizung_links,Heizung_re closed
Ein zweites notify und Du bist fertig
Balkontuer:doorWindow:.off set Heizung_links,Heizung_re open

Warum dieses Konsttrukt? -> https://fhem.de/commandref_DE.html#devspec

Aber da geht natürlich noch mehr :)

Wenn es nur Heizung_links und Heizung_re gibt geht auch: set Heizung_.*

Du könntest bei Heizung noch mit Attribute eventMap off:open on:closed setzen
Dann geht es eventuell in einem notify:
Balkontuer:doorWindow:.(off|on) set Heizung_.* $EVENT

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

eisman

hi,

oder man macht es gleich für alles:
Raum (config wohnung und zimmer)
   RA_0000 Wohnung       (dummy mit Grundeinstellung)
   RA_0100 Wohnzimmer (dummy mit Grundeinstellung)
   TC_0101 Thermostat
   FE_0101 Fensterlinks usw...

fenster abfrage (notify oder ,,,,)

#########################################################################################
#
#        $Raum        01 Wohnzimmer
#        $Regler1     01 Fenster Links
#        $Regler2     02 Fenster Rechts

sub FensterStatus($$$)
{
  my ($Raum,$Regler1,$Regler2) = @_;
  my $Fenster1  = "FE_" . $Raum . $Regler1;
  my $Fenster2  = "FE_" . $Raum . $Regler2;
  my $Fenster0  = "FE_" . $Raum . "00";
  my $Ventil    = "TC_" . $Raum . "01";
  my $RaumName  = "RA_" . $Raum . "00";
  my $FensterL  = ReadingsVal($Fenster1,"state","closed");
  my $FensterR  = ReadingsVal($Fenster2,"state","closed");
  my $TempOpen  = ReadingsVal($Fenster0,"window","");
  my $TempZeit  = ReadingsVal($RaumName,"temp-zeit","");
  my $TempTag   = ReadingsVal($RaumName,"temp-day","");
  my $TempNacht = ReadingsVal($RaumName,"temp-night","");
 
  fhem("set " . $RaumName . " window " . $FensterL . $FensterR . ";");
  fhem("set " . $Fenster0 . " window " . $FensterL . $FensterR . ";");
  if($FensterL ne "closed" or $FensterR ne "closed") {
    {Heizung($Raum,"01","off")}
  } else {
    if($TempZeit eq "Tag") {
  {Heizung($Raum,"01",$TempTag)}
} else {
  {Heizung($Raum,"01",$TempNacht)}
}
  }
}

Aufruf mit FensterStatus("01","01","02")

Heizung setzen:

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

#    $Raum    01 Wohnzimmer
#    $Regler  01 TC_0101
#    $Temp    Soll temperature

sub Heizung($$$)
{
  my ($Raum,$Regler,$Temp,) = @_;
  my $RaumName    = "RA_" . $Raum . "00";
  my $ReglerName  = "TC_" . $Raum . "01";
  my $FensterName = "FE_" . $Raum . "00";
  my $Heizperiode = ReadingsVal("RA_0000" ,"Heizperiode","on");
  my $desired     = ReadingsVal($ReglerName,"desired-temp",0);
  my $mode        = ReadingsVal($RaumName,"temp-mode","");
  my $FensterS    = ReadingsVal($FensterName,"window","");
  my $soll        = "";

  if($Heizperiode eq "on"){
    if($mode eq "auto"){
  # Log 1, "Heizung: $FensterName $FensterS";
  if($FensterS eq "closedclosed"){
$soll = $Temp;
  } else {
    $soll = "off";
  }}
  } else {
    $soll = "off";
  }
  # Log 1, "Heizung: $ReglerName alt: $desired neu: $soll";
  if($soll ne $desired) {
    # Log 1, "Heizung: $ReglerName set: $soll";
    fhem("set " . $ReglerName . "_Climate desired-temp " . $soll . ";");
  }
}


{Heizung($Raum,"01","off")} //Hier fenster auf

läuft mit 5 Zimmer und 9 Fenster

gruss
1x FHEM Debian, Homematic,ZigBee,FS20 / 1X Raspberry, ConBee / 5x ESP
1x FHEM Debian, Homematic,ZigBee         / 1X Raspberry, ConBee / 5x ESP
1x FHEM Debian,MQTT                               / 1X Raspberry, i2c,onewire,gpio
1x auf Windows 2012 Hyper-V-S

AlterMann

Hi noch mal auf Anfang. Ich habe zwei DECT Heizungsventile und einen Zwave Fensterkontakt an der Balkontür. Der bringt kein State und kein Event, sondern nur ein Reading doorWindow off oder on. Nun könnte ich mir über StateFormat oder UserReding die Werte holen aber das muss ich ja nicht, denn es gibt ja Notify und da kann ich die Meldung direkt verwenden . Ich will bei Meldung off die Heizung an und bei Meldung on die beiden Ventile aus haben. Eventuell muss ich auch die Temperatur runter setzen weil open und closed nicht ankommen aber das ist Nebensache. Das Konstrukt von Eismann muss ich erst mal durchdenken. Ich sehe da erst mal nicht durch aber das wird...Das mit den zwei Notify ist klar und löst mein Problem. für Attribute eventMap bin ich noch zu doof... ;)

Danke

Alter Mann
Ich bin Techniker und Anwender, kein Programmierer und genau deshalb will ich in FHEM einsteigen. Bald hab ich viel Zeit und Unkraut jäten is nich mein Ding.....