Fußbodenheizung - Steuerung/Infrarotheizung-Steuerung

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

twoxx
Beiträge: 534
Registriert: 16.03.2015, 18:57
Hat sich bedankt: 1 Mal
Danksagung erhalten: 26 Mal

Re: Fußbodenheizung - Steuerung/IR-Heizung-Steuerung

Beitrag von twoxx » 02.11.2017, 22:46

hydraold hat geschrieben:Hi

habe den zuvor nicht mit gesendet aber hier ist er

Code: Alles auswählen

!--------Steuerung Fussbodenheizung
!----- RaumreglerKira und Aktor identifizieren
string RaumreglerKira = "BidCos-RF.NEQ0936187";
string AktorKira = "BidCos-RF.NEQ0193946";
string AktorkanalKira ="4";
!----Ausführintervall Script und diverses festlegen
dom.GetObject("SicherheitsheizzeitKira").State(240.000); !---- Heizzeit, falls errechnete Heizzeit im Minus
dom.GetObject("SchaltschwelleniedertempKira").State(190.000); !--- Sofern errechnete Schaltzeit kleiner, dann nicht einschalten
dom.GetObject("SchaltschwellehochtempKira").State(190.000); !---- Sofern errechnete Schaltzeit kleiner, dann nicht einschalten
dom.GetObject("ScriptwiederholungKiramax").State(5.0); !-----------Wiederholung des Scripts bis Wärmeerhaltung
dom.GetObject("ScriptwiederholungKiraHeizzeit").State(241.0); !---- Heizzeit bei Wärmeerhaltung
!----- Temperaturen feststellen
dom.GetObject("isttemperaturKira").State((0.0000 + dom.GetObject(RaumreglerKira#":2.ACTUAL_TEMPERATURE").Value()));
dom.GetObject("solltemperaturKira").State((0.0000 + dom.GetObject(RaumreglerKira#":2.SET_TEMPERATURE").Value()));
var schaltzustandKira = dom.GetObject(AktorKira#":"#AktorkanalKira#".STATE").Value();
!------ GrenzTemperaturen berechnen
dom.GetObject("hochtempKira").State((0.000 + dom.GetObject("solltemperaturKira").Value() + 0.5));
dom.GetObject("toleranzniederKira").State(1.0);
dom.GetObject("niedertempKira").State((0.000 + dom.GetObject("solltemperaturKira").Value() - dom.GetObject("toleranzniederKira").Value()));
dom.GetObject("hochstillKira").State((0.000 + dom.GetObject("solltemperaturKira").Value() + 0.1));
dom.GetObject("niederstillKira").State((0.000 + dom.GetObject("solltemperaturKira").Value() - 0.2));
dom.GetObject("toleranzKira").State((0.000 + dom.GetObject("hochtempKira").Value() - dom.GetObject("niedertempKira").Value()));
dom.GetObject("KiraFBTempDiff2").State(dom.GetObject("KiraFBTempDiff").Value());
if ((dom.GetObject("KiraFBTempDiff").Value()) <= 0.000)
{
dom.GetObject("KiraFBTempDiff").State(0.010);
WriteLine("TempDiff kleiner gleich 0"); WriteLine(dom.GetObject("KiraFBTempDiff").Value());
}
else
{
WriteLine ("TempfDiff größer 0"); WriteLine(dom.GetObject("KiraFBTempDiff").Value());
}
!---------------------- Einschaltzeit berechnen -----------------
if ((dom.GetObject("isttemperaturKira").Value()) <= (dom.GetObject("solltemperaturKira").Value()))
{
WriteLine("Isttemperatur kleinergleich solltemperatur");
dom.GetObject("heizleistungKira").State((0.0000 + ((((dom.GetObject("solltemperaturKira").Value() + 0.2000) - dom.GetObject("isttemperaturKira").Value()) / dom.GetObject("toleranzKira").Value()) * 100.0000)));
dom.GetObject("heizzeit1Kira").State((0.0000 + ((dom.GetObject("ScriptintervallKira").Value() * dom.GetObject("heizleistungKira").Value()) / 100.0000)));
dom.GetObject("einschaltzeitvergleichtempKira").State((0.0000 + ((dom.GetObject("KiraFBTempDiff").Value() * dom.GetObject("heizzeit1Kira").Value()) / dom.GetObject("KiraDiffStartEndHeizzeit").Value()))) 
dom.GetObject("OrigHeizKira").State(dom.GetObject("heizzeit1Kira").Value());
if (((dom.GetObject("toleranzKira").Value() * dom.GetObject("heizleistungKira").Value()) / 100.0000) >= dom.GetObject("einschaltzeitvergleichtempKira").Value())
{
WriteLine("heizzeit im original übernommen"); dom.GetObject("heizzeitKira").State((dom.GetObject("heizzeit1Kira").Value() * 60.0000));
}
else
{
WriteLine("reduzierte heizzeit übernommen"); 
dom.GetObject("tempdifferenzkalkrealKira").State((0.0000 + (dom.GetObject("einschaltzeitvergleichtempKira").Value() - ((dom.GetObject("toleranzKira").Value() * dom.GetObject("heizleistungKira").Value()) / 100.0000))));
dom.GetObject("reduzierungszeitKira").State(0.0000 + ((dom.GetObject("tempdifferenzkalkrealKira").Value() * dom.GetObject("KiraDiffStartEndHeizzeit").Value()) / dom.GetObject("KiraFBTempDiff").Value()));
dom.GetObject("neueheizzeitKira").State((0.0000 + (dom.GetObject("heizzeit1Kira").Value() - dom.GetObject("reduzierungszeitKira").Value())));
if (dom.GetObject("neueheizzeitKira").Value() <= 0.0000)
{
dom.GetObject("heizzeitKira").State((0.0000 + dom.GetObject("SicherheitsheizzeitKira").Value())); WriteLine("sicherheitshalber 4 Minuten heizen");
}
else
{
dom.GetObject("heizzeitKira").State((0.0000 + (dom.GetObject("neueheizzeitKira").Value() * 60.0000))); WriteLine("neueheizzeit übernommen");
}
}
}
else
{
WriteLine("Isttemperatur größer solltemperatur");
dom.GetObject("heizleistungKira").State((0.0000 + (((dom.GetObject("hochtempKira").Value() - dom.GetObject("isttemperaturKira").Value()) / dom.GetObject("toleranzKira").Value()) * 100.0000)));
dom.GetObject("heizzeit1Kira").State((0.0000 + ((dom.GetObject("ScriptintervallKira").Value() * dom.GetObject("heizleistungKira").Value()) / 100.0000)));
dom.GetObject("einschaltzeitvergleichtempKira").State((0.0000 + (dom.GetObject("KiraFBTempDiff").Value() * dom.GetObject("heizzeit1Kira").Value() / dom.GetObject("KiraDiffStartEndHeizzeit").Value())));
dom.GetObject("OrigHeizKira").State(dom.GetObject("heizzeit1Kira").Value());
if (((dom.GetObject("toleranzKira").Value() * dom.GetObject("heizleistungKira").Value()) / 100.0000) >= dom.GetObject("einschaltzeitvergleichtempKira").Value())
{
WriteLine("heizzeit im original übernommen"); dom.GetObject("heizzeitKira").State((dom.GetObject("heizzeit1Kira").Value() * 60));
}
else
{
WriteLine("reduzierte heizzeit übernommen"); 
dom.GetObject("tempdifferenzkalkrealKira").State(0.0000 + (dom.GetObject("einschaltzeitvergleichtempKira").Value() - ((dom.GetObject("toleranzKira").Value() * dom.GetObject("heizleistungKira").Value()) / 100.0000)));
dom.GetObject("reduzierungszeitKira").State(0.0000 + ((dom.GetObject("tempdifferenzkalkrealKira").Value() * dom.GetObject("KiraDiffStartEndHeizzeit").Value()) / dom.GetObject("KiraFBTempDiff").Value()));
dom.GetObject("neueheizzeitKira").State(0.0000 + (dom.GetObject("heizzeit1Kira").Value() - dom.GetObject("reduzierungszeitKira").Value()));
if (dom.GetObject("neueheizzeitKira").Value() <= 0.0000)
{
dom.GetObject("heizzeitKira").State(0.0000 + dom.GetObject("SicherheitsheizzeitKira").Value()); WriteLine("sicherheitshalber 4 Minuten heizen");
}
else
{
dom.GetObject("heizzeitKira").State(0.0000 + (dom.GetObject("neueheizzeitKira").Value() * 60.0000)); WriteLine("neueheizzeit übernommen");
}
}
}
!-----------------------Heizzeit in Systemvariable schreiben
dom.GetObject("KiraFBEinschaltzeit").State(dom.GetObject("heizzeitKira").Value());
dom.GetObject("KiraFBeinschaltzeitvergleichtemp").State(dom.GetObject("einschaltzeitvergleichtempKira").Value());

!------------------- Künftige Temperatur bei doppelter Schaltzeit vorausrechnen
dom.GetObject("tempvorausrechnungKira").State(0.0000 + ((dom.GetObject("KiraFBTempDiff2").Value() * (dom.GetObject("ScriptintervallKira").Value() * 2.000) / dom.GetObject("KiraDiffStartEndHeizzeit").Value())));
dom.GetObject("NeueisttemperaturKira").State(0.0000 + dom.GetObject("isttemperaturKira").Value() + dom.GetObject("tempvorausrechnungKira").Value());
!--------------TEST Temperaturen anzeigen
!----- Schaltungen ausführen
if ((dom.GetObject("isttemperaturKira").Value() < dom.GetObject("hochtempKira").Value()) && (dom.GetObject("isttemperaturKira").Value() > dom.GetObject("niedertempKira").Value())) 
 {
if ((dom.GetObject("KiraFBVergleichTemp").Value() == dom.GetObject("isttemperaturKira").Value()) && (dom.GetObject("isttemperaturKira").Value() > dom.GetObject("solltemperaturKira").Value()))
{
dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value()); WriteLine("Ist = Vergleichstemperatur");
if (schaltzustandKira == "true")
   {
    WriteLine("ist eingeschaltet und soll ausgeschaltet sein"); dom.GetObject(AktorKira#":"#AktorkanalKira#".STATE").State(0); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
    }
    else
    {
     WriteLine("ist ausgeschaltet und soll ausgeschaltet sein"); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
     }
}
else
{
 WriteLine("innerhalb toleranz"); dom.GetObject("KiraFBTempIstinToleranz").State(true);
  if ((dom.GetObject("isttemperaturKira").Value() <= dom.GetObject("hochstillKira").Value()) && (dom.GetObject("isttemperaturKira").Value() >= dom.GetObject("niederstillKira").Value()))
  {
   WriteLine("innerhalb stille");
    if (schaltzustandKira == "true")
   {
    WriteLine("ist eingeschaltet und soll ausgeschaltet sein"); dom.GetObject(AktorKira#":"#AktorkanalKira#".STATE").State(0); dom.GetObject("KiraFBTempIstinToleranz").State(true); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
    }
    else
    {
     WriteLine("ist ausgeschaltet und soll ausgeschaltet sein"); dom.GetObject("KiraFBTempIstinToleranz").State(true); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
     }
   }
   else
   {
   WriteLine("ausserhalb stille");
   if (dom.GetObject("isttemperaturKira").Value() < dom.GetObject("niederstillKira").Value())
   {
    if (dom.GetObject("heizzeitKira").Value() < dom.GetObject("SchaltschwelleniedertempKira").Value())
    {
    WriteLine("Schaltzeit zu klein");dom.GetObject("KiraFBTempIstinToleranz").State(true);
    if (schaltzustandKira == "true")
    {
    WriteLine("ist eingeschaltet und soll ausgeschaltet sein"); dom.GetObject(AktorKira#":"#AktorkanalKira#".STATE").State(0); dom.GetObject("KiraFBTempIstinToleranz").State(true); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value()); 
    }
    else
    {
     WriteLine("ist ausgeschaltet und soll ausgeschaltet sein"); dom.GetObject("KiraFBTempIstinToleranz").State(true); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
     }
    }
    else
    {
    WriteLine("kleiner niederstill"); dom.GetObject(AktorKira#":"#AktorkanalKira#".ON_TIME").State(dom.GetObject("heizzeitKira").Value()); dom.GetObject(AktorKira#":"#AktorkanalKira#".STATE").State(1); dom.GetObject("KiraFBTempIstinToleranz").State(true); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value()); 
    }
   }
    else
    {
    if (dom.GetObject("KiraFBVergleichTemp").Value() < dom.GetObject("isttemperaturKira").Value())
    {
    dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value()); WriteLine("über hochstill gestiegen"); 
    if (schaltzustandKira == "true")
    {
    WriteLine("ist eingeschaltet und soll ausgeschaltet sein"); dom.GetObject(AktorKira#":"#AktorkanalKira#".STATE").State(0); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
    }
    else
    {
     WriteLine("ist ausgeschaltet und soll ausgeschaltet sein"); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
     }
     }
    else
    {
    if (dom.GetObject("heizzeitKira").Value() < dom.GetObject("SchaltschwellehochtempKira").Value())
    {
    WriteLine("Schaltzeit zu klein"); dom.GetObject("KiraFBTempIstinToleranz").State(true);
    if (schaltzustandKira == "true")
   {
    WriteLine("ist eingeschaltet und soll ausgeschaltet sein"); dom.GetObject(AktorKira#":"#AktorkanalKira#".STATE").State(0); dom.GetObject("KiraFBTempIstinToleranz").State(true); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
    }
    else
    {
     WriteLine("ist ausgeschaltet und soll ausgeschaltet sein"); dom.GetObject("KiraFBTempIstinToleranz").State(true); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
     }
    }
    else
    {
     WriteLine("größer als hochstill"); dom.GetObject(AktorKira#":"#AktorkanalKira#".ON_TIME").State(dom.GetObject("heizzeitKira").Value()); dom.GetObject(AktorKira#":"#AktorkanalKira#".STATE").State(1); dom.GetObject("KiraFBTempIstinToleranz").State(true); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
     }
     }
   }
  }
}
}
else
  {
  if (dom.GetObject("isttemperaturKira").Value() >= dom.GetObject("hochtempKira").Value())
  {
  WriteLine("Isttemperatur größer als hochtemp");
  if (schaltzustandKira == "true")
   {
    if (dom.GetObject("NeueisttemperaturKira").Value() <= dom.GetObject("solltemperaturKira").Value())
    {
     WriteLine("Neue Isttemp kleiner gleich Solltemperatur");
     WriteLine("ist eingeschaltet und soll eingeschaltet sein");
     dom.GetObject("KiraFBTempIstinToleranz").State(false); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
     }
     else
     {
     WriteLine("Neue Isttemp grösser Solltemperatur");
     WriteLine("ist eingeschaltet und soll ausgeschaltet sein"); dom.GetObject(AktorKira#":"#AktorkanalKira#".STATE").State(0); dom.GetObject("KiraFBTempIstinToleranz").State(false); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
     }
    }
    else
    {
    if (dom.GetObject("NeueisttemperaturKira").Value() <= dom.GetObject("solltemperaturKira").Value())
    {
     WriteLine("Neue Isttemp kleiner gleich Solltemperatur");
     WriteLine("ist ausgeschaltet und soll eingeschaltet sein");
dom.GetObject(AktorKira#":"#AktorkanalKira#".ON_TIME").State(36000); 
     dom.GetObject(AktorKira#":"#AktorkanalKira#".STATE").State(1); dom.GetObject("KiraFBTempIstinToleranz").State(false); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
dom.GetObject("KiraFBEinschaltzeit").State(888);
     }
     else
     {
     WriteLine("Neue Isttemp grösser Solltemperatur");
     WriteLine("ist ausgeschaltet und soll ausgeschaltet sein"); dom.GetObject("KiraFBTempIstinToleranz").State(false); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
     }
     }
  }
  else
  {
   if (dom.GetObject("isttemperaturKira").Value() == dom.GetObject("niedertempKira").Value())
  {
   if (schaltzustandKira == "true")
   {
    if (dom.GetObject("NeueisttemperaturKira").Value() >= dom.GetObject("niederstillKira").Value())
    {
     WriteLine("Neue Isttemp größer gleich Niederstill");
     WriteLine("ist eingeschaltet und soll ausgeschaltet sein");
     dom.GetObject(AktorKira#":"#AktorkanalKira#".STATE").State(0); dom.GetObject("KiraFBTempIstinToleranz").State(false); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
     }
     else
     {
     WriteLine("Neue Isttemp kleiner Niederstill");
     WriteLine("ist eingeschaltet und soll eingeschaltet sein");
     dom.GetObject("KiraFBTempIstinToleranz").State(false); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
     }
    }
    else
    {
     if (dom.GetObject("NeueisttemperaturKira").Value() >= dom.GetObject("niederstillKira").Value())
    {
     WriteLine("Neue Isttemp größer gleich Niederstill");
     WriteLine("ist ausgeschaltet und soll eingeschaltet sein"); dom.GetObject("KiraFBTempIstinToleranz").State(false); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
     }
     else
     {
     WriteLine("Neue Isttemp kleiner Niederstill");
     WriteLine("ist ausgeschaltet und soll eingeschaltet sein");
dom.GetObject(AktorKira#":"#AktorkanalKira#".ON_TIME").State(36000);  dom.GetObject(AktorKira#":"#AktorkanalKira#".STATE").State(1);dom.GetObject("KiraFBTempIstinToleranz").State(false); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
dom.GetObject("KiraFBEinschaltzeit").State(888);
     }
     }
    }
   else
   {
   WriteLine("Isttemperatur ist kleiner als niedertemp"); 
   if (schaltzustandKira == "true")
   {
    if (dom.GetObject("NeueisttemperaturKira").Value() >= dom.GetObject("niederstillKira").Value())
    {
     WriteLine("Neue Isttemp größer gleich Niederstill");
     WriteLine("ist eingeschaltet und soll ausgeschaltet sein");
     dom.GetObject(AktorKira#":"#AktorkanalKira#".STATE").State(0); dom.GetObject("KiraFBTempIstinToleranz").State(false); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
     }
     else
     {
     WriteLine("Neue Isttemp kleiner Niederstill");
     WriteLine("ist eingeschaltet und soll eingeschaltet sein");
     dom.GetObject("KiraFBTempIstinToleranz").State(false); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
     }
    }
    else
    {
     if (dom.GetObject("NeueisttemperaturKira").Value() >= dom.GetObject("niederstillKira").Value())
    {
     WriteLine("Neue Isttemp größer gleich Niederstill");
     WriteLine("ist ausgeschaltet und soll eingeschaltet sein"); dom.GetObject("KiraFBTempIstinToleranz").State(false); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
     }
     else
     {
     WriteLine("Neue Isttemp kleiner Niederstill");
     WriteLine("ist ausgeschaltet und soll eingeschaltet sein");
dom.GetObject(AktorKira#":"#AktorkanalKira#".ON_TIME").State(36000); 
dom.GetObject(AktorKira#":"#AktorkanalKira#".STATE").State(1); dom.GetObject("KiraFBTempIstinToleranz").State(false); dom.GetObject("KiraFBVergleichTemp").State(dom.GetObject("isttemperaturKira").Value());
dom.GetObject("KiraFBEinschaltzeit").State(888);
     }
     }
   }
  }
}
if ((dom.GetObject("solltemperaturKira").Value() < 5.600) && (dom.GetObject("ScriptwiederholungKiramax").Value() == dom.GetObject("ScriptwiederholungKira").Value()) && (dom.GetObject("Aussentemp").Value() == 2.0))
{
dom.GetObject(AktorKira#":"#AktorkanalKira#".ON_TIME").State(dom.GetObject("ScriptwiederholungKiraHeizzeit").Value()); dom.GetObject(AktorKira#":"#AktorkanalKira#".STATE").State(1); dom.GetObject("ScriptwiederholungKira").State(0.0);
dom.GetObject("KiraFBEinschaltzeit").State(999);
}
else
{
WriteLine("nix");
dom.GetObject("ScriptwiederholungKira").State(dom.GetObject("ScriptwiederholungKira").Value() + 1.0);
if (dom.GetObject("ScriptwiederholungKira").Value() > dom.GetObject("ScriptwiederholungKiramax").Value())
{
dom.GetObject("ScriptwiederholungKira").State(0.0); 
}
else
{
dom.GetObject("ScriptwiederholungKira").State(dom.GetObject("ScriptwiederholungKira").Value());
}
}
WriteLine("Ende");
Vielen Dank erst einmal für deine Bemühungen

Bitte auch dieses Script unter "Script Testen" durchlaufen lassen (es kann sein das das bis zu 2 Minuten dauert).
In der Ausgabe müsste dann so ein ähnlicher Text wie der hier erscheinen:
Script2Ende.JPG
Und bitte diesen Post nicht übersehen:

viewtopic.php?f=31&t=24890&start=100#p395045

Und bitte auch dieses Script unter "Script testen" laufen lassen.
Es müsste ebenfalls mit Ausgabe "Ende" beenden.

Code: Alles auswählen

!---- StartHeizzeit in Systemvariable schreiben

    !----- RaumreglerKira identifizieren
    string RaumreglerKira = "BidCos-RF.NEQ0936187";


    !---- StartHeizzeit für Tempvorausrechnung in Systemvariable schreiben

    if ((dom.GetObject("KiraZahli").Value()) == 0.0)
    {
    WriteLine("Zaehler kleiner 1");
    dom.GetObject("KiraStartHeizzeit").State((((system.Date("%H").ToInteger()) * 60) + (system.Date("%M").ToInteger())));
    dom.GetObject("KiraZahli").State((dom.GetObject("KiraZahli").Value())+1.0);
    WriteLine(dom.GetObject("KiraZahli").Value());
    WriteLine(dom.GetObject("KiraStartHeizzeit").Value());
    }
    else
    {
    dom.GetObject("KiraZahli").State((dom.GetObject("KiraZahli").Value())+1.0);
    if ((dom.GetObject("KiraZahli").Value()) > 2.0)
    {
    WriteLine("Zaehler groesser Max");
    dom.GetObject("KiraZahli").State(0.0);
    WriteLine("Zaehler null");
    WriteLine(dom.GetObject("KiraZahli").Value());
    }
    else
    {
    WriteLine("nix");
    WriteLine(dom.GetObject("KiraZahli").Value());
    }
    }

!---- StartHeizzeit1 für Scriptintervallberechnung in Systemvariable schreiben

   
    dom.GetObject("KiraStartHeizzeit1").State((((system.Date("%H").ToInteger()) * 60) + (system.Date("%M").ToInteger())));

    !--------- Startheiztemperatur in Systemvariable schreiben


    !-----Aktion durchführen

    if ((dom.GetObject("KiraZahli").Value()) == 0.0)
    {
    WriteLine("Zaehler kleiner null");
    dom.GetObject("KiraFBStartTemperatur").State(dom.GetObject(RaumreglerKira#":2.ACTUAL_TEMPERATURE").Value());
    WriteLine(dom.GetObject("KiraFBStartTemperatur").Value());
    }
    else
    {
    WriteLine("nix");
    }


    !---------- Differenz zur Einschaltzeit errechnen

    if ((dom.GetObject("KiraEndHeizzeit").Value()) < (dom.GetObject("KiraletztesEIN").Value()))
    {
    dom.GetObject("KiraleEINDIFF").State(((1440 - (dom.GetObject("KiraletztesEIN").Value())) + (dom.GetObject("KiraEndHeizzeit").Value())));
    }
    else
    {
    dom.GetObject("KiraleEINDIFF").State(((dom.GetObject("KiraEndHeizzeit").Value()) - dom.GetObject("KiraletztesEIN").Value()));
    }
WriteLine("ENDE");
Bitte gib bescheid, welche Scripte mit "Ende" als Ausgabe abschliessen.
- Charly - Raspymatic mit Redmatic, 420 Systemvariablen, 440 Programmen, 101 Direktverknüpfungen, 121 Geräten
- CCU3- Raspymatic mit Redmatic und Verbindung zur PV-Anlage/Wechselrichter
- Charly - Raspymatic mit Redmatic und Sprachsteuerung per Alexa

hydraold
Beiträge: 7
Registriert: 27.05.2016, 09:03

Re: Fußbodenheizung - Steuerung/IR-Heizung-Steuerung

Beitrag von hydraold » 02.11.2017, 22:56

Hallo
hier meine Antwort
bild5.JPG
---------------------------------------------------------------------------------
178 Kanäle in 53 Geräten
---------------------------------------------------------------------------------

twoxx
Beiträge: 534
Registriert: 16.03.2015, 18:57
Hat sich bedankt: 1 Mal
Danksagung erhalten: 26 Mal

Re: Fußbodenheizung - Steuerung/IR-Heizung-Steuerung

Beitrag von twoxx » 02.11.2017, 23:00

hydraold hat geschrieben:Hallo
hier meine Antwort
bild5.JPG

OK, das Script funktioniert und läuft durch.
Dann müssten jetzt aber auch die im Script verwendeten Systemvariablen entsprechend mit Werten beschrieben sein.

Schalte jetzt den entsprechenden Schaltaktor ein und lass das Script so schnell wie möglich nochmal durchlaufen.

Die Zeile "ist ausgeschaltet und soll ausgeschaltet bleiben" muß dann auf "ist eingeschaltet und soll ausgeschaltet sein" abändern,
gleichzeitig müsste sich Dein Schaltaktor dann wieder ausschalten.

Alternativ könntest du bei ausgeschaltetem Schaltaktor im Wandthermostat die Solltemperatur auf 30 Grad hochdrehen und dann das Script laufen lassen.

Die Zeile müsste sich dann auf "ist ausgeschaltet und soll eingeschaltet sein" ändern und der Schaltaktor müsste einschalten.


Bitte prüfe auch, ob die beiden anderen Scripte mit "Ende" durchlaufen.
- Charly - Raspymatic mit Redmatic, 420 Systemvariablen, 440 Programmen, 101 Direktverknüpfungen, 121 Geräten
- CCU3- Raspymatic mit Redmatic und Verbindung zur PV-Anlage/Wechselrichter
- Charly - Raspymatic mit Redmatic und Sprachsteuerung per Alexa

hydraold
Beiträge: 7
Registriert: 27.05.2016, 09:03

Re: Fußbodenheizung - Steuerung/IR-Heizung-Steuerung

Beitrag von hydraold » 02.11.2017, 23:08

Vielen Dank

In den Variablen sind jetzt Werte Super!!!!!

warum hat dieses nicht gleich geklappt.

Ich werde dieses jetzt in diesen Raum ausprobieren bevor ich die Umsetztung auf alle Räume mache.

Ich habe noch ein Frage oder Anregung wie sollte man IR-Heizungen noch einbinden. Besitze 2 Räume wo Deckenstrahler die ich manuell dazu schaltet irgend welche Ideen.

vielen dank nochmal :D :D :D :D
---------------------------------------------------------------------------------
178 Kanäle in 53 Geräten
---------------------------------------------------------------------------------

twoxx
Beiträge: 534
Registriert: 16.03.2015, 18:57
Hat sich bedankt: 1 Mal
Danksagung erhalten: 26 Mal

Re: Fußbodenheizung - Steuerung/IR-Heizung-Steuerung

Beitrag von twoxx » 02.11.2017, 23:20

hydraold hat geschrieben:Vielen Dank

In den Variablen sind jetzt Werte Super!!!!!

warum hat dieses nicht gleich geklappt.

Ich werde dieses jetzt in diesen Raum ausprobieren bevor ich die Umsetztung auf alle Räume mache.

Ich habe noch ein Frage oder Anregung wie sollte man IR-Heizungen noch einbinden. Besitze 2 Räume wo Deckenstrahler die ich manuell dazu schaltet irgend welche Ideen.

vielen dank nochmal :D :D :D :D
Wenn das manuelle Ausführen der Scripte funktinoiert UND AUCH DER SCHALTAKTOR SCHALTET
dann stimmt was mit der Ausführung der Scripte im Programm nicht.

Bevor wir weitersuchen, eine kurze Frage.

Die SystemVariable "KiraAutoManuWeitere" muß auf "Auto" stehen, damit das Programm und damit die Scripte ausgeführt werden.
Hast Du die Variable mit "Auto" versorgt?


Ich habe ebenfalls 4 Deckenstrahler bei mir in Räumen verbaut.
Diese Räume sind bei mir allerdings dann ohne Fussbodenheizung.
Ich nutze die selbe Steuerung für die IR-Strahler und es funktioniert super. Allerdings habe ich bei den Strahlern ein Ausführintervall von 35 Minuten im Programm eingestellt, anstatt
den 20 Minuten bei der Fussbodenheizung. Da mußt Du allerdigns selbst etwas rumprobieren was passt.

Sofern Du die Deckenstrahler ZUSÄTZLICH im Raum der Fußbodenheizung installiert hast, dann ist das kein Problem.
Meine Scripte sind so programmiert, dass sie die Raumtemperaturentwicklung mit bei der Schaltdauer-Berechnung berücksichtigen.
Du kannst also einfach die IR-Heizung mit meinen Scripten zusätzlich zur Fußbodenheizung steuern (quasi als weitere Heizkreise zu deinen 8 Heizkreisen der Fußbodenheizung).
Allerdings mußt Du mit den Einstellparamteren in den Scripten dann experimentieren, bis Du Deine individuelle Abstimmung gefunden hast.
- Charly - Raspymatic mit Redmatic, 420 Systemvariablen, 440 Programmen, 101 Direktverknüpfungen, 121 Geräten
- CCU3- Raspymatic mit Redmatic und Verbindung zur PV-Anlage/Wechselrichter
- Charly - Raspymatic mit Redmatic und Sprachsteuerung per Alexa

maestrone
Beiträge: 3
Registriert: 13.11.2017, 09:42

Re: Fußbodenheizung - Steuerung/IR-Heizung-Steuerung

Beitrag von maestrone » 13.11.2017, 11:39

Hallo Twoxx

Danke für dieses Stück Software!
Dies ist mein erster Post auf diesem Forum. Seit 2014 bin ich nun Homematic-Anwender vorwiegend für Lichtanwendungen.

Dieses Script interessiert mich sehr, da ich bisher noch keinen Weg gefunden habe, mit meinen Fussboden- und Wandheizungen die Überschwingungen der Raumtemperatur zu Verhindern. Ich verwende für die Heizungssteuerung eine UVR1611 in Kombination mit einer China Wärempume. Verbaut ist auch ein Raumfühler, der in die UVR VL Temperatur Berechnung einfliesst, leider mit geringen Erfolg, bei Sonneneinstrahlung und viele anwendenden Personen.

Nun zu meinem Vorhaben mit deinem Script:
Ich würde ein HM-TC-IT-WM-W-EU im Referenzraum installieren (ein hydraulischer Abgleich im Haus ist mittels „try&error“ durchgeführt worden). Ein Aktor würde der UVR via einen Digitaleingang die Anforderung melden. Diese würde in der

Variante 1: die Umwälzpume ein- bzw. ausschalten
Problematisch sehe ich dabei bei dieser Variante die Nachführung der Vorlauftemperatur (die ca. 1 Meter nach der Umwälzpume erfasst wird) während der Pausen/Anlauf.

Variante 2: das ganze Modul Heizkreis ein- bzw. ausschalten
Bei dieser Variante die Einregelung der VL Temperatur (der Mischermotor benötigt für eine komplette Fahrt 90 Sekunden + Einregelung der Temperatur).

Eine fixe VL Temperatur bzw. den Mischer im manuellen Modus zu betreiben möchte ich zu Gunsten der WP-Effizienz nicht anwenden.

Hat noch jemand eine andere Idee bzw. wie stehen die Erfolgsaussichten für diese Schilderung der Software/Anwendung?


Tausend Dank Euch…


Grüsse

S

Xel66
Beiträge: 14148
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Fußbodenheizung - Steuerung/IR-Heizung-Steuerung

Beitrag von Xel66 » 13.11.2017, 12:15

maestrone hat geschrieben:Ich würde ein HM-TC-IT-WM-W-EU im Referenzraum installieren (ein hydraulischer Abgleich im Haus ist mittels „try&error“ durchgeführt worden).
Das ist Dein Grundproblem. Willst Du eine Einzelraumregelung, dann brauchst Du auch in den einzelnen Räumen eine Istwerterfassung und ein mögliches Stellglied. Alles Andere ist vergebens. Ein Referenzraum kann Dir niemals einen Fremdwärmeeintrag in einem anderen ggf. auf der anderen Hausseite gelegenen Raum regeln. Das geht weder physikalisch noch mit Script. Grundsätzlich sollte Deine UVR das auch können. Dann ist diese eben "unzweckmäßig" programmiert. Das Abschalten einer Umwälzpumpe ist so ähnlich, wie die Durchschnittsgeschwindigkeit auf der Autobahn durch Vollgas mit zwischenzeitlichen Vollbremsungen zu regulieren. Schaltest Du ab, können alle nachgelagerten Stellglieder natürlich auch wieder nicht eingreifen.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

twoxx
Beiträge: 534
Registriert: 16.03.2015, 18:57
Hat sich bedankt: 1 Mal
Danksagung erhalten: 26 Mal

Re: Fußbodenheizung - Steuerung/IR-Heizung-Steuerung

Beitrag von twoxx » 13.11.2017, 12:19

maestrone hat geschrieben:Hallo Twoxx

Danke für dieses Stück Software!
Dies ist mein erster Post auf diesem Forum. Seit 2014 bin ich nun Homematic-Anwender vorwiegend für Lichtanwendungen.

Dieses Script interessiert mich sehr, da ich bisher noch keinen Weg gefunden habe, mit meinen Fussboden- und Wandheizungen die Überschwingungen der Raumtemperatur zu Verhindern. Ich verwende für die Heizungssteuerung eine UVR1611 in Kombination mit einer China Wärempume. Verbaut ist auch ein Raumfühler, der in die UVR VL Temperatur Berechnung einfliesst, leider mit geringen Erfolg, bei Sonneneinstrahlung und viele anwendenden Personen.

Nun zu meinem Vorhaben mit deinem Script:
Ich würde ein HM-TC-IT-WM-W-EU im Referenzraum installieren (ein hydraulischer Abgleich im Haus ist mittels „try&error“ durchgeführt worden). Ein Aktor würde der UVR via einen Digitaleingang die Anforderung melden. Diese würde in der

Variante 1: die Umwälzpume ein- bzw. ausschalten
Problematisch sehe ich dabei bei dieser Variante die Nachführung der Vorlauftemperatur (die ca. 1 Meter nach der Umwälzpume erfasst wird) während der Pausen/Anlauf.

Variante 2: das ganze Modul Heizkreis ein- bzw. ausschalten
Bei dieser Variante die Einregelung der VL Temperatur (der Mischermotor benötigt für eine komplette Fahrt 90 Sekunden + Einregelung der Temperatur).

Eine fixe VL Temperatur bzw. den Mischer im manuellen Modus zu betreiben möchte ich zu Gunsten der WP-Effizienz nicht anwenden.

Hat noch jemand eine andere Idee bzw. wie stehen die Erfolgsaussichten für diese Schilderung der Software/Anwendung?


Tausend Dank Euch…


Grüsse

S
Hallo S,

ist natürlich schwierig eine zutreffende Antwort zu liefern.
Man müsste natürlich die komplette Steuerung Deiner Heizung kennen, um darauf richtig einzugehen, aber das sprengt den Rahmen.

Betreibst Du Deine Heizkreise stromlos geschlossen oder stromlos offen?
Da Du einen hydraulischen Abgleich erwähnst und auch die Konfiguration Deiner Heizung deutet darauf hin, dass Du
die "Vorlauftemperatur" so niedrig wie möglich hältst und die Stellantriebe/Ventile Deiner Heizkreise die meiste Zeit des Tages geöffnet sind,
weil die Fußbodenheizung zur Erhaltung der Raumtemperatur ständig Wärme nachliefern muß? Soll heissen, eigentlich könntest du die Ventile ständig offen halten, die Steuerung der
Wärmepumpe etc läuft gut und nur im Bedarfsfall des Überschwingens muß das Ventil geschlossen werden?

Das würde dann bedeuten, dass die Isttemperatur Deines Raumthermostats die meiste Zeit des Tages stets zumindest ein wenig unterhalb der eingestellten Solltemperatur liegt?
Sodass der Stellantrieb/das Ventil stets offen ist?
Sofern dann plötzlich durch irgendwelche "Einwirkungen" (Sonneneinstrahlung, Personen im Raum) die Raumtemperatur zu schnell ansteigt, müsste dann frühzeitig der
Heizkreis/Stellantrieb geschlossen werden?

Wenn Homematic an dieser Stelle eingreifen soll, dann kann mein Script dafür verwendet werden.

Es errechnet im (abänderbaren Standard) alle 20 Minuten ob das Ventil des Heizkreises (weiterhin) geöffnet sein muß. Es beobachtet dabei die Entwicklung der Raumtemperatur der letzten 3 Berechnungsintervalle.
Beispielsweise Raumtemperaturdifferenz/-entwicklung alle 20, 40 und 60 Minuten.Zusammen mit einem Pulsweitenalgorhythmus und der beobachteten tatsächlichen Raumtemperaturentwicklung errechnet es die "wahrscheinlich innerhalb der nächsten 20 Minuten erfolgende Raumtemperaturentwicklung" und schaltet den Heizkreis/das Ventil entsprechend weiterhin ein, oder errechnet eine noch restliche Einschaltzeit, oder schaltet sofort ab.


Mein Projekt ist auf Einzelraumregelung ausgelegt. Ob Du das Script einen "Referenzraum" überwachen lässt und damit dann erfolgreich beispielsweise eine Umwälzpumpe schaltest um die
richtige Temperatur im ganzen Haus zu halten... das kannst du nur Ausprobieren ob das funktioniert. Das kann man nicht voraussagen ob das passt. Theoretisch müsste es gehen, allerdings
dann sehr ungenau - eben wegen der Steuerung des ganzen Hauses. Aber ob Du nun ein Ventil/einen Stellantrieb abschaltest oder die dazugehörige Umwälzpumpe abschaltest, macht
für die Funktionsweise meines Scripts erst mal keinen Unterschied.

Das Script nimmt also nur auf den Stellantrieb und das Ventil Einfluß und dient somit als "im Regelmechanismus letzte Instanz" den Heizkreis abzuschalten und ein Überheizen des Raumes zu verhindern.
Wie sich das mit Deinen Komponenten Mischermotor/Umwälzpumpe abstimmen lässt, das kann ich Dir natürlich nicht sagen. Aber vielleicht ist das auch gar nicht notwendig.

wie reagiert Deine Regelung, wenn das Stellventil des jeweiligen Raumes für die nächsten 5, 6,7,8,12,20, 40 oder 60 Minuten, oder länger geschlossen ist? (Bis die Raumtemperatur wieder unterhalb der Solltemperatur liegt und der Heizkreis wieder geöffnet werden muß)? Die Verzögerungszeit deines Mischermotors bis er endlich brauchbare Wassertemperatur in den Heizkreis einliefert, nachdem das Ventil wieder geöffnet wird kannst Du als festen Sekundenwert im Script hinterlegen und die Berechnung der Einschaltzeit des Ventils würde dann darauf abgestimmt.

Ich tendiere also aus dem Bauch heraus zu Deiner Variante 2 (wenn Deine Bezeichnung "Modul Heizkreis abschalten" den Effekt hat, dass in der jeweiligen Fussbodenheizungsschleife dann kein Wasser fliesst - wie es bei einem geschlossenen Heizkreisventil der Fall wäre). Denn für so ein Szenario habe ich mein Script programmiert.
- Charly - Raspymatic mit Redmatic, 420 Systemvariablen, 440 Programmen, 101 Direktverknüpfungen, 121 Geräten
- CCU3- Raspymatic mit Redmatic und Verbindung zur PV-Anlage/Wechselrichter
- Charly - Raspymatic mit Redmatic und Sprachsteuerung per Alexa

maestrone
Beiträge: 3
Registriert: 13.11.2017, 09:42

Re: Fußbodenheizung - Steuerung/IR-Heizung-Steuerung

Beitrag von maestrone » 13.11.2017, 13:56

Hallo Twoxx

Danke für deinen Input, habe gegenwärtig keine Stellentriebe im Einsatz. Die Anlage (13 Heizkreise) wurde über die Durchflussmenge abgestimmt. Dass funktioniert auch mit dem Referenzraum sehr gut, sofern keine Fremdenergie einwirkt. "Leider" steht unser Haus perfekt zu Sonne gepaart mit viel südlicher Fensterfläche und geringem Raumvolumen...

Ich verfolge das Ziel, keine Stellentriebe einzusetzen zu müssen - der Effizienz wegen; deshalb meine Idee mit der Einwirkung auf die gesamte Heizungssteuerung. Dein Script sollte das aus meiner Sicht elegant lösen können, anstelle mehrerer Stellentriebe aber die ganze Wärmeverteilung gesamthaft ein/aus auszuschalten bzw. damit zu takten... wirklich toll dein Code!

Meine bisherigen Versuche, die Übertemperatur in den Griff zu bekommen basierten vor allem auf eine Einwirkung auf die Vorlauftemperatur und bei überschreiten der Solltemperatur mittels Abschalten des gesamten Heizungsmodules. Die Möglichkeiten der UVR1611 sind da beschränkt oder ich bin die Sache falsch angegangen, die Neue kann in diesem Bereich deutlich mehr....
Weiter integrieren möchte ich die künftige (folgender Tag ab Mitternacht) mutmassliche Sonneneinwirkung auf das Gebäude und dadurch die Beeinflussung der Heiztätigkeit. Da stecke ich aber noch im Anfangsstadium. Wahrscheinlich löst dein Script dieses Vorhaben aber viel effizienter.

Deine Antwort hat mich auf die Idee gebracht, die Zeit die die UVR/Mischermoter benötigt vom abgeschalteten Zustand bis zum erreichen der (mittels Heizkurve und Aussentemperatur errechneten VL Temperatur) benötigten VL Temperatur zu ermitteln und diese als Grösse "Schaltzeit" in deinem Script angeben. Ein Aktor würde dann den gesamten Heizkreis/Wärmeverteilung in der UVR ein bzw. ausschalten (Variante2). Gibt es bezüglich dieser Schalzeit obere Limiten?

Erneut tausend Dank!

Grüsse aus der Schweiz

S

twoxx
Beiträge: 534
Registriert: 16.03.2015, 18:57
Hat sich bedankt: 1 Mal
Danksagung erhalten: 26 Mal

Re: Fußbodenheizung - Steuerung/IR-Heizung-Steuerung

Beitrag von twoxx » 13.11.2017, 14:11

maestrone hat geschrieben:Hallo Twoxx

Danke für deinen Input, habe gegenwärtig keine Stellentriebe im Einsatz. Die Anlage (13 Heizkreise) wurde über die Durchflussmenge abgestimmt. Dass funktioniert auch mit dem Referenzraum sehr gut, sofern keine Fremdenergie einwirkt. "Leider" steht unser Haus perfekt zu Sonne gepaart mit viel südlicher Fensterfläche und geringem Raumvolumen...

Ich verfolge das Ziel, keine Stellentriebe einzusetzen zu müssen - der Effizienz wegen; deshalb meine Idee mit der Einwirkung auf die gesamte Heizungssteuerung. Dein Script sollte das aus meiner Sicht elegant lösen können, anstelle mehrerer Stellentriebe aber die ganze Wärmeverteilung gesamthaft ein/aus auszuschalten bzw. damit zu takten... wirklich toll dein Code!

Meine bisherigen Versuche, die Übertemperatur in den Griff zu bekommen basierten vor allem auf eine Einwirkung auf die Vorlauftemperatur und bei überschreiten der Solltemperatur mittels Abschalten des gesamten Heizungsmodules. Die Möglichkeiten der UVR1611 sind da beschränkt oder ich bin die Sache falsch angegangen, die Neue kann in diesem Bereich deutlich mehr....
Weiter integrieren möchte ich die künftige (folgender Tag ab Mitternacht) mutmassliche Sonneneinwirkung auf das Gebäude und dadurch die Beeinflussung der Heiztätigkeit. Da stecke ich aber noch im Anfangsstadium. Wahrscheinlich löst dein Script dieses Vorhaben aber viel effizienter.

Deine Antwort hat mich auf die Idee gebracht, die Zeit die die UVR/Mischermoter benötigt vom abgeschalteten Zustand bis zum erreichen der (mittels Heizkurve und Aussentemperatur errechneten VL Temperatur) benötigten VL Temperatur zu ermitteln und diese als Grösse "Schaltzeit" in deinem Script angeben. Ein Aktor würde dann den gesamten Heizkreis/Wärmeverteilung in der UVR ein bzw. ausschalten (Variante2). Gibt es bezüglich dieser Schalzeit obere Limiten?

Erneut tausend Dank!

Grüsse aus der Schweiz

S

Hallo S,

ein "oberes Limit" bzgl. der Schaltzeit die Du im Script mitgibst gibt es nur insofern, dass die maximale Schaltzeit durch das Ausführintervall des Scripts begrenzt ist.
Sofern Dein Ausführintervall 20 Minuten beträgt und Dein Motor länger als 20 Minuten brauchen würde um das richtige Wasser zu liefern, dann funktioniert das Ganze nicht.
Aber das ist ja sowieso nicht der Fall.


Die "Schaltzeit" die Du für das "Anlaufen" Deiner Motors im Script hinterlegst, beeinflusst das Script dahingehend ob es Deinen Motor überhaupt EINSCHALTET SOFERN
die neue vom Script errechnete Einschaltzeit UNTERHALB Deiner "Schaltzeit bzw. ANLAUFZEIT" liegt - SOFERN DER MOTOR BISHER AUSGESCHALTET WAR.
Denn so einen Heizimpuls kann man sich energietechnisch sparen. Wozu einschalten, wenn wieder ausgeschaltet wird BEVOR überhaupt das Wasser mit der richtigen VL Temperatur fliessen würde?

Diese "Schaltzeit bzw. Anlaufzeit" wird natürlich vom Script ignoriert, sofern der Motor bereits läuft. Dann wird lediglich abgeprüft ob er weiterhin unbegrenzt weiterlaufen soll, oder
nicht im Sinne der Pulweitenmodulierung eine verringerte Einschaltzeit an den Aktor übergeben werden muß.
- Charly - Raspymatic mit Redmatic, 420 Systemvariablen, 440 Programmen, 101 Direktverknüpfungen, 121 Geräten
- CCU3- Raspymatic mit Redmatic und Verbindung zur PV-Anlage/Wechselrichter
- Charly - Raspymatic mit Redmatic und Sprachsteuerung per Alexa

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“