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

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [Vorlage] Heizungsthermostatsteuerung 2.1 - Script

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

      Vielen Dank, aber so doof wie ich kann man sich doch gar nicht anstellen :?

      Hier die Einstellungen komplett, wobei ich an den Experteneinstellungen nichts gemacht habe:

      ! ````
      //------------------------------------------------------------------------------
      // 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 = "heizung"; // diesem Gewerk muessen alle Thermostate zugeordnet sein.
      var SensorGewerk = "verschluss"; // 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 = true; // Wenn testmodus werden nur die Angegebenen Raeume abgearbeitet
      var RoomList = [];
      RoomList[0] = ['MeinRaum']; // Liste der Raeume die gesteuert werden soll zum Testen
      RoomList[1] = ['Raum2'];
      RoomList[2] = ['Raumx'];
      RoomList[3] = ['Raum3'];
      RoomList[4] = ['Raum4'];
      RoomList[5] = ['Raum5'];
      RoomList[6] = ['Raum6'];
      RoomList[7] = ['Raum7'];
      RoomList[8] = ['Raum8'];
      RoomList[9] = ['Raum9'];
      ! // 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 = 1; // 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 = 12;
      ! // 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 = true; // 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>

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

        @quorle:

        aber so doof wie ich kann man sich doch gar nicht anstellen `
        Machst du nicht.

        Im Idealfall muss nichts eingestellt werden und alles läuft. Manchmal gibts halt Probleme mit den Aufzählungen.

        Irgendwie ging ich davon aus, dass du keine Homematic Thermostate hast ?

        Also, wenn du welche hast, dann müssen die Gewerke und Räume stimmen.

        Am besten siehst du das, wenn du mal in die Objektliste schaust. Wenn alles klar ist, dann siehst du, dass Räume und Gewerke den Thermostaten zugeordnet sind. (natürlich nur bei Homematic Geräten.)

        Wenn sie nicht zugeordnet sind, dann hast du schon das Problem. Ich kann dann auch gerne mal mit dir gemeinsam per Teamviewer drüberschauen.

        vG Looxer

        1 Reply Last reply Reply Quote 0
        • Q
          quorle last edited by

          Also ich schreibe noch einmal alles zusammen, um eine bessere Übersicht zu bekommen.

          Verwendete Sensoren und Thermostate sind alle von EQ-3, sprich HomeMatic Produkte.

          Als Schnittstelle nutze ich das Programm Homegear, wo alle auch eingetragen sind.

          Händisch habe ich eine " enum.functions " in ioBroker erstellt und die Gerätschaften zugeordnet:

          Fensterkontakt –> verschluss

          Thermostat --> heizung

          Die " enum.rooms habe ich auch erstellt und die Sensoren und Aktoren diesen zugeordnet.

          5278_aufz_hlungen.png

          Hier die noch einmal meine Geräteliste:

          5278_objekte.png

          Nun zum VIS:

          Ich habe den VIEW erst einmal unverändert kopiert mit CTRL + C und eingefügt. Im Anschluss habe ich im Widget " Status " alles den jeweiligen Aktoren und Sensoren zugeordnet ( die gleichen Kanäle wie im "original " Script ). Diese werden auch angezeigt und z.B. der BOOST funktioniert –> klar geht ja direkt auf den Thermostat.

          Jedoch ist es egal, ob ich z.B. einen manuellen Sollwert vorgebe und den manuellen Modus erzwinge, denn es passiert am Thermostat nichts.

          Sensoren und Thermostate sind in Homegear <u>nicht direkt miteinander Verknüpft</u>.

          Ical, usw.. habe ich noch nicht eingerichtet, da ich erst einmal ohne diese Funktion testen wollte. Das dürfte ja nichts ausmachen? Oder muss man zusätzlich noch irgendetwas anderes an Dateien erstellen?

          Wenn ihr noch irgendwelche Infos braucht, dann bitte einfach fragen 😉

          1 Reply Last reply Reply Quote 0
          • U
            UweS last edited by

            @looxer01:

            @UweS:

            1: Wenn ich im VIS auf abwesend schalte, dann schalten sich bei mir alle Räume die ich im Skript habe , auf abwesend. Kann ich das auch Raumgesteuert machen?

            2: Wenn ich mit der Anwesenheitserkennung soweit bin, wie kann ich den Status ins VIS übernehmen? `

            Hi,

            zu 1. du kannst in den Profilparametern bei "Abwesenheit Absenkung" eine "0" eintragen. Damit hat die Abwesenheit keine Wirkung im Raum.

            zu 2. kannst du in den Script-Einstellungen einstellen. Du brauchst halt einen Datenpunkt, der die An/Abwesenheit darstellt. Meine Empfehlung ist, dass du deine Anwesenheitserkennung zunächst mal installierst -wie auch immer du das vor hast, da es ja unterschiedlichste Wege gibt.

            Solltest du TR064 (Fritzbox) nutzen, dann habe ich ein Script, ebenso für Unifi und schauaufdich hat ja dann wohl was mit der CCU. Auf jeden Fall kriegst du das hin.

            vG Looxer `

            zu 2; habe ich jetzt über BT und Radar hinbekommen, An Abwesenheit funkt für alle Räume super.

            kurze Erklärung warum ich Frage,

            Wenn alle weg sind werden alle Räume abgesenkt, perfekt

            Wenn allerdings meine Frau zu Hause ist und meine Tochter in der Schule ist würde ich gerne nur denRaum meiner Tochter absenken.

            Ich habe das jetzt einfach über das VIS gelöst indem ich ihren Stundenplan verwendet habe.

            Gibt es eine Möglichkeit wenn alle Anwesend auser unserer Tochter automatisch ihren Raum abzusenken ohne die anderen zu beeinflussen?

            Danke

            1 Reply Last reply Reply Quote 0
            • U
              UweS last edited by

              @booehmemaik:

              Ich exportier dir gleich die Daten.

              hier der View für Selina

              ! Selina2.JPG `

              Hi,

              ich klinke mich mal kurz ein weil ich hatte einen ähnlichen Fehler.

              Ich hatte VIS 1.1.1 installiert und ab dem dritten View hat er mir auch ab und zu den Wert auf irgendeinem Thermostat überschrieben.

              Jetzt habe ich wieder 1.0.4 und das Problem hat sich erledigt, dafür schaut der View wieder etwas komisch aus.

              Als Laie kann ich dir etwaige Hintergründe nicht erklären, aber vielleicht hilft es .

              LG

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

                @UweS:

                Gibt es eine Möglichkeit wenn alle Anwesend auser unserer Tochter automatisch ihren Raum abzusenken ohne die anderen zu beeinflu `

                Hi,

                du meinst automatisch ? Dazu muesste eine Anwesenheitsliste mit Räumen verknüpft sein.

                Wäre denkbar, ist aber nicht programmiert.

                Über den Kalender geht da schon eher was - aber nicht automatisiert sondern über Kalendereinträge.

                vG Looxer

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

                  Hi
                  @quorle:

                  Also ich schreibe noch einmal alles zusammen, um eine bessere Übersicht zu bekommen. `
                  Danke, hatte irgendwie die Übersicht verloren.

                  Bitte Ersetze:

                  var HeizungGewerk           = "heizung";        //  diesem Gewerk muessen alle Thermostate zugeordnet sein.
                  var SensorGewerk            = "verschluss";     //  diesem Gewerk muessen alle Verschlusssensoren zugeordnet sein.
                  
                  

                  mit

                  var HeizungGewerk           = "Heizung";        //  diesem Gewerk muessen alle Thermostate zugeordnet sein.
                  var SensorGewerk            = "Verschluss";     //  diesem Gewerk muessen alle Verschlusssensoren zugeordnet sein.
                  
                  

                  Ich denke, dass das der Fehler ist.

                  vG Looxer

                  1 Reply Last reply Reply Quote 0
                  • U
                    UweS last edited by

                    HI,

                    Ja meinte ich.

                    Dachte ich mir schon, aber nachdem sich der Stundenplan eh nur alle 6 Monate ändert ist das kein Ding.

                    Vielen Dank nochmal für die tolle Arbeit.

                    LG

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

                      @looxer01:

                      @UweS:

                      Gibt es eine Möglichkeit wenn alle Anwesend auser unserer Tochter automatisch ihren Raum abzusenken ohne die anderen zu beeinflu `

                      Hi,

                      du meinst automatisch ? Dazu muesste eine Anwesenheitsliste mit Räumen verknüpft sein.

                      Wäre denkbar, ist aber nicht programmiert.

                      Über den Kalender geht da schon eher was - aber nicht automatisiert sondern über Kalendereinträge.

                      vG Looxer `

                      Hallo Uwe,

                      nur so als Idee - ich habe das über die Profile gelöst.

                      Also habe ich für die entsprechenden Räume (Arbeitszimmer, Kinderzimmer, usw) ein Profil 2 angelegt und dort andere Temperaturen hinterlegt.

                      Jetzt prüfe ich über ein anderes Script die Anwesenheit der Personen - Wenn meine Frau oder ich zu Hause sind - dann hat das Arbeitszimmer Profil 1 - wenn wir nicht zu Hause sind das Profil 2.

                      Wenn unsere Tochter zu Hause ist dann hat das Kinderzimmer Profil 1 wenn nicht wird das Kinderzimmer auf Profil 2 geschaltet.

                      usw. usw.

                      Damit kann ich automatisch die Temperaturen schalten lassen auch wenn die Kids mal Frei haben oder einer von den Eltern Homeoffice macht.

                      Gruß

                      Dirk

                      1 Reply Last reply Reply Quote 0
                      • U
                        UweS last edited by

                        Hi,

                        Gute Idee, mit was für einem Skript hast du das realisiert?

                        Danke

                        1 Reply Last reply Reply Quote 0
                        • apollon77
                          apollon77 last edited by

                          @UweS: kannst du das vis Problem bitte nochmal detaillieren/testen und ggf als bug bei vis im github melden. Wenn alles korrekt ist sollte nichts falsch angezeigt werden. Danke

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

                            Hi,

                            Ich möchte das Thema "manuelle Temperaturen" aufgreifen und transparenter machen.

                            Ausserdem wird es demnächst noch einen Fix dazu geben.

                            1. Funktionsweise

                            Es gibt zwei Quellen für manuelle Temperaturen. Erstens ein Thermostat und zweitens die VIS-View mit dem Feld "manuell gesetzte Soll Temperatur".

                            a. manuelle Verstellung am Thermostat

                            Jede geplante SollTemp Aenderung wird an einer zentralen Stelle im entsprechenden Datenpunkt abgespeichert. Gleichzeitig wird eine Kontrollspeicherung im Datenpunkg "Source_Last_Temp" vorgenommen. Dies ist der Vergleichswert. Wenn jetzt die aktuelle SollTemp im Datenpunkt vom Kontrollpunkt abweicht, dann muss es also eine Verstellung am Thermostat geben. Die Vorgehensweise funktioniert zuverlässig.

                            b. manuelle Verstellung in VIS

                            Wenn im VIS (mit dem mitgelieferten VIEW) eine Verstellung vorgenommen wird, dannn wird überprüft ob die aktuelle SollTemp vom Wert in VIS abweicht. Wenn dies der Fall ist, dann wird eine manuelle Verstellung angenommen. Auch dieses Verfahren funktioniert zuverlässig.

                            2. Spezialfall Absenktemperatur (Fenster offen)

                            Wenn ein Thermostat durch eine eigene Steuerung eine Absenktemperatur setzt (Fenster offen), dann ist das nach 1.a für das Thermostatscript zunächst mal eine manuell gesetzte Temperatur. Hier wird aber vorher noch übperüft, ob die manuelle Temperatur nicht der im Script definierten Absenktemperatur entspricht. Wenn dies der Fall ist, dann ignoriert das Programm diese Temperatur bis eine andere Temperatur vom Thermostat gemeldet wird.

                            Es ist also wichtig, dass alle Thermostate auf die im Script angegebene Absenktemperatur (standard = 12 Grad) in den Thermostaten identisch eingestellt sind. Es gibt sonst keine weitere Möglichkeit eine Absenkung bei Fenster offen zu erkennen.

                            Wenn das nicht gemacht wird, dann wird das Script immer wieder manuelle Temperaturen erkennen

                            3. Spezialfall Scriptstart

                            Bei Start des Scriptes läuft die gleiche Logik wie unter 1.a beschrieben ab. Hier können dann zwei Situationen auftreten, die zu manuellen Temperaturen führen können

                            a. Die augenblickliche SollTemp weicht von der der "Source_Last_Temp" ab (wie unter 1.a beschrieben) Dies ist der Fall, wenn das script erstmalig gestartet wird oder seit dem letzten Stop andere geplante SollTemperaturen vorliegen. (also wenn das Script längere Zeit nicht gelaufen ist oder zwischenzeitig ein Schedulewechsel erfolgte). In diesem Fall werden nicht gewünschte manuelle Temperturen gesetzt

                            b. Bei Stopp des Scriptes gab es bereits eine manuelle Temperatur mit Ablaufzeit. Allerdings erfolgt kein Trigger mit dem Ablauf der Ablaufzeit und die manuelle Temperatur bleibt bis zum nächsten Schedulewechsel bestehen. Auch dieser Fall ist offensichtlich nicht gewünscht.

                            Für den Fall 3 werde ich demnächst einen Fix posten.

                            Bezüglich VIS Einfluss auf die manuellen Temperaturen

                            Ich hatte mit Maik eine Session, um auch dem auf den Grund zu gehen, konnten aber keinen Einfluss feststellen.

                            Ich hoffe, dass das ein wenig mehr Klarheit bringt. Bei Beachtung von Punkt 2 und nach dem Fix sollten die meisten nicht erwarteten Quellen von manuellen Temperaturen sich erledigt haben.

                            vG Looxer

                            1 Reply Last reply Reply Quote 0
                            • Q
                              quorle last edited by

                              Hey,

                              ` > Hi

                              quorle hat geschrieben:

                              Also ich schreibe noch einmal alles zusammen, um eine bessere Übersicht zu bekommen.

                              Danke, hatte irgendwie die Übersicht verloren.

                              Bitte Ersetze:

                              Code:

                              var HeizungGewerk = "heizung"; // diesem Gewerk muessen alle Thermostate zugeordnet sein.

                              var SensorGewerk = "verschluss"; // diesem Gewerk muessen alle Verschlusssensoren zugeordnet sein.

                              mit

                              Code:

                              var HeizungGewerk = "Heizung"; // diesem Gewerk muessen alle Thermostate zugeordnet sein.

                              var SensorGewerk = "Verschluss"; // diesem Gewerk muessen alle Verschlusssensoren zugeordnet sein.

                              Ich denke, dass das der Fehler ist.

                              vG Looxer `

                              Ich habe das einmal geändert, jedoch kann ich mit VIS immer noch nichts steuern. Egal welchen Haken ich setze ändert sich nichts.

                              Hier der Log aus dem Script:

                              ! ````
                              14:31:34.571 [info] javascript.0 Start javascript script.js.common.Heizung.Heizplan.Schlafzimmer(1)
                              14:31:34.572 [info] javascript.0 script.js.common.Heizung.Heizplan.Schlafzimmer(1): getEnums(enumName=rooms) => [{"id":"enum.rooms.schlafzimmer","members":["hm-rpc.0.OEQ0705944","hm-rpc.0.OEQ1712335"],"name":"Schlafzimmer"},{"id":"enum.rooms.wohnzimmer","members":[],"name":"Wohnzimmer"},{"id":"enum.rooms.küche","members":[],"name":"Küche"},{"id":"enum.rooms.badezimmer","members":[],"name":"Badezimmer"},{"id":"enum.rooms.kind_1","members":[],"name":"Kind_1"},{"id":"enum.rooms.kind_2","members":[],"name":"Kind_2"}]
                              14:31:34.573 [info] javascript.0 script.js.common.Heizung.Heizplan.Schlafzimmer(1): Routine GetDevices Devices initialisiert
                              14:31:34.573 [info] javascript.0 script.js.common.Heizung.Heizplan.Schlafzimmer(1): setTimeout(ms=2000)
                              14:31:34.573 [info] javascript.0 script.js.common.Heizung.Heizplan.Schlafzimmer(1): registered 0 subscriptions and 0 schedules
                              14:31:36.582 [info] javascript.0 script.js.common.Heizung.Heizplan.Schlafzimmer(1): Heizungsscript verarbeitung benutzt Trigger und Events
                              14:31:36.583 [info] javascript.0 script.js.common.Heizung.Heizplan.Schlafzimmer(1): subscribe: {"pattern":{"id":"feiertage.0.heute.boolean","change":"ne"},"name":"script.js.common.Heizung.Heizplan.Schlafzimmer(1)"}
                              14:31:36.583 [info] javascript.0 script.js.common.Heizung.Heizplan.Schlafzimmer(1): subscribe: {"pattern":{"id":"javascript.0.Anwesenheitssteuerung.Userlist.JemandDa","change":"ne"},"name":"script.js.common.Heizung.Heizplan.Schlafzimmer(1)"}
                              14:31:36.583 [info] javascript.0 script.js.common.Heizung.Heizplan.Schlafzimmer(1): subscribe: {"pattern":{"id":"javascript.0.Heizung.Heizplan.GlobaleParameter.Heizperiode","change":"ne"},"name":"script.js.common.Heizung.Heizplan.Schlafzimmer(1)"}
                              14:31:36.584 [info] javascript.0 script.js.common.Heizung.Heizplan.Schlafzimmer(1): subscribe: {"pattern":{"id":"ical.0.events.Feiertag","change":"ne"},"name":"script.js.common.Heizung.Heizplan.Schlafzimmer(1)"}
                              14:31:36.584 [info] javascript.0 script.js.common.Heizung.Heizplan.Schlafzimmer(1): subscribe: {"pattern":{"id":{},"change":"ne"},"name":"script.js.common.Heizung.Heizplan.Schlafzimmer(1)"}
                              14:31:36.584 [warn] javascript.0 at setOwnState (script.js.common.Heizung.Heizplan.Schlafzimmer(1):482:5)
                              14:31:36.584 [warn] javascript.0 at LoopRooms (script.js.common.Heizung.Heizplan.Schlafzimmer(1):754:5)
                              14:31:36.584 [warn] javascript.0 at Object. (script.js.common.Heizung.Heizplan.Schlafzimmer(1):419:9)
                              14:31:36.585 [info] javascript.0 script.js.common.Heizung.Heizplan.Schlafzimmer(1): setTimeout(ms=10000)

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

                                @quorle:

                                Hier der Log aus dem Script: `
                                Hab dir eine PN gesendet.

                                vG Looxer

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

                                  @UweS:

                                  Hi,

                                  Gute Idee, mit was für einem Skript hast du das realisiert?

                                  Danke `

                                  Hi,

                                  Du hattes geschrieben: zu 2; habe ich jetzt über BT und Radar hinbekommen, An Abwesenheit funkt für alle Räume super.

                                  Ich gehe mal davon aus, dass du somit weist welche Person im Haus ist.

                                  Jetzt kannst Du auf den Status der einzelnen Anwesenheiten einen Trigger legen und entsprechend in den Räumen die Profile setzen.

                                  Da ich nicht scripten kann habe ich es mit Blockly gemacht. Hier noch meines als Ideengeber.

                                  Ein Bild spare ich mir da es etwas groß ist - ich habe noch extra Heizperioden für die Badezimmer und ein Profil 3 für den Sommer.

                                  Zusätzlich habe ich noch Eltern-Anwesend und Kinder-Anwesend da ich die Badezimmer einzel schalten möchte.

                                  Wenn keiner zu Hause ist nutze ich die Abwesenheitsabsenkung die in dem Script schon eingebaut ist.

                                  ! <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml">
                                  ! <block type="on_ext" id="E^XM5cv_JMZ#kBLhtQnY" x="-497" y="-478"><mutation items="7"></mutation>
                                  ! <field name="CONDITION">any</field>
                                  ! <field name="ACK_CONDITION">true</field>
                                  ! <value name="OID0"><shadow type="field_oid" id="e_7gKMCf8(@xpkEIWX^C"><field name="oid">javascript.0.V_Handy_Dirk</field></shadow></value>
                                  ! <value name="OID1"><shadow type="field_oid" id="IXe!~B{BS:Oa0.o^x;]U"><field name="oid">javascript.0.V_Handy_Susanne</field></shadow></value>
                                  ! <value name="OID2"><shadow type="field_oid" id="B#tNC73W[0~OOELo49G"><field name="oid">javascript.0.V_Handy_Lara</field></shadow></value>
                                  ! <value name="OID3"><shadow type="field_oid" id="Q4}DP4~)YRjE8eAbK9c"><field name="oid">javascript.0.V_Handy_Moritz</field></shadow></value> ! <value name="OID4"><shadow type="field_oid" id="xw:@Q~Pn(-zDoSk[DW=Q"><field name="oid">javascript.0.Anwesenheit</field></shadow></value> ! <value name="OID5"><shadow type="field_oid" id="p51Jn/3djkugQU^7I_/A"><field name="oid">javascript.0.Anwesenheit_Eltern</field></shadow></value> ! <value name="OID6"><shadow type="field_oid" id="31TQ|5-JK!4LyXe^(cp"><field name="oid">javascript.0.Anwesenheit_Kinder</field></shadow></value>
                                  ! <statement name="STATEMENT"><block type="controls_if" id="(SZuALE(9ig)%Ckfpoo1"><mutation else="1"></mutation>
                                  ! <value name="IF0"><block type="logic_compare" id="=wb)euf@9hlIalj%y9"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="xA2N(P@(6,bU3:](;p"><field name="ATTR">val</field> ! <field name="OID">javascript.0.Heizung.V_Heizperiode_Bad</field></block></value> ! <value name="B"><block type="logic_boolean" id="@w|Nj5uy%P+_rLP1n03"><field name="BOOL">TRUE</field></block></value></block></value>
                                  ! <statement name="DO0"><block type="controls_if" id=";~JcG?BOYslAeAmZBmbU"><mutation else="1"></mutation>
                                  ! <value name="IF0"><block type="logic_compare" id="IV~DAKI}XA{}4
                                  re=nw1"><field name="OP">EQ</field>
                                  ! <value name="A"><block type="get_value" id="g,8QxCI]4+MN48|^U4,8"><field name="ATTR">val</field>
                                  ! <field name="OID">javascript.0.Anwesenheit_Kinder</field></block></value>
                                  ! <value name="B"><block type="logic_boolean" id=")0
                                  k_S0t5j|6i5zFSI2s"><field name="BOOL">TRUE</field></block></value></block></value>
                                  ! <statement name="DO0"><block type="comment" id=".dIv|!IJnh!)eXh)b8SJ"><field name="COMMENT">Kinderbad Wand</field>
                                  ! <next><block type="control" id="[eDf2q}~NrNh4vFc@z0"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.KinderbadW.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="i0,)ZPlq@{htReG:YbbB"><field name="NUM">1</field></block></value>
                                  ! <next><block type="comment" id="swdZ6)e|Y#uW+BAsBtY"><field name="COMMENT">Kinderbad Boden</field>
                                  ! <next><block type="control" id="YjNu|Vs-?27;LTQSsCC;"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.Kinderbad.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="}}IP@,W]O7yj8d?%3H%F"><field name="NUM">1</field></block></value></block></next></block></next></block></next></block></statement>
                                  ! <statement name="ELSE"><block type="comment" id="N0(v{A+WHl7DjL^)R{H."><field name="COMMENT">Kinderbad Wand</field>
                                  ! <next><block type="control" id="Mw]0
                                  Mz3erW5nE[S8!GC"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.KinderbadW.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="xw,eVb8~!XNqdp/wK)"><field name="NUM">2</field></block></value>
                                  ! <next><block type="comment" id="?mpy)YRr.oh9acHb6[X"><field name="COMMENT">Kinderbad Boden</field> ! <next><block type="control" id=".EGRj^/n*wNWEywcQ03d"><mutation delay_input="false"></mutation> ! <field name="OID">javascript.0.Heizung.Heizplan.Kinderbad.AktivesRaumProfil</field> ! <field name="WITH_DELAY">FALSE</field> ! <value name="VALUE"><block type="math_number" id="za]-57Ty,!RqZzM6qDj|"><field name="NUM">2</field></block></value></block></next></block></next></block></next></block></statement> ! <next><block type="controls_if" id="X*phzX}_YGN3]/z%?qA="><mutation else="1"></mutation> ! <value name="IF0"><block type="logic_compare" id="-gn+e#epm4-H4:G@#SY-"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="zMGl)v?MI~ws,7:/PTtJ"><field name="ATTR">val</field> ! <field name="OID">javascript.0.Anwesenheit_Eltern</field></block></value> ! <value name="B"><block type="logic_boolean" id="ZAPO(UdF|M}y^U?eeX9b"><field name="BOOL">TRUE</field></block></value></block></value> ! <statement name="DO0"><block type="comment" id="vbOak!.p:NpmEtfF3C*5"><field name="COMMENT">Elternbad Wand</field> ! <next><block type="control" id="VAGDLfxQ:hah{.cJ-X7*"><mutation delay_input="false"></mutation> ! <field name="OID">javascript.0.Heizung.Heizplan.ElternbadW.AktivesRaumProfil</field> ! <field name="WITH_DELAY">FALSE</field> ! <value name="VALUE"><block type="math_number" id="07~(p^=j?KaoJ]g+zn"><field name="NUM">1</field></block></value>
                                  ! <next><block type="comment" id="cpG:;;F[[(T15fvsr_C"><field name="COMMENT">Elternbad Boden</field>
                                  ! <next><block type="control" id="rRWS.-L.ul(Fg[8MEzH2"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.Elternbad.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="^t2EjX]D}~Zjt]!s1Myg"><field name="NUM">1</field></block></value></block></next></block></next></block></next></block></statement>
                                  ! <statement name="ELSE"><block type="comment" id="6BL!|7j}xpi1TW%
                                  }wTf"><field name="COMMENT">Elternbad Wand</field>
                                  ! <next><block type="control" id="=N+tZk]Z}jcvi~H}##]Z"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.ElternbadW.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="@zUcmWG/bA
                                  ;d3y?(dAG"><field name="NUM">2</field></block></value>
                                  ! <next><block type="comment" id="uWiRIh-zIkM4c3e(~}oQ"><field name="COMMENT">Elternbad Boden</field>
                                  ! <next><block type="control" id="QRAr20?m,y084c2|K}-V"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.Elternbad.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="07XyF]J6M];A~jJ~j^)"><field name="NUM">2</field></block></value></block></next></block></next></block></next></block></statement></block></next></block></statement> ! <statement name="ELSE"><block type="comment" id="-~JM2P@-*/FwD8N=U;La"><field name="COMMENT">Kinderbad Wand</field> ! <next><block type="control" id="g)v7ZMOW%Q|=Afbpk}ke"><mutation delay_input="false"></mutation> ! <field name="OID">javascript.0.Heizung.Heizplan.KinderbadW.AktivesRaumProfil</field> ! <field name="WITH_DELAY">FALSE</field> ! <value name="VALUE"><block type="math_number" id="g1%I0b}r;Ix1b)@Wt]L"><field name="NUM">3</field></block></value>
                                  ! <next><block type="comment" id="alaK)]u?p0b?kF!oXd0B"><field name="COMMENT">Kinderbad Boden</field>
                                  ! <next><block type="control" id="W}b}8k-w(5.nwPAw=fn9"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.Kinderbad.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="qfr=LEE7Y/BNau
                                  !Jg;Y"><field name="NUM">3</field></block></value>
                                  ! <next><block type="comment" id="y^W.+IgiDbL6w8@TzX/:"><field name="COMMENT">Elternbad Wand</field>
                                  ! <next><block type="control" id="kzx/btwtCDSa/TH,j5zQ"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.ElternbadW.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="^g~-V+~SNc%+XTt0:3R."><field name="NUM">3</field></block></value>
                                  ! <next><block type="comment" id="cMXuI:5.h^Tiba.ixdZ"><field name="COMMENT">Elternbad Boden</field>
                                  ! <next><block type="control" id="}fa+aFLMvTk7uM{8Vpuu"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.Elternbad.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="fp/YRlca#Pt=icZ7QG"><field name="NUM">3</field></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement>
                                  ! <next><block type="controls_if" id="Rms-KjnO:fxd.NPKf4W["><mutation else="1"></mutation>
                                  ! <value name="IF0"><block type="logic_compare" id=";jyH
                                  ySF#p)6Wz,0Zj5"><field name="OP">EQ</field>
                                  ! <value name="A"><block type="get_value" id="Us@(JbT-jEZ@BqHg{8}y"><field name="ATTR">val</field>
                                  ! <field name="OID">javascript.0.Heizung.V_Heizperiode</field></block></value>
                                  ! <value name="B"><block type="logic_boolean" id="5E,j2;CXMAcAf7qXH!im"><field name="BOOL">TRUE</field></block></value></block></value>
                                  ! <statement name="DO0"><block type="controls_if" id=",+?yWF)*:xTuEQ213
                                  ,c"><mutation else="1"></mutation>
                                  ! <value name="IF0"><block type="logic_compare" id="[fs1C8mBCMjVjqH~XYz"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="g}BW3+PR:zzIIn/Rro!{"><field name="ATTR">val</field> ! <field name="OID">javascript.0.V_Handy_Lara</field></block></value> ! <value name="B"><block type="logic_boolean" id="hgJp*4_-8sR:(/%ZuT"><field name="BOOL">TRUE</field></block></value></block></value>
                                  ! <statement name="DO0"><block type="comment" id="njIzQ}g%NSjb{4X@9.6U"><field name="COMMENT">Lara Zimmer</field>
                                  ! <next><block type="control" id="=TNQ!v@9h62t?l|~nuiY"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.Lara.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="lnune-~Sp[}w;|BhxCwI"><field name="NUM">1</field></block></value></block></next></block></statement>
                                  ! <statement name="ELSE"><block type="comment" id="(Y~(apiET.j[@^;2)H#"><field name="COMMENT">Lara Zimmer</field> ! <next><block type="control" id="05~}Z]vbkk@,A,mu,l/i"><mutation delay_input="false"></mutation> ! <field name="OID">javascript.0.Heizung.Heizplan.Lara.AktivesRaumProfil</field> ! <field name="WITH_DELAY">FALSE</field> ! <value name="VALUE"><block type="math_number" id="tGk./Jjp-VbVo,y1MLt-"><field name="NUM">2</field></block></value></block></next></block></statement> ! <next><block type="controls_if" id="YC+08J]L.tigJPEQyJhY"><mutation else="1"></mutation> ! <value name="IF0"><block type="logic_compare" id="YFg+q;*OV}cW6*mtJKx@"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="1z7ZnEHk?M*FH@+pqJeq"><field name="ATTR">val</field> ! <field name="OID">javascript.0.V_Handy_Moritz</field></block></value> ! <value name="B"><block type="logic_boolean" id="G?1ml.g+)T7,.k.8lhmO"><field name="BOOL">TRUE</field></block></value></block></value> ! <statement name="DO0"><block type="comment" id="*TL=b0RTrr.2~xj%FE?"><field name="COMMENT">Moritz Zimmer</field>
                                  ! <next><block type="control" id=")^|(3J3h9z[hK=UyF%Sn"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.Moritz.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="GBp2[5Ii~Z0B!v-aw!@4"><field name="NUM">1</field></block></value></block></next></block></statement>
                                  ! <statement name="ELSE"><block type="comment" id="%v_gE;FGX[fa:}09^e)d"><field name="COMMENT">Moritz Zimmer</field>
                                  ! <next><block type="control" id="2nESNpNY8pgP|A5ofBd4"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.Moritz.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="WJ-8xxzzVLRA_MZ,-4qQ"><field name="NUM">2</field></block></value></block></next></block></statement>
                                  ! <next><block type="controls_if" id="p3LPXW-GD=W5j}[UjuF7"><mutation else="1"></mutation>
                                  ! <value name="IF0"><block type="logic_compare" id="m655Y)%ipp%oBfuvPMK"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="jlz.w({3At?qMah8T6s0"><field name="ATTR">val</field> ! <field name="OID">javascript.0.Anwesenheit_Eltern</field></block></value> ! <value name="B"><block type="logic_boolean" id="Eb;=pnk:*GJv2a%6YhKy"><field name="BOOL">TRUE</field></block></value></block></value> ! <statement name="DO0"><block type="comment" id="3mTk}jz^]8VY08g7,p"><field name="COMMENT">Arbeitszimmer</field> ! <next><block type="control" id="xt:jL^!M,6LMwfK.Dvjv"><mutation delay_input="false"></mutation> ! <field name="OID">javascript.0.Heizung.Heizplan.Arbeitszimmer.AktivesRaumProfil</field> ! <field name="WITH_DELAY">FALSE</field> ! <value name="VALUE"><block type="math_number" id="9=r|9/L(oYXc/]0B=h}1"><field name="NUM">1</field></block></value> ! <next><block type="comment" id="mtd3Zja(!O{#Vp;XWQ"><field name="COMMENT">Schlafzimmer</field>
                                  ! <next><block type="control" id="nix;~MvMNI8ms3|0{rd"><mutation delay_input="false"></mutation> ! <field name="OID">javascript.0.Heizung.Heizplan.Schlafzimmer.AktivesRaumProfil</field> ! <field name="WITH_DELAY">FALSE</field> ! <value name="VALUE"><block type="math_number" id="(*{ed_2i:*T46qB^o7]M"><field name="NUM">1</field></block></value></block></next></block></next></block></next></block></statement> ! <statement name="ELSE"><block type="comment" id="oyRVb[/S/HjF*Q0jDHMd"><field name="COMMENT">Arbeitszimmer</field> ! <next><block type="control" id="4-L{/eXTR6W7f[m140rL"><mutation delay_input="false"></mutation> ! <field name="OID">javascript.0.Heizung.Heizplan.Arbeitszimmer.AktivesRaumProfil</field> ! <field name="WITH_DELAY">FALSE</field> ! <value name="VALUE"><block type="math_number" id="8LT]X^+)ZLW9dDC-sPUx"><field name="NUM">2</field></block></value> ! <next><block type="comment" id="asLN)9)hkVo1Fv^v[1|H"><field name="COMMENT">Schlafzimmer</field> ! <next><block type="control" id="eA-{QD5N?n!%y}XBX8.)"><mutation delay_input="false"></mutation> ! <field name="OID">javascript.0.Heizung.Heizplan.Schlafzimmer.AktivesRaumProfil</field> ! <field name="WITH_DELAY">FALSE</field> ! <value name="VALUE"><block type="math_number" id="ky^kRvD,ZFcK)Yg@{Z:o"><field name="NUM">2</field></block></value></block></next></block></next></block></next></block></statement> ! <next><block type="controls_if" id="O1i=^*qva%AW%k?pG2g4"><mutation else="1"></mutation> ! <value name="IF0"><block type="logic_compare" id="~J+~{,2306~E|s^C[dI]"><field name="OP">EQ</field> ! <value name="A"><block type="get_value" id="8XKGBlD5E(Rjq*RSVp_E"><field name="ATTR">val</field> ! <field name="OID">javascript.0.Anwesenheit</field></block></value> ! <value name="B"><block type="logic_boolean" id="2=MFx}OU5)7776MM–%~"><field name="BOOL">TRUE</field></block></value></block></value> ! <statement name="DO0"><block type="comment" id="Jf29gv6pO1Y(!.7?)f"><field name="COMMENT">Wohnzimmer</field>
                                  ! <next><block type="comment" id="8hcj58RwylziHgu9H;"><field name="COMMENT">Flur</field> ! <next><block type="comment" id="CES+;R%()NDCgJlR.M/T"><field name="COMMENT">KEINE Einstellung nötig</field></block></next></block></next></block></statement> ! <statement name="ELSE"><block type="comment" id=",SdWfED{Zuj*)@b,tm]a"><field name="COMMENT">Wohnzimmer</field> ! <next><block type="comment" id="]KcYp5#cO=7UMLboCZw5"><field name="COMMENT">Flur</field> ! <next><block type="comment" id="Opw5iKgv%/9FB]%w2/To"><field name="COMMENT">KEINE Einstellung nötig</field></block></next></block></next></block></statement></block></next></block></next></block></next></block></statement> ! <statement name="ELSE"><block type="comment" id="Ajpua?=)X[iom0uVi.]m"><field name="COMMENT">Arbeitszimmer</field> ! <next><block type="control" id="}WdvY_8]#2^?:gY3!%x"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.Arbeitszimmer.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="eN#N/4Koq%LB
                                  KMa,7y"><field name="NUM">3</field></block></value>
                                  ! <next><block type="comment" id="~nmeS=o^qeb:H_Xt/w/j"><field name="COMMENT">Lara Zimmer</field>
                                  ! <next><block type="control" id="#!w|Av+A_fpDK)c]X3cr"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.Lara.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="e
                                  i-pwtHv0fQ(U:7aFr+"><field name="NUM">3</field></block></value>
                                  ! <next><block type="comment" id="ZgA;0dMJn;k0KjAX7^
                                  )"><field name="COMMENT">Moritz Zimmer</field>
                                  ! <next><block type="control" id="H8,hzSTV7fW#jJA5d5)v"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.Moritz.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id=")+xyH~}C:uYV(S)~%O}"><field name="NUM">3</field></block></value> ! <next><block type="comment" id=")fMm0CI,1J(UW
                                  +,P[H"><field name="COMMENT">Schlafzimmer</field>
                                  ! <next><block type="control" id="di=y+LVO*+
                                  ^.3lCGXSC"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.Schlafzimmer.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="dk^vRt6Tf)tr{b5@DXSQ"><field name="NUM">3</field></block></value>
                                  ! <next><block type="comment" id="t1.hVf=O@C6LEKPQhX_U"><field name="COMMENT">Wohnzimmer</field>
                                  ! <next><block type="control" id="#O{QFZs2kwD1KrXy~3c"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.Wohnzimmer.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="07C~z]-TBPw_AWRht];
                                  "><field name="NUM">3</field></block></value>
                                  ! <next><block type="comment" id="~BkE(]ok7ORvb;8):)6B"><field name="COMMENT">Flur</field>
                                  ! <next><block type="control" id="oL5cp|Ub2HLUPBi~Toq0"><mutation delay_input="false"></mutation>
                                  ! <field name="OID">javascript.0.Heizung.Heizplan.Flur_unten.AktivesRaumProfil</field>
                                  ! <field name="WITH_DELAY">FALSE</field>
                                  ! <value name="VALUE"><block type="math_number" id="M[XyN-NyDvaT|?(?eXkR"><field name="NUM">3</field></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></statement></block></xml>

                                  Gruß

                                  Dirk

                                  1 Reply Last reply Reply Quote 0
                                  • P
                                    pulv last edited by

                                    @looxer01:

                                    @quorle:

                                    Hier der Log aus dem Script: `
                                    Hab dir eine PN gesendet.

                                    vG Looxer `

                                    Hallo zusammen,

                                    konntet ihr die Probleme schon gemeinsam lösen?

                                    Ich bekomme das Script leider auch noch nicht zum laufen.

                                    Meine Konstellation ist der von quorle ziemlich ähnlich. Ich habe einen RPI3 mit hmcom und musste dementsprechend die Gewerke und Räume manuell anlegen und zuordnen.

                                    Gruß pulv

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

                                      @pulv:

                                      konntet ihr die Probleme schon gemeinsam lösen? `
                                      Hi,

                                      nein, noch nicht. Ich möchte mir das im System ansehen.

                                      Kannst du aber auch bei dir.

                                      Es gibt 4 Kriterien für die Selektion:

                                      1. Function = Gewerk

                                      2. room = Raumname

                                      3. GerätePfad (Adapter) und Instance z.B. für CCU = hm-rpc.0

                                      4. Gerätetype = native.TYPE

                                      • Gewerk und Räume werden über die Aufzählungen eingestellt

                                      • Gerätepfad wird einfach in der ThermostatTypeTab je Gerät eingestellt

                                      • GeräteTyp könnte ein Problem sein.

                                      Bitte schau in die Objektliste und markiere das Gerät auf Ebene der Geräte-ID.

                                      Dann ganz rechts auf das Icon für "aendern" gehen und auf "Experteneinstellungen" oder so ähnlich gehen.

                                      Dort gibt es bei Verwendung von hm-rpc eine Definition (JSON) unter native und type.

                                      Der Gerätetyp ist dort eingetragen. Davon mache ich einige Steuerungen abhängig, weil die Geräte eben unterschiedlich reagieren.

                                      Wenn du das nicht findest, dann werden die Geräte im Moment nicht automatisch eingelesen.

                                      Dann bleibt aber immer noch die Einstellung über die NichtHM Geräte Tabelle. Ist allerdings etwas mühsamer, da ja jedes Gerät eingetragen werden muss. Einige Funktionen sind im Moment auch dann nicht möglich. (Modus Umschaltung und Delay für alte Thermostate)

                                      vG Looxer

                                      1 Reply Last reply Reply Quote 0
                                      • B
                                        booehmemaik last edited by

                                        @UweS:

                                        @booehmemaik:

                                        Ich exportier dir gleich die Daten.

                                        hier der View für Selina

                                        ! Selina2.JPG `

                                        Hi,

                                        ich klinke mich mal kurz ein weil ich hatte einen ähnlichen Fehler.

                                        Ich hatte VIS 1.1.1 installiert und ab dem dritten View hat er mir auch ab und zu den Wert auf irgendeinem Thermostat überschrieben.

                                        Jetzt habe ich wieder 1.0.4 und das Problem hat sich erledigt, dafür schaut der View wieder etwas komisch aus.

                                        Als Laie kann ich dir etwaige Hintergründe nicht erklären, aber vielleicht hilft es .

                                        LG `

                                        Hallo Uwe,

                                        hmm Loxxer01 und ich haben es sich bei mir angeschaut… nach dem ich die Zeit für die Manuelle temperatur auf 15min runtergenommen hatte, ging es eine weile ohne unkontrollierte änderungen.

                                        Jetzt habe ich aber wieder die situation das es wieder häufiger vorkommt.

                                        Ich glaub das hängt ganz stark damit zusammen wenn vom Thermostat nur 0 geschickt wird.

                                        Ich starte gerade meinen CUBE durch und starte den Adapter neu. mal sehen ob es sich dann beruhigt wieder.

                                        Gruss

                                        Maik

                                        1 Reply Last reply Reply Quote 0
                                        • F
                                          flavsta last edited by

                                          Ich habe nach der Doku alle Schritte durchgeführt. Leider bekomme ich folgenden Fehler:

                                           javascript.0 2018-01-23 20:55:24.557errorTypeError: Cannot read property 'common' of undefined
                                          
                                          javascript.0 2018-01-23 20:55:24.557error^
                                          
                                          javascript.0 2018-01-23 20:55:24.556errormembers: (objects[enums[i]].common) ? objects[enums[i]].common.members : [],
                                          
                                          javascript.0 2018-01-23 20:55:24.556errorscript.js.common.Heizungssteuerung: /opt/iobroker/node_modules/iobroker.javascript/javascript.js:2207 
                                          

                                          Gesendet von meinem SM-G955F mit Tapatalk

                                          1 Reply Last reply Reply Quote 0
                                          • O
                                            onkelfrisko last edited by

                                            Hallo,

                                            gibt es die Möglichkeit nicht HM Raumthermostate einzusetzen ?

                                            Ich messe im Wohnzimmer die Temperatur mit Xiaomi Sensoren und würde diese gern als IST Temp nehmen da die Temp am Heizkörperthermostat immer zu hoch angezeigt wird da Wärmestau.

                                            Und wenn ja , wie und wo muss ich das angeben?

                                            MfG

                                            Sven

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            763
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            climate heating javascript template
                                            115
                                            1127
                                            310190
                                            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