NEWS
[Vorlage] Heizungsthermostatsteuerung 2.1 - Script
-
Anbei! `
Danke dir.Also das Log sagt beim Einlesen:
2018-02-03 22:36:19.858 - [32minfo[39m: javascript.0 script.js.Heizungssteuerung.Heizungssteuerung: Routine GetDevices fuer HM Thermostate Wohnzimmer - 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 2018-02-03 22:36:19.859 - [32minfo[39m: javascript.0 script.js.Heizungssteuerung.Heizungssteuerung: Routine getdevice fuer Wohnzimmer
Wie vermutet wird dein Wandthermostat nicht erkannt. Ich vermute es liegt an den Aufzählungen.
Bitte überprüfe die Raumzuordnung und Gewerkezuordnung.
Am Besten siehst du das in der Objektliste unter hm-rpc.0. Navigiere zum Wandthermostat. Rechts in der Liste stehen die Zuordnungen.
Die muessen 100% ig (inkl gross kleinschreibung) identisch mit dem HM-CC-RT-DN sein.
vG Looxer
-
Ich befürchte, dass dies die nicht uebersetzten Räume/Gewerke sind, die du da listest. Wenn du in der CCU die Räume und Gewerke einmal umbenennst und wieder zurück aenderst, dann dürften die Texte in ioBroker anders aussehen. Da wird aus funcHeating = Heizung.
Das liegt an der Uebesetzungslogik der CCU `
Aah, das ist es. Ich hab mich immer wieder gefragt, warum manche Gewerke & Räume geändert wurden und manche nicht. In der CCU sah alles richtig aus und in ioBroker fand ich keine Möglichkeit etwas zu ändern. Danke für den Tipp!Viele Grüße,
bernie
-
Anbei! `
Danke dir.Also das Log sagt beim Einlesen:
2018-02-03 22:36:19.858 - [32minfo[39m: javascript.0 script.js.Heizungssteuerung.Heizungssteuerung: Routine GetDevices fuer HM Thermostate Wohnzimmer - 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 2018-02-03 22:36:19.859 - [32minfo[39m: javascript.0 script.js.Heizungssteuerung.Heizungssteuerung: Routine getdevice fuer Wohnzimmer
Wie vermutet wird dein Wandthermostat nicht erkannt. Ich vermute es liegt an den Aufzählungen.
Bitte überprüfe die Raumzuordnung und Gewerkezuordnung.
Am Besten siehst du das in der Objektliste unter hm-rpc.0. Navigiere zum Wandthermostat. Rechts in der Liste stehen die Zuordnungen.
Die muessen 100% ig (inkl gross kleinschreibung) identisch mit dem HM-CC-RT-DN sein.
vG Looxer `
Edit:
-
Hi,
so wie es aussieht fehlt dir die Gewerkezuordnung für das Wandthermostat.
Bitte in der CCU eintragen.
Auch scheinst du noch das bekannte Uebersetzungsthema zu haben (FuncHeating). Da solltest du in der CCU einmal manuell ueberschreiben und dann wieder zurückstellen.
vG Looxer
-
@pxstd: Der Wandthermostat ist auch nur mit Kanal 1 dem Wohnzimmer zugeordnet, sollte aber bei allen Kanälen in der CCU zugeordnet werden (die wichtigsten Infos kommen auf Kanal 2).
-
@pxstd: Der Wandthermostat ist auch nur mit Kanal 1 dem Wohnzimmer zugeordnet, sollte aber bei allen Kanälen in der CCU zugeordnet werden (die wichtigsten Infos kommen auf Kanal 2). `
Danke! Habe ich nachgeholtHi,
so wie es aussieht fehlt dir die Gewerkezuordnung für das Wandthermostat.
Bitte in der CCU eintragen.
Auch scheinst du noch das bekannte Uebersetzungsthema zu haben (FuncHeating). Da solltest du in der CCU einmal manuell ueberschreiben und dann wieder zurückstellen.
vG Looxer `
Erinner mich nochmal kurz - wo musste ich einen Wert einsetzen und dann wieder zurücksetzen?
-
Erinner mich nochmal kurz - wo musste ich einen Wert einsetzen und dann wieder zurücksetzen? `
In der CCU unter Einstellungen Gewerke.Klickst auf Heizung und schreibst z.B. Heizung01. Dann nochmal wieder zurück auf Heizung.
Dann in iobroker HM-REGA und HM-RPC.0 stoppen.
HM-REGA starten und 2 Minuten warten
dann HM-RPC.0 wieder starten
-
Erinner mich nochmal kurz - wo musste ich einen Wert einsetzen und dann wieder zurücksetzen? `
In der CCU unter Einstellungen Gewerke.Klickst auf Heizung und schreibst z.B. Heizung01. Dann nochmal wieder zurück auf Heizung.
Dann in iobroker HM-REGA und HM-RPC.0 stoppen.
HM-REGA starten und 2 Minuten warten
dann HM-RPC.0 wieder starten
ccu_Gewerke.JPG `
Sieht besser aus!
Muss ich die funcHeating's jetzt noch irgendwie manuell entfernen, bevor ich das Heizungsscript einfach neustarte? (Oder muss hier noch zusätzlich am Script was getan werden?)
-
Muss ich die funcHeating's jetzt noch irgendwie manuell entfernen, bevor ich das Heizungsscript einfach neustarte? (Oder muss hier noch zusätzlich am Script was getan werden?) `
eigentlich sollte der Restart von REGA und HM-RPC alles erfrischt haben und $Func… sollte weg sein. Kannst auch mal ioBroker neu starten. Spaetestens dann sollte es verschwinden.Im Script musst du in den Gewerken "Heizung" eingestellt haben. Beim Restart des scripts (oder Neustart ioBroker) sollte jetzt auch das WT gefunden werden.
vG Looxer
Edit: hast du evt manuell bei den Aufzählungen in ioBroker eingegriffen ?
Dann kannst du auch die Gewerke in iobroker mal komplett loeschen.
Nach Neustart wird alles neu aufgebaut.
-
Muss ich die funcHeating's jetzt noch irgendwie manuell entfernen, bevor ich das Heizungsscript einfach neustarte? (Oder muss hier noch zusätzlich am Script was getan werden?) `
eigentlich sollte der Restart von REGA und HM-RPC alles erfrischt haben und $Func… sollte weg sein. Kannst auch mal ioBroker neu starten. Spaetestens dann sollte es verschwinden.Im Script musst du in den Gewerken "Heizung" eingestellt haben. Beim Restart des scripts (oder Neustart ioBroker) sollte jetzt auch das WT gefunden werden.
vG Looxer `
> 2018-02-03 23:45:47.421 - info: javascript.0 script.js.Heizungssteuerung.Heizungssteuerung: Routine GetDevices fuer HM Thermostate Wohnzimmer - 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
Hurra!
Heißt ab jetzt steuert das Script das Wandthermostat?
-
Okay, ich hab jetzt gerade mal zum test über das Script manuell eine Temperatur gesetzt. Das Wandthermostat wird nun geupdated, aber die Heizkörperstellmotoren bleiben bei der vorherigen Einstellung.
-
Okay, ich hab jetzt gerade mal zum test über das Script manuell eine Temperatur gesetzt. Das Wandthermostat wird nun geupdated, aber die Heizkörperstellmotoren bleiben bei der vorherigen Einstellung. `
mmmh, hast du denn die Thermostate miteinander verknüpft ? Am Besten über die Gruppenfunktion der CCU.Das Script geht von einer Verknüpfung aus (bei entsprechender Einstellung im script) . Dann steuert das WT und so soll es ja auch sein.
vG Looxer
-
Okay, ich hab jetzt gerade mal zum test über das Script manuell eine Temperatur gesetzt. Das Wandthermostat wird nun geupdated, aber die Heizkörperstellmotoren bleiben bei der vorherigen Einstellung. `
mmmh, hast du denn die Thermostate miteinander verknüpft ? Am Besten über die Gruppenfunktion der CCU.Das Script geht von einer Verknüpfung aus (bei entsprechender Einstellung im script) . Dann steuert das WT und so soll es ja auch sein.
vG Looxer `
Sind Sie. Ich bin gerade zum Test zum Thermostat gegangen und habe die Temperatur manuell verstellt. Das hat sich sofort auf die 2 Heizkörper übertragen.
Edit: Auzug CCU2:
-
Sind Sie. Ich bin gerade zum Test zum Thermostat gegangen und habe die Temperatur manuell verstellt. Das hat sich sofort auf die 2 Heizkörper übertragen. `
dann musst du vermutlich nur ein paar Minuten warten bis die Temp uebertragen wird.bei manueller Bedienung geht das mehr oder weniger sofort.
es gibt noch die Möglichkeit beides über das Script anzusteuern (direktverknuepfung = false) Das geht dann schneller aber es geht auch so. Dauert dann nur.
vG Looxer
-
Sind Sie. Ich bin gerade zum Test zum Thermostat gegangen und habe die Temperatur manuell verstellt. Das hat sich sofort auf die 2 Heizkörper übertragen. `
dann musst du vermutlich nur ein paar Minuten warten bis die Temp uebertragen wird.bei manueller Bedienung geht das mehr oder weniger sofort.
es gibt noch die Möglichkeit beides über das Script anzusteuern (direktverknuepfung = false) Das geht dann schneller aber es geht auch so. Dauert dann nur.
vG Looxer `
Ich warte mal die nächsten Temperaturwechsel im Zeitplan ab. Danke schonmal loxxer01!
-
Sind Sie. Ich bin gerade zum Test zum Thermostat gegangen und habe die Temperatur manuell verstellt. Das hat sich sofort auf die 2 Heizkörper übertragen. `
dann musst du vermutlich nur ein paar Minuten warten bis die Temp uebertragen wird.bei manueller Bedienung geht das mehr oder weniger sofort.
es gibt noch die Möglichkeit beides über das Script anzusteuern (direktverknuepfung = false) Das geht dann schneller aber es geht auch so. Dauert dann nur.
vG Looxer `
Ich warte mal die nächsten Temperaturwechsel im Zeitplan ab. Danke schonmal loxxer01!
du kannst auch im view eine manuelle temp setzen. Dann wartest du ein paar Minuten -
dann musst du vermutlich nur ein paar Minuten warten bis die Temp uebertragen wird.
bei manueller Bedienung geht das mehr oder weniger sofort.
es gibt noch die Möglichkeit beides über das Script anzusteuern (direktverknuepfung = false) Das geht dann schneller aber es geht auch so. Dauert dann nur.
vG Looxer `
Ich warte mal die nächsten Temperaturwechsel im Zeitplan ab. Danke schonmal loxxer01!
du kannst auch im view eine manuelle temp setzen. Dann wartest du ein paar Minuten `Gerade schon dabei. Hab mir die Werte der 2 Heizkörperstellmotoren einfach auch ins Vis gesetzt zur aktiven Kontrolle
-
-
Hallo zusammen
ich habe ein kleines Problem mit der Umstellung von V1 auf V2.
Das Problem stellt sich wie folgt dar:
Angesteuert werden zwei Homematic-Thermostate ohne Wandthermostat, eingebunden über den FEHM-Adapter.
Für beide Thermostate gibt es einen gemeinsamen Heizplan.
In V1 funktioniert alles tadellos so wie es sein soll. Heizplan, manuelle Änderung oder die Absenkung bei geöffnetem Fenster. Die Änderungen werden an beide Thermostate übertragen und es werden auch immer jeweils zwei Kommandos an FHEM geschickt.
In V2 wird das zweite Thermostat in der Liste (OG_DU_HZ_Handtuch_Clima) scheinbar einfach ignoriert.
Anbei zum Vergleich mal die Konfigurationen der beiden Versionen:
Konfig V1:
! //–----------------------------------------------------------------------------
! // 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 5
! var cron = 1;
! // 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] = ['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'];
! // 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 = true; // 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
! //–----------------------------------------------------------------------------
! // 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, 2];
! 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', true, '1.ACTUAL_TEMPERATURE', '1.CONTROL_MODE', 12, 0];
! ThermostatTypeTab[4] = ['hm-rpc.1.', 'HmIP-WTH' , 'Wandthermostat(HMIP)' ,'IPWT', '1.SET_POINT_TEMPERATURE', false, '1.CONTROL_MODE', false, '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] = ['Arbeitszimmer', 'fhem.0', 'DG_AZ_HZ_Fenster_Clima', 'desired-temp', 6];
! NoneHMTab[1] = ['Dusche', 'fhem.0', 'OG_DU_HZ_Fenster_Clima', 'desired-temp', 6];
! NoneHMTab[2] = ['Dusche', 'fhem.0', 'OG_DU_HZ_Handtuch_Clima', 'desired-temp', 6];
! NoneHMTab[3] = ['initial', 'ZWAVE.0', 'zwa0183xxx', '4.SET_TEMPERATURE', 30];
! // 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[3] = ['hm-rpc.0.', 'HM-Sec-RHS' , 'Fenster-Drehgriffkontakt', 'HM', '1.STATE' , false, false, true];
! SensorTypeTab[4] = ['hm-rpc.0.', 'HM-Sec-SC-2', 'Fenstersensor-2 (alt)' , 'HM', '1.STATE' , false, false, true];
! SensorTypeTab[5] = ['hm-rpc.1.', 'HMIP-SWDO' , 'Fenstersensor (HMIP )' , 'IPSE', '1.STATE' , false, false, true];
! // 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] = ['Dusche', 'fhem.0', 'OG_DU_TF' , 'state' , 'closed', false];
! NoneHMSenorTab[1] = ['initial', 'javascript.0.Heizung', 'zwave2' , '1.STATE' , false, true];
! NoneHMSenorTab[2] = ['initial', 'javascript.0.Heizung', 'zwav31' , '1.STATE' , 0, false];
! // 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>Konfig V2:
! //–----------------------------------------------------------------------------
! // 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 = false; // 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 = true;
! // 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 = true; // 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] = ['Arbeitszimmer', 'fhem.0', 'DG_AZ_HZ_Fenster_Clima', 'desired-temp', 12];
! NoneHMTab[1] = ['Dusche', 'fhem.0', 'OG_DU_HZ_Fenster_Clima', 'desired-temp', 12];
! NoneHMTab[2] = ['Dusche', 'fhem.0', 'OG_DU_HZ_Handtuch_Clima', 'desired-temp', 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] = ['Dusche', 'fhem.0', 'OG_DU_TF' , 'state' , 'closed', 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>Und hier noch das Log vom Start der V2:
! javascript.0 2018-02-04 18:45:04.754 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Ignoriere Trigger nach Änderung für State javascript.0.Heizung.Heizplan.Dusche.Source_last_Program_Run
! javascript.0 2018-02-04 18:45:04.753 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Ignoriere Trigger nach Änderung für State javascript.0.Heizung.Heizplan.Arbeitszimmer.Source_last_Program_Run
! javascript.0 2018-02-04 18:45:04.742 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Ignoriere Trigger nach Änderung für State javascript.0.Heizung.Heizplan.GlobaleParameter.Source_last_Program_Run
! javascript.0 2018-02-04 18:45:04.741 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0:
! javascript.0 2018-02-04 18:45:04.741 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine LoopRooms Ende Abarbeitung fuer Raum Dusche
! javascript.0 2018-02-04 18:45:04.740 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Setze Schedule für nächste Planzeit 0 0 21 * * * für Raum Dusche
! javascript.0 2018-02-04 18:45:04.740 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine ExecuteTempDetermination: raum DuscheSolltemp nach overrule: 19 Findung
! javascript.0 2018-02-04 18:45:04.739 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine ExecuteTempDetermination: raum DuscheSolltemp nach Switchtime: 19 Findung Sa_21:00:00
! javascript.0 2018-02-04 18:45:04.739 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine SelectSwitchTime - Aktuelle Solltemperatur ist 19 fuer Raum Dusche Raumprofil ist 1
! javascript.0 2018-02-04 18:45:04.739 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine DetermineSchedule: zu planender Tag ist = So Tag fuer den Schedule ist = Sa
! javascript.0 2018-02-04 18:45:04.739 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: aktuelle Millisekunden 1517766304000
! javascript.0 2018-02-04 18:45:04.739 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine ManAdjustments: DelayTime fuer Raum Dusche ist 0
! javascript.0 2018-02-04 18:45:04.739 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine ManAdjustments: Manuell Relevant?: false
! javascript.0 2018-02-04 18:45:04.739 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine Manadj: errechneter Next Timeslot ist Sa_23:30:00
! javascript.0 2018-02-04 18:45:04.739 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine Manadj: errechnete Next SollTemp ist 19
! javascript.0 2018-02-04 18:45:04.739 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine Manadj: errechneter Current TimeSlot ist Sa_21:00:00
! javascript.0 2018-02-04 18:45:04.739 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine Manadj: errechnete Current SollTemp ist 19
! javascript.0 2018-02-04 18:45:04.739 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine SelectSwitchTime - Nächste Solltemperatur ist 19 fuer RaumDusche Raumprofil ist 1
! javascript.0 2018-02-04 18:45:04.738 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine DetermineSchedule: zu planender Tag ist = So Tag fuer den Schedule ist = Sa
! javascript.0 2018-02-04 18:45:04.738 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine SelectSwitchTime - Nächster Zeitslot ist Sa_23:30:00 fuer RaumDusche Raumprofil ist 1
! javascript.0 2018-02-04 18:45:04.737 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine DetermineSchedule: zu planender Tag ist = So Tag fuer den Schedule ist = Sa
! javascript.0 2018-02-04 18:45:04.737 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine SelectSwitchTime - Aktueller Zeitslot ist Sa_21:00:00 fuer RaumDusche Raumprofil ist 1
! javascript.0 2018-02-04 18:45:04.737 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine DetermineSchedule: zu planender Tag ist = So Tag fuer den Schedule ist = Sa
! javascript.0 2018-02-04 18:45:04.737 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine SelectSwitchTime - Aktuelle Solltemperatur ist 19 fuer Raum Dusche Raumprofil ist 1
! javascript.0 2018-02-04 18:45:04.736 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine DetermineSchedule: zu planender Tag ist = So Tag fuer den Schedule ist = Sa
! javascript.0 2018-02-04 18:45:04.736 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine LoopDevices: Sensorstatus fuer raum Dusche ist false
! javascript.0 2018-02-04 18:45:04.736 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine LoopRooms Starte Abarbeitung fuer Raum Dusche
! javascript.0 2018-02-04 18:45:04.736 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0:
! javascript.0 2018-02-04 18:45:04.736 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine LoopRooms Ende Abarbeitung fuer Raum Arbeitszimmer
! javascript.0 2018-02-04 18:45:04.733 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Setze Schedule für nächste Planzeit 0 0 20 * * * für Raum Arbeitszimmer
! javascript.0 2018-02-04 18:45:04.732 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine ExecuteTempDetermination: raum ArbeitszimmerSolltemp nach overrule: 19 Findung
! javascript.0 2018-02-04 18:45:04.732 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine ExecuteTempDetermination: raum ArbeitszimmerSolltemp nach Switchtime: 19 Findung Sa_20:00:00
! javascript.0 2018-02-04 18:45:04.732 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine SelectSwitchTime - Aktuelle Solltemperatur ist 19 fuer Raum Arbeitszimmer Raumprofil ist 1
! javascript.0 2018-02-04 18:45:04.732 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine DetermineSchedule: zu planender Tag ist = So Tag fuer den Schedule ist = Sa
! javascript.0 2018-02-04 18:45:04.731 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: aktuelle Millisekunden 1517766304000
! javascript.0 2018-02-04 18:45:04.731 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine ManAdjustments: DelayTime fuer Raum Arbeitszimmer ist 0
! javascript.0 2018-02-04 18:45:04.731 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine ManAdjustments: Manuell Relevant?: false
! javascript.0 2018-02-04 18:45:04.730 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine Manadj: errechneter Next Timeslot ist Sa_23:00:00
! javascript.0 2018-02-04 18:45:04.730 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine Manadj: errechnete Next SollTemp ist 21
! javascript.0 2018-02-04 18:45:04.730 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine Manadj: errechneter Current TimeSlot ist Sa_20:00:00
! javascript.0 2018-02-04 18:45:04.730 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine Manadj: errechnete Current SollTemp ist 19
! javascript.0 2018-02-04 18:45:04.729 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine SelectSwitchTime - Nächste Solltemperatur ist 21 fuer RaumArbeitszimmer Raumprofil ist 1
! javascript.0 2018-02-04 18:45:04.729 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine DetermineSchedule: zu planender Tag ist = So Tag fuer den Schedule ist = Sa
! javascript.0 2018-02-04 18:45:04.729 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine SelectSwitchTime - Nächster Zeitslot ist Sa_23:00:00 fuer RaumArbeitszimmer Raumprofil ist 1
! javascript.0 2018-02-04 18:45:04.729 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine DetermineSchedule: zu planender Tag ist = So Tag fuer den Schedule ist = Sa
! javascript.0 2018-02-04 18:45:04.726 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine SelectSwitchTime - Aktueller Zeitslot ist Sa_20:00:00 fuer RaumArbeitszimmer Raumprofil ist 1
! javascript.0 2018-02-04 18:45:04.726 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine DetermineSchedule: zu planender Tag ist = So Tag fuer den Schedule ist = Sa
! javascript.0 2018-02-04 18:45:04.725 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine SelectSwitchTime - Aktuelle Solltemperatur ist 19 fuer Raum Arbeitszimmer Raumprofil ist 1
! javascript.0 2018-02-04 18:45:04.724 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine DetermineSchedule: zu planender Tag ist = So Tag fuer den Schedule ist = Sa
! javascript.0 2018-02-04 18:45:04.716 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine LoopDevices: Sensorstatus fuer raum Arbeitszimmer ist false
! javascript.0 2018-02-04 18:45:04.714 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine LoopRooms Starte Abarbeitung fuer Raum Arbeitszimmer
! javascript.0 2018-02-04 18:45:04.710 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Heizungsscript verarbeitung benutzt Trigger und Events
! javascript.0 2018-02-04 18:45:02.708 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: registered 3 subscriptions and 0 schedules
! javascript.0 2018-02-04 18:45:02.708 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine GetDevices Devices initialisiert
! javascript.0 2018-02-04 18:45:02.708 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Liste der relevanten Räume Dusche
! javascript.0 2018-02-04 18:45:02.708 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Liste der relevanten Räume Arbeitszimmer
! javascript.0 2018-02-04 18:45:02.708 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine GetDevices NoneHM Sensoren: Dusche - Dusche,fhem.0.OG_DU_TF.state,NoneHM,OG_DU_TF state,fhem.0,state,OG_DU_TF state,false,closed,false
! javascript.0 2018-02-04 18:45:02.707 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine getdevice fuer NoneHMSenorTab Dusche
! javascript.0 2018-02-04 18:45:02.692 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine GetDevices fuer NoneHM Thermostate Dusche - undefined
! javascript.0 2018-02-04 18:45:02.689 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine getdevice fuer Dusche
! javascript.0 2018-02-04 18:45:02.689 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine GetDevices fuer NoneHM Thermostate Arbeitszimmer - undefined
! javascript.0 2018-02-04 18:45:02.684 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Routine getdevice fuer Arbeitszimmer
! javascript.0 2018-02-04 18:45:02.673 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum Plots wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.662 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum CUL_TX wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.652 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum Schlafzimmer wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.641 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum HMS wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.631 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum Mathilda wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.620 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum Dusche wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.609 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum eq3 wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.598 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum RSSI wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.587 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum Kalender wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.576 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum Keller wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.565 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum Garage wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.555 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum Log wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.543 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum Wohnzimmer wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.531 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum Wetter wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.503 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum Homebridge wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.439 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum Arbeitszimmer wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.424 info script.js.common.Test.Heizungsthermostatsteuerung_V_2_0: Gibt es ein zugeordnetes Gerät für den Raum System wird jetzt ueberprueft
! javascript.0 2018-02-04 18:45:02.376 info Start javascript script.js.common.Test.Heizungsthermostatsteuerung_V_2_0Und das Log vom Start der V1:
! javascript.0 2018-02-04 18:54:52.907 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: registered 1 subscription and 1 schedule
! javascript.0 2018-02-04 18:54:52.907 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Routine GetDevices Devices initialisiert
! javascript.0 2018-02-04 18:54:52.907 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume Plots
! javascript.0 2018-02-04 18:54:52.907 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume CUL_TX
! javascript.0 2018-02-04 18:54:52.907 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume Schlafzimmer
! javascript.0 2018-02-04 18:54:52.906 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume HMS
! javascript.0 2018-02-04 18:54:52.906 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume Mathilda
! javascript.0 2018-02-04 18:54:52.906 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume Dusche
! javascript.0 2018-02-04 18:54:52.906 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume eq3
! javascript.0 2018-02-04 18:54:52.906 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume RSSI
! javascript.0 2018-02-04 18:54:52.906 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume Kalender
! javascript.0 2018-02-04 18:54:52.906 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume Keller
! javascript.0 2018-02-04 18:54:52.906 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume Garage
! javascript.0 2018-02-04 18:54:52.906 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume Log
! javascript.0 2018-02-04 18:54:52.906 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume Wohnzimmer
! javascript.0 2018-02-04 18:54:52.906 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume Wetter
! javascript.0 2018-02-04 18:54:52.906 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume Homebridge
! javascript.0 2018-02-04 18:54:52.906 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume Arbeitszimmer
! javascript.0 2018-02-04 18:54:52.906 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Liste der gefundenen Räume System
! javascript.0 2018-02-04 18:54:52.906 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Routine GetDevices NoneHM Sensoren: Dusche,fhem.0.OG_DU_TF.state,NoneHM,OG_DU_TF state,fhem.0,state,OG_DU_TF state,false,closed,false
! javascript.0 2018-02-04 18:54:52.905 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Routine getdevice fuer NoneHMSenorTab Dusche
! javascript.0 2018-02-04 18:54:52.799 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Routine getdevice fuer Dusche
! javascript.0 2018-02-04 18:54:52.796 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Routine getdevice fuer Dusche
! javascript.0 2018-02-04 18:54:52.793 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Routine getdevice fuer Arbeitszimmer
! javascript.0 2018-02-04 18:54:52.787 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum Plots wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.781 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum CUL_TX wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.776 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum Schlafzimmer wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.770 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum HMS wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.764 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum Mathilda wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.758 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum Dusche wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.752 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum eq3 wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.746 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum RSSI wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.740 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum Kalender wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.734 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum Keller wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.728 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum Garage wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.722 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum Log wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.716 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum Wohnzimmer wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.709 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum Wetter wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.703 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum Homebridge wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.697 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum Arbeitszimmer wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.689 info script.js.common.Test.Heizungsthermostatsteuerung_V_1_0: Gibt es ein zugeordnetes Gerät für den Raum System wird jetzt ueberprueft
! javascript.0 2018-02-04 18:54:52.641 info Start javascript script.js.common.Test.Heizungsthermostatsteuerung_V_1_0Jemand eine Idee?
Vielen Dank schon mal und viele Grüße
PicNic
-
Jemand eine Idee? `
also erstmal nicht. Ist eigenartig.Es gibt auf jeden Fall mal einen Fehler beim logging. Da gibt es ein paar mal ein "undefined" Das habe ich jetzt behoben.
Auserdem möchte ich gerne den vollständigen Inhalt der ControlTab sehen.
Dafür muesstest du das folgende Coding in deiner Version ersetzen:
! ```
// Fuellen der Nicht-Homematic Geraete in die ControlTab y = ControlTab.length; for (var b in NoneHMTab) { roomName = NoneHMTab[b][0]; if (roomName !== "initial" && RoomListUsage(roomName)) { id = NoneHMTab[b][1] + '.' + NoneHMTab[b][2] + '.' + NoneHMTab[b][3]; var NoneHMObj = getObject(id); if (NoneHMObj && NoneHMObj.common && NoneHMObj.common.name) { FullName = NoneHMObj.common.name; } else { FullName = "n/a"; } devtype = "NoneHM"; if (debug ) {log("Routine getdevice fuer " + roomName, "info");} ! CreateStates(roomName, devtype); // Lege die states an ! roomNoSpace = roomName.replace(/\s/g, "_"); // 0 = roomName 1 = id 2 = devtype 3 = FullName 4 ID Extract 5 = Type des Geraetes 6 = DP SollTemp 7 = Manu/Auto 8 = Steuerung zentral 9 = DP Ist-Temperatur 10 = DP MANU Check 11=Ventil Offen 12= Delay nach Verschluss zu ControlTab[y] = [roomNoSpace, id, devtype, FullName, NoneHMTab[b][2], 'HT', NoneHMTab[b][3], false, false, false, false, NoneHMTab[b][4], NoneHMTab[b][6] ]; y++; // subscription für Aenderung auf Aenderung der Raumtemperatur des Thermostates zu reagieren on({id: id, change: 'ne'}, function(obj) { //if (obj.state.val !== obj.oldState.val) { // Nur bei Aenderungen ThermostatChange(obj.id); //} // End - react on change }); // ende on id log("Routine GetDevices fuer NoneHM Thermostate " + roomName +" - " + NoneHMTab[b], "info"); rooms[roomName] = true; } // endif roomName war nicht initial } // endfor Nicht Homematic Geraete ! // jetzt die Control Tab Sortieren nach Raumnamen ControlTab.sort(SortControlTab); ! if (debug) { log("Liste der Thermostate in der Control Tabelle", "info"); for (var c in ControlTab) { log(ControlTab[c],"info"); } }
! Dann sende bitte mal das Ergebnis, das unter dem Text "Liste der Thermostate in der Control Tabelle" im Log steht.
! Die ControlTab ist die zentrale Steuertabelle. Wenn das Thermostat dort nicht enthalten ist, dann kann nichts gesteuert werden.
! Wenn es dort enthalten ist, dann gibt es an anderer Stelle ein Problem.
! vG Looxer[/b][/b][/b][/b][/b][/b][/b][/b]