Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Vorlage] Heizungsthermostatsteuerung 2.1 - Script

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Vorlage] Heizungsthermostatsteuerung 2.1 - Script

    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      lindi200000 last edited by

      Hallo,

      ich vermute auch das irgendwo in den Einstellungen was falsch ist.

      hier mein Script:

      // Integrierte Heizungsthermostatsteuerung
      //------------------------------------------------------------------------------
      // Beginn Generelle Einstellungen
      // werden an dieser Stelle benoetigt - Einstellungen sind nur in Spezialfaellen notwendig
      //------------------------------------------------------------------------------
      // Anpassung nur wenn unbedingt notwendig. Hier ist der Ansatz um z.B. Einliegerwohnungen separat zu steuern
      var JSPath                  = "javascript.0.";             // JS- Pfad
      var path                    = JSPath + 'Heizung.Heizplan';  // Pfad fuer create states
      var Gparameterpath          = path + ".GlobaleParameter";  // Pfad in die Globalen Parameter
      var ICALPath                = "ical.0.events";             // Pfad zu den ICAL events zur Profilauswahl
      //------------------------------------------------------------------------------
      // Ende Generelle Einstellungen
      // Usereinstellungen sind Einstellungen, die ueblicherweise gemacht werden
      //------------------------------------------------------------------------------
      
      //------------------------------------------------------------------------------
      // Beginn USER Einstellungen
      //------------------------------------------------------------------------------
      
      // Gewerke - wichtige Einstellung, da nur die Geraete eingelesen werden, die im Gewerk vorhanden sind
      // Das Gewerk muss alle Thermostate bzw Sensoren enhalten
      var HeizungGewerk           = "funcHeating";        //  diesem Gewerk muessen alle Thermostate zugeordnet sein.
      var SensorGewerk            = "funcLock";     //  diesem Gewerk muessen alle Verschlusssensoren zugeordnet sein.
      
      // Alle x Minuten wird gecheckt ob die SollTemp angepasst werden muss - Empfehlung wenn cron dann 5
      // Wenn Wert = 0 ist dann läuft das Skript über Events (empfohlener Weg)
      var cron = 0;
      
      // Raumliste -  empfohlen zu benutzen fuer kleine Systeme
      // UseRoomList heisst, dass die nur hier gelisteten Raeume angelegt und abgearbeitet werden - somit werden nicht sofort alle Datenpunkte aller Räume angelegt (ca. 100 pro Raum und Profil)
      // dies dient hauptsaechlich zur Anlage der Daten - So koennen Raum fuer Raum alle States angelegt wrden
      // Das sollte genutzt werden mit langsamen Rechnern wie Raspi mit SD karte
      var UseRoomList = false;      // Wenn testmodus werden nur die Angegebenen Raeume abgearbeitet
      var RoomList = [];
      RoomList[0] = ['Kinderzimmer_Lucca'];   // Liste der Raeume die gesteuert werden soll zum Testen
      RoomList[1] = ['Kinderzimmer_Yannik'];
      
      // Liste der Auszuschliessenden Homematic Sensoren
      // Falls ein Raum Sensoren hat die zu "Verschluss" gehören aber pot. nichts mit einem Öffnungszustand zu tun ChckAbsenkung
      // kann man diese ausschliessen
      var ExcludeHMSensors = [];
      ExcludeHMSensors[0] = '';  // Liste des STATE-Datenpunkts (z.B. hm-rpc.0.NEQXXXXX.1.STATE) von Sensoren die nicht beachtet werden sollen
      ExcludeHMSensors[1] = '';
      
      // Anzahl der Profile. i.d.R. sollten maximal 3 Profile genuegen - Profile werden z.B. fuer Events aus ICAL verwendet
      var MaxProfile = 3;   // Maximal genutzte Profile pro Raum (gering halten ) Zahl zwischen 1 und 9
      
      // Das ist die Temperatur, die eingestellt wird, wenn erkannt wird, dass ein Verschluss eines Raumes geoeffnet ist (z.B bei nicht direktverknuepften Geraeten)
      var VerschlussAbsenkungsGrenze = 5;
      
      // erweitertetes Logging im ioBroker log bei true
      var debug = false;
      
      // Logging in externe Datei - Achtung der Pfad muss fuer MS-Windows bzw IOS angepasst werden
      var LogFlag = false;                                                    // logging enabled
      var LogPath = "/opt/iobroker/iobroker-data/HeizungsthermostatLOG.csv";  // Pfad und Dateiname des externen Logs
      var OnlyChanges = false;                                                 // bei true wird nur geloggt wennn eine neue Solltemperatur geschrieben wird
      
      // ICAL Einstellungen (erst nach Ersteinstellung Aktivieren)
      // Wenn keine Events genutzt werden, dann alles auf false setzen
      // die Events muessen entsprechend in ICAL angelegt werden, sonst gibt es Warnmeldungen im Log
      // Die Eventnamen koennen angepasst werden. Bitte die Logkik von ICAL unbeding beachten. (siehe Doku im Kapitel ICAL)
      var UseEventsGlobalParameter = false;            // mit diesen Events koennen Urlaub Party etc geplant werden - Empfehlung erst im zweiten Schritt aktivieren
      var UseEventsGlobalProfilSelect = false;         // Events mit denen das Profil umgeschaltet werden kann - fuer alle Raeume  - Empfehlung erst im zweiten Schritt aktivieren
      var UseEventsRaumProfilSelect = false;           // Events mit denen das Profil fuer einzelne Raeume umgeschaltet werden kann - Empfehlung erst im zweiten Schritt aktivieren
      var EventG_UrlaubAbwesend = "Urlaub_Abwesend";   // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist
      var EventG_UrlaubAnwesend = "Urlaub_Anwesend";   // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist
      var EventG_Party          = "Party";             // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist
      var EventG_Gaeste         = "Gaeste";            // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist
      var EventG_Abwesend       =  "Keiner_DA";        // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist
      var EventG_Feiertag       =  "Feiertag";         // dieses Event muss in ICAL angelegt werden wenn UseEventsGlobalParameter = true ist
      
      // Die folgenden EVENT Texte muessen in ICAL angelegt werden. Sobald die Texte im google Kalender
      // aktiv sind wird das Event fuer die Heizungsthermostatsteuerung ausgewertet.
      // Achtung die Zeichen <> und der Text innerhalb dieser Klammer duerfen nicht geaendert werden
      // siehe Dokumentation fuer mehr infos
      var UseEventG_Profil     = "Global_Profil_<profilnummer>";       // Events mit denen das Profil umgeschaltet werden kann -  muss in ICAL angelegt werden wenn UseEventP_Profil = true ist
      var UseEventR_Profil     = "<raumname>_Profil_<profilnummer>";   // Events mit denen das Raumprofil umgeschaltet werden kann -  muss in ICAL angelegt werden wenn UseEventsRaumProfilSelect = true ist
      
      // Integration zur Anwesenheitsermittlung -
      var UseAnwesenheitserkennung = false;                                                // wenn true, dann wird die o.g. Anwesenheitsvariable genutzt - Empfehlung erst im zweiten Schritt aktivieren
      var StateAnwesenheitFunction = JSPath + "Anwesenheitssteuerung.Userlist.JemandDa";   // Wenn UseAnwesenheitserkennung = true, dann muss der Pfad angepasst werden
      
      // Integration zum Feiertagskalender -
      var UseFeiertagskalender = false;                               // wenn der Kalender genutzt wird bitte auf true setzen - Empfehlung: Feiertagsadapter installieren und auf true setzen
      var StateFeiertagHeuteAdapter = "feiertage.0.heute.boolean";   // wenn UseFeiertagskalender, dann wird dieser Pfad verwendet
      var StateFeiertagMorgenAdapter = "feiertage.0.morgen.boolean"; // wenn UseFeiertagskalender, dann wird dieser Pfad verwendet wenn es darum geht den nächsten Schaltpunkt zu ermitteln wenn dieser am nächsten Tag liegt
      
      //------------------------------------------------------------------------------
      // Ende USER Einstellungen
      // Usereinstellungen sind Einstellungen, die ueblicherweise gemacht werden
      //------------------------------------------------------------------------------
      
      //------------------------------------------------------------------------------
      // Beginn Experteneinstellungen
      // Experteneinstellungen sollten nur geamcht werden, wenn die Logik des Programmes bekannt ist
      //------------------------------------------------------------------------------
      
      // Pfad zum Anwesenheitsflag der Hz-Steuerung - wird parallel zum Adapter gehalten
      var StateAnwesenheit = JSPath + "Heizung.Heizplan.GlobaleParameter.Anwesenheit";
      
      // Pfad zum Feiertagskennzeichen der Hz-Steuerung - wird parallel zum Adapter gehalten
      var StateFeiertagHeute = JSPath +"Heizung.Heizplan.GlobaleParameter.Feiertag_Heute";
      
      // die States sollten moeglichst so belassen werden - das Programm laesst aber Aenderungen zu
      var StatePartyjetzt         = Gparameterpath + ".Partyjetzt";         // ID Party Jetzt flag
      var StateGaesteDa           = Gparameterpath + ".GaesteDa";           // ID Gaeste da flag
      var StateUrlaubAnwesend     = Gparameterpath + ".Urlaub_Anwesend";    // Wenn kein Arbeitstag, dann wird der Tag wie ein Sonntag behandelt
      var StateUrlaubAbwesenheit  = Gparameterpath + ".Urlaub_Abwesend";    // Temperaturabsenkung wenn laengerer Urlaub eingetragen ist
      var StateHeizperiode        = Gparameterpath + ".Heizperiode";        // Wenn Heizperiode false werden alle Ventile geschlossen
      
      // Die ThermostatTypeTab definiert die Thermostat Typen. So  sollte es moeglich sein auch z.B. HM-IP einzubinden
      // Achtung zentrale Steuerungen muessen immer zuerst eingetragen sein.
      // Steuerung zentral heisst, dass dieses Geraet evt abhaengige Geraete steuert, wenn false, dann werden abhaengige Geraete gleich behandelt
      // Wenn mit Direktverbindungen gearbeitet wird dann MUSS zentrale Steuerung auf true stehen
      var ThermostatTypeTab = [];
      //                      0.RPC-Pfad       1.GeraeteType      2\. Beschreibung,           3\. Type   4.DP-SollTemp        5.nicht verwendet  ID 6.DP MANU/AUTO Schaltung    7.Steuerung DV       8\. IstTemp                  9-Check-MANU-Mode       10-Ventilstellung wenn nicht Heizperiode    11\. Delay nach Verschluss zu
      	ThermostatTypeTab[0]  = ['hm-rpc.0.',  'HM-TC-IT-WM-W-EU', 'Wandthermostat (neu)'       ,'WT',   '2.SET_TEMPERATURE'      ,   false,        '2.MANU_MODE',              true,                  '1.TEMPERATURE',             '2.CONTROL_MODE',           12,                                            0];
      	ThermostatTypeTab[1]  = ['hm-rpc.0.',  'HM-CC-TC'        , 'Wandthermostat (alt)'       ,'WT',   '2.SETPOINT'             ,   false,        false,                      false,                 '1.TEMPERATURE',              false,                     12,                                            0];
      	ThermostatTypeTab[2]  = ['hm-rpc.0.',  'HM-CC-RT-DN'     , 'Heizkoerperthermostat(neu)' ,'HT',   '4.SET_TEMPERATURE'      ,   false,        '4.MANU_MODE',              true,                  '4.ACTUAL_TEMPERATURE',      '4.CONTROL_MODE',           12,                                            0];
      	ThermostatTypeTab[3]  = ['hm-rpc.1.',  'HmIP-eTRV'       , 'Heizkoerperthermostat(HMIP)','IPHT', '1.SET_POINT_TEMPERATURE',   false,        '1.CONTROL_MODE',           false,                 '1.ACTUAL_TEMPERATURE',      '1.CONTROL_MODE',           12,                                            0];
      ThermostatTypeTab[4]  = ['hm-rpc.1.',  'HmIP-eTRV-2'     , 'Heizkoerperthermostat(HMIP)','IPHT', '1.SET_POINT_TEMPERATURE',   false,        '1.CONTROL_MODE',           false,                 '1.ACTUAL_TEMPERATURE',      '1.CONTROL_MODE',           12,                                            0];
      ThermostatTypeTab[5]  = ['hm-rpc.1.',  'HmIP-WTH'        , 'Wandthermostat(HMIP)'       ,'IPWT', '1.SET_POINT_TEMPERATURE',   false,        '1.CONTROL_MODE',           true,                '1.ACTUAL_TEMPERATURE',        '1.CONTROL_MODE',           12,                                            0];
      ThermostatTypeTab[6]  = ['hm-rpc.1.',  'HmIP-WTH-2'      , 'Wandthermostat(HMIP)'       ,'IPWT', '1.SET_POINT_TEMPERATURE',   false,        '1.CONTROL_MODE',           false,                '1.ACTUAL_TEMPERATURE',       '1.CONTROL_MODE',           12,                                            0];
      ThermostatTypeTab[7]  = ['hm-rpc.1.',  'HmIP-STH'        , 'Wandthermostat(HMIP)'       ,'IPWT', '1.SET_POINT_TEMPERATURE',   false,        '1.CONTROL_MODE',           true,                 '1.ACTUAL_TEMPERATURE',       '1.CONTROL_MODE',           12,                                            0];
      ThermostatTypeTab[8]  = ['hm-rpc.1.',  'HmIP-STHD'       , 'Wandthermostat(HMIP)'       ,'IPWT', '1.SET_POINT_TEMPERATURE',   false,        '1.CONTROL_MODE',           true,                 '1.ACTUAL_TEMPERATURE',       '1.CONTROL_MODE',           12,                                            0];
      
      // Tabelle fuer Nicht HM Thermostate - Details finden sich in der Dokumentation
      // wurde zum Testen verwendet, da auch virutelle Thermostate verwaltet werden koennen.
      // Wenn nicht HM Geraete korrekt in ioBroker angebunden sind sollten diese auch ueber die Tabelle ThermostatTypeTab konfigurierbar sein
      //Spalte 1 = Raumname wie in der CCU hinterlegt
      //Spalte 2 = Erster Teil des Datenpunktpfades mit Instance wie z.B. "hm-rpc.0"
      //Spalte 3 = Zweiter Teil des Datenpunktpfades mit der ID des Geraetes z.B. "MEQ0183268"
      //Spalte 4 = Dritter Teil des Datenpunktpfades mit dem Datenpunkt der die Solltemperatur des Geraetes einstellt z.B. "4.SET_TEMPERATUR"
      //
      var NoneHMTab = [];
      //              0 = Raum         1 = Datenpunkt bis vor Geraet   2=Datenpunkt Geraet  3=Datenpunkt SollTemp     4= Ventilstellung bei NichtHeizperiode
      NoneHMTab[0] = ['initial',        'javascript.0.Heizung',         'zwave1',            '4.SET_TEMPERATURE',            12];
      NoneHMTab[1] = ['initial',         'ZWAVE.0',                      'zwa0183xxx',        '4.SET_TEMPERATURE',            12];
      NoneHMTab[2] = ['initial',	       'maxcube.0.devices',            'thermostat_197b0b', 'setpoint',                     12];
      
      // Typen-Tabelle der Verschlusssensoren fuer Homematic Geräte
      // 6 = Verschlussstatus = false ist gechlossen
      var SensorTypeTab = [];
      //                   0.RPC-Pfad    1.GeraeteType  2\. Beschreibung,              3.Type     4.DP Status   5.nicht verwendet  6\. Verschlussstatus    7\. direktverknuepft
      SensorTypeTab[0] = ['hm-rpc.0.',  'HM-Sec-SCo' ,    'Fenstersensor (neu)' ,       'HM',    '1.STATE' ,        false,         false,                 true    ];
      SensorTypeTab[1] = ['hm-rpc.0.',  'HM-Sec-SC'  ,    'Fenstersensor (alt)' ,       'HM',    '1.STATE' ,        false,         false,                 true    ];
      SensorTypeTab[2] = ['hm-rpc.0.',  'HM-Sec-RHS' ,    'Fenster-Drehgriffkontakt',   'HM',    '1.STATE' ,        false,         false,                 true    ];
      SensorTypeTab[3] = ['hm-rpc.0.',  'HM-Sec-SC-2',    'Fenstersensor-2 (alt)' ,     'HM',    '1.STATE' ,        false,         false,                 true    ];
      SensorTypeTab[4] = ['hm-rpc.1.',  'HMIP-SWDO'  ,    'Fenstersensor (HMIP )' ,     'IPSE',  '1.STATE' ,        false,         false,                 true    ];
      SensorTypeTab[5] = ['hm-rpc.2.',  'HMW-Sen-SC-12-DR','Schließerkontakt HMW' ,     'HM',    '1.STATE' ,        false,         false,                 false   ];
      
      // Tabelle der Verschlusssensoren fuer NichtHomematic Geräte
      // 5  = wenn script die Absenktemperatur setzen soll, dann false
      var NoneHMSenorTab = [];
      //                  0= Raum         1 = Datenpunkt vis vor Geraet 0.RPC-Pfad    2\. Datenpunkt Geraet    3\. Datenpunkt FensterstatusGeraeteType  4.Verschlussstatus bei geschlossen    5\. TempAbsenkung automatisch,
      NoneHMSenorTab[0] = ['initial',     'javascript.0.Heizung',                   'zwave1' ,              '1.State' ,                                   false,                                         false];
      NoneHMSenorTab[1] = ['initial',     'fhem.0',                                  'OG_DU_TF' ,            'state' ,                                    'closed',                                      false];
      NoneHMSenorTab[2] = ['initial',     'maxcube.0.devices',                        'contact_0a9d75',      'opened',                                    false,                                          true];
      
      // Mit der Tabelle OverruleTab kann die Logik der Temperaturanpassungen beeinflusst werden (Sobald eine Anpassung erfolgt wird der Vorgang Overrule abgebrochen)
      // Die Tabelle kann als Prioritätenliste verstanden werden, wenn mehrere Parameter gleichzeitig zutreffen sollten.
      // Die Logik wird fuer jeden Raum ausgefuehrt
      var OverruleTab = [];
      OverruleTab[0] = ["Abwesenheit"];      // Bei Abwesenheit wird die Temperatur der entsprechend Eisntellung abgesenkt
      OverruleTab[1] = ["UrlaubAnwesend"];   // Urlaubsanwesenheit / beeinflusst nicht direkt die Solltemp - ist aber wichtig fuer die Schedule Findung
      OverruleTab[2] = ["UrlaubAbwesend"];   // Urlaubsabwesenheit -
      OverruleTab[3] = ["Gaeste"];           // Temperatur Anhebung
      OverruleTab[4] = ["Party"];            // Partyabsenkung
      
      // Bei Verwendung des Widgets Select-value List werden die Temperaturen nicht als Grad gespeichert
      var VerwendungSelectValue   = true;
      
      // Weitere Pfade fuer die globalen Parameter - Empfehlung ist keine Aenderung vorzunehmen
      var StatePP_PartyAbsenkung = "ProfilParameter_PartyAbsenkung";
      var StatePP_GaesteAnhebung = "ProfilParameter_GaesteAnhebung";
      var StatePP_AbwesenheitAbsenkung = "ProfilParameter_AbwesenheitAbsenkung";
      var StatePP_UrlaubAbsenkung = "ProfilParameter_UrlaubAbsenkung";
      var StatePP_UrlaubWieFeiertag = "ProfilParameter_UrlaubWieFeiertag";
      var StatePP_MinimaleTemperatur = "ProfilParameter_MinimaleTemperatur";
      
      // UserExit Einstellungen
      // UserExits koennen genutzt werden, um die manuelle Temperatur von selbstdefinierten Abhängigkeiten zu steuern
      // Beipiel Steuerung von ElektroKonvektoren abhängig vom Energieertrag einer PV
      // Es koennen beliebig viele Eintragungen gemacht werden
      //
      // Die Datenpunkte werden nicht angelegt sondern muessen separat angelegt wreden
      
      // UserEexitTab Tabellendefinition:
      // 0 = Datenpunkt =  Pfad Datenpunkt aufgrund dessen eine Reaktion erfolgen soll und Definition bei welchem Ereignis eine Reaktion erfolgen soll
      // 1 = Name der Routine - Routine muss im Userexit definiert sein
      // 2 = Operand - zulaessige Operanden sind
      //      groesser                = "valGt"
      //      groesser gleich         = "valGe"
      //      kleiner                 = "valLt"
      //      kleiner gleich          = "valLe"
      //      gleich                  = "val"
      //      ungleich                = "valNe"
      //      beliebiege Aenderung    = "Any"
      // 3 = Wert - Vergleichswert der die Routine auslöst (im Zusammenhang mit dem Operanden
      // Sobald eine Bedingung zutrifft wird der UserExit aufgerufen. Die zugehoerige Routine wird zu anfang des UserExits ermittelt und kann dann weiterverarbeitet werden
      // Rueckgabe des UserExits ist ein Raumname sowie eine manuelle Temperatur und Gueltigkeit in Minuten. Die Temperatur wird dann entsprechend mit der Gueltigkeit gesetzt
      // ist die manuelle Temperatur = 0 wird eine evt. vorher eingestellte manuelle Temperatur gelöscht und die neue SollTemperatur wird anhand des schedules ermittelt
      
      var UserExitTab = [];
      //                 0 = Datenpunkt  1= Routine           2=Operand    3= Vergleichswert
      UserExitTab[0]  = ['initial',      'TriggerHeatingOn',  'valGt',     100 ];
      UserExitTab[1]  = ['initial',      'TriggerHeatingOff', 'valLt',     0 ];
      
      // es sind 5 globale Tabellen vordefiniert. Werden diese im UserExit befuellt bleiben die Werte erhalten für den nächsten Aufruf
      var UserExitValueTab1 = [];
      var UserExitValueTab2 = [];
      var UserExitValueTab3 = [];
      var UserExitValueTab4 = [];
      var UserExitValueTab5 = [];
      
      //------------------------------------------------------------------------------
      // Ende Experteneinstellungen
      //------------------------------------------------------------------------------</profilnummer></raumname></profilnummer> 
      

      Ich habe 2 Zimmer, unter Aufzählungen stehen sie als Kinderzimmer_Lucca und Kinderzimmer_Yannik. Oder muss ich enum.rooms.Kinderzimmer_Yannik und enum.rooms.Kinderzimmer_Luca eintragen?

      Unter Funktion in Aufzählung stehen die Gewerke als: funcHeating und funcLock.

      In der CCU stehen die Gewerke aber als Fenster und Heizung. Denke aber das aus dem IOBroker muss drin stehen oder?

      Ich hoffe das hilft weiter.

      VG

      Lindi

      1 Reply Last reply Reply Quote 0
      • K
        kaschperle83 last edited by

        Hallo,

        ich hatte das Skript schon laufen allerdings musste ich durch einen Fehler Iobroker neu aufsetzen. Did Vis sind erhalten geblieben. Das Skript allerdings nicht. Habe alles wieder eingestellt aber trotzdem läuft es nicht richtig. Ein Raum und zwar Bad geht aber bei allen anderen Views erscheint "init durch iCal Event init" und ich kann einstellen was ich will es passiert nichts.

        Gesendet aus Hessen.

        1 Reply Last reply Reply Quote 0
        • S
          shattered_dream last edited by

          Gibt's eigentlich auch die Möglichkeit Xiaomi Fensterkontakte zu integrieren?

          Gesendet von meinem ONEPLUS A3003 mit Tapatalk

          1 Reply Last reply Reply Quote 0
          • L
            looxer01 last edited by

            @lindi200000:

            Ich habe 2 Zimmer, unter Aufzählungen stehen sie als Kinderzimmer_Lucca und Kinderzimmer_Yannik. Oder muss ich enum.rooms.Kinderzimmer_Yannik und enum.rooms.Kinderzimmer_Luca eintragen?

            Unter Funktion in Aufzählung stehen die Gewerke als: funcHeating und funcLock.

            In der CCU stehen die Gewerke aber als Fenster und Heizung. Denke aber das aus dem IOBroker muss drin stehen oder? `

            Hi,

            zunächst mal sorry für meine verzoegerten Antworten. Leider bin ich z.Zt. und immer noch stark beruflich eingebunden.

            Deine Antwort hilft hier schon gut weiter.

            • Die Raumliste kannst du nutzen, musst du aber nicht. Die Raumnamen scheinen mir korrekt zu sein.

            Wenn du die Raumliste nicht nutzt, dann werden die Räume automatisch erkannt

            • Die Gewerke sind definitiv das Problem bei dir. Die Ursache liegt in der CCU. Wenn die Standardeintragungen nicht geändert werden, dann erscheinen diese als englische Namen in ioBroker.

            Lösung: geht in die CCU und ändere die Gewerke Fenster und Heizung z.B. auf Fenster1 und Heizung1 und speichern.

            Anschliessend wieder zurück ändern.

            Damit sollte das Problem gelöst sein.

            vG Looxer

            1 Reply Last reply Reply Quote 0
            • L
              looxer01 last edited by

              @kaschperle83:

              ich hatte das Skript schon laufen allerdings musste ich durch einen Fehler Iobroker neu aufsetzen. Did Vis sind erhalten geblieben. Das Skript allerdings nicht. Habe alles wieder eingestellt aber trotzdem läuft es nicht richtig. Ein Raum und zwar Bad geht aber bei allen anderen Views erscheint "init durch iCal Event init" und ich kann einstellen was ich will es passiert nichts. `

              Hi,

              schalte doch mal die Kalenderfunktion aus. Scheint irgendwas damit zu tun haben.

              vG Looxer

              1 Reply Last reply Reply Quote 0
              • L
                looxer01 last edited by

                @shattered_dream:

                ibt's eigentlich auch die Möglichkeit Xiaomi Fensterkontakte zu integrieren? `

                Hi,

                ja klar. Unter Nicht-Homematic Geräte können beliebe Datenpunkte eingetragen werden.

                Bei Öffnen eines Fensterkontaktes kann dann die Temperatur auch von nicht Homematic-Thermostaten herabgesetzt werden.

                vG Looxer

                1 Reply Last reply Reply Quote 0
                • S
                  shattered_dream last edited by

                  @looxer01:

                  @shattered_dream:

                  ibt's eigentlich auch die Möglichkeit Xiaomi Fensterkontakte zu integrieren? `

                  Hi,

                  ja klar. Unter Nicht-Homematic Geräte können beliebe Datenpunkte eingetragen werden.

                  Bei Öffnen eines Fensterkontaktes kann dann die Temperatur auch von nicht Homematic-Thermostaten herabgesetzt werden.

                  vG Looxer ` Hatte ich mir fast gedacht war mir aber nicht sicher… Und wie ordne ich nachher die Türkontakte den Thermostaten zu?

                  Das hab ich noch nicht herausgefunden

                  Gesendet von meinem ONEPLUS A3003 mit Tapatalk

                  1 Reply Last reply Reply Quote 0
                  • L
                    looxer01 last edited by

                    @shattered_dream:

                    Hatte ich mir fast gedacht war mir aber nicht sicher… Und wie ordne ich nachher die Türkontakte den Thermostaten zu?

                    Das hab ich noch nicht herausgefunden `
                    Du gibst den Fensterkontakten bei den Einstellungen den Raumnamen mit. das gleiche bei den Thermostaten (wenn nicht HM)

                    Damit können die Raumnamen für Fenster und Thermostate gemapped werden.

                    vG Looxer

                    1 Reply Last reply Reply Quote 0
                    • K
                      kaschperle83 last edited by

                      Also die Heizungen laufen jetzt.

                      Aber der Fenstersensor geht nicht. Also der Sensor geht. Ich nutze auch Aqara Sensoren. Das Skript erkennt auch die Meldung des Sensors im Richtigen Raum. Öffnen wie schließen allerdings ändert es nicht die Temperatur auf Absenk Wert.

                      Habe es bei dem Sensor bei Punkt 5 schon mit True und False probiert.

                      Gesendet aus Hessen.

                      1 Reply Last reply Reply Quote 0
                      • L
                        looxer01 last edited by

                        @kaschperle83:

                        lso die Heizungen laufen jetzt.

                        Aber der Fenstersensor geht nicht. Also der Sensor geht. Ich nutze auch Aqara Sensoren. Das Skript erkennt auch die Meldung des Sensors im Richtigen Raum. Öffnen wie schließen allerdings ändert es nicht die Temperatur auf Absenk Wert.

                        Habe es bei dem Sensor bei Punkt 5 schon mit True und False probiert. `
                        Hi,

                        es kann sein, dass der Wert für öffnen/schliessen nicht erkannt wird.

                        es gab schon Fälle, da funktionierten die Sensoren mit 0 und 1. Hast du das mal probiert ?

                        vG Looxer

                        1 Reply Last reply Reply Quote 0
                        • S
                          shattered_dream last edited by

                          Eine Frage noch wegen der Absenktemp…

                          Kann das sein dass der die Temperatur von der Ccu nimmt?

                          Egal wie ich den Wert in deinem Script mache der nimmt immer den Ccu Wert...

                          Geht das Script über den Door open State?

                          Wie geht der vor wenn ich mehrere Schließkontakte einem Raum zuordne?

                          Gesendet von meinem ONEPLUS A3003 mit Tapatalk

                          1 Reply Last reply Reply Quote 0
                          • K
                            kaschperle83 last edited by

                            Die Sensoren Aqara sind die Xiaomi Sensoren. Die geben immer den Wert true und false im State aus.

                            Das Skript sagt mir auch im Log das erkannt wurde das der Verschluss geöffnet bzw geschlossen wurde.

                            Gesendet aus Hessen.

                            1 Reply Last reply Reply Quote 0
                            • L
                              looxer01 last edited by

                              @looxer01:

                              Hi,

                              es kann sein, dass der Wert für öffnen/schliessen nicht erkannt wird.

                              es gab schon Fälle, da funktionierten die Sensoren mit 0 und 1. Hast du das mal probiert ? `
                              Ok, es gibt ein Setting im Script bei der Steuerung der Ventile den Punkt 7 "Steuerung DV " . Setze den mal auf false bitte.

                              vG Looxer

                              1 Reply Last reply Reply Quote 0
                              • K
                                kaschperle83 last edited by

                                @looxer01:

                                @looxer01:

                                Hi,

                                es kann sein, dass der Wert für öffnen/schliessen nicht erkannt wird.

                                es gab schon Fälle, da funktionierten die Sensoren mit 0 und 1. Hast du das mal probiert ? `
                                Ok, es gibt ein Setting im Script bei der Steuerung der Ventile den Punkt 7 "Steuerung DV " . Setze den mal auf false bitte.

                                vG Looxer ` In welcher Zeil des Skripte finde ich den Eintrag ungefähr?

                                Gesendet aus Hessen.

                                1 Reply Last reply Reply Quote 0
                                • S
                                  shattered_dream last edited by

                                  Hab das ähnliche Problem… Das Programm erkennt zwar dass mein Xiaomi Sensor meldet dass die Tür offen ist...

                                  Aber an der Temperatur ändert sich nichts....

                                  Gesendet von meinem ONEPLUS A3003 mit Tapatalk

                                  1 Reply Last reply Reply Quote 0
                                  • L
                                    looxer01 last edited by

                                    @shattered_dream:

                                    Hab das ähnliche Problem… Das Programm erkennt zwar dass mein Xiaomi Sensor meldet dass die Tür offen ist...

                                    Aber an der Temperatur ändert sich nichts.... `

                                    könnt ihr mal bei den Einstellungen folgendes checken

                                    // Tabelle der Verschlusssensoren fuer NichtHomematic Geräte
                                    // 5  = wenn script die Absenktemperatur setzen soll, dann false
                                    var NoneHMSenorTab = [];
                                    //                  0= Raum         1 = Datenpunkt vis vor Geraet 0.RPC-Pfad    2\. Datenpunkt Geraet    3\. Datenpunkt FensterstatusGeraeteType  4.Verschlussstatus bei geschlossen    5\. TempAbsenkung automatisch,
                                    NoneHMSenorTab[0] = ['initial',     'javascript.0.Heizung',                   'zwave1' ,              '1.State' ,                                   false,                                         false];
                                    NoneHMSenorTab[1] = ['initial',     'fhem.0',                                  'OG_DU_TF' ,            'state' ,                                    'closed',                                      false];
                                    NoneHMSenorTab[2] = ['initial',     'maxcube.0.devices',                        'contact_0a9d75',      'opened',                                    false,                                          true];
                                    
                                    

                                    und zwar muss 5. TempAbsenkung automatisch auf false stehen.

                                    wie sieht das bei euch aus ?

                                    vG Looxer

                                    1 Reply Last reply Reply Quote 0
                                    • K
                                      kaschperle83 last edited by

                                      Ich habe beide Einstellungen an der Stelle getestet.

                                      Bei true erkennt er das Öffnen und meldet das der Sensor mit dem Thermostat verknüpft ist und bei false meldet er nur das sich die sensor geändert hat bzw das der Verschluss geöffnet wurde.

                                      Gesendet aus Hessen.

                                      1 Reply Last reply Reply Quote 0
                                      • S
                                        shattered_dream last edited by

                                        Hab beides gecheckt…. Passt soweit...

                                        In der og Datei steht : script.js.common.Skript3: Routine SensorStatCalc: Sensorstatus ist true fuer devtype = NoneHM und id mihome.0.devices.magnet_158d0001fa3382.state

                                        Und auf der Vis steht als Meldung : Verschluss geschlossen TemperaturAbsenkung zurueck gesetzt durch iCal Event

                                        Heizperiode ist auf aktiv gestellt, Anwesenheit ist auch gesetzt.... ICal wird nicht genutzt....

                                        In den Aufzählungen steht als Raum : enum.rooms.Küche

                                        Und beim Sensor hab ich folgendes eingetragen :

                                        NoneHMSenorTab[0] = ['Küche', 'mihome.0.devices', 'magnet_158d0001fa3382' , 'state' , false, false];

                                        1 Reply Last reply Reply Quote 0
                                        • D
                                          dav71701 last edited by

                                          Hallo,

                                          hänge mich mal einfach hier an da ich das gleiche Problem habe, Xiaomi Sensor wird zwar als "offen" erkannt, aber die TemperaturAbsenkung wir nicht durchgeführt.

                                          2018-09-30 09:33:55.084 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Routine SensorFind ID = hm-rpc.1.CUX9001002.1.STATE Raum = Büro

                                          2018-09-30 09:33:55.085 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Routine SensorFind ID = mihome.0.devices.magnet_158d000xxxx.state Raum = Büro

                                          2018-09-30 09:33:55.087 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Routine SensorStatCalc: Sensorstatus ist true fuer devtype = NoneHM und id mihome.0.devices.magnet_158d000xxxx.state

                                          2018-09-30 09:33:55.088 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Routine SensorChange: Fenster mihome.0.devices.magnet_158d000xxxx.state status geaendert fuer mihome.0.devices.magnet_158d000xxxx.state Büro true

                                          2018-09-30 09:33:55.088 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Routine SensorChange: Raum Büro

                                          2018-09-30 09:33:55.088 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Routine SensorChange: Sensor ist direktverknuepft ? false

                                          2018-09-30 09:33:55.089 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Routine SensorChange: Sensor status ist ? true

                                          schließen funktioniert wie es soll:

                                          2018-09-30 09:45:52.921 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Routine LoopDevices:Verschluss geschlossen TemperaturAbsenkung zurueck gesetzt

                                          2018-09-30 09:45:52.922 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Routine DetermineSchedule: zu planender Tag ist = So Tag fuer den Schedule ist = Sa

                                          2018-09-30 09:45:52.923 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Routine SelectSwitchTime - Aktuelle Solltemperatur ist 20.5 fuer Raum Büro Raumprofil ist 1

                                          2018-09-30 09:45:52.923 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Routine ExecuteTempDetermination: raum BüroSolltemp nach Switchtime: 20.5 Findung Sa_12:00:00

                                          2018-09-30 09:45:52.924 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Routine ExecuteTempDetermination: raum BüroSolltemp nach overrule: 20.5 Findung Verschluss geschlossen TemperaturAbsenkung zurueck gesetzt

                                          2018-09-30 09:45:52.926 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Setze Büro.Source_Global_Parameter zu Verschluss geschlossen TemperaturAbsenkung zurueck gesetzt

                                          2018-09-30 09:45:52.927 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Setze Büro.Source_NextTemp zu 0

                                          2018-09-30 09:45:52.927 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Schedule gelöscht für Büro

                                          2018-09-30 09:45:52.928 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Setze Schedule für nächste Planzeit 2 0 12 * * * für Raum Büro

                                          2018-09-30 09:45:52.933 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Ignoriere Trigger nach Änderung für State javascript.0.Heizung.Heizplan.Büro.Source_Global_Parameter

                                          2018-09-30 09:45:52.937 - info: javascript.0 script.js.common.Heizungssteuerung_Büro: Ignoriere Trigger nach Änderung für State javascript.0.Heizung.Heizplan.Büro.Source_NextTemp

                                          1 Reply Last reply Reply Quote 0
                                          • L
                                            looxer01 last edited by

                                            @dav71701:

                                            iaomi Sensor wird zwar als "offen" erkannt, aber die TemperaturAbsenkung wir nicht durchgeführt. `

                                            Hi,

                                            ist schon eigenartig, dass es nur um Xiaomi geht. Waere mal interessant zu wissen, ob es sonst noch Erfahrungen gibt mit "Nicht HM" Sensoren.

                                            Ist aber wahrscheinlich Zufall und damit zu erklären, dass viele hier Xiaomi im Einsatz haben.

                                            Also, beim Öffnen sollte noch die Routine "LoopDevises" durchlaufen werden. kannst du mal schauen, ob die Meldungen findest aus der Routine. Und zwar ist das hier:

                                                    Sensor = VerschlussRaumStatus(roomName);
                                                    if (debug) {log("Routine LoopDevices: Sensorstatus fuer raum " + roomName + " ist " + Sensor, "info"); }
                                                    // Check ob ein Verschlusssensor offen ist
                                                    if (sensorausgeloest) {  // ein nicht direkt verknuepfter Sensor hat im Raum ausgeloest
                                                        // Wenn ein Verschluss des Raumes geoeffnet ist, dann wird die Temp Absenkung gemacht
                                                        if (Sensor) {  // steht einer der Sensoren auf offen ?
                                            //                SetRoomOpen( roomName );  // in der delay tab werden evt Zeitstempel geloescht
                                                            Source_GlobalParameter = "Verschluss offen TemperaturAbsenkung gesetzt";
                                                            if (debug) { log("Routine LoopDevices:" +  Source_GlobalParameter, "info"); }
                                                            if (Check_SensorDV(roomName) === false) {  // ist der Sensor direktverknuepft ?
                                                                SetTemp(roomName, VerschlussAbsenkungsGrenze, id, false);
                                                            }
                                                            writelog(roomName, id, "Sensor ausgeloest - auf geoeffnet");
                                                            continue;
                                                        } else {
                                                            SetRoomClosed(roomName,ControlTab[x][12]);  // zeitstempel setzen fuer delay wenn erforderlich
                                                            Source_GlobalParameter = "Raum " + roomName + " jetzt geschlossen ";
                                                            if (getState(path + "." + roomName + ".Source_TimeStamp").val === "init" && getState(id).val !== VerschlussAbsenkungsGrenze ) {  // Wenn keine manuelle Temp gesetzt war
                                                                Source_GlobalParameter = "Verschluss geschlossen TemperaturAbsenkung zurueck gesetzt";
                                                                if (debug) { log("Routine LoopDevices:" +  Source_GlobalParameter, "info"); }
                                                                ExecuteTempDetermination(roomName, id);
                                                                writelog(roomName, id, "Sensor ausgeloest - auf geschlossen");
                                                                continue;
                                                            } // kein TimeStamp gesetzt
                                                        } // endif sensor status true
                                                    } // endif Sensor ausgeloest
                                            
                                                    if (Sensor) {  // Wenn ein Sensor offen ist, dann mache nix
                                                        return;
                                                    }
                                            
                                            

                                            Wenn dieser Code nicht durchlaufen wird, dann können wir den Fehler weiter eingrenzen.

                                            Was hast du für Thermostate ? HM ? mit Wandthermostat ?

                                            vG Looxer

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            406
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            climate heating javascript template
                                            115
                                            1127
                                            361257
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo