Skip to content

Commit

Permalink
adding average one time
Browse files Browse the repository at this point in the history
  • Loading branch information
BenAhrdt committed Oct 18, 2022
1 parent 4dbbe9a commit 55a61a1
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ To reset the counted operating hours just write one numeric state to 0.
Placeholder for the next version (at the beginning of the line):
### **WORK IN PROGRESS**
-->
### **WORK IN PROGRESS** adding average on time
* (BenAhrdt) average on time indicates a string this formular: operatingHour/activationCounter

### 0.0.18 (2022-10-03) adding some states
* (BenAhrdt) adding days states, additional string and json state

Expand Down
19 changes: 18 additions & 1 deletion main.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ class OperatingHours extends utils.Adapter {
timestring_h_m :{name:"timestring_h_m",type:"string",write:false,unit:"h:m",def:""},
timestring_h_m_s :{name:"timestring_h_m_s",type:"string",write:false,unit:"h:m:s",def:""},
timestring_d_h_m_s :{name:"timestring_d_h_m_s",type:"string",write:false,unit:"d:h:m:s",def:""},
json :{name:"json",type:"string",write:false,unit:"",def:""}
json :{name:"json",type:"string",write:false,unit:"",def:""},
averageOnTime_h_m_s :{name:"averageOnTime_h_m_s",type:"string",write:false,unit:"h:m:s",def:""},
};
this.administrative = {
enableCounting : {name:"enableCounting", type:"boolean", write:true, def:false},
Expand Down Expand Up @@ -330,6 +331,20 @@ class OperatingHours extends utils.Adapter {
}
json.milliseconds = internalMillisecons;

// Berechnen der mittleren Einschaltzeit
const averageOnTimeSeconds = seconds / this.configedChannels[channel].administrative.activationCounter;
const averageOnTimeMinutes = minutes / this.configedChannels[channel].administrative.activationCounter;
const averageOnTimeHours = hours / this.configedChannels[channel].administrative.activationCounter;

// Erzeugen der Strings mit Stunden
const averagehourlength = Math.trunc(averageOnTimeHours).toString().length;
let averagehourstring = "00";
let averagehourindex = 2;
for(averagehourindex; averagehourindex < averagehourlength; averagehourindex++){
averagehourstring += "0";
}
const averageOnTime_h_m_s = (averagehourstring + Math.trunc(averageOnTimeHours).toString()).slice(-averagehourindex) + ":" + ("00" + Math.trunc((averageOnTimeMinutes%60)).toString()).slice(-2) + ":" + ("00" + Math.trunc((averageOnTimeSeconds%60)).toString()).slice(-2);

// Schreiben der states
this.configedChannels[channel].timestamp = ts;
this.setState(`${channel}.${this.channelFolders.operatingHours}.${this.operatingHours.milliseconds.name}`,milliseconds,true);
Expand All @@ -350,6 +365,8 @@ class OperatingHours extends utils.Adapter {
this.configedChannels[channel].operatingHours.timestring_d_h_m_s = d_h_m_s;
this.setState(`${channel}.${this.channelFolders.operatingHours}.${this.operatingHours.json.name}`,JSON.stringify(json),true);
this.configedChannels[channel].operatingHours.json = json;
this.setState(`${channel}.${this.channelFolders.operatingHours}.${this.operatingHours.averageOnTime_h_m_s.name}`,averageOnTime_h_m_s,true);
this.configedChannels[channel].operatingHours.averageOnTime_h_m_s = averageOnTime_h_m_s;

// Rücksetzen des counters, wenn die millesekunden 0 sind
if(milliseconds === 0){
Expand Down

0 comments on commit 55a61a1

Please sign in to comment.