Heizkörperthermostat Heizprogramme per WebFront einstellen

… probiers mal hiermit …

<?

include "HM_Heizung_Konfig.ips.php";
include "HM_Heizung_Funktionen.ips.php";

//------------------------------------------------
//Einmal manuell ausführen zur Installation und bei änderungen der Zimmer

$Intervall = 5; // Zeit in Sek. zwischen dem Setzen der änderungen pro Zimmer.
$WFE_Uebersicht = 57470 /*[Visualization\WebFront\Heizung / Lüftung\WF_Räume\Übericht\Global_test]*/; //Kategorie, in der die Links zum Globalen ändern des erstellt werden.

//------------------------------------------------

If ($_IPS['SENDER'] == "Execute")  // Instalation
    {
    $VarIdZaehler = CreateVariableByIdent($_IPS['SELF'], "Zaehler", 1, "", "Zaehler", 0);
    $VarIdAuswahl = CreateVariableByIdent($_IPS['SELF'], "Auswahl", 1, "", "Auswahl", 2);
    $VarIdMode = CreateVariableByIdent($_IPS['SELF'], "Mode", 1, "", "Mode", 3);
    $VarIdSender = CreateVariableByIdent($_IPS['SELF'], "Sender", 1, "", "Sender", 1);

    IPS_SetVariableCustomAction ( $VarIdAuswahl, $_IPS['SELF'] );
    IPS_SetVariableCustomProfile ( $VarIdAuswahl , "Praesenz" );
    SetLinkByIdent($WFE_Uebersicht, "Globale Profil-Auswahl", $VarIdAuswahl, "GlobaleProfilAuswahl",0);

    IPS_SetVariableCustomAction ( $VarIdMode, $_IPS['SELF'] );
    IPS_SetVariableCustomProfile ( $VarIdMode , "HM_Heizung_Steuerung_RT-DN" );
    SetLinkByIdent($WFE_Uebersicht, "Globale Modus-Auswahl", $VarIdMode, "GlobaleModusAuswahl", 1);

    Foreach ($Zimmer as $key=> $Raum)
          {
                  $PraesenzId = IPS_GetObjectIDByIdent( "HMPraesenzProfilAuswahl", IPS_GetObjectIDByIdent($Raum, IPS_GetParent(IPS_GetParent($_IPS['SELF']))));
                  SetTiggerByName(@IPS_GetScriptIDByName("HM_Heizung_Raumsteuerung", (IPS_GetParent($_IPS['SELF']))), ("Tigger_Global_Praesenz".$Raum), $PraesenzId);
          }
    }

$VarIdSender = @IPS_GetObjectIDByIdent("Sender", $_IPS['SELF']);
$VarIdZaehler = @IPS_GetObjectIDByIdent("Zaehler", $_IPS['SELF']);
$VarIdMode = @IPS_GetObjectIDByIdent("Mode", $_IPS['SELF']);
$VarIdAuswahl = @IPS_GetObjectIDByIdent("Auswahl", $_IPS['SELF']);

$VarValZaehler = GetValueInteger ($VarIdZaehler);
$VarValSender = GetValueInteger ($VarIdSender);

if($_IPS['SENDER'] == "TimerEvent" && $VarValSender == $VarIdAuswahl)
     {
              $VarValAuswahl = GetValueInteger ($VarIdAuswahl);
              SetValueInteger ( IPS_GetObjectIDByIdent( "HMPraesenzProfilAuswahl", IPS_GetObjectIDByIdent($Zimmer[($VarValZaehler+1)], IPS_GetParent(IPS_GetParent($_IPS['SELF'])))) , $VarValAuswahl);
              SetValueInteger ($VarIdZaehler, ($VarValZaehler+1));
              if(count ($IPS_HM_DeviceID) == ($VarValZaehler+1))
              {
                  IPS_SetScriptTimer($_IPS['SELF'], 0);
                  SetValueInteger ($VarIdSender, 0);
              }
      }
if($_IPS['SENDER'] == "TimerEvent" && $VarValSender == $VarIdMode)
     {
     $VarValMode = GetValueInteger ($VarIdMode);
     SetValueInteger ($VarIdZaehler, ($VarValZaehler+1));
     Switch ($VarValMode)
                               {
                               case -1:
                                  @HM_WriteValueFloat($IPS_HM_DeviceID[($VarValZaehler+1)],"MANU_MODE", 100);
                                  //SetValueInteger (IPS_GetObjectIDByIdent( "HMPraesenzProfilAuswahl", IPS_GetObjectIDByIdent($Zimmer[($VarValZaehler+1)], IPS_GetParent(IPS_GetParent($_IPS['SELF'])))) ,-1);
                                  break;
                               case 0:
                                  @HM_WriteValueBoolean($IPS_HM_DeviceID[($VarValZaehler+1)],"AUTO_MODE", true);
                                  //SetValueInteger (IPS_GetObjectIDByIdent( "HMPraesenzProfilAuswahl", IPS_GetObjectIDByIdent($Zimmer[($VarValZaehler+1)], IPS_GetParent(IPS_GetParent($_IPS['SELF'])))) ,0);
                                   break;
                               case 1:
                                   @HM_WriteValueFloat($IPS_HM_DeviceID[($VarValZaehler+1)],"MANU_MODE", GetValue(IPS_GetObjectIDByIdent ("SET_TEMPERATURE", $IPS_HM_DeviceID[($VarValZaehler+1)])));
                                   //SetValueInteger (IPS_GetObjectIDByIdent( "HMPraesenzProfilAuswahl", IPS_GetObjectIDByIdent($Zimmer[($VarValZaehler+1)], IPS_GetParent(IPS_GetParent($_IPS['SELF'])))) ,1);
                                   break;
                               case 3:
                                   @HM_WriteValueBoolean($IPS_HM_DeviceID[($VarValZaehler+1)],"BOOST_MODE", true);
                                   //SetValueInteger (IPS_GetObjectIDByIdent( "HMPraesenzProfilAuswahl", IPS_GetObjectIDByIdent($Zimmer[($VarValZaehler+1)], IPS_GetParent(IPS_GetParent($_IPS['SELF'])))) ,3);
                                   break;
                                }
     if(count ($IPS_HM_DeviceID) == ($VarValZaehler+1))
              {
                  IPS_SetScriptTimer($_IPS['SELF'], 0);
                  SetValueInteger ($VarIdSender, 0);
              }
     }
if ((@$_IPS['VARIABLE'] == $VarIdMode || @$_IPS['VARIABLE'] == $VarIdAuswahl) && $VarValSender == 0)
      {
       SetValueInteger ($VarIdSender, $_IPS['VARIABLE']);
          SetValueInteger ($VarIdZaehler, 0);
         SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
         IPS_SetScriptTimer($_IPS['SELF'], $Intervall);
        }

?>

Gruß

Swifty

Hi Swifty,

Tiptop es klappt :slight_smile:
jetzt muss ich mir mal anschauen was Du darin geändert hast.

Vielen Dank nochmals

Gruß

Stephan

Hallo zusammen,

ich habe eine kurze Frage und zwar, wie kann ich das Profil normal, frei, abwesend für die Thermostate per Skript setzen?

Hätte gerne die Möglichkeit z.B. alle Räume gleichzeitig auf abwesend zu setzen, habe jetzt schon gesucht aber nichts dazu gefunden. Ich habe derzeit 14 Thermostate im Einsatz.

Wäre nett wenn mir jemand helfen könnte!

Vielen Dank und Grüße
Stephan

Hallo Stephan,
ein kleines Beispiel.

Hzg-Web2.JPG

Das ist aber nicht anwesend sondern manuell :wink:
Und auto_mode auf false geht nicht, da es kein bool sondern Action-Datenpunkt ist.
Somit setzt du erst Auto und dann manuell 22 Grad.
Der Einzeiler mit nur manu_mode reicht.

