Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

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

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    946

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Zähler Waschmaschine/Spülmaschine und Statistik

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 4 Kommentatoren 3.6k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    pix
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • S Offline
      S Offline
      simpixo
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        pix
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • S Offline
          S Offline
          simpixo
          schrieb am zuletzt editiert von
          #4

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

          [emoji1360][emoji1360][emoji1360]

          Gesendet von meinem iPhone mit Tapatalk

          1 Antwort Letzte Antwort
          0
          • A Offline
            A Offline
            al-79
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • T Offline
              T Offline
              tempestas
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              668

              Online

              32.6k

              Benutzer

              82.2k

              Themen

              1.3m

              Beiträge
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Home
              • Aktuell
              • Tags
              • Ungelesen 0
              • Kategorien
              • Unreplied
              • Beliebt
              • GitHub
              • Docu
              • Hilfe