NEWS
[Vorlage] Heizungsthermostatsteuerung 2.1 - Script
-
So Leute, ich wollte mich einmal recht herzlich bei euch für die super Unterstützung bedanken
Bei mir läuft es seit dem ich mir den HM-MOD-RPI besorgt habe ohne Probleme und das Script erkennt die Sensoren wunderbar.
Jedoch hätte ich vielleicht, bzw. suche ich eine Erweiterung des Scriptes.
Ich würde gerne meine Temperaturen in den Einzelnen Räumen durch TFA Sensoren messen lassen. ( Testweise habe ich einen mal in die CCU mittels CUxD aufgenommen, der auch seine Werte anständig liefert ). In io.Broker habe ich den Sensor auch schon eingebunden. Jedoch fehlt mir jetzt ein Script, womit ich die Temperatur Regeln lasse.
Im Klartext:
Die Temperatur wird mittels dem TFA Sensor gelesen. Die Voreingestellte "Wohlfühltemperaturen" gebe ich im "Heizungsthermostatsteuerung 2.0" Script vor. Jetzt soll das Neue Script nach diesen Werten Regeln und den errechneten Wert ( Sollwertvorgabe ) widerrum an das "Heizungsthermostatsteuerung 2.0" Script Schicken das ja dann den Rest erledigt.
Gibt es sowas denn schon, oder hat sowas jemand am laufen?
-
Die Temperatur wird mittels dem TFA Sensor gelesen. Die Voreingestellte "Wohlfühltemperaturen" gebe ich im "Heizungsthermostatsteuerung 2.0" Script vor. Jetzt soll das Neue Script nach diesen Werten Regeln und den errechneten Wert ( Sollwertvorgabe ) widerrum an das "Heizungsthermostatsteuerung 2.0" Script Schicken das ja dann den Rest erledigt. `
Hi,
also ganz verstehe ich das nicht was du vor hast.
Nach meiner Interpretation:
-
Der TFA Sensor soll die Ist Temperatur im zu reglenden Raum messen
-
Ein zweites Script soll den Sollwert aus dem HT Script nehmen und dann nach einer eigenen Logik eine eigene SollTemp ermitteln (aufgrund der Ist Temp des TFA Sensors)
-
Dabei soll die HT-Script Logik in Takt bleiben um z.B situationsbedingt (z.B. An/Abwesenheit) einzugreifen.
Habe ich das richtig verstanden ?
Das Script von Appollon77 macht so was ähnliches. (erster post). Da werden SollTemps ermittelt und an das HT Script übergeben.
Die Logik der SollTemp Ermittlung in diesem Script geht nach Aufheizzeiten, die für die jeweiligen Räumen benötigt werden)
Mir ist allerdings nicht klar nach welchen Kriterien du denn die SollTemp ermitteln willst ?
vG Looxer
-
-
Wenn ich das Fenster nun schließe (im Log um 12:23:07 Uhr), dann wird das das vom Skript erkannt, die Temperatur wird aber nicht wieder auf die ursprüngliche angehoben.
Das Skript läuft dann in Dauerschleife, weil es irgendeine Form von Delay erkannt hat. `
Hi,da war ein Fehler in der Zuweisung für "NichtHM-Geräte".
Bitte tausche einmal folgenden Code aus. Feedback wäre super. Dann baue ich es für die nächste Version ein.
! ```
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 = room 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], 0 ]; 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
! vG Looxer[/b][/b][/b][/b][/b][/b][/b] -
>
> quorle hat geschrieben:Die Temperatur wird mittels dem TFA Sensor gelesen. Die Voreingestellte "Wohlfühltemperaturen" gebe ich im "Heizungsthermostatsteuerung 2.0" Script vor. Jetzt soll das Neue Script nach diesen Werten Regeln und den errechneten Wert ( Sollwertvorgabe ) widerrum an das "Heizungsthermostatsteuerung 2.0" Script Schicken das ja dann den Rest erledigt. `
Hi,
also ganz verstehe ich das nicht was du vor hast.
Nach meiner Interpretation:
-
Der TFA Sensor soll die Ist Temperatur im zu reglenden Raum messen
-
Ein zweites Script soll den Sollwert aus dem HT Script nehmen und dann nach einer eigenen Logik eine eigene SollTemp ermitteln (aufgrund der Ist Temp des TFA Sensors)
-
Dabei soll die HT-Script Logik in Takt bleiben um z.B situationsbedingt (z.B. An/Abwesenheit) einzugreifen.
Habe ich das richtig verstanden ?
Das Script von Appollon77 macht so was ähnliches. (erster post). Da werden SollTemps ermittelt und an das HT Script übergeben.
Die Logik der SollTemp Ermittlung in diesem Script geht nach Aufheizzeiten, die für die jeweiligen Räumen benötigt werden)
Mir ist allerdings nicht klar nach welchen Kriterien du denn die SollTemp ermitteln willst ?
vG Looxer `
Ja, du hast es richtig verstanden. Jedoch soll/kann die ermittelte Solltemp wieder an HT übergeben werden, da dieses ja die Temp dann in den Thermostat schreibt.
Bei mir in der Arbeit werden durch spezielle Regler Temperaturen in Räumen geregelt. Diese haben eine eigene Logit und werden Parametriert/Programmiert. Aber mit einer Simatic S7 Steuereunf kann man dies ebenfalls bewerkstelligen. Und nun würde ich so eine Temperaturregelung im Haus haben
Gibt es vielleicht etwas, was einem PI Regler oder einem Dreipunktregler nahe kommt?
Ich weis, der Aufwand so was zu programmieren wird wahrscheinlich imens sein, oder?
Aber leider habe ich keine Erfahrungen im Programmieren von Java, ich kann nur etwas Simatic Steuerungen und Frequenzumrichter
vG
-
-
Hi,
schau dir das mal an:
http://forum.iobroker.net/viewtopic.php … er#p100766
Allerdings kommst du ohne Programmierung damit nicht hin, wobei aber die Script Schnitel vorliegen sollten.
wie schon geschrieben, die Steuerung einer FBH mit Zusatzscripten hat apollon77 realisert.
vG Looxer
-
Wenn ich das Fenster nun schließe (im Log um 12:23:07 Uhr), dann wird das das vom Skript erkannt, die Temperatur wird aber nicht wieder auf die ursprüngliche angehoben.
Das Skript läuft dann in Dauerschleife, weil es irgendeine Form von Delay erkannt hat. `
Hi,da war ein Fehler in der Zuweisung für "NichtHM-Geräte".
Bitte tausche einmal folgenden Code aus. Feedback wäre super. Dann baue ich es für die nächste Version ein.
!
`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 = room 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], 0 ]; 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` ! vG Looxer ! Hey Looxer, ! Vielen Dank. Wenn ich morgen Abend wieder daheim bin probiere ich es direkt aus und Säge dann Bescheid. ! Viele Grüße ! PicNic[/b][/b][/b][/b][/b][/b][/b]
` -
Hi Looxer,
erstmal vielen Dank für dein Skript. Habe es seit ein paar Wochen mit Homematic Wandthermostaten, Heizkörperthermostaten und Fensterkontakten erfolgreich im Dienst und bin rundum begeistert!
An diesem Wochenende habe ich mithilfe Apollons Skript die Fußbodenheizung mit in Homematic und iobroker aufgenommen.
Ich steuere die FBH-Ventile mittels Homematic Wired 12/7er Aktoren und den Funk-Wandthermostaten.
Nun werden die Wired-Aktoren von deinem Skript natürlich nicht als Heizthermostate erkannt und somit keine Datenpunkte für die entsprechenden Räume erstellt.
Ist es möglich die Wired-Aktoren dennoch in dein Skript zu integrieren?
Grüße, Rob
-
Ich steuere die FBH-Ventile mittels Homematic Wired 12/7er Aktoren und den Funk-Wandthermostaten.
Nun werden die Wired-Aktoren von deinem Skript natürlich nicht als Heizthermostate erkannt und somit keine Datenpunkte für die entsprechenden Räume erstellt.
Ist es möglich die Wired-Aktoren dennoch in dein Skript zu integrieren? `
Hi,
Das Script ist nicht abhängig von den Spezifikation der Thermostate. Alles wird über die Steuertabellen eingestellt.
Das heisst, dass du die Geräte in die Liste eintragen musst (immer zuerst Wandthermostate und dann erste die abhängigen Thermostate)
Sollte eigentlich kein Problem sein. Die wired Geräte müssen natürlich entsprechend Räumen und Gewerk zugeorndet sein.
Versuche das mal bitte. Rückmeldung wäre klasse.
vG Looxer
!
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', false, '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', true, '1.ACTUAL_TEMPERATURE', '1.CONTROL_MODE', 12, 0]; ThermostatTypeTab[5] = ['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[6] = ['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[7] = ['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]; ThermostatTypeTab[8] = ['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]; !
-
Danke für die schnelle Antwort.
Weiß allerdings nicht so ganz, was ich zu einzutragen habe. Da ich pro Ausgang nur die vier Ausgänge "INHIBIT", "INSTALL_TEST", "STATE" und "WORKING" bekomme.
ThermostatTypeTab[9] = ['hm-rpc.0.', 'HMW-IO-12-Sw-7-DR' , 'Wired_Aktor' ,'WA', '2.SET_TEMPERATURE', false, '2.MANU_MODE', false, '4.ACTUAL_TEMPERATURE', '4.CONTROL_MODE', 12, 0];
… so habe ich bisher noch keine Datenpunkte bekommen. Hatte auch versucht überall "false," einzutragen, aber das ging auch nicht.
-
Hi,
kannst du mal die Datenpunkte zur Verfügung stellen ?
am Besten durch download.
nach deiner Definition muss der Datenpunkt eine Definition "2.SET_TEMPERATURE" haben. Sonst findet das Script nichts.
Andererseits. Wozu brauchst du eigentlich die wired geräte im Script ? Du hast doch ein Wandthermostat, das steuert ?
vG Looxer
-
Andererseits. Wozu brauchst du eigentlich die wired geräte im Script ? Du hast doch ein Wandthermostat, das steuert ?
vG Looxer `
Da hast du natürlich recht. Nur werden von dem Wandthermostaten auch keine Datenpunkte erstellt.
Wie kann ich denn Datenpunkte zum Download zur Verfügung stellen?
-
Wie kann ich denn Datenpunkte zum Download zur Verfügung stellen? `
Du gehst in die ObjektlisteWählst die Objektstruktur zum herunterladen aus (z.B. eines dieser Wandthermostate)
Oben links in der Reihe (das rechte Icon) druecken.
Dann wird eine Datei mit der gewählten Objektstruktur heruntergeladen.
vG Looxer
-
Ok, so sieht dann also die Objektstruktur eines Kanals vom Wired-Aktor aus:
! {"hm-rpc.0.OEQ0161430.13":{"_id":"hm-rpc.0.OEQ0161430.13","type":"channel","common":{"name":"FBH_Wohnzimmer_Kamin","role":"switch","icon":"/icons/30_hmw-io-12-sw7-dr_thumb.png"},"native":{"ADDRESS":"OEQ0161430:13","AES_ACTIVE":0,"DIRECTION":2,"FLAGS":1,"INDEX":13,"LINK_SOURCE_ROLES":"","LINK_TARGET_ROLES":"SWITCH","PARAMSETS":["LINK","MASTER","VALUES"],"PARENT":"OEQ0161430","PARENT_TYPE":"HMW-IO-12-Sw7-DR","TYPE":"SWITCH","VERSION":11},"from":"system.adapter.hm-rega.0","ts":1518371848896,"acl":{"object":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}},"hm-rpc.0.OEQ0161430.13.INHIBIT":{"type":"state","common":{"def":false,"type":"boolean","read":true,"write":true,"role":"state.inhibit","name":"FBH_Wohnzimmer_Kamin.INHIBIT"},"native":{"CONTROL":"NONE","DEFAULT":false,"FLAGS":1,"ID":"INHIBIT","MAX":true,"MIN":false,"OPERATIONS":7,"TAB_ORDER":1,"TYPE":"BOOL","UNIT":""},"from":"system.adapter.hm-rega.0","ts":1518371848890,"_id":"hm-rpc.0.OEQ0161430.13.INHIBIT","acl":{"object":1636,"state":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}},"hm-rpc.0.OEQ0161430.13.INSTALL_TEST":{"type":"state","common":{"def":false,"type":"boolean","read":false,"write":true,"role":"indicator","name":"FBH_Wohnzimmer_Kamin.INSTALL_TEST"},"native":{"DEFAULT":false,"FLAGS":3,"ID":"INSTALL_TEST","MAX":true,"MIN":false,"OPERATIONS":2,"TAB_ORDER":2,"TYPE":"ACTION","UNIT":""},"from":"system.adapter.hm-rega.0","ts":1518371848885,"_id":"hm-rpc.0.OEQ0161430.13.INSTALL_TEST","acl":{"object":1636,"state":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}},"hm-rpc.0.OEQ0161430.13.STATE":{"type":"state","common":{"def":false,"type":"boolean","read":true,"write":true,"role":"state","name":"FBH_Wohnzimmer_Kamin.STATE"},"native":{"CONTROL":"SWITCH.STATE","DEFAULT":false,"FLAGS":1,"ID":"STATE","MAX":true,"MIN":false,"OPERATIONS":7,"TAB_ORDER":0,"TYPE":"BOOL","UNIT":""},"from":"system.adapter.hm-rega.0","ts":1518371848880,"_id":"hm-rpc.0.OEQ0161430.13.STATE","acl":{"object":1636,"state":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}},"hm-rpc.0.OEQ0161430.13.WORKING":{"type":"state","common":{"def":false,"type":"boolean","read":true,"write":false,"role":"indicator.working","name":"FBH_Wohnzimmer_Kamin.WORKING"},"native":{"DEFAULT":false,"FLAGS":3,"ID":"WORKING","MAX":true,"MIN":false,"OPERATIONS":5,"TAB_ORDER":3,"TYPE":"BOOL","UNIT":""},"from":"system.adapter.hm-rega.0","ts":1518371848876,"_id":"hm-rpc.0.OEQ0161430.13.WORKING","acl":{"object":1636,"state":1636,"owner":"system.user.admin","ownerGroup":"system.group.administrator"}}}
leider hab ich jetzt wohl etwas zu viel rumgespielt und bekomme die Fehlermeldung:
javascript.0 2018-02-11 22:25:22.866 error TypeError: Cannot read property 'common' of undefined javascript.0 2018-02-11 22:25:22.866 error ^ javascript.0 2018-02-11 22:25:22.865 error members: (objects[enums[i]].common) ? objects[enums[i]].common.members : [], javascript.0 2018-02-11 22:25:22.865 error script.js.Heizungssteuerung.Heizthermostatsteuerung_2_0: c:\iobroker\node_modules\iobroker.javascript\javas
werd dann das erstmal wieder in Ordnung bringen müssen und mich dann Morgen oder die Tage daranmachen.
Werde auf jeden Fall berichten.
Danke erstmal für deine Hilfe!
Grüße, Rob
-
Ok, so sieht dann also die Objektstruktur eines Kanals vom Wired-Aktor aus: `
ok, also ich sehe keine SollTemperatur. Es gibt nur den Kanal 13. Fehlen da noch Kanäle ?Keine Ahnung wie die Dinger funktionieren…
PS
Die Fehlermeldungen deuten auf ein Problem mit den Aufzählungen hin.
-
Hi Looxer,
das Neuanlegen der Aufzählungen, wie weiter oben im Thread beschrieben, hat sowohl die Fehlermeldung als auch meine Problem der nichtangelegten Datenpunkte beseitigt. Und du hattest natürlich recht, die Datenpunkte der Wiredaktoren brauche ich gar nicht für dein Skript und deine View.
Aktuell funktioniert alles einwandfrei.
Nochmal vielen Dank und höchstes Lob und Anerkennung für deine Entwicklung!
Zur Erklärung der 12/7 Wired-Aktoren:
Die Kanäle 1-12 sind Eingänge, die ich für die FBH nicht brauche. Die vier Datenpunkte, die ich dir geschickt habe sind vom ersten Ausgang. Nutze 5 der 7 Ausgänge für 5 FBH-Ventile. Sobald .STATE auf true geht, öffnet sich das jeweilige Ventil, bei false schließt es wieder. Also ganz oder gar nicht.
Die Skriptumsetzung habe ich in dem Fall Apollon zu verdanken!
http://forum.iobroker.net/viewtopic.php … denheizung
Als nächstes steht nun an das Voraussteuerungsskript von Apollon zu implementieren, um eure beiden Skripte zu verknüpfen und die Trägheit der FBH noch besser zu kompensieren (Hab das zumindest so verstanden )
Beste Grüße,
Rob
-
Wenn ich das Fenster nun schließe (im Log um 12:23:07 Uhr), dann wird das das vom Skript erkannt, die Temperatur wird aber nicht wieder auf die ursprüngliche angehoben.
Das Skript läuft dann in Dauerschleife, weil es irgendeine Form von Delay erkannt hat. `
Hi,da war ein Fehler in der Zuweisung für "NichtHM-Geräte".
Bitte tausche einmal folgenden Code aus. Feedback wäre super. Dann baue ich es für die nächste Version ein.
vG Looxer `
Hi Looxer,
läuft! … vielen Dank. Hab das Skript nun aktiv für alle Thermostate. Sollten noch einmal irgendwelche Merkwürdigkeiten auftreten gebe ich sofort Bescheid.
Vielen Dank für deinen Support!
Viele Grüße
PicNic
-
Hallo,
ich würde gerne die CCU Heizungsscripte durch dieses hier ersetzen. Hintergrund ist die bessere Möglichkeit Änderungen vorzunehmen.
Jetzt basieren die Events hier auf iCal. Abwesenheit, Feiertag und Urlaub laufen aber sehr gut über Variablen auf der CUU.
Muss ich einfach nur die Pfade auf die Rega Werte anpassen? z.B.
var StateUrlaubAbwesenheit ="rega.0.0815"; // Temperaturabsenkung wenn laengerer Urlaub eingetragen ist
Grüße
Brati
-
uss ich einfach nur die Pfade auf die Rega Werte anpassen? z.B. `
Hi,Die benannten Variablen sind im Script als spezielle states bezeichnet.
Die Subscriptions beruhen auf den User-Einstellungen (deshalb speziell)
-
Feiertag
-
Anwesenheit
-
ICAL
getestet habe ich es zwar nicht, sollte aber gehen.
Die Codestelle ist hier, falls interessant:
! ````
log("Heizungsscript verarbeitung benutzt Trigger und Events", "info");var subscribeIdList = [ StateFeiertagHeuteAdapter, StateAnwesenheitFunction, StateHeizperiode ]; if (UseFeiertagskalender === false) { subscribeIdList.push(ICALPath + "."+ EventG_Feiertag); } if (UseEventsGlobalParameter === true) { subscribeIdList.push(ICALPath + "."+ EventG_Party); subscribeIdList.push(ICALPath + "."+ EventG_UrlaubAbwesend); subscribeIdList.push(ICALPath + "."+ EventG_UrlaubAnwesend); subscribeIdList.push(ICALPath + "."+ EventG_Gaeste); } // Auf Änderungen einiger spezieller States reagieren on({id: subscribeIdList, change: 'ne'}, function(state) { if (debug) {log("Trigger nach Änderung für State " + state.id, "info");} TriggerUpdate(); });
! ````
Teste bitte mal. Rückmeldungen sind immer welcome
vG Looxer
-
-
Hmm,
so ganz blicke ich da noch nicht durch und habe auch folgendes Problem: Bei mir läuft ja die Variable Anwesenheit true = anwesend, false = abwesend und das Script reagiert ja auf Keiner_Da = true = abwesend.
Vielleicht ist es einfacher die Events in States auszulagern und per extra Script auf das Ändern der Variablen zu reagieren, also Anwesenheit = false schaltet dann javascript.0.Heizung.Keiner_Da auf true.
Na ich probiere es mal auf diesem Wege.
Grüße
Brati
-
so ganz blicke ich da noch nicht durch und habe auch folgendes Problem: Bei mir läuft ja die Variable Anwesenheit true = anwesend, false = abwesend und das Script reagiert ja auf Keiner_Da = true = abwesend. `
ja, das liegt daran, dass du dir die ICAL Events ansiehst.Nimm dieses hier: var StateAnwesenheitFunction = JSPath + "Anwesenheitssteuerung.Userlist.JemandDa";
Wenn der Status auf TRUE steht, dann ist anwesend.
Bei ICAL kannst du sowohl anwesend also auch abesend setzen. und bei abwesend = TRUE ist halt nicht anwesend.
Du brauchst keine eigenen Zwischenstates zu setzen
vG Looxer