Wie man jetzt das aktive Profil in den Geräten auf das ‚Abwesend‘-Profil per Script setzt, kann ich aber auch gerade nicht sagen.

Michael

Vielen Dank für den Hinweis, es kommt keine Fehlermeldung bei der Script-Ausführung, aber man lernt nie aus. Habe den Script gleich geändert.

„Wie man jetzt das aktive Profil in den Geräten auf das ‚Abwesend‘-Profil per Script setzt, kann ich aber auch gerade nicht sagen“
Das funktioniert bei mir über die LOGO und per Eingang auf die CCU2

Hallo…

schaut mal hier: #223

Gruß

Swifty

Moinsen,

so,- nachdem ich nun seid 14 Tagen meine HomematicIP-Heizungssteuerung welche ich an die CCU2 angebunden habe, nun auch in IPS darstellen und bedienen möchte jedoch völlig überfordert bin, muss ich fragen ob jemand die Installation via Teamviewer anbietet und was das ganze kostet.Ich blicke hier einfach nicht mehr durch. Meine FHT80b ging damals einfach und schnell einzubinden,- bei diesen HomematicIP-Geräten ist das aber eine Katastrophe. 47 Seiten zu diesem Thema sprechen da glaube ich für sich :slight_smile:

Das Thema ist auch das falsche für deine Thermostate. Hier sind nur die klassischen HM Geräte enthalten.
Für die HMip Geräte hat glaube ich noch niemand etwas entsprechendes umgesetzt.
Wenn du jedoch nur die Gerät (ohne den internen Wochenplan) einbinden willst, so sollten die Out of the box funktionieren.
Michael

Ahh,- ok,- das würde die Probleme erklären. „Out of the box“ geht leider auch eher schlecht als recht. Ich habe die Geräte alle eingebunden,- kann aber standardmäßig weder den Modus noch den Boost bedienen:

Wenn ich dann beispielsweise die Temperatur ändere,- dann wird das ganze nicht vom Thermostat an den Stellantrieb weiter gereicht. Ich habe das auch anders herum ausprobiert,- bringt aber ebenfalls nichts. Einzig das manuelle Stellen am Thermostat funktioniert auch so, dass die eingestellte Temperatur an den Stellantrieb weiter gereicht wird:

HI,

ich stehe gerade vor der gleichen Aufgabe, EQ3 hat einiges an der Struktur geändert in irgendweiner Firmware.

