@ilovegym
Kann ich bestätigen...... jemand eine Idee wie man es fixen kann?
Ich denke ihr habt vergessen im Array "Gruppen" etwas für den Status zu setzten. Hier muss mindestens eines der Felder 9-18 befüllt sein. Im Biespiel von @ahfreezer müsste die Zeile so aussehen:
var Gruppen = [];
// 1.Homematic ID, 2.Thema(no spaces) 3.History 4.DAY 5.Week 6.Month 7.Year 8.Switch 9 - 18 Status to log 19.stop 20.Loesch
Gruppen[ 0] = ['hm-rpc.0.NEQ1678963' ,'HM_Gas_ping' ,true ,true ,true ,true ,true ,true ,'true' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,false ,false]; //
Wo bei das true natürlich passend ersetzt werden muss. (Siehe die Beschreibung des Punktes)
Gruß,
dsiggi
@looxer01
Hallo,
ich habe heute iobroker auf einem Raspberry Pi 4 neu installiert und bin verzweifelt auf der Suche wie ich die historischen Daten des BSZ übertragen kann.
Hat jemand eine Ahnung in welcher Datei diese Daten zu finden sind?
Danke vorab!
Liebe Leute,
eine Frage hab ich zu dem Pfad der Daten. Die liegen ja unter javascript.0. und dann die Pfade die man ja eintragen kann.
Wie bekomm' ich meine Objekte in den Ordner "0_userdata.0."??
Dort liegen bei meiner neuen Installation alle selbst generierten Infos drinnen und da würde ich auch gerne die BSZ Daten drinnen haben, nur bekomm' ich den Pfad nicht von javascript.0. weg....
Liebe Grüße
Tom
@etv
falls noch nicht bekannt: mit JS >=4.6.1 funktioniert es. Habe ich gerade getestet
var sysLocation = "0_userdata.0.BSZ.System";
@andi2055 , ja danke dir hab ich gelesen.
Ich hab mich in der Zwischenzeit daran "gewöhnt", dass diese Werte wo anders zu finden sind
Liebe Grüße
Tom
Da es mit dem BSZ unteranderem das WEEK.BEFORE gibt, hab ich mal das Script mit der Anleitung umzusetzen versucht.
EDIT: Problem gelöst
@Kampfratte ja, das ist bei mir auch.
Hab zum Glück nur noch ein Datenpunkt drin, den ich mittlerweile anders auswerte...
@ilovegym
Kann ich bestätigen...... jemand eine Idee wie man es fixen kann?
bekomme beim Update des JS-Adapters folgende Fehlermeldung!
Unter dem Namen "Gasrechner" im JS Adapter, läuft dein Betriebsstundenzähler. Hast Du eine Idee was da schief läuft?
2020-11-08 18:13:54.600 - error: javascript.0 (10717) script.js.common.Gasrechner: TypeError: Cannot set property '_ioBroker' of null
2020-11-08 18:13:54.601 - error: javascript.0 (10717) at schedule (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1296:36)
2020-11-08 18:13:54.602 - error: javascript.0 (10717) at script.js.common.Gasrechner:448:1
2020-11-08 18:13:54.603 - error: javascript.0 (10717) at script.js.common.Gasrechner:2943:3
2020-11-08 18:13:54.603 - error: javascript.0 (10717) at Script.runInContext (vm.js:130:18)
Hi,
wenn ihr die schedule funktion nicht nutzt, dann habe ich einen quick fix in dem ihr die Zeile "schedule...." wie unten auskommentiert.
vG Looxer
// Part 1.4 Definition der Trigger und schedule aufgrund der Einstellungstabellen
// ------------------------T R I G G E R -------------------------------------------------------
// achtung fehler im schedule
const ONSub = [];
for (let x = 0; x < Gruppen.length; x++) {
// const IDNR = OnIdTAB[x];
const GRPNummer = x ;
ONSub.push(on(OnIdTAB[x], (obj) => GeraetUpdate(GRPNummer)));
if (special[x][10] !== '' ) {
log( " special ") + (special[x][10] )
// schedule(special[x][10], function(obj) { log("BSZ-Schedule aufgerufen","info"); GeraetUpdate(GRPNummer); }); // end of schedule
}
}
Hi Looxer01, danke Dir!
Was macht genau die "schedule" Funktion?
Ich habe gesehen, dass sich bei mir der Tages-Stromverbrauch um 0:00 Uhr nicht auf null stellt. Hängt damit die "schedule" Funktion zusammen?
Part 1.4 sieht in meinem Script etwas anderes aus... Hab ich da noch eine alte Version?
// Part 1.4 Definition der Trigger und schedule aufgrund der Einstellungstabellen
// ------------------------T R I G G E R -------------------------------------------------------
on({id: OnIdTAB[0 ], valNe: 1000 }, function(obj) { if(special[0][7] === true) { if (obj.state.ack) { GeraetUpdate( 0 ); } } else { if(obj.state.ack === false) { GeraetUpdate( 0 ); } } }); // ende on id
on({id: OnIdTAB[1 ], valNe: 1000 }, function(obj) { if(special[1][7] === true) { if (obj.state.ack) { GeraetUpdate( 1 ); } } else { if(obj.state.ack === false) { GeraetUpdate( 1 ); } } }); // ende on id
on({id: OnIdTAB[2 ], valNe: 1000 }, function(obj) { if(special[2][7] === true) { if (obj.state.ack) { GeraetUpdate( 2 ); } } else { if(obj.state.ack === false) { GeraetUpdate( 2 ); } } }); // ende on id
on({id: OnIdTAB[3 ], valNe: 1000 }, function(obj) { if(special[3][7] === true) { if (obj.state.ack) { GeraetUpdate( 3 ); } } else { if(obj.state.ack === false) { GeraetUpdate( 3 ); } } }); // ende on id
on({id: OnIdTAB[4 ], valNe: 1000 }, function(obj) { if(special[4][7] === true) { if (obj.state.ack) { GeraetUpdate( 4 ); } } else { if(obj.state.ack === false) { GeraetUpdate( 4 ); } } }); // ende on id
on({id: OnIdTAB[5 ], valNe: 1000 }, function(obj) { if(special[5][7] === true) { if (obj.state.ack) { GeraetUpdate( 5 ); } } else { if(obj.state.ack === false) { GeraetUpdate( 5 ); } } }); // ende on id
on({id: OnIdTAB[6 ], valNe: 1000 }, function(obj) { if(special[6][7] === true) { if (obj.state.ack) { GeraetUpdate( 6 ); } } else { if(obj.state.ack === false) { GeraetUpdate( 6 ); } } }); // ende on id
on({id: OnIdTAB[7 ], valNe: 1000 }, function(obj) { if(special[7][7] === true) { if (obj.state.ack) { GeraetUpdate( 7 ); } } else { if(obj.state.ack === false) { GeraetUpdate( 7 ); } } }); // ende on id
on({id: OnIdTAB[8 ], valNe: 1000 }, function(obj) { if(special[8][7] === true) { if (obj.state.ack) { GeraetUpdate( 8 ); } } else { if(obj.state.ack === false) { GeraetUpdate( 8 ); } } }); // ende on id
on({id: OnIdTAB[9 ], valNe: 1000 }, function(obj) { if(special[9][7] === true) { if (obj.state.ack) { GeraetUpdate( 9 ); } } else { if(obj.state.ack === false) { GeraetUpdate( 9 ); } } }); // ende on id
on({id: OnIdTAB[10], valNe: 1000 }, function(obj) { if(special[10][7] === true) { if (obj.state.ack) { GeraetUpdate(10); } }else { if(obj.state.ack === false) { GeraetUpdate(10); } } }); // ende on id
on({id: OnIdTAB[11], valNe: 1000 }, function(obj) { if(special[11][7] === true) { if (obj.state.ack) { GeraetUpdate(11); } }else { if(obj.state.ack === false) { GeraetUpdate(11); } } }); // ende on id
on({id: OnIdTAB[12], valNe: 1000 }, function(obj) { if(special[12][7] === true) { if (obj.state.ack) { GeraetUpdate(12); } }else { if(obj.state.ack === false) { GeraetUpdate(12); } } }); // ende on id
on({id: OnIdTAB[13], valNe: 1000 }, function(obj) { if(special[13][7] === true) { if (obj.state.ack) { GeraetUpdate(13); } }else { if(obj.state.ack === false) { GeraetUpdate(13); } } }); // ende on id
on({id: OnIdTAB[14], valNe: 1000 }, function(obj) { if(special[14][7] === true) { if (obj.state.ack) { GeraetUpdate(14); } }else { if(obj.state.ack === false) { GeraetUpdate(14); } } }); // ende on id
on({id: OnIdTAB[15], valNe: 1000 }, function(obj) { if(special[15][7] === true) { if (obj.state.ack) { GeraetUpdate(15); } }else { if(obj.state.ack === false) { GeraetUpdate(15); } } }); // ende on id
on({id: OnIdTAB[16], valNe: 1000 }, function(obj) { if(special[16][7] === true) { if (obj.state.ack) { GeraetUpdate(16); } }else { if(obj.state.ack === false) { GeraetUpdate(16); } } }); // ende on id
on({id: OnIdTAB[17], valNe: 1000 }, function(obj) { if(special[17][7] === true) { if (obj.state.ack) { GeraetUpdate(17); } } else { if(obj.state.ack === false) { GeraetUpdate(17); } } }); // ende on id
on({id: OnIdTAB[18], valNe: 1000 }, function(obj) { if(special[18][7] === true) { if (obj.state.ack) { GeraetUpdate(18); } } else { if(obj.state.ack === false) { GeraetUpdate(18); } } }); // ende on id
on({id: OnIdTAB[19], valNe: 1000 }, function(obj) { if(special[19][7] === true) { if (obj.state.ack) { GeraetUpdate(19); } } else { if(obj.state.ack === false) { GeraetUpdate(19); } } }); // ende on id
on({id: OnIdTAB[20], valNe: 1000 }, function(obj) { if(special[20][7] === true) { if (obj.state.ack) { GeraetUpdate(20); } } else { if(obj.state.ack === false) { GeraetUpdate(20); } } }); // ende on id
on({id: OnIdTAB[21], valNe: 1000 }, function(obj) { if(special[21][7] === true) { if (obj.state.ack) { GeraetUpdate(21); } } else { if(obj.state.ack === false) { GeraetUpdate(21); } } }); // ende on id
on({id: OnIdTAB[22], valNe: 1000 }, function(obj) { if(special[22][7] === true) { if (obj.state.ack) { GeraetUpdate(22); } } else { if(obj.state.ack === false) { GeraetUpdate(22); } } }); // ende on id
on({id: OnIdTAB[23], valNe: 1000 }, function(obj) { if(special[23][7] === true) { if (obj.state.ack) { GeraetUpdate(23); } } else { if(obj.state.ack === false) { GeraetUpdate(23); } } }); // ende on id
on({id: OnIdTAB[24], valNe: 1000 }, function(obj) { if(special[24][7] === true) { if (obj.state.ack) { GeraetUpdate(24); } } else { if(obj.state.ack === false) { GeraetUpdate(24); } } }); // ende on id
on({id: OnIdTAB[25], valNe: 1000 }, function(obj) { if(special[25][7] === true) { if (obj.state.ack) { GeraetUpdate(25); } } else { if(obj.state.ack === false) { GeraetUpdate(25); } } }); // ende on id
schedule(special[0][10], function() { log("schedule 0 aufgerufen","info");GeraetUpdate(0); }); // end of schedule
schedule(special[1][10], function() { log("schedule 1 aufgerufen","info"); GeraetUpdate(1); }); // end of schedule
schedule(special[2][10], function() { log("schedule 2 aufgerufen","info"); GeraetUpdate(2); }); // end of schedule
schedule(special[3][10], function() { log("schedule 3 aufgerufen","info"); GeraetUpdate(3); }); // end of schedule
schedule(special[4][10], function() { log("schedule 4 aufgerufen","info"); GeraetUpdate(4); }); // end of schedule
schedule(special[5][10], function() { log("schedule 5 aufgerufen","info");GeraetUpdate(5); }); // end of schedule
schedule(special[6][10], function() { log("schedule 6 aufgerufen","info");GeraetUpdate(6); }); // end of schedule
schedule(special[7][10], function() { log("schedule 7 aufgerufen","info");GeraetUpdate(7); }); // end of schedule
schedule(special[8][10], function() { log("schedule 8 aufgerufen","info");GeraetUpdate(8); }); // end of schedule
schedule(special[9][10], function() { log("schedule 9 aufgerufen","info");GeraetUpdate(9); }); // end of schedule
schedule(special[10][10], function() { log("schedule 10 aufgerufen","info"); GeraetUpdate(10); }); // end of schedule
schedule(special[11][10], function() { log("schedule 11 aufgerufen","info"); GeraetUpdate(11); }); // end of schedule
schedule(special[12][10], function() { log("schedule 12 aufgerufen","info"); GeraetUpdate(12); }); // end of schedule
schedule(special[13][10], function() { log("schedule 13 aufgerufen","info"); GeraetUpdate(13); }); // end of schedule
schedule(special[14][10], function() { log("schedule 14 aufgerufen","info"); GeraetUpdate(14); }); // end of schedule
schedule(special[15][10], function() { log("schedule 15 aufgerufen","info");GeraetUpdate(15); }); // end of schedule
schedule(special[16][10], function() { log("schedule 16 aufgerufen","info"); GeraetUpdate(16); }); // end of schedule
schedule(special[17][10], function() { log("schedule 17 aufgerufen","info"); GeraetUpdate(17); }); // end of schedule
schedule(special[18][10], function() { log("schedule 18 aufgerufen","info"); GeraetUpdate(18); }); // end of schedule
schedule(special[19][10], function() { log("schedule 19 aufgerufen","info");GeraetUpdate(19); }); // end of schedule
schedule(special[20][10], function() { log("schedule 20 aufgerufen","info");GeraetUpdate(20); }); // end of schedule
schedule(special[21][10], function() { log("schedule 21 aufgerufen","info");GeraetUpdate(21); }); // end of schedule
schedule(special[22][10], function() { log("schedule 22 aufgerufen","info");GeraetUpdate(22); }); // end of schedule
schedule(special[23][10], function() { log("schedule 23 aufgerufen","info"); GeraetUpdate(23); }); // end of schedule
schedule(special[24][10], function() { log("schedule 24 aufgerufen","info"); GeraetUpdate(24); }); // end of schedule
schedule(special[25][10], function() { log("schedule 25 aufgerufen","info");GeraetUpdate(25); }); // end of schedule
// Part 3 Taegliches Zuruecksetzen der Datenpunkte aufgrund von Periodenwechsel DAY,WEEK,MONTH,YEAR
// ------------------------Aenderung des Status des Geraetes------------------------------------
//-------------------------Beim Einschalten wird die Zeit festgehalten -------------------------
//-------------------------Beim Ausschalten wird die Zeitdifferenz berechnet und gespeichert----
schedule(cronjob, function() { PeriodChange(); });
// ------------------------ F U N K T I O N E N -------------------------------------------------------
// Part 1.4.1 Vorbereiten zum Anlegen/Löschen von Datenpunkten
//-----------------------------------------------------------------------------------------------------
// Funktion zum Anlegen der Variablen im System
//-----------------------------------------------------------------------------------------------------
function CreateDelStates(){
var zaehlerstatus = 0;
var method = "TIME";
for (var zaehler = 0,
zaehler_array = Gruppen.length;
zaehler < zaehler_array;
zaehler++) {
zaehler2 = addZero(zaehler).zero2;
if (Gruppen[zaehler][0] === "INITIAL") { continue; } // Check Gueltigkeit object
for ( zaehlerstatus = 8; zaehlerstatus < 18; zaehlerstatus++) { // Spalte 8 - 18 fuer die Gruppentabelle entspriche logname -8
if (Gruppen[zaehler][zaehlerstatus] === '') { continue; } //Status is INITIAL
if (method !== "TIME" && zaehlerstatus > 8) {
break; // Multiple Status werden nur gebraucht fuer TIME Objekte
}
method = "TIME";
if (Gruppen[zaehler][8] === 'DELTA') {
method = "DELTA";
}
if (Gruppen[zaehler][8] === 'DELTAM') {
method = "DELTAM";
}
if (Gruppen[zaehler][8] === 'CALC') {
method = "CALC";
}
// Status fuer die Methoden anlegen
CreateDelStateSingle(zaehler,zaehlerstatus,method,"none","none"); // anlegen fuer alle methods (ausser hostory und switch ) bis zum statuslevel
// Status fuer die system struktur anlegen
if (Gruppen[zaehler][3] === true) { // soll eine DAY kumulations Variable angelegt werden ?
CreateDelStateSingle(zaehler,zaehlerstatus,method,"SYSTEM","day"); // anlegen fuer die System Struktur Periode
} // endif Summierung soll angelegt werden
if (Gruppen[zaehler][4] === true) { // soll eine week kumulations Variable angelegt werden ?
CreateDelStateSingle(zaehler,zaehlerstatus,method,"SYSTEM","week"); // anlegen fuer die System Struktur Periode
} // endif Summierung soll angelegt werden
if (Gruppen[zaehler][5] === true) { // soll eine month kumulations Variable angelegt werden ?
CreateDelStateSingle(zaehler,zaehlerstatus,method,"SYSTEM","month"); // anlegen fuer die System Struktur Periode
} // endif Summierung soll angelegt werden
if (Gruppen[zaehler][6] === true) { // soll eine year kumulations Variable angelegt werden ?
CreateDelStateSingle(zaehler,zaehlerstatus,method,"SYSTEM","year"); // anlegen fuer die System Struktur Periode
} // endif Summierung soll angelegt werden
// Methoden Struktur (ausser history und Status anlegen / loeschen)
if (Gruppen[zaehler][3] === true) { // soll eine DAY kumulations Variable angelegt werden ?
CreateDelStateSingle(zaehler,zaehlerstatus,method,"none","day");
} // endif Summierung soll angelegt werde
if (Gruppen[zaehler][4] === true) { // soll eine week kumulations Variable angelegt werden ?
CreateDelStateSingle(zaehler,zaehlerstatus,method,"none","week");
} // endif Summierung soll angelegt werde
if (Gruppen[zaehler][5] === true) { // soll eine month kumulations Variable angelegt werden ?
CreateDelStateSingle(zaehler,zaehlerstatus,method,"none","month");
} // endif Summierung soll angelegt werde
if (Gruppen[zaehler][6] === true) { // soll eine year kumulations Variable angelegt werden ?
CreateDelStateSingle(zaehler,zaehlerstatus,method,"none","year");
} // endif Summierung soll angelegt werde
// Switch Stuktur anlengen / loeschen
if (Gruppen[zaehler][7] === true ) { // Soll auch eine Switch Variable angelegt werden
CreateDelStateSingle(zaehler,zaehlerstatus,"none","SWITCH","none");
if (Gruppen[zaehler][3] === true) { // soll eine DAY kumulations Variable angelegt werden ?
CreateDelStateSingle(zaehler,zaehlerstatus,"none","SWITCH","day");
}
if (Gruppen[zaehler][4] === true) { // soll eine week kumulations Variable angelegt werden ?
CreateDelStateSingle(zaehler,zaehlerstatus,"none","SWITCH","week");
}
if (Gruppen[zaehler][5] === true) { // soll eine month kumulations Variable angelegt werden ?
CreateDelStateSingle(zaehler,zaehlerstatus,"none","SWITCH","month");
}
if (Gruppen[zaehler][6] === true) { // soll eine year kumulations Variable angelegt werden ?
CreateDelStateSingle(zaehler,zaehlerstatus,"none","SWITCH","year");
}
} // endif Switch Variablen anzulegen ?
// Durchschnittsberechnung - Struktur anlegen
if (special[zaehler][8] === true ) { // Anlegen der Day Average
CreateDelStateSingle(zaehler,zaehlerstatus,"none","AVERAGE","none");
if (Gruppen[zaehler][3] === true) { // Anlegen der Day Average
CreateDelStateSingle(zaehler,zaehlerstatus,"none","AVERAGE","day");
}
if (Gruppen[zaehler][4] === true) { // Anlegen der Day Average
CreateDelStateSingle(zaehler,zaehlerstatus,"none","AVERAGE","week");
}
if (Gruppen[zaehler][5] === true) { // Anlegen der Day Average
CreateDelStateSingle(zaehler,zaehlerstatus,"none","AVERAGE","month");
}
if (Gruppen[zaehler][6] === true) { // Anlegen der Day Average
CreateDelStateSingle(zaehler,zaehlerstatus,"none","AVERAGE","year");
}
} // endif Durschnittsbewertung aktiv
// Min/MAX - Struktur anlegen
if (special[zaehler][11] === true ) { // Anlegen MINMAX
CreateDelStateSingle(zaehler,zaehlerstatus,"none","MINMAX","none");
if (Gruppen[zaehler][3] === true) { // Anlegen der Day MINMAX
CreateDelStateSingle(zaehler,zaehlerstatus,"none","MINMAX","day");
}
if (Gruppen[zaehler][4] === true) { // Anlegen der Week MINMAX
CreateDelStateSingle(zaehler,zaehlerstatus,"none","MINMAX","week");
}
if (Gruppen[zaehler][5] === true) { // Anlegen der Month MINMAX
CreateDelStateSingle(zaehler,zaehlerstatus,"none","MINMAX","month");
}
if (Gruppen[zaehler][6] === true) { // Anlegen der Year MINMAX
CreateDelStateSingle(zaehler,zaehlerstatus,"none","MINMAX","year");
}
} // endif MINMAX aktiv
// History Struktur anlegen/ loeschen
if (Gruppen[zaehler][2] === true && Gruppen[zaehler][5] === true) { // Anlegen der Monats History Werte das laufende Jahr wenn Monatskumulation und Historie angeschaltet
CreateDelStateSingle(zaehler,zaehlerstatus,method,"HISTORY","month");
if(special[zaehler][8] === true) { // Durchschnittsfunktion ist aktiv
CreateDelStateSingle(zaehler,zaehlerstatus,"AVERAGE","HISTORY","month");
}
if(special[zaehler][11] === true) { // MINMAX ist aktiv
CreateDelStateSingle(zaehler,zaehlerstatus,"MINMAX","MINMAX","month");
}
}
if (Gruppen[zaehler][2] === true && Gruppen[zaehler][6] === true) { // Anlegen der Jahres History Werte das laufende Jahr wenn Jahreskumulation und Historie angeschaltet
CreateDelStateSingle(zaehler,zaehlerstatus,method,"HISTORY","year");
if(special[zaehler][8] === true) { // Durchschnittsfunktion ist aktiv
CreateDelStateSingle(zaehler,zaehlerstatus,"AVERAGE","HISTORY","year");
}
if(special[zaehler][11] === true) { // MINMAX ist aktiv
CreateDelStateSingle(zaehler,zaehlerstatus,"AVERAGE","HISTORY","year");
}
}
} // Ende FOR Statuszaheler
} // Ende FOR Gruppenzaehler
} // ende Funktion
// Part 1.4.2 Ausführen Anlegen/Löschen von Datenpunkten
//-----------------------------------------------------------------------------------------------------
// Funktion zum Anlegen der Variablen im System - hier Statusinformationen
//-----------------------------------------------------------------------------------------------------
function CreateDelStateSingle(zeile,spalte,method,funktion,periode) {
// Zeile = Zeile der Gruppentabelle
// spalte = spalte der Gruppentabelle (status)
// method = alle Methoden
// funktion = Funktionen Switch, Average, history
// periode = day week month year oder none
var actionDel = false;
if (Gruppen[zeile][19] === true && Gruppen[zeile][18] === true) { // wenn actionDel = true dann soll geloescht werden
actionDel = true;
}
if (actionDel === false && Gruppen[zeile][18] === true) { // kein loeschen aber auch nicht anlegen da Refresh auf gestoppt gesetzt
return;
}
var statusname = Gruppen[zeile][spalte];
if (logname[zeile][spalte-8] !== '') { // Gibt es einen Status in der logname tabelle ? wenn ja merken mit vorrang
statusname = logname[zeile][spalte-8];
}
if (statusname === '' ) { return; }
var pathCount = countLocation + '.' + Gruppen[zeile][1]; // BSZ.Counter.Thema
var pathSysM = sysLocation + '.Grp' + addZero(zeile).zero2 + 'MSec.' + statusname;
var pathSysK = sysLocation + '.Grp' + addZero(zeile).zero2 + 'Kum.' + statusname;
var pathCLevel3; //BSZ.Counter.Thema.Type.Status
var pathHistM; // BSZ.Counter.Thema.Status.History.Month
var pathHistY; // BSZ.Counter.Thema.Status.History.Year
var pathCLevel4;
var pathCLevel4b;
var pathsysaku;
var pathsysasw;
var pathsysmin; // Minimum path
var pathsysmax; // Maximum path
var year = new Date().getFullYear();
var month = addZero(new Date().getMonth()+1).zero2; // aktueller Monat
var yearvor =new Date().getFullYear()-1; // Jahr fuer die Historyfortschreibung - also Vorjahr
// die Methodenstuktur und systemstruktur anlegen
if(funktion === "none" && periode === "none" ) { // Hier werden nur die Status der types angelegt (ohne perioden)
pathCLevel3 = pathCount + "." + method + "." + statusname; //BSZ.Counter.Thema.Type.Status
if (actionDel === false) {
createState(pathSysM , 0); // Anlegen systemeintrag msec
createState(pathSysK , 0); // anlegen systemeintrag kum
createState(pathCLevel3 , 0);
} else {
ObjectExistsDelState(pathSysM ); // loeschen systemeintrag msec
ObjectExistsDelState(pathSysK ); // loeschen systemeintrag kum
ObjectExistsDelState(pathCLevel3); // loeschen counteintrag oberster level
} // endif del
}
// die perioden der methodenstruktur anlegen
if(periode === 'day' && funktion === "none") {
pathCLevel4 = pathCount + "." + method + "." + statusname + "."+PeriodeDay; //BSZ.Counter.Thema.Type.Status
pathCLevel4b = pathCount + "." + method + "." + statusname + "."+PeriodeDay+".BEFORE"; //BSZ.Counter.Thema.Type.Status
if (actionDel === false) {
createState(pathCLevel4 , 0);
createState(pathCLevel4b, 0);
} else {
ObjectExistsDelState(pathCLevel4 );
ObjectExistsDelState(pathCLevel4b);
} // endif del
} // endif periode
if(periode === 'week' && funktion === "none") {
pathCLevel4 = pathCount + "." + method + "." + statusname + "."+PeriodeWeek; //BSZ.Counter.Thema.Type.Status
pathCLevel4b = pathCount + "." + method + "." + statusname + "."+PeriodeWeek+".BEFORE"; //BSZ.Counter.Thema.Type.Status
if (actionDel === false) {
createState(pathCLevel4 , 0);
createState(pathCLevel4b, 0);
} else {
ObjectExistsDelState(pathCLevel4);
ObjectExistsDelState(pathCLevel4b);
} // endif del
} // endif periode
if(periode === 'month' && funktion === "none") {
pathCLevel4 = pathCount + "." + method + "." + statusname + "."+PeriodeMonth; //BSZ.Counter.Thema.Type.Status
pathCLevel4b = pathCount + "." + method + "." + statusname + "."+PeriodeMonth+".BEFORE"; //BSZ.Counter.Thema.Type.Status
if (actionDel === false) {
createState(pathCLevel4 , 0);
createState(pathCLevel4b, 0);
} else {
ObjectExistsDelState(pathCLevel4 );
ObjectExistsDelState(pathCLevel4b);
} // endif del
} // endif periode
if(periode === 'year' && funktion === "none") {
pathCLevel4 = pathCount + "." + method + "." + statusname + "."+PeriodeYear; //BSZ.Counter.Thema.Type.Status
pathCLevel4b = pathCount + "." + method + "." + statusname + "."+PeriodeYear+".BEFORE"; //BSZ.Counter.Thema.Type.Status
if (actionDel === false) {
createState(pathCLevel4 , 0);
createState(pathCLevel4b, 0);
} else {
ObjectExistsDelState(pathCLevel4 );
ObjectExistsDelState(pathCLevel4b);
} // endif del
} // endif periode
// die perioden der systemstrktur anlegen
if(funktion === "SYSTEM" && periode === "day" ) { // Anlegen der Perioden fuer die Systemstruktur- hier day
pathSysK = pathSysK + "."+PeriodeDay;
if (actionDel === false) {
createState(pathSysK , 0);
} else {
ObjectExistsDelState(pathSysK );
} // endif del
}
if(funktion === "SYSTEM" && periode === "week" ) {
pathSysK = pathSysK + "."+PeriodeWeek;
if (actionDel === false) {
createState(pathSysK , 0);
} else {
ObjectExistsDelState(pathSysK );
} // endif del
}
if(funktion === "SYSTEM" && periode === "month" ) {
pathSysK = pathSysK + "."+PeriodeMonth;
if (actionDel === false) {
createState(pathSysK , 0);
} else {
ObjectExistsDelState(pathSysK );
} // endif del
}
if(funktion === "SYSTEM" && periode === "year" ) {
pathSysK = pathSysK + "."+PeriodeYear;
if (actionDel === false) {
createState(pathSysK , 0);
} else {
ObjectExistsDelState(pathSysK );
} // endif del
}
// Switch Struktur anlegen inkl Perioden
if(funktion === "SWITCH" && periode === "none") {
pathCLevel3 = pathCount + "." + "SWITCH" + "." + statusname; //BSZ.Counter.Thema.Type.Status
if (actionDel === false) {
createState(pathCLevel3 , 0);
} else {
ObjectExistsDelState(pathCLevel3); // loeschen counteintrag oberster level
} // endif del
}
if(funktion === "SWITCH" && periode === "day") {
pathCLevel4 = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeDay; //BSZ.Counter.Thema.Type.Status
pathCLevel4b = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeDay+".BEFORE"; //BSZ.Counter.Thema.Type.Status
if (actionDel === false) {
createState(pathCLevel4 , 0);
createState(pathCLevel4b, 0);
} else {
ObjectExistsDelState(pathCLevel4); // loeschen counteintrag oberster level
ObjectExistsDelState(pathCLevel4b);
} // endif del
}
if(funktion === "SWITCH" && periode === "week") {
pathCLevel4 = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeWeek; //BSZ.Counter.Thema.Type.Status
pathCLevel4b = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeWeek+".BEFORE"; //BSZ.Counter.Thema.Type.Status
if (actionDel === false) {
createState(pathCLevel4 , 0);
createState(pathCLevel4b, 0);
} else {
ObjectExistsDelState(pathCLevel4); // loeschen counteintrag oberster level
ObjectExistsDelState(pathCLevel4b);
} // endif del
}
if(funktion === "SWITCH" && periode === "month") {
pathCLevel4 = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeMonth; //BSZ.Counter.Thema.Type.Status
pathCLevel4b = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeMonth+".BEFORE"; //BSZ.Counter.Thema.Type.Status
if (actionDel === false) {
createState(pathCLevel4 , 0);
createState(pathCLevel4b, 0);
} else {
ObjectExistsDelState(pathCLevel4); // loeschen counteintrag oberster level
ObjectExistsDelState(pathCLevel4b);
} // endif del
}
if(funktion === "SWITCH" && periode === "year") {
pathCLevel4 = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeYear; //BSZ.Counter.Thema.Type.Status
pathCLevel4b = pathCount + "." + "SWITCH" + "." + statusname + "."+PeriodeYear+".BEFORE"; //BSZ.Counter.Thema.Type.Status
if (actionDel === false) {
createState(pathCLevel4 , 0);
createState(pathCLevel4b, 0);
} else {
ObjectExistsDelState(pathCLevel4); // loeschen counteintrag oberster level
ObjectExistsDelState(pathCLevel4b);
} // endif del
}
// Anlegen der History Stuktur unterhalb der Methoden
if(funktion === "HISTORY") {
pathHistM = pathCount + "." + method + "." + statusname + ".HISTORY"+ "."+PeriodeMonth +"."; // BSZ.Counter.Thema.Status.History.Month
pathHistY = pathCount + "." + method + "." + statusname + ".HISTORY"+ "."+PeriodeYear +"."; // BSZ.Counter.Thema.Status.History.Month
if (periode === "month") {
for ( i = 1; i <= 12; i++) {
month = addZero(i).zero2; // Monat mit führender null
if (actionDel === false) {
createState(pathHistM + year + month, 0); // alle Monate des jahres anlegen
} else {
ObjectExistsDelState(pathHistM + year + month); // alle Monate des jahres loeschen
} // endif del
} // endfor
if (actionDel === false) {
createState(pathHistM + yearvor + "12", 0); // letzten Monat vor Jahreswechsel anlegen
} else {
ObjectExistsDelState(pathHistM + yearvor + "12"); //letzten Monat vor Jahreswechsel loeschen
} // endif del
} // endif month
if (periode === "year") {
if (actionDel === false) {
createState(pathHistY + year, 0); //Jahr anlegen
createState(pathHistY + yearvor, 0); //Vorjahr anlegen
} else {
ObjectExistsDelState(pathHistY + year); //Jahr loeschen
ObjectExistsDelState(pathHistY + yearvor); //Vorjahr loeschen
} // endif del
} // endif year
} // endif history
Hi
stimmt, ich hatte die letzten Änderungen nicht mehr hochgeladen. Damit weichen die Versionen an der Stelle ab.
Korrektur in dieser Version ist alle schedules (codezeilen 32 ff) , die in Tabelle specials Spalte 11 sich befinden auszukommentieren.
Gilt also für alle Zeilen, die in Tabelle specials Spalte 11 keinen Eintrag bzw ein '' stehen haben.
Mit dieser Einstellung wird nicht auf einen Trigger reagiert sondern ein Schedule löst die Funktion aus. (haben wahrscheinlich eh nicht viele genutzt)
Das hat aber nichts mit der 0 Rückstellung zu tun. Schau ich mir an.
vG Looxer
@looxer01
puhh,
ich kann Dir noch kaum folgen.... Die Tabelle mit "spezials" habe ich gefunden. (siehe unten)
In der Spalte 11 ist bei mir kein Eintrag. Wie kann ich es auskommentieren? Kannst Du da ein Beispiel zeigen?
Mit codenzeile 32ff kann ich leider nichts anfangen
Kannst Du so nett sein und ein Beispiel zeigen?
Besten Dank für Deine Mühe!
var special = [];
// 1.Round 2.add1 3.Faktor 4. Divisor 5.add2 6.Individuallogik 7: DELTA(M)Grenze 8.Warten auf Bestaetigung 9.Durchschnitt - 10.Zaehlschwelle 11 Schedule 12. Min/MAX 13. MehrfachStatus 14. Selektives Logging
special[0] = ['2' ,'' ,'' ,'' ,'' ,'' ,'' ,'false' ,'' ,'' ,'' ,'' ,'' , '' ];
special[1] = ['2' ,'' ,'11.432' ,'' ,'' ,'' ,'' ,'false' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[2] = ['9' ,'' ,'' ,'' ,'' ,'' ,'' ,'false' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[3] = ['9' ,'' ,'625' ,'1000' ,'' ,'' ,'' ,'false' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[4] = ['2' ,'' ,'10.43' ,'1000' ,'' ,'' ,'' ,'false' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[5] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' , '' ];
special[6] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[7] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[8] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[9] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[10] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[11] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[12] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[13] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[14] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[15] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[16] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[17] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[18] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[19] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' , '' ];
special[20] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[21] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[22] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[23] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[24] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
special[25] = ['' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ,'' ];
Hi
wenn du dort keinen Eintrag hast, dann ist es doch einfach, denn -wie gedacht- nutzt du die Schedule Funktion nicht
Kommentiere alle Zeilen von 32 bis 57 aus. Dann ist der Fehler weg.
vG Looxer
@sigi234
ja genau - jedenfalls das letzte veröffentlichte.
besten Dank, es läuft wieder alles wie gewohnt...
@looxer01 sagte in [Vorlage] Generischer Betriebsstundenzähler und Verbrauchsrechner - Script:
@sigi234
ja genau - jedenfalls das letzte veröffentlichte.
erst mal danke für die Entwicklung deines Scripts , nutze es auch schon sehr lange.
Aktualisierst du die Version weiter, bzw. lässt du uns an deinen letzten Änderungen teilhaben??
Eigentlich funktioniert (noch) alles, deswegen nur mal so aus Neugier.
@telekom0815
Hi,
Dann scheint das Script ja hier und da noch im Einsatz zu sein.
Also, was ich gemacht habe ist, die 25 Zeilen Begrenzung aufzuheben.
Es geht also eine Kürzung auf die erforderliche Anzahl von Zeilen der 3 Tabellen.
Genauso lassen sich mehr als 25 Zeilen einstellen.
Ich schau mir das mal an und beseitige den Fehler bezüglicher der schedules (kam mit dem letzten JS update)
und veröffentliche dann eine aktualisierte Version.
Kann aber noch 1-2 Wochen dauern.
Liebe Grüße
Looxer