NEWS
Zähler Waschmaschine/Spülmaschine und Statistik
-
Hallo,
ein http://homematic-forum.de/forum/viewtopic.php?f=19&t=27663#p244672 hat mich daran erinnert, dass ich schon lange einen Zähler für Wasch- und Spülmaschine haben wollte. Jetzt zum Jahresbeginn war der beste Zeitpunkt dafür!
Der Zähler soll einfach jede Wäsche zählen, wird täglich, wöchentlich, monatlich, im Quartal und jährlich zurückgesetzt. Das Skript ist recht allgemein gehalten, nur im oberen Teil sind Anpassungen zu machen. So kann man es einfach für verschiedene Geräte duplizieren ohne viele einzelne Zeilen oder Variablen editieren zu müssen.
Es zaehlt hoch, wenn die Steuervariable auf true geht. Wie man seine Wasch-/Spülmaschine erfasst, ist eine andere Baustelle und jedem selbst überlassen. Das Skript hier ist praktisch nur für die Statistik da.
Es werden globale Variablen für Tag, Woche, Monat, Quartal und Jahr in der Ordnerstruktur javascript.0.Status.Gerät.Zaehler.Zeitraum angelegt.
Es wird eine Optin Variable angelegt, die das Senden von Pushmeldungen kurz vorm Rücksetzen unterdrücken kann. Pushover ist also nötig, kann aber leicht ersetzt werden.
Skript für Javascript Instanz 0:
! ````
/* /* Küche Spülmaschine Zaehler
Skript zum Überwachen des Status der Spülmaschine (Variable in Status_Geraete.js)
Skript zählt das Umschalten des Status auf "in Betrieb" und damit die Anzahl der Waschvorgänge
! Variable Anpassung an verschiedene Geräte (für jedes Gerät ein eigenes Skript verwenden)
! 01.01.2016 erstellt von Pix für Spülmaschine
02.01.2016 Manuelles Addieren/Subtrahieren hinzugefügt
*/
var name_geraet = 'Spuelmaschine', // zB Waschmaschine (Achtung keine Umlaute)
beschreibung = 'Spülvorgänge'; // zB Waschvorgänge oder Spülvorgänge oder Einschaltvorgänge, Umlaute erlaubt
! // Manuell anpassen (wegen der flüssigen Sprache :] )
createState('Optin.Kueche.Spuelmaschine.Zaehler.Push', true, {
name: 'Optin Anzahl der Spülvorgänge der Spülmaschine melden',
desc: 'Soll gemeldet werden, wie oft die Spülmaschine gestartet wurde?',
type: 'boolean',
read: true,
write: true
});
! var beschreibung_log = 'Anzahl Spülvorgänge',
optin_beschreibung = 'Anzahl Spülvorgäng der Spülmaschine',
idOptinPush = "javascript.0.Optin.Kueche.Spuelmaschine.Zaehler.Push";
! // Diese Variable wird überwacht auf Änderung nach true
var idStatus = "javascript.0.Status.Spuelmaschine"/Status Spuelmaschine/; // aus Status_Geraete.js
! // Zählerstände bei Reset mitloggen?
var logging = true;
! // +++++ Ab hier keine Änderungen vornehmen +++++
! //Variablen anlegen
createState('Status.' + name_geraet + '.Zaehler.Tag', 0, {
read: true,
write: true,
type: 'number',
name: name_geraet + ' - Anzahl ' + beschreibung + ' heute'
});
createState('Status.' + name_geraet + '.Zaehler.Woche', 0, {
read: true,
write: true,
type: 'number',
name: name_geraet + ' - Anzahl ' + beschreibung + ' diese Woche'
});
createState('Status.' + name_geraet + '.Zaehler.Monat', 0, {
read: true,
write: true,
type: 'number',
name: name_geraet + ' - Anzahl ' + beschreibung + ' diesen Monat'
});
createState('Status.' + name_geraet + '.Zaehler.Quartal', 0, {
read: true,
write: true,
type: 'number',
name: name_geraet + ' - Anzahl ' + beschreibung + ' dieses Quartal'
});
createState('Status.' + name_geraet + '.Zaehler.Jahr', 0, {
read: true,
write: true,
type: 'number',
name: name_geraet + ' - Anzahl ' + beschreibung + ' dieses Jahr'
});createState('Status.' + name_geraet + '.Zaehler.addieren', false, { read: true, write: true, type: 'booelan', name: name_geraet + ' - Zähler um eins erhöhen' }); createState('Status.' + name_geraet + '.Zaehler.subtrahieren', false, { read: true, write: true, type: 'boolean', name: name_geraet + ' - Zähler um eins vermindern' });
! var idZaehler_addieren = 'javascript.0.Status.' + name_geraet + '.Zaehler.addieren',
idZaehler_subtrahieren = 'javascript.0.Status.' + name_geraet + '.Zaehler.subtrahieren';
! var idZaehlerTag = 'javascript.0.Status.' + name_geraet + '.Zaehler.Tag',
idZaehlerWoche = 'javascript.0.Status.' + name_geraet + '.Zaehler.Woche',
idZaehlerMonat = 'javascript.0.Status.' + name_geraet + '.Zaehler.Monat',
idZaehlerQuartal = 'javascript.0.Status.' + name_geraet + '.Zaehler.Quartal',
idZaehlerJahr = 'javascript.0.Status.' + name_geraet + '.Zaehler.Jahr';
! // Statusvariable überwachen und Ausgabe veranlassen
on({
id: idStatus,
change: 'ne'
}, function (data) {
if (data.newState.val === 1 ) { // eingeschaltet
// hochzählen
hochzaehlen();
}
});
! // Manuelles hochzaehlen
on(idZaehler_addieren, function (obj) {
if (!obj.newState.ack && obj.newState.val) {
hochzaehlen();
}
});
// Manuelles runterzaehlen
on(idZaehler_subtrahieren, function (obj) {
if (!obj.newState.ack && obj.newState.val) {
runterzaehlen();
}
});
! // Aktionen
function hochzaehlen() {
setState(idZaehlerTag, ++getState(idZaehlerTag).val);
setState(idZaehlerWoche, ++getState(idZaehlerWoche).val);
setState(idZaehlerMonat, ++getState(idZaehlerMonat).val);
setState(idZaehlerQuartal, ++getState(idZaehlerQuartal).val);
setState(idZaehlerJahr, ++getState(idZaehlerJahr).val);
}
! function runterzaehlen() {
setState(idZaehlerTag, --getState(idZaehlerTag).val);
setState(idZaehlerWoche, --getState(idZaehlerWoche).val);
setState(idZaehlerMonat, --getState(idZaehlerMonat).val);
setState(idZaehlerQuartal, --getState(idZaehlerQuartal).val);
setState(idZaehlerJahr, --getState(idZaehlerJahr).val);
}
! function zaehlerstand_reset(zeitraum) {
switch(zeitraum) {
case 'Tag':
var tag_meldung = beschreibung_log + ' gestern: ' + getState(idZaehlerTag).val;
if (logging) log(tag_meldung);
meldung_push(tag_meldung, 'Betreff', 0);
setState(idZaehlerTag, 0);
log(beschreibung_log + ' aktueller Tag zurückgesetzt');
break;case 'Woche': var woche_meldung = beschreibung_log + ' vergangene Woche: ' + getState(idZaehlerWoche).val; if (logging) log(woche_meldung); setState(idZaehlerWoche, 0); log(beschreibung_log + ' aktuelle Woche zurückgesetzt'); break; case 'Monat': var monat_meldung = beschreibung_log + ' verganener Monat: ' + getState(idZaehlerMonat).val; if (logging) log(monat_meldung); setState(idZaehlerMonat, 0); log(beschreibung_log + ' aktueller Monat zurückgesetzt'); break; case 'Quartal': var quartal_meldung = beschreibung_log + ' vergangenes Quartal: ' + getState(idZaehlerQuartal).val; if (logging) log(quartal_meldung); setState(idZaehlerQuartal, 0); log(beschreibung_log + ' aktuelles Quartal zurückgesetzt'); break; case 'Jahr': var jahr_meldung = beschreibung_log + ' vergangenes Jahr: ' + getState(idZaehlerJahr).val; if (logging) log(jahr_meldung); setState(idZaehlerJahr, 0); log(beschreibung_log + ' aktuelles Jahr zurückgesetzt'); break; default: log('Fehler/Error beim Reset der Datenpunkte!'); }
}
! // RESETS DER WERTE #################################
// Täglich um 0 Uhr ausführen
schedule("0 0 * * *", function() {
zaehlerstand_reset('Tag');
});
! // Montags um 0 Uhr ausführen
schedule("0 0 * * 1", function() {
zaehlerstand_reset('Woche');
});
! // Monatsersten um 0 Uhr ausführen
schedule("0 0 1 * *", function() {
zaehlerstand_reset('Monat');
});
! // Quartalsersten (Jan,Apr,Jul,Okt) um 0 Uhr ausführen
schedule("0 0 1 1 *", function() {
zaehlerstand_reset('Quartal');
});
! schedule("0 0 1 4 *", function() {
zaehlerstand_reset('Quartal');
});
! schedule("0 0 1 7 *", function() {
zaehlerstand_reset('Quartal');
});
! schedule("0 0 1 10 *", function() {
zaehlerstand_reset('Quartal');
});
! // Neujahr um 0 Uhr ausführen
schedule("0 0 1 1 *", function() {
zaehlerstand_reset('Jahr');
});
! // Pushmeldung
function meldung_push (text, titel, prio) {
var optin_push = getState(idOptinPush).val;
if (optin_push) { // wenn Optin
sendTo("pushover", {
message: text,
title: titel,
priority: prio
});
} // Ende Optin
}
! // Opt In setzen - Logging
on( {
id: idOptinPush,
change: 'ne'
}, function (obj) {
log('Opt in Variable <' + optin_beschreibung + ' Push> auf <' + obj.newState.val + '> gesetzt ', 'info');
});
! ````Habe drei Skripts für drei Geräte. Entsprechend hier ein Tabelle für VIS mit +/- Steuerung zur manuellen Korrektur:
!
[{"tpl":"tplBasicState","data":{"oid":"javascript.0.Status.Spuelmaschine.Zaehler.addieren","visibility-cond":"==","visibility-val":1,"value":"true","html":"[ +1 ]","name":"Zähler Spülmaschine erhöhen","class":""},"style":{"left":211,"top":1494,"z-index":"40","color":"rgba(250,250,250,0.6)","font-family":"RobotoCondensed-Regular, Futura","font-style":"","font-size":"14px","width":"auto","height":"auto"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.0.Status.Spuelmaschine.Zaehler.subtrahieren","visibility-cond":"==","visibility-val":1,"value":"true","html":"[ -1 ]","name":"Zähler Spülmaschine vermindern","class":""},"style":{"left":177,"top":1494,"z-index":"40","color":"rgba(250,250,250,0.6)","font-family":"RobotoCondensed-Regular, Futura","font-style":"","font-size":"14px","width":"auto","height":"auto"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.0.Status.Waschmaschine.Zaehler.subtrahieren","visibility-cond":"==","visibility-val":1,"value":"true","html":"[ -1 ]","name":"Zähler Waschmaschine vermindern","class":""},"style":{"left":177,"top":1619,"z-index":"40","color":"rgba(250,250,250,0.6)","font-family":"RobotoCondensed-Regular, Futura","font-style":"","font-size":"14px","width":"auto","height":"auto"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.0.Status.Waschmaschine.Zaehler.addieren","visibility-cond":"==","visibility-val":1,"value":"true","html":"[ +1 ]","name":"Zähler Waschmaschine erhöhen","class":""},"style":{"left":211,"top":1619,"z-index":"40","color":"rgba(250,250,250,0.6)","font-family":"RobotoCondensed-Regular, Futura","font-style":"","font-size":"14px","width":"auto","height":"auto"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.0.Status.Dampfgarer.Zaehler.subtrahieren","visibility-cond":"==","visibility-val":1,"value":"true","html":"[ -1 ]","name":"Zähler Dampfgarer vermindern","class":""},"style":{"left":177,"top":1369,"z-index":"40","color":"rgba(250,250,250,0.6)","font-family":"RobotoCondensed-Regular, Futura","font-style":"","font-size":"14px","width":"auto","height":"auto"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.0.Status.Dampfgarer.Zaehler.addieren","visibility-cond":"==","visibility-val":1,"value":"true","html":"[ +1 ]","name":"Zähler Dampfgarer erhöhen","class":""},"style":{"left":211,"top":1369,"z-index":"40","color":"rgba(250,250,250,0.6)","font-family":"RobotoCondensed-Regular, Futura","font-style":"","font-size":"14px","width":"auto","height":"auto"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","html":"\n\n\n\n\n\n \n \n \n \n \n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n","name":"Tabelle"},"style":{"left":"106px","top":"1221px","z-index":"20","color":"rgba(250,250,250,1);","font-family":"","width":"auto","height":"auto","font-size":"12px"},"widgetSet":"basic"}] ! Und hier die CSS dazu: ! >!
/* --- Tabelle Anzahl / Zaehler (wie Strom)/
#anzahl {
text-align: center;
border-collapse: collapse; / kein Doppelrand, sonst "seperate"/
line-height: 100%;
font-family: RobotoCondensed-Regular, Futura;
}
! #anzahl thead {
font-size: 120%;
text-align: center;
margin: 0 0 10px 0;
}
! #anzahl caption { / Raumnamen /
font-size: 150%;
text-align: left;
margin: 10px 0 10px 0;
}
! / Grösse /
/Geräte Spalte/
#anzahl td.anzahl_Messpunkt,
#anzahl th.anzahl_Messpunkt {
width: 200px;
height: auto;
font-family: RobotoCondensed-Regular, Futura;
font-size: 14px;
font-weight: normal;
/color: red;/
}
! /Zeitraum Spalte/
#anzahl td.anzahl_Zeitraum,
#anzahl th.anzahl_Zeitraum {
width: 120px;
font-family: RobotoCondensed-Regular, Futura;
font-size: 14px;
font-weight: normal;
/color: green;/
}
! /Anzahl Spaltenüberschrift/
#anzahl th:nth-child(3) {
width: 80px;
height: auto;
font-family: RobotoCondensed-Regular, Futura;
font-size: 14px;
font-weight: normal;
/color: yellow;/
}
! /Zahlen rechtsbündig mit Padding zum Rand/
#anzahl tr.anzahl_Zeitraum_aktuell td,
#anzahl tr.anzahl_Zeitraum_Tag td,
#anzahl tr.anzahl_Zeitraum_Woche td,
#anzahl tr.anzahl_Zeitraum_Monat td,
#anzahl tr.anzahl_Zeitraum_Quartal td,
#anzahl tr.anzahl_Zeitraum_Jahr td{
text-align: right;
padding-right: 0.7em;
padding-top: 0.5em;
padding-bottom: 0.5em;
}
! #anzahl .anzahl_Spaltentitel { /Spaltentitel/
line-height: 250%;
}
! / Farben /
#anzahl,
#anzahl th,
#anzahl td {
border: 1px solid grey;
! }
#anzahl th {
color: rgba(250,250,250,1);
/ font-weight: 800;/
}
! #anzahl td {
color: rgba(220,220,220,1);
/ font-weight: 400; /
}
! #anzahl .anzahl_Spaltentitel { /Spaltentitel/
background: rgba(000,100,200,0.5); / blau /
}
! tbody.anzahl_kueche {
background: rgba(80,80,80,0.4);
}
! / Dampfgarer /
#anzahl tr:nth-child(2) {
background: rgba(200,200,200,0.25);
}
! / Spülmaschine /
#anzahl tr:nth-child(6) {
background: rgba(200,200,200,0.1);
}
! / Waschmaschine /
#anzahl tr:nth-child(11) {
background: rgba(200,200,200,0.25);
}
! / Zeiträume */
#anzahl tr.anzahl_Zeitraum_Tag {
background: rgba(0,250,0,0.2);
}
! #anzahl tr.anzahl_Zeitraum_Woche {
background: rgba(0,200,200,0.2);
}
! #anzahl tr.anzahl_Zeitraum_Monat{
background: rgba(0,0,80,0.5);
}
! #anzahl tr.anzahl_Zeitraum_Quartal {
background: rgba(0,150,0,0.2);
}
! #anzahl tr.anzahl_Zeitraum_Jahr {
background: rgba(180,0,0,0.5);
}
!! Vielleicht kann es jemand brauchen. ! Gruß ! Pix ! 02.01.2016 zweite Version mit manuellen Korrekturmöglichkeit der Zählerstände über VIS-Widgets (+/-) ! Fehler getState bei Pushsendung korrigiert ! <caption>Betriebszähler</caption> | Küche | Zeitraum | Anzahl | | --- | --- | --- | | Dampfgarer | Tag | {javascript.0.Status.Dampfgarer.Zaehler.Tag} | | Woche | {javascript.0.Status.Dampfgarer.Zaehler.Woche} | | Monat | {javascript.0.Status.Dampfgarer.Zaehler.Monat} | | Quartal | {javascript.0.Status.Dampfgarer.Zaehler.Quartal} | | Jahr | {javascript.0.Status.Dampfgarer.Zaehler.Jahr} | | Spülmaschine | Tag | {javascript.0.Status.Spuelmaschine.Zaehler.Tag} | | Woche | {javascript.0.Status.Spuelmaschine.Zaehler.Woche} | | Monat | {javascript.0.Status.Spuelmaschine.Zaehler.Monat} | | Quartal | {javascript.0.Status.Spuelmaschine.Zaehler.Quartal} | | Jahr | {javascript.0.Status.Spuelmaschine.Zaehler.Jahr} | | Waschmaschine | Tag | {javascript.0.Status.Waschmaschine.Zaehler.Tag} | | Woche | {javascript.0.Status.Waschmaschine.Zaehler.Woche} | | Monat | {javascript.0.Status.Waschmaschine.Zaehler.Monat} | | Quartal | {javascript.0.Status.Waschmaschine.Zaehler.Quartal} | | Jahr | {javascript.0.Status.Waschmaschine.Zaehler.Jahr} | !
-
@pix:Hallo,
ein http://homematic-forum.de/forum/viewtopic.php?f=19&t=27663#p244672 hat mich daran erinnert, dass ich schon lange einen Zähler für Wasch- und Spülmaschine haben wollte. Jetzt zum Jahresbeginn war der beste Zeitpunkt dafür!
Der Zähler soll einfach jede Wäsche zählen, wird täglich, wöchentlich, monatlich, im Quartal und jährlich zurückgesetzt. Das Skript ist recht allgemein gehalten, nur im oberen Teil sind Anpassungen zu machen. So kann man es einfach für verschiedene Geräte duplizieren ohne viele einzelne Zeilen oder Variablen editieren zu müssen.
Es zaehlt hoch, wenn die Steuervariable auf true geht. Wie man seine Wasch-/Spülmaschine erfasst, ist eine andere Baustelle und jedem selbst überlassen. Das Skript hier ist praktisch nur für die Statistik da.
Es werden globale Variablen für Tag, Woche, Monat, Quartal und Jahr in der Ordnerstruktur javascript.0.Status.Gerät.Zaehler.Zeitraum angelegt.
Es wird eine Optin Variable angelegt, die das Senden von Pushmeldungen kurz vorm Rücksetzen unterdrücken kann. Pushover ist also nötig, kann aber leicht ersetzt werden.
Skript für Javascript Instanz 0:
! ````
/* /* Küche Spülmaschine Zaehler
Skript zum Überwachen des Status der Spülmaschine (Variable in Status_Geraete.js)
Skript zählt das Umschalten des Status auf "in Betrieb" und damit die Anzahl der Waschvorgänge
! Variable Anpassung an verschiedene Geräte (für jedes Gerät ein eigenes Skript verwenden)
! 01.01.2016 erstellt von Pix für Spülmaschine
02.01.2016 Manuelles Addieren/Subtrahieren hinzugefügt
*/
var name_geraet = 'Spuelmaschine', // zB Waschmaschine (Achtung keine Umlaute)
beschreibung = 'Spülvorgänge'; // zB Waschvorgänge oder Spülvorgänge oder Einschaltvorgänge, Umlaute erlaubt
! // Manuell anpassen (wegen der flüssigen Sprache :] )
createState('Optin.Kueche.Spuelmaschine.Zaehler.Push', true, {
name: 'Optin Anzahl der Spülvorgänge der Spülmaschine melden',
desc: 'Soll gemeldet werden, wie oft die Spülmaschine gestartet wurde?',
type: 'boolean',
read: true,
write: true
});
! var beschreibung_log = 'Anzahl Spülvorgänge',
optin_beschreibung = 'Anzahl Spülvorgäng der Spülmaschine',
idOptinPush = "javascript.0.Optin.Kueche.Spuelmaschine.Zaehler.Push";
! // Diese Variable wird überwacht auf Änderung nach true
var idStatus = "javascript.0.Status.Spuelmaschine"/Status Spuelmaschine/; // aus Status_Geraete.js
! // Zählerstände bei Reset mitloggen?
var logging = true;
! // +++++ Ab hier keine Änderungen vornehmen +++++
! //Variablen anlegen
createState('Status.' + name_geraet + '.Zaehler.Tag', 0, {
read: true,
write: true,
type: 'number',
name: name_geraet + ' - Anzahl ' + beschreibung + ' heute'
});
createState('Status.' + name_geraet + '.Zaehler.Woche', 0, {
read: true,
write: true,
type: 'number',
name: name_geraet + ' - Anzahl ' + beschreibung + ' diese Woche'
});
createState('Status.' + name_geraet + '.Zaehler.Monat', 0, {
read: true,
write: true,
type: 'number',
name: name_geraet + ' - Anzahl ' + beschreibung + ' diesen Monat'
});
createState('Status.' + name_geraet + '.Zaehler.Quartal', 0, {
read: true,
write: true,
type: 'number',
name: name_geraet + ' - Anzahl ' + beschreibung + ' dieses Quartal'
});
createState('Status.' + name_geraet + '.Zaehler.Jahr', 0, {
read: true,
write: true,
type: 'number',
name: name_geraet + ' - Anzahl ' + beschreibung + ' dieses Jahr'
});createState('Status.' + name_geraet + '.Zaehler.addieren', false, { read: true, write: true, type: 'booelan', name: name_geraet + ' - Zähler um eins erhöhen' }); createState('Status.' + name_geraet + '.Zaehler.subtrahieren', false, { read: true, write: true, type: 'boolean', name: name_geraet + ' - Zähler um eins vermindern' });
! var idZaehler_addieren = 'javascript.0.Status.' + name_geraet + '.Zaehler.addieren',
idZaehler_subtrahieren = 'javascript.0.Status.' + name_geraet + '.Zaehler.subtrahieren';
! var idZaehlerTag = 'javascript.0.Status.' + name_geraet + '.Zaehler.Tag',
idZaehlerWoche = 'javascript.0.Status.' + name_geraet + '.Zaehler.Woche',
idZaehlerMonat = 'javascript.0.Status.' + name_geraet + '.Zaehler.Monat',
idZaehlerQuartal = 'javascript.0.Status.' + name_geraet + '.Zaehler.Quartal',
idZaehlerJahr = 'javascript.0.Status.' + name_geraet + '.Zaehler.Jahr';
! // Statusvariable überwachen und Ausgabe veranlassen
on({
id: idStatus,
change: 'ne'
}, function (data) {
if (data.newState.val === 1 ) { // eingeschaltet
// hochzählen
hochzaehlen();
}
});
! // Manuelles hochzaehlen
on(idZaehler_addieren, function (obj) {
if (!obj.newState.ack && obj.newState.val) {
hochzaehlen();
}
});
// Manuelles runterzaehlen
on(idZaehler_subtrahieren, function (obj) {
if (!obj.newState.ack && obj.newState.val) {
runterzaehlen();
}
});
! // Aktionen
function hochzaehlen() {
setState(idZaehlerTag, ++getState(idZaehlerTag).val);
setState(idZaehlerWoche, ++getState(idZaehlerWoche).val);
setState(idZaehlerMonat, ++getState(idZaehlerMonat).val);
setState(idZaehlerQuartal, ++getState(idZaehlerQuartal).val);
setState(idZaehlerJahr, ++getState(idZaehlerJahr).val);
}
! function runterzaehlen() {
setState(idZaehlerTag, --getState(idZaehlerTag).val);
setState(idZaehlerWoche, --getState(idZaehlerWoche).val);
setState(idZaehlerMonat, --getState(idZaehlerMonat).val);
setState(idZaehlerQuartal, --getState(idZaehlerQuartal).val);
setState(idZaehlerJahr, --getState(idZaehlerJahr).val);
}
! function zaehlerstand_reset(zeitraum) {
switch(zeitraum) {
case 'Tag':
var tag_meldung = beschreibung_log + ' gestern: ' + getState(idZaehlerTag).val;
if (logging) log(tag_meldung);
meldung_push(tag_meldung, 'Betreff', 0);
setState(idZaehlerTag, 0);
log(beschreibung_log + ' aktueller Tag zurückgesetzt');
break;case 'Woche': var woche_meldung = beschreibung_log + ' vergangene Woche: ' + getState(idZaehlerWoche).val; if (logging) log(woche_meldung); setState(idZaehlerWoche, 0); log(beschreibung_log + ' aktuelle Woche zurückgesetzt'); break; case 'Monat': var monat_meldung = beschreibung_log + ' verganener Monat: ' + getState(idZaehlerMonat).val; if (logging) log(monat_meldung); setState(idZaehlerMonat, 0); log(beschreibung_log + ' aktueller Monat zurückgesetzt'); break; case 'Quartal': var quartal_meldung = beschreibung_log + ' vergangenes Quartal: ' + getState(idZaehlerQuartal).val; if (logging) log(quartal_meldung); setState(idZaehlerQuartal, 0); log(beschreibung_log + ' aktuelles Quartal zurückgesetzt'); break; case 'Jahr': var jahr_meldung = beschreibung_log + ' vergangenes Jahr: ' + getState(idZaehlerJahr).val; if (logging) log(jahr_meldung); setState(idZaehlerJahr, 0); log(beschreibung_log + ' aktuelles Jahr zurückgesetzt'); break; default: log('Fehler/Error beim Reset der Datenpunkte!'); }
}
! // RESETS DER WERTE #################################
// Täglich um 0 Uhr ausführen
schedule("0 0 * * *", function() {
zaehlerstand_reset('Tag');
});
! // Montags um 0 Uhr ausführen
schedule("0 0 * * 1", function() {
zaehlerstand_reset('Woche');
});
! // Monatsersten um 0 Uhr ausführen
schedule("0 0 1 * *", function() {
zaehlerstand_reset('Monat');
});
! // Quartalsersten (Jan,Apr,Jul,Okt) um 0 Uhr ausführen
schedule("0 0 1 1 *", function() {
zaehlerstand_reset('Quartal');
});
! schedule("0 0 1 4 *", function() {
zaehlerstand_reset('Quartal');
});
! schedule("0 0 1 7 *", function() {
zaehlerstand_reset('Quartal');
});
! schedule("0 0 1 10 *", function() {
zaehlerstand_reset('Quartal');
});
! // Neujahr um 0 Uhr ausführen
schedule("0 0 1 1 *", function() {
zaehlerstand_reset('Jahr');
});
! // Pushmeldung
function meldung_push (text, titel, prio) {
var optin_push = getState(idOptinPush).val;
if (optin_push) { // wenn Optin
sendTo("pushover", {
message: text,
title: titel,
priority: prio
});
} // Ende Optin
}
! // Opt In setzen - Logging
on( {
id: idOptinPush,
change: 'ne'
}, function (obj) {
log('Opt in Variable <' + optin_beschreibung + ' Push> auf <' + obj.newState.val + '> gesetzt ', 'info');
});
! ````Habe drei Skripts für drei Geräte. Entsprechend hier ein Tabelle für VIS mit +/- Steuerung zur manuellen Korrektur:
filename="Bildschirmfoto 2016-01-02 um 13.45.32.jpg" index="0">~~!
[{"tpl":"tplBasicState","data":{"oid":"javascript.0.Status.Spuelmaschine.Zaehler.addieren","visibility-cond":"==","visibility-val":1,"value":"true","html":"[ +1 ]","name":"Zähler Spülmaschine erhöhen","class":""},"style":{"left":211,"top":1494,"z-index":"40","color":"rgba(250,250,250,0.6)","font-family":"RobotoCondensed-Regular, Futura","font-style":"","font-size":"14px","width":"auto","height":"auto"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.0.Status.Spuelmaschine.Zaehler.subtrahieren","visibility-cond":"==","visibility-val":1,"value":"true","html":"[ -1 ]","name":"Zähler Spülmaschine vermindern","class":""},"style":{"left":177,"top":1494,"z-index":"40","color":"rgba(250,250,250,0.6)","font-family":"RobotoCondensed-Regular, Futura","font-style":"","font-size":"14px","width":"auto","height":"auto"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.0.Status.Waschmaschine.Zaehler.subtrahieren","visibility-cond":"==","visibility-val":1,"value":"true","html":"[ -1 ]","name":"Zähler Waschmaschine vermindern","class":""},"style":{"left":177,"top":1619,"z-index":"40","color":"rgba(250,250,250,0.6)","font-family":"RobotoCondensed-Regular, Futura","font-style":"","font-size":"14px","width":"auto","height":"auto"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.0.Status.Waschmaschine.Zaehler.addieren","visibility-cond":"==","visibility-val":1,"value":"true","html":"[ +1 ]","name":"Zähler Waschmaschine erhöhen","class":""},"style":{"left":211,"top":1619,"z-index":"40","color":"rgba(250,250,250,0.6)","font-family":"RobotoCondensed-Regular, Futura","font-style":"","font-size":"14px","width":"auto","height":"auto"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.0.Status.Dampfgarer.Zaehler.subtrahieren","visibility-cond":"==","visibility-val":1,"value":"true","html":"[ -1 ]","name":"Zähler Dampfgarer vermindern","class":""},"style":{"left":177,"top":1369,"z-index":"40","color":"rgba(250,250,250,0.6)","font-family":"RobotoCondensed-Regular, Futura","font-style":"","font-size":"14px","width":"auto","height":"auto"},"widgetSet":"basic"},{"tpl":"tplBasicState","data":{"oid":"javascript.0.Status.Dampfgarer.Zaehler.addieren","visibility-cond":"==","visibility-val":1,"value":"true","html":"[ +1 ]","name":"Zähler Dampfgarer erhöhen","class":""},"style":{"left":211,"top":1369,"z-index":"40","color":"rgba(250,250,250,0.6)","font-family":"RobotoCondensed-Regular, Futura","font-style":"","font-size":"14px","width":"auto","height":"auto"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","html":"\n\n\n\n\n\n \n \n \n \n \n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n","name":"Tabelle"},"style":{"left":"106px","top":"1221px","z-index":"20","color":"rgba(250,250,250,1);","font-family":"","width":"auto","height":"auto","font-size":"12px"},"widgetSet":"basic"}] ! Und hier die CSS dazu: ! >!
/* --- Tabelle Anzahl / Zaehler (wie Strom)/
#anzahl {
text-align: center;
border-collapse: collapse; / kein Doppelrand, sonst "seperate"/
line-height: 100%;
font-family: RobotoCondensed-Regular, Futura;
}
! #anzahl thead {
font-size: 120%;
text-align: center;
margin: 0 0 10px 0;
}
! #anzahl caption { / Raumnamen /
font-size: 150%;
text-align: left;
margin: 10px 0 10px 0;
}
! / Grösse /
/Geräte Spalte/
#anzahl td.anzahl_Messpunkt,
#anzahl th.anzahl_Messpunkt {
width: 200px;
height: auto;
font-family: RobotoCondensed-Regular, Futura;
font-size: 14px;
font-weight: normal;
/color: red;/
}
! /Zeitraum Spalte/
#anzahl td.anzahl_Zeitraum,
#anzahl th.anzahl_Zeitraum {
width: 120px;
font-family: RobotoCondensed-Regular, Futura;
font-size: 14px;
font-weight: normal;
/color: green;/
}
! /Anzahl Spaltenüberschrift/
#anzahl th:nth-child(3) {
width: 80px;
height: auto;
font-family: RobotoCondensed-Regular, Futura;
font-size: 14px;
font-weight: normal;
/color: yellow;/
}
! /Zahlen rechtsbündig mit Padding zum Rand/
#anzahl tr.anzahl_Zeitraum_aktuell td,
#anzahl tr.anzahl_Zeitraum_Tag td,
#anzahl tr.anzahl_Zeitraum_Woche td,
#anzahl tr.anzahl_Zeitraum_Monat td,
#anzahl tr.anzahl_Zeitraum_Quartal td,
#anzahl tr.anzahl_Zeitraum_Jahr td{
text-align: right;
padding-right: 0.7em;
padding-top: 0.5em;
padding-bottom: 0.5em;
}
! #anzahl .anzahl_Spaltentitel { /Spaltentitel/
line-height: 250%;
}
! / Farben /
#anzahl,
#anzahl th,
#anzahl td {
border: 1px solid grey;
! }
#anzahl th {
color: rgba(250,250,250,1);
/ font-weight: 800;/
}
! #anzahl td {
color: rgba(220,220,220,1);
/ font-weight: 400; /
}
! #anzahl .anzahl_Spaltentitel { /Spaltentitel/
background: rgba(000,100,200,0.5); / blau /
}
! tbody.anzahl_kueche {
background: rgba(80,80,80,0.4);
}
! / Dampfgarer /
#anzahl tr:nth-child(2) {
background: rgba(200,200,200,0.25);
}
! / Spülmaschine /
#anzahl tr:nth-child(6) {
background: rgba(200,200,200,0.1);
}
! / Waschmaschine /
#anzahl tr:nth-child(11) {
background: rgba(200,200,200,0.25);
}
! / Zeiträume */
#anzahl tr.anzahl_Zeitraum_Tag {
background: rgba(0,250,0,0.2);
}
! #anzahl tr.anzahl_Zeitraum_Woche {
background: rgba(0,200,200,0.2);
}
! #anzahl tr.anzahl_Zeitraum_Monat{
background: rgba(0,0,80,0.5);
}
! #anzahl tr.anzahl_Zeitraum_Quartal {
background: rgba(0,150,0,0.2);
}
! #anzahl tr.anzahl_Zeitraum_Jahr {
background: rgba(180,0,0,0.5);
}
!! Vielleicht kann es jemand brauchen. ! Gruß ! Pix ! 02.01.2016 zweite Version mit manuellen Korrekturmöglichkeit der Zählerstände über VIS-Widgets (+/-) ! Fehler getState bei Pushsendung korrigiert ! Hallo Pix ! wollte gerade dein Script hier bei mir implementieren, aber frage mich gerade was im Script die ! ` > // aus Status_Geraete.js ` ! bedeuten soll? Ist das ein separates Script?!? :? ! danke schon mal in voraus ! <caption>Betriebszähler</caption> | Küche | Zeitraum | Anzahl | | --- | --- | --- | | Dampfgarer | Tag | {javascript.0.Status.Dampfgarer.Zaehler.Tag} | | Woche | {javascript.0.Status.Dampfgarer.Zaehler.Woche} | | Monat | {javascript.0.Status.Dampfgarer.Zaehler.Monat} | | Quartal | {javascript.0.Status.Dampfgarer.Zaehler.Quartal} | | Jahr | {javascript.0.Status.Dampfgarer.Zaehler.Jahr} | | Spülmaschine | Tag | {javascript.0.Status.Spuelmaschine.Zaehler.Tag} | | Woche | {javascript.0.Status.Spuelmaschine.Zaehler.Woche} | | Monat | {javascript.0.Status.Spuelmaschine.Zaehler.Monat} | | Quartal | {javascript.0.Status.Spuelmaschine.Zaehler.Quartal} | | Jahr | {javascript.0.Status.Spuelmaschine.Zaehler.Jahr} | | Waschmaschine | Tag | {javascript.0.Status.Waschmaschine.Zaehler.Tag} | | Woche | {javascript.0.Status.Waschmaschine.Zaehler.Woche} | | Monat | {javascript.0.Status.Waschmaschine.Zaehler.Monat} | | Quartal | {javascript.0.Status.Waschmaschine.Zaehler.Quartal} | | Jahr | {javascript.0.Status.Waschmaschine.Zaehler.Jahr} | !
` -
Hallo simpixo,
die Zeilen
// Diese Variable wird überwacht auf Änderung nach true var idStatus = "javascript.0.Status.Spuelmaschine"/*Status Spuelmaschine*/; // aus Status_Geraete.js
legen fest, welcher Datenpunkt für die Zählung überwacht wird. Ich habe für meine Spülmaschine in einem anderen Skript (Status_Geraete.js) einen Datenpunkt angelegt, der eben bei Start auf true und bei Ende auf false geht. Dieses Skript hier zählt die Umstellungen auf true und damit die Starts der Maschine. Du kannst das natürlich anpassen.
Gruß
Pix
-
Super, danke dir! Habe das Script heute eingebaut und es funktioniert
[emoji1360][emoji1360][emoji1360]
Gesendet von meinem iPhone mit Tapatalk
-
Hi,
wollte dieses Script gerade auch einbauen - habe dies von der iobroker-Seite und dort die Scripte Sammlung….
Leider erhalte ich schon beim copy&paste folgende Hinweise / Fehler (die mit dem roten Kreuz)
Nach dem starten des Scriptes erfolgt dann die untere zusätzliche Fehlermeldung...
-
&, damit kann das Skript nichts anfangen.
Dr. Google hilft auch hier weiter:
https://wiki.selfhtml.org/wiki/HTML/Reg … ne_Zeichen
-->
&&
eintragen statt````
&&Wenn du oben ins Skript schaust, siehst du auch, dass da nicht && steht.