NEWS
Fehler in meinem Skript
-
Hallo zusammen,
bisher hab ich meine Programme mit Blockly erstellt. Seit kurzem beschäftige ich mich mit Javascript.
Versuche mittels Anleitungen, Beispiele aus dem Internet das Ganze zu lernen.Das angefügten Skript macht eigentlich genau das was es soll (ohne Fehlermeldungen)
Jedoch gibt es zwei rot Unterstrichene Befehle. Woran die Probleme liegen verstehe ich nicht. Kann mir jemand helfen?Zeile 40: replaceAll
Wenn ich replace verwenden würde gäbe es keine Fehleranzeige. Ich möchte aber sämtliche "_" durch Leerzeichen ersetzten. Zur besseren Lesbarkeit hab ich das replaceAll anstelle replace in einer Schleife verwendet.
Kann ich da bedenkenlos die Fehlermeldung ausblenden?Zeile 70: Die Variable Common im createState
Wenn ich den Code von Zeile 61 bis 81 in einer Funktion packe, scheint dieser in Ordnung zu sein
In Zeile 100 habe ich den selben Befehl erneut , dort scheint dieser in Ordnung zu sein?
Kann / sollte man bei Variablen, so wie bei States die type definieren? Vermutlich braucht es hier Object...const Ist = [ // Objekt ID Common //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ['00 Aktuell.0000 Außen', {'name':'τx- 0000', 'type':'number', 'unit':'°C' }], ['00 Aktuell.0100 Wohnraum', {'name':'τx- 0100', 'type':'number', 'unit':'°C' }], ['00 Aktuell.0101 Wohnraum (Air Quality Monitor)', {'name':'τx- 0101', 'type':'number', 'unit':'°C' }], ['00 Aktuell.0200 Zimmer Klein', {'name':'τx- 0200', 'type':'number', 'unit':'°C' }], ['00 Aktuell.0300 Zimmer Groß', {'name':'τx- 0300', 'type':'number', 'unit':'°C' }], ['00 Aktuell.0301 Zimmer Groß (Air Quality Monitor)', {'name':'τx- 0301', 'type':'number', 'unit':'°C' }], ['00 Aktuell.0400 Badezimmer', {'name':'τx- 0400', 'type':'number', 'unit':'°C' }] ]; const IstMin = [ // Objekt ID Reset täglich (0:00) Reset bei Skriptstart Common //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ['01 Tages Minimum.0000 Außen', true, false, {'name':'τx↓ 0000', 'type':'number', 'unit':'°C' }], ['01 Tages Minimum.0100 Wohnraum', true, false, {'name':'τx↓ 0100', 'type':'number', 'unit':'°C' }], ['01 Tages Minimum.0101 Wohnraum (Air Quality Monitor)', true, false, {'name':'τx↓ 0101', 'type':'number', 'unit':'°C' }], ['01 Tages Minimum.0200 Zimmer Klein', true, false, {'name':'τx↓ 0200', 'type':'number', 'unit':'°C' }], ['01 Tages Minimum.0300 Zimmer Groß', true, false, {'name':'τx↓ 0300', 'type':'number', 'unit':'°C' }], ['01 Tages Minimum.0301 Zimmer Groß (Air Quality Monitor)', true, false, {'name':'τx↓ 0301', 'type':'number', 'unit':'°C' }], ['01 Tages Minimum.0400 Badezimmer', true, false, {'name':'τx↓ 0400', 'type':'number', 'unit':'°C' }] ]; const IstMax = [ // Objekt ID Reset täglich (0:00) Reset bei Skriptstart Common //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ['02 Tages Maximum.0000 Außen', true, false, {'name':'τx↑ 0000', 'type':'number', 'unit':'°C' }], ['02 Tages Maximum.0100 Wohnraum', true, false, {'name':'τx↑ 0100', 'type':'number', 'unit':'°C' }], ['02 Tages Maximum.0101 Wohnraum (Air Quality Monitor)', true, false, {'name':'τx↑ 0101', 'type':'number', 'unit':'°C' }], ['02 Tages Maximum.0200 Zimmer Klein', true, false, {'name':'τx↑ 0200', 'type':'number', 'unit':'°C' }], ['02 Tages Maximum.0300 Zimmer Groß', true, false, {'name':'τx↑ 0300', 'type':'number', 'unit':'°C' }], ['02 Tages Maximum.0301 Zimmer Groß (Air Quality Monitor)', true, false, {'name':'τx↑ 0301', 'type':'number', 'unit':'°C' }], ['02 Tages Maximum.0400 Badezimmer', true, false, {'name':'τx↑ 0400', 'type':'number', 'unit':'°C' }], ]; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Verzeichnis Datenpunkte: // @ts-ignore const Skript = (instance == 0 ? '.' : '.Test.') + scriptName.slice(10).replaceAll('_', ' ') + ('.'); const idAlias = 'alias.0' + Skript; const idState = '0_userdata.0' + Skript; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Berechnung Taupunkt: /** * @param {string} idT * @param {string} idH */ function Taupunkt(idT, idH) { let T = getState(idT).val; let H = getState(idH).val; let DEW = 243.12 * ((((17.62 * T) / (243.12 + T)) + (Math.log(H / 100))) / (((17.62 * 243.12) / (243.12 + T)) - (Math.log(H / 100)))); return Math.round(DEW * 10) / 10; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Skript-Datenpunkte Taupunkt Istwert erzeugen und aktualisieren for (let i = 0; i <= Ist.length - 1; i++) { let ID = idState + Ist[i][0]; let idT = idAlias.slice(0, idAlias.lastIndexOf('03 Taupunkt')) + '01 Temperatur.10 Istwert.00 Aktuell' + ID.slice(ID.lastIndexOf('.')); let idH = idAlias.slice(0, idAlias.lastIndexOf('03 Taupunkt')) + '02 Feuchtigkeit.10 Istwert.00 Aktuell' + ID.slice(ID.lastIndexOf('.')); let Wert = Taupunkt(idT, idH) let Common = Ist[i][1]; // Datenpunkt Taupunkt Istwert erzeugen falls es ihn noch nicht gibt if (!existsState(ID)) { createState(ID, Wert, Common); // Datenpunkt Taupunkt Istwert aktualisieren falls sich der Wert geändert hat } else if (getState(ID).val != Wert) { setState(ID, Wert, true); } // Trigger Temperatur oder Feuchtigkeit haben sich geändert → Datenpunkt Taupunkt Istwert aktualisieren on({ id: [].concat(idT).concat(idH), change: "ne" }, function (obj) { setState(ID, Taupunkt(idT, idH), true) }); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Skript-Datenpunkte Istwert Minimum / Maximum erzeugen und aktualisieren: //Wartezeit bis Skript-Datenpunkte IST-Taupunkt erstellt wurden setTimeout(function () { let resetDayList = [] for (let i = 0; i <= 1; i++) { let ListeID = [IstMin, IstMax][i]; for (let i2 = 0; i2 <= ListeID.length - 1; i2++) { let ID = idState + ListeID[i2][0]; let Wert = idState + '00 Aktuell' + ID.slice(ID.lastIndexOf('.')); let Common = ListeID[i2][3] let resetDay = ListeID[i2][1]; let resetStart = ListeID[i2][2]; // Datenpunkt Min-bzw.Max- Wert erzeugen falls es ihn noch nicht gibt if (!existsState(ID)) { createState(ID, getState(Wert).val, Common); // Min-bzw.Max- Wert resettieren falls 'Reset täglich' angewählt ist, Wert vom vorherigen Tag ist und der aktuelle Istwert vom Min-bzw.Max- Wert abweicht } else if (resetDay && formatDate(getDateObject(getState(ID).ts), "DD.MM.YYYY") != formatDate(new Date(), "DD.MM.YYYY") && getState(Wert).val != getState(ID).val) { setState(ID, getState(Wert).val, true); // Min-bzw.Max- Wert resettieren falls 'Reset bei Skriptstart' angewählt ist und der aktuelle Istwert vom Min-bzw.Max- Wert abweicht } else if (resetStart && getState(Wert).val != getState(ID).val) { setState(ID, getState(Wert).val, true); // Min-Wert aktualisieren falls der aktuelle Istwert geringer ist bzw. Max-Wert aktualisieren falls der aktuelle Istwert höher ist } else if (i == 0 && getState(Wert).val < getState(ID).val || i == 1 && getState(Wert).val > getState(ID).val) { setState(ID, getState(Wert).val, true); } // Trigger Istwert hat sich geändert → Min-Wert aktualisieren falls der aktuelle Istwert geringer ist bzw. Max-Wert aktualisieren falls der aktuelle Istwert höher ist on({ id: Wert, change: 'ne' }, function (obj) { if (i == 0 && getState(obj.id).val < getState(ID).val || i == 1 && getState(obj.id).val > getState(ID).val) { setState(ID, getState(Wert).val, true); } }); // Falls 'Reset täglich' beim betreffenden Min-bzw.Max- Wert angewählt ist, Diesen und dazugehörigen Istwert auflisten. if (resetDay) { resetDayList.push([ID, Wert]); } } } // Trigger 00:00 Uhr → Alle Min-bzw.Max- Werte laut Liste auf dem aktuellen Istwert setzen schedule("0 0 * * *", function () { for (let i = 0; i <= resetDayList.length - 1; i++) { let ID = resetDayList[i][0]; let Wert = getState(resetDayList[i][1]).val; if (getState(ID).val != Wert) { setState(ID, Wert, true); } } }); }, 500);
-
@dan78 sagte: Zeile 40: replaceAll
Kennt die Prüfung des Editors offenbar nicht: Ignorieren!
... oder ersetzen durchreplace(/_/g, ' ')