Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Zähler Waschmaschine/Spülmaschine und Statistik

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    5
    1
    123

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    163

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    868

Zähler Waschmaschine/Spülmaschine und Statistik

Scheduled Pinned Locked Moved Skripten / Logik
6 Posts 4 Posters 3.6k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    P Offline
    pix
    wrote on last edited by
    #1

    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:
    261_bildschirmfoto_2016-01-02_um_13.45.32.jpg

    ! [{"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} | !

    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

    1 Reply Last reply
    0
    • S Offline
      S Offline
      simpixo
      wrote on last edited by
      #2

      @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} | ! `

      1 Reply Last reply
      0
      • P Offline
        P Offline
        pix
        wrote on last edited by
        #3

        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

        ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

        1 Reply Last reply
        0
        • S Offline
          S Offline
          simpixo
          wrote on last edited by
          #4

          Super, danke dir! Habe das Script heute eingebaut und es funktioniert

          [emoji1360][emoji1360][emoji1360]

          Gesendet von meinem iPhone mit Tapatalk

          1 Reply Last reply
          0
          • A Offline
            A Offline
            al-79
            wrote on last edited by
            #5

            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...

            Grüße
            4031_2018-02-20_103715.png

            1 Reply Last reply
            0
            • T Offline
              T Offline
              tempestas
              wrote on last edited by
              #6

              &, 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.

              <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

              1 Reply Last reply
              0

              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

              With your input, this post could be even better 💗

              Register Login
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate

              449

              Online

              32.8k

              Users

              82.7k

              Topics

              1.3m

              Posts
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Home
              • Recent
              • Tags
              • Unread 0
              • Categories
              • Unreplied
              • Popular
              • GitHub
              • Docu
              • Hilfe