Wenn Du eine Heizungsgruppe hast, musst du die Einstellungen in eben dieser Gruppe vornehmen. Dann wird es auch an das Ventil übertragen. (in der Homematic-Webui Einstellungen -> Gruppen -> Gruppe aussuchen und auf Bedienen gehen, oder unter Status und Bedienung -> Geräte und dann den Grupennamen suchen.

Hast Du noch „Klassisch“ eine Direktverknüpfung funktioniert es NUR noch direkt am Wandthermostaten und nicht mehr in der Webui, der CCU oder mit diesem Script.

Ich werde wohl meine Direktverknüpfungen alle entfernen und neue Gruppen errichten. Dann probiere ich mal Swifty Scripte aus (vielen Dank nochmals hierfür).

Es würde übrigens einiges einfacher werden, wenn das Symcon Team das Virtuelle Gerätehandling direkt unterstützen würde und man nicht die hmxml.inc.php dazu bräuchte.

Viele Grüße

Das Thema hatten wir schon zig Male.
Leider liefern die Gruppen keine Änderungen als Event zurück, somit macht die Einbindung wenig bis gar kein Sinn.
Das hmxml brauchst du auch ohne Gruppen. Weil es werden direkt Parameter geschrieben was IPS gar nicht unterstützt, egal welches HM Gerät.
Michael

Hi,

Nall-Chan
ah ok, das ist ehrlich gesagt komplett an mir vorbei gegangen. Wie machst Du das mit deinen Modulen? Nutzt du da auch die hmxml?

Viele Grüße

Das Homematic-Extended-Modul nutzt die Homematic-Remote-Script Schnittstelle.
Ist aber auch nur ‚Einweg‘.
Also Daten hinsenden, Ergebnis abholen.
Theoretisch alles machbar, musst ‚nur‘ das passende HM-Script schreiben.

Nützt in diesem Fall hier auch nüscht, da es nur noch eine Ebene mit noch einen Script mehr wäre.
Kein Mehrwert und kein besserer Nutzen.

Michael

PS: Die Gruppen sind ja nur eine ‚logische‘ Gruppierung in der CCU, die Geräte selbst kennen keine Gruppen. Die Direktverknüpfungen bleiben bzw. werden automatisch durch die CCU angelegt und gelöscht. Also sind Gruppen eigentlich nur ein Hilfsmittel um alle Direktverknüpfungen zu verwalten :eek:

Hi,

danke für deine Erläuterung. Leider verstehe ich nicht, warum seit Version X der CCU ein senden wie bspw Boost an das Wandthermostat zwar funktioniert und das Thermostat auch boostet, aber das nicht an die Ventile weiterreicht. Mega-Ätzend.

Viele Grüße

Hallo Kris,

wenn die als Gruppe geschaltet sind geht das problemlos :slight_smile: Wenn dem nicht so wäre dann wäre es ziemlich kalt in unserer Bude und das will meine Frau ganz bestimmt nicht :smiley:

Es gab eine FW Version die Störungen mit den Gruppen hatte aber mit der aktuellen FW funktioniert es mit einer Original CCU2. Gerade eben ist übrigens die Version 2.29.23 erschienen. Infos u. a. hier https://homematic-forum.de/forum/viewtopic.php?f=26&t=39468

Im HM Forum findest du zahlreiche Infos zu den damaligen Gruppenproblemen.

Wenn man will kann man die Gruppen auch direkt steuern und sich die Rückmeldungen bei Bedarf abholen bzw. die Rückwirkungen auf die Wand- und Heizungsthermostate auswerten. Ich habe mir damals das Script von swifty komplett für IPSView und Gruppensteuerung umgebaut inklusive der nötigen Änderungen in der hmxml. Die Gruppen selbst speichere ich allerdings nicht in IPS - nur die ParamSet der Gruppen - da diese eben nicht aktualisiert werden. Es war allerdings eine schwierige Angelegenheit bei der ich sehr viel gelernt habe :wink:

Gruß
Hans

Gruß
Hans

ParamSet werden sowieso nicht in IPS gespeichert oder gelesen/geschrieben und dort gibt es auch nie Events.
Ich meinte eher die Values z.B. Solltemperatur, die kann man über Gruppen stellen (in der CCU, oder auch mit hmxml über IPS) aber man bekommt einen geänderten Wert nie als Event in IPS rein.
Nur wie du schon sagst über die echte Hardware wie den Wandthermostat.
Das ist eigentlich sehr schade von EQ3, weil dann kann man eine Instanz für alle Geräte der Gruppe anlegen und hat alles im Blick. Zumal die CCU WebUi es ja kann, die scheint aber die Werte zu Pollen.
Michael

Nun hat es mich doch selbst erwischt. :o
Bei PHP bin ich gar nicht auf dem Laufenden. Wahrscheinlich kann man den Fehler auch erstmal unterdrücken aber gibt es da was Neueres, dass ihn gar nicht erst auftreten lässt?

Hi,
Probier mal diese. Ich nutze sie ohne Probleme
Release Make old version of the library compatible with php 7 · gggeek/phpxmlrpc · GitHub

Gesendet von iPhone mit Tapatalk

Hey klasse.

Vielen Dank für die superschnelle Hilfe.
Das teste ich gleich mal, wenn ich zu Hause bin.

Gesendet von iPad mit Tapatalk