NEWS
[Vorlage] Heizungsthermostatsteuerung 2.1 - Script
-
Danke schonmal für deine Antwort, nun bin ich soweit:
Definition des nicht HM-Thermostats:
NoneHMTab[3] = ['initial', 'ZWAVE.0', 'NODE2', 'Heat_1', 12];
wobei mein ioBroker Datenpunkt so aussieht:
zwave.0.NODE2.THERMOSTAT_SETPOINT.Heat_1
ist das korrekt, mir fehlt irgendwie das:
> THERMOSTAT_SETPOINT
wenn ich das Skript so starte steht folgendes im Log:
javascript.0 2018-03-27 16:15:42.511 warn at Object. (script.js.common.Heizung_2_0:420:9) javascript.0 2018-03-27 16:15:42.511 warn at LoopRooms (script.js.common.Heizung_2_0:755:5) javascript.0 2018-03-27 16:15:42.510 warn at setOwnState (script.js.common.Heizung_2_0:483:5) javascript.0 2018-03-27 16:15:42.500 warn State "javascript.0.Heizung.Heizplan.GlobaleParameter.Source_last_Program_Run" not found javascript.0 2018-03-27 16:15:42.493 info script.js.common.Heizung_2_0: Heizungsscript verarbeitung benutzt Trigger und Events javascript.0 2018-03-27 16:15:40.490 info script.js.common.Heizung_2_0: registered 0 subscriptions and 0 schedules javascript.0 2018-03-27 16:15:40.488 info script.js.common.Heizung_2_0: Routine GetDevices Devices initialisiert javascript.0 2018-03-27 16:15:40.459 info Start javascript script.js.common.Heizung_2_0
ich stehe gerade noch wie der Ochs vorm Berg und weiss nicht so recht wohin ich nun gucken muss
vielen Dank schonmal für jeden Tip!
Gruß
EDIT: woran würde ich denn erkennen ob das Skript geht, es sollte doch neue Objekte geben, korrekt? `
Also, wenn alles richtig ist, sollte in der LOG ein neues Device auftauchen.
So wie ich das sehe, hast du die Zeile falsch deklariert.
Versuche es mal so:
Ich nenne den Raum einmal "Schlafzimmer", da ich nicht weis, welchem Raum du den Thermostat zugeordnet hast.
NoneHMTab[1] = ['schlafzimmer', 'ZWAVE.0', 'NODE2', '4.SET_TEMPERATURE', 12];
Hier mal ein Auszug aus der Doku ( wenn man das nicht darf, dann bitte löschen):
` > Nicht-Homematic-Geräte
Nicht-Homematic Geräte werden über die Tabelle None-HM-Tab der Programmeinstellungen gelistet. Hintergrund ist, dass keine automatische Findung von Nicht-Homematic-Geräten vorgesehen ist. Damit brauchen auch keine Gewerkzuordnungen und Raumzuordnungen vorhanden sein. Anmerkung: idealerweise wird diese Funktion nicht benötigt. Sie wurde zum Testen hinzugefügt. So können beispielsweise virtuelle Thermostate definiert werden. Wenn ein Nicht-HM-Gerät in ioBroker korrekt mit Geräte-Definition, Raum- und Gewerkzuordnung angemeldet ist, dann sollte eine Erkennung inkl. Subscription möglich sein. (wenn die entsprechende Tabelle in den Experteneinstellungen konfiguriert ist) Für Nicht-Homematic Geräte werden folgende Daten benötigt:
Raum –> z.B. ['Schlafzimmer',
Adapter/Instance --> z.B. 'Zwave.0';
ID des Gerätes --> z.B. ZWA0183268';
Datenpunkt der Solltemperatur ' --> z.B. SET-TEMPERATURE' ;
Beispiel für die Konfiguration im Programm: var None-HM-Tab[]
None-HM-Tab[0] = ['Abstellraum', 'ZWAVE.0', 'zwa018xxx8', '4.SET_TEMPERATURE' ]
None-HM-Tab[1] = ['Abstellraum', 'javascript.0.Heizung', 'Geraete', '4.SET_TEMPERATURE' ]
None-HM-Tab[2] = [‘Schlafzimmer’, 'ZWAVE.0', 'zwa0183xxx', '4.SET_TEMPERATURE' ]
None-HM-Tab[3] = [‘Schlafzimmer’, 'ZWAVE.0', 'zwa0183xxx', '4.SET_TEMPERATURE' ]
Beispiel: Objektzusammensetzung
Aus den Spalten 1 – 3 wird die komplette ID zusammengesetzt. Die id aus dem Beispiel sieht dann so aus: Zwave.0. ZWA0183268. SET-TEMPERATURE. Dieser Pfad muss sich im Object – Tree von ioBroker 1:1 wiederfinden. `
Wenn du mal einen Screenshot von deiner Aufgeklappten Objektliste, wo man alles Thermostate widerrum aufgeklappt, der Z-Wave Schnittstelle sehen kann, könnte man den Pfad richtig sehen. Das wäre noch eine Hilfe, da hier noch einiges abgeht 8-)
-
anbei schon mal der Screenshot.
Raum ist
> Buero
, dieses ist auch in den Aufzählungen und im Skript vorhanden!Was ist denn nun genau mein Datenpunkt SollTemp? manuel muss/kann ich
Heat_1
unter````
zwave.0.NODE2.THERMOSTAT_SETPOINTDanke und Gruß [6556_node2.png](/assets/uploads/files/6556_node2.png)
-
anbei schon mal der Screenshot.
Raum ist
> Buero
, dieses ist auch in den Aufzählungen und im Skript vorhanden!Was ist denn nun genau mein Datenpunkt SollTemp? manuel muss/kann ich
Heat_1
unter````
zwave.0.NODE2.THERMOSTAT_SETPOINTDanke und Gruß `
Versuch es einmal so:
NoneHMTab[1] = ['Buero', 'ZWAVE.0', 'NODE2', 'THERMOSTAT_SETPOINT.HEAT_1', 12];
-
leider nein, hier der Ausschnitt aus dem Log:
` > javascript.0 2018-03-30 16:02:48.384 error at ContextifyScript.Script.runInContext (vm.js:59:29)javascript.0 2018-03-30 16:02:48.384 error at script.js.common.Heizung_2_0:338:1
javascript.0 2018-03-30 16:02:48.383 error at initializeData (script.js.common.Heizung_2_0:345:5)
javascript.0 2018-03-30 16:02:48.383 error at getDevices (script.js.common.Heizung_2_0:572:32)
javascript.0 2018-03-30 16:02:48.382 error TypeError: roomName.replace is not a function
javascript.0 2018-03-30 16:02:48.382 error ^
javascript.0 2018-03-30 16:02:48.381 error roomNoSpace = roomName.replace(/\s/g, "_");
javascript.0 2018-03-30 16:02:48.380 error script.js.common.Heizung_2_0: script.js.common.Heizung_2_0:572
javascript.0 2018-03-30 16:02:48.252 info Start javascript script.js.common.Heizung_2_0
javascript.0 2018-03-30 16:02:47.978 info Stop script script.js.common.Heizung_2_0 `
edie RoomList ist deaktiviert:
var UseRoomList = false; // Wenn testmodus werden nur die Angegebenen Raeume abgearbeitet
-
Hi,
javascript.0 2018-03-30 16:02:48.382 error TypeError: roomName.replace is not a function
javascript.0 2018-03-30 16:02:48.382 error ^ `
Du hast typos in das script gebracht. Das kann leider relativ leicht passieren.
Welche das sind kannst du einfach überprüfen.
Folgenden Link nutzen:
http://esprima.org/demo/validate.html
Dann den Code reinkopieren. Der Syntax Checker sagt dir an welchen Stellen es Probleme gibt.
vG Looxer
-
Ok, ich hab jetzt vieles versucht, um meine errechnete Solltemp irgendwie in das Script hier zu bringen, aber nichts hat geklappt. Leider auch das setzen auf die "manuelle" Solltemp. Denn dort wird alles nichtig, sobald die Zeit abgelaufen ist. Und bei einem erneuten setzten dieser manuellen Temp, reagiert es leider nicht mehr. Gerade bin ich ratlos, wie ich das hin bekomme…. `
Hi,
ich vermute folgendes.
Beim ersten mal sitzt die Variable Source_Timestamp auf init. Das heisst fuer das script, dass keine manuelle Temperatur eingestellt ist.
Ein setzen der Temperatur wird dann akzeptiert und es wird ein Zeitstempel gesetzt (aktuelle Zeit plus Anzahl Minuten (Gueltigkeit) laut Einstellung)
Beim zweiten mal sitzt vermutlich der Zeitstempel noch. Damit wird eine weitere manuelle Temperatur zwar aktzeptiert, die läuft aber mit dem vorher gesetzten Zeitstempel ab.
Du könntest probieren das Feld Source_TimeStamp mit einer neuen Gültigkeit zu versehen. Das Format muss so aussehen: 2018/03/31 16:54:34
Dann sollte das setzen einer neuen manuellen Temp kein Problem sein
vG Looxer
-
Was mich halt wundert, habe den Feiertag auf false gesetzt und trotzdem möchte er den Feiertag Adapter haben?
War das bei euch auch so? `
Hi,
Fehler habe ich gefunden. Ich denke, dass ich am Montag eine neue Version poste.
Vielen Dank für die Meldung.
vG Looxer
-
Was mich halt wundert, habe den Feiertag auf false gesetzt und trotzdem möchte er den Feiertag Adapter haben?
War das bei euch auch so?
Hi,Fehler habe ich gefunden. Ich denke, dass ich am Montag eine neue Version poste.
Vielen Dank für die Meldung.
vG Looxer
Das klingt sehr gut. Danke. Sind in der neuen Version dann alle Neuerungen enthalten?
Wäre es eventuell einen Punkt einzufügen, damit man eine solltempvorgabe an den Regler senden kann? Sprich, dass mein anderes Script die neue Solltempvorgabe in dein Script schreiben kan? Denn leider funktioniert das so mit der manuellen Vorgabe nicht. Danke.
-
Sind in der neuen Version dann alle Neuerungen enthalten? `
Hi,folgende Bugfixes und Ergänzungen sind enthalten:
// Version 2.00b03 10.02.2018 - dritte Beta //.............................Manuelle Temperaturen werden bei Scriptstart ignoriert/zurückgesetzt //.............................Thermostabtypetab Position 4 auf Position 8 (nach den Wandthermosteten) verschoben //.............................NoneHMTab - Fuellen der Position 12 in Controltab falsch (mit 0 ersetzt) //.............................Bei gleichen Zeiten im schedule von verschiedenen Räumen kam es dazu, dass nicht geschaltet wurde. Eine Zeitverzögerung eingebaut //.............................externe Dateiausgabe bei manuellen Aenderungen hinzugefügt (writelog) //.............................Fehler in Routine Sensor Change bei direktvernuepften Fenstersensoren beseitigt. //.............................Fehler bei den Subscriptions fuer Feiertage fuehrte zu Warnmeldungen, wenn kein Feiertagsadapter genutzt wurde
Wäre es eventuell einen Punkt einzufügen, damit man eine solltempvorgabe an den Regler senden kann? Sprich, dass mein anderes Script die neue Solltempvorgabe in dein Script schreiben kan? Denn leider funktioniert das so mit der manuellen Vorgabe `
ich denke, dass das mit den jetzingen Mitteln gehen sollte.
Dabei muessen 2 Datenpunkte beachtet werden.
View_Manually_Adjusted - hier kann die Temperatur eingegeben werden
View_ManTemp_Validity - hier muss die Ablaufzeit der Temp eingestellt werden: Das Format muss so aussehen: 2018/03/31 16:54:34
kannst du das mal probieren ?
vG Looxer
-
Sind in der neuen Version dann alle Neuerungen enthalten? `
Hi,folgende Bugfixes und Ergänzungen sind enthalten:
// Version 2.00b03 10.02.2018 - dritte Beta //.............................Manuelle Temperaturen werden bei Scriptstart ignoriert/zurückgesetzt //.............................Thermostabtypetab Position 4 auf Position 8 (nach den Wandthermosteten) verschoben //.............................NoneHMTab - Fuellen der Position 12 in Controltab falsch (mit 0 ersetzt) //.............................Bei gleichen Zeiten im schedule von verschiedenen Räumen kam es dazu, dass nicht geschaltet wurde. Eine Zeitverzögerung eingebaut //.............................externe Dateiausgabe bei manuellen Aenderungen hinzugefügt (writelog) //.............................Fehler in Routine Sensor Change bei direktvernuepften Fenstersensoren beseitigt. //.............................Fehler bei den Subscriptions fuer Feiertage fuehrte zu Warnmeldungen, wenn kein Feiertagsadapter genutzt wurde
Wäre es eventuell einen Punkt einzufügen, damit man eine solltempvorgabe an den Regler senden kann? Sprich, dass mein anderes Script die neue Solltempvorgabe in dein Script schreiben kan? Denn leider funktioniert das so mit der manuellen Vorgabe `
ich denke, dass das mit den jetzingen Mitteln gehen sollte.
Dabei muessen 2 Datenpunkte beachtet werden.
View_Manually_Adjusted - hier kann die Temperatur eingegeben werden
View_ManTemp_Validity - hier muss die Ablaufzeit der Temp eingestellt werden: Das Format muss so aussehen: 2018/03/31 16:54:34
kannst du das mal probieren ?
vG Looxer `
Also ich habe jetzt einmal folgendes gemacht:
1. Ich lasse alle 2 Stunden das aktuelle Datum per kleinem Script auf "View_ManTemp_Validity" senden.
2. Die Gültigkeit habe ich in deinem Script einmal mir 23 Stunden angegeben.
3. Die "neue Solltempvorgabe" lasse ich alle 15 Minuten nun zu deinem Script unter "View_Manually_Adjusted" senden.
Ich werde das mal einfach heute so laufen lassen und Morgen, oder heute Abend einmal berichten, wie der Verlauf und die Temperaturkurven aussehen.
Ich hätte da noch eine Frage:
In wie weit greift die manuelle Temperaturvorgabe in deinem Script eigentlich den Rest an? Also Wenn man immer eine manuelle Temeratur setzt, was wird dadurch alles beeinträchtigt ( Kalender, Abwesenheit, Fenstererkennung,…. )?
Muss der Button " Anwesenheit" immer da sein?
-
Also, ich hab das jetzt einmal versuchsweise laufen lassen und auch einmal mit den Zeiten gespielt, aber es gibt mit dieser Möglichkeit leider viele Probleme:
1. Wenn eine manuelle Temp gestellt ist, wird der Wochenplan ausser Kraft gesetz.
2. Es ist wirklich sehr schwierig alles Zeitlich aufeinander abzustimmen und es kommt sehr oft zu zeitlichen Verschiebungen.
Es wäre wirklich geschickter, auf eine State zu schreiben, die von deinem Script verwendet wird und dein Script auf den Regler schreibt.
-
Es wäre wirklich geschickter, auf eine State zu schreiben, die von deinem Script verwendet wird und dein Script auf den Regler schreibt. `
Hi,dann verstehe ich die Logik noch nicht so ganz. Manuelle Temp und Wochenplan sind ja 2 unterschiedliche Dinge.
Was soll denn das Kriterium sein für die Rückkehr vom Wochenplan ?
vG Looxer
-
Es wäre wirklich geschickter, auf eine State zu schreiben, die von deinem Script verwendet wird und dein Script auf den Regler schreibt. `
Hi,dann verstehe ich die Logik noch nicht so ganz. Manuelle Temp und Wochenplan sind ja 2 unterschiedliche Dinge.
Was soll denn das Kriterium sein für die Rückkehr vom Wochenplan ?
vG Looxer `
Guten Morgen,
Ich versuche es einmal zu erklären:
1. Dein Script ist der Hauptteil. Es setzt die Temperaturen über den Wochenplan
2. Ich greife die aktuelle einzustellende Temp von deinem Script ab und rechne die Temperatur um ( mittels eines anderen Scriptes )
3. Da dein Script die Temperatur zum Regler sendet, muss ich die neu errechnete Temp wieder in dein Script integrieren, somit kann dein Script die Temp wieder zum Regler senden und dein Script ganz normal weiter arbeiten.
4. Du sendest ja an einer Zentralen Stelle alle Temp´s zu den Reglern, dies müsste auf einen State gesetzt werden. Und ein weiteres State hinzugefügt werden wo dein Script noch eine neue Temp bekommt, die es dann anstatt der Tempvorgabe in deinem Script zum senden an den Regler nimmt.
Also kurz gesagt: Dein Script gibt die Tempvorgabe und sendet sie auf einem State, nennen wir ihn einmal AUSGANG, diesen AUSGANG verwende ich und schicke die verarbeitet Temp wieder auf einen State, nennen wir ihn EINGANG. Und erst dann schickt dein Script den EINGANG an die Regler. Somit sendet dein Script nur die Temp des State EINGANG an die Regler. Das ganze andere Script sollte unberührt weiter funktionieren.
Etwas kompliziert das ganze, aber ich versuche gerade eine Regelung aufzubauen.
-
3. Da dein Script die Temperatur zum Regler sendet, muss ich die neu errechnete Temp wieder in dein Script integrieren, somit kann dein Script die Temp wieder zum Regler senden und dein Script ganz normal weiter arbeiten. `
Der im PI-Regler-Script errechnete Sollwert sollte direkt zum Thermostaten gesendet werden, d.h. dieser Thermostat sollte aus dem Skript von @Looxer ausgeklammert werden (aus Gewerk entfernen). -
Also kurz gesagt: Dein Script gibt die Tempvorgabe und sendet sie auf einem State, `
Hi,also, dann sollte das so funktionieren.
Relevante Datenpunkte
die aktuell geplante Temperatur (lt Wochenplan) befindet sich in Feld: Source_Last_Temp
Die manuell eingegebene Temp befindet sich in Feld: View_Manually_Adjusted
Vorrausetzung:
Du stellst im View die Dauer der manuellen Temp auf "0". Damit wird erst beim nächsten Planwechsel eine neue Temp lt Wochenplan eingestellt.
1. Dein Programm nimmt die aktuell geplante Temp: Source_Last_Temp und errechnet die neue Temp nach deinen Vorgaben
2. Die von dir neu errechnete Temp wird von deinem Script in View_Manually_Adjusted eingestellt
3. Beim nächsten geplanten Wechsel setzt das Heizungsscript die View_Manually_Adjusted auf "0"
4. Über Subscription fängt dein script diese Aenderung ab (wenn auf null gesetzt) und startet erneut mit Schritt 1
oder hattest du das so schon probiert ?
vG Looxer
-
Hi,
in der letzten Zeit gab es ja ein paar Korrekturen zum Script.
Diese habe ich in Beta 03 Version 20b03 zusammengefasst.
ChangeLog:
// Version 2.00b03 02.04.2018 - dritte Beta //.............................Manuelle Temperaturen werden bei Scriptstart ignoriert/zurückgesetzt //.............................Thermostabtypetab Position 4 auf Position 8 (nach den Wandthermosteten) verschoben //.............................NoneHMTab - Fuellen der Position 12 in Controltab falsch (mit 0 ersetzt) //.............................Bei gleichen Zeiten im schedule von verschiedenen Räumen kam es dazu, dass nicht geschaltet wurde. Eine Zeitverzögerung eingebaut //.............................externe Dateiausgabe bei manuellen Aenderungen hinzugefügt (writelog) //.............................Fehler in Routine Sensor Change bei direktvernuepften Fenstersensoren beseitigt. //.............................Fehler bei den Subscriptions fuer Feiertage fuehrte zu Warnmeldungen, wenn kein Feiertagsadapter genutzt wurde //
Wer das Script bereits nutzt muss lediglich alles nach den Experteneinstellungen kopieren.
Alle Einstellungen können also aus der Vorversion übernommen werden.
Ich empfehle die vorherige Version eine zeitlang als Sicherung zu behalten. (deaktiviert natürlich)
Das angepasste Programm befindet sich, wie immer, im ersten Post und kann dort heruntergeladen werden.
vG Looxer
-
Also, ich habe heute wieder mal etwas experimentiert, aber leider führen beide Lösungswege nicht zum Erfolg.
Bei deinem Lösungsvorschlag, kann ich Zeitlich gesehen ja nicht alle ( sagen wir einfach einmal ) 15 Minuten auf den Regler schreiben. Da man ja immer warten müsste bis eine neue Temp seitens deines Wochenprogrammes angewählt wird.
Deinen Lösungsansatz habe ich auch versucht, jedoch funktioniert dann das Heizungsscript nicht mehr, da er keine Regler erkennt.
-
Bei deinem Lösungsvorschlag, kann ich Zeitlich gesehen ja nicht alle ( sagen wir einfach einmal ) 15 Minuten auf den Regler schreiben. Da man ja immer warten müsste bis eine neue Temp seitens deines Wochenprogrammes angewählt wird. `
Wieso musst du warten auf die Umschaltung der Temperatur des Planes ? Du kannst jederzeit eine manuelle Temp setzen.Nur wird diese zum nächsten Schaltpunkt wieder zurückgesetzt. Daher die Idee das über eine subscription zu machen.
So kannst du abhängig von deiner Logik eine Temp setzen oder nicht, und zwar auch zum Zeitpunkt wenn die nächste Temp wieder vom Script gesetzt wurde.
vG Looxer
-
Deinen Lösungsansatz habe ich auch versucht, jedoch funktioniert dann das Heizungsscript nicht mehr, da er keine Regler erkennt. `
Das kann ich zwar nicht nachvollziehen, aber dann versuche mal die brachiale Methode mit Austausch der stateId vor Zeile 494.if(stateId == 'hm-rpc.1.OEQ1712335.4.MANU_MODE') stateId = 'javascript.0.Heizung.Schlafzimmer.Solltemperatur'; setState(stateId, val);
Ich denke, dass an "MANU_MODE" und nicht an "SET_TEMPERATURE" gesendet wird ?
-
Also ich hab es jetzt einmal so:
Bei deinem Lösungsvorschlag, kann ich Zeitlich gesehen ja nicht alle ( sagen wir einfach einmal ) 15 Minuten auf den Regler schreiben. Da man ja immer warten müsste bis eine neue Temp seitens deines Wochenprogrammes angewählt wird. `
Wieso musst du warten auf die Umschaltung der Temperatur des Planes ? Du kannst jederzeit eine manuelle Temp setzen.Nur wird diese zum nächsten Schaltpunkt wieder zurückgesetzt. Daher die Idee das über eine subscription zu machen.
So kannst du abhängig von deiner Logik eine Temp setzen oder nicht, und zwar auch zum Zeitpunkt wenn die nächste Temp wieder vom Script gesetzt wurde.
vG Looxer `
So sieht mein Regelscript momentan aus, anders bekomme ich es leider nicht hin. Ich stell mich da wohl zu sehr an. Bei dem Regelscript hat mir paul53 schon sehr geholfen.Es wartet und wenn eine "0" gemeldet wird, sagt er das auch in der LOG, jedoch schickt das Script dann erst nach der eingestellten Zeit ( 10 Minuten ) den neuen Wert an dein Heizscript.
! ````
// PI-Regler Raumheizung für Kaskade Raumsensor - HKT-Temperatur
! var idHeizscript = 'javascript.0.Heizung.Heizplan.Schlafzimmer.View_Manually_Adjusted';
! // Trigger neue temperatur
on(idHeizscript, function (obj) {
if (obj.state.val === 0) {
log('Trigger neue Temperaturvorgabe');
}
});
! // P-Band in K, Nachstellzeit in s
const Xp = 4;
const Tn = 2400; // 120 entspricht 30 Sekunden
! const yid = 'javascript.0.Heizung.Heizplan.Schlafzimmer.View_Manually_Adjusted'; // neue Temperaturvorgabe ( Ausgang PI-Regler ) an Heizscript
const xid = 'hm-rpc.1.CUX1200001.1.TEMPERATURE'; // gemessene Temperatur ( Sensor ) Extern
const wid = 'javascript.0.Heizung.Heizplan.Schlafzimmer.Source_Last_Temp'; // gesetzte Temperatur ( Heizungsscript ) von Heizscript
! const PI = require('pi-controller');
! var pi = new PI(Xp, Tn);
pi.setOutputMax(5.0); // default: OutputMax = 100
! function control() {
var x = getState(xid).val; // Istwert in °C
var w = getState(wid).val; // Sollwert in °C
var y = pi.Control(w - x) - 2; // +3 / -2 Grad
y = Math.round(2 * (w + y)) / 2; // Auflösung 0,5 Grad (Thermostat)
setState(yid, y);
}
! control(); // Script start
// on() auskommentiert, denn es soll nur alle 10 Minuten an Thermostat gesendet werden
// on(xid, control);
// on(wid, control);
! var timer = null;
if (Tn) {
timer = setInterval(control, 250 * Tn );
}
else {
if (timer) {
clearInterval(timer);
timer = null;
}
}
!@paul53: Meinst du diesen Absatz hier im Heizungsscript? >! ```` function subscribeUserTab() { for (var x in UserExitTab ) { if (UserExitTab[x][0] === "initial" ) { continue; } var subscribeObj = {id: UserExitTab[x][0]}; switch (UserExitTab[x][2]) { case "valNe": case "valGt": case "valGe": case "valLt": case "valLe": case "val": subscribeObj[UserExitTab[x][2]] = UserExitTab[x][3]; break; case "any": subscribeObj.change = "any"; break; } on(subscribeObj, function(obj) { UserExitPrep(obj.id, obj.state.val); }); // ende on id } // Endfor }
Zeile 494 wäre dann folgender Absatz (Zeile 489 - 493):
!
function subscribeUserTab() { for (var x in UserExitTab ) { if (UserExitTab[x][0] === "initial" ) { continue; } !
Ich weis, ich kann nervig sein, aber ich bin für eure große Hilfe wirklich dankbar, da ich mich dafür wirklich interessiere, aber leider noch sehr am lernen bin. Ich kann mich nur immer wieder bei euch bedanken.