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

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Material Design Widgets - Alerts

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.4k

Material Design Widgets - Alerts

Geplant Angeheftet Gesperrt Verschoben JavaScript
3 Beiträge 2 Kommentatoren 495 Aufrufe 2 Watching
  • Ä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.
  • B Offline
    B Offline
    bo_79
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,
    bin auf das Widget gestoßen und finde es ziemlich cool. Allerdings habe ich große Probleme mit der Ansteuerung.
    Dieses Script habe ich gemäß Anleitung in global laufen

    var materialDesignWidgets = {};
    materialDesignWidgets.sendTo = function (id, text, backgroundColor = '', borderColor = '', icon = '', iconColor = '', fontColor = '') {
        let json = getState(id).val;
     
        if (json) {
            try {
    
                json = JSON.parse(json);
    
            } catch (e) {
                json = [];
                console.warn('Wert ist kein JSON string! Wert wird ersetzt!');
            }
        } else {
            json = [];
        }
    
        json.push(
            {
                text: text,
                backgroundColor: backgroundColor,
                borderColor: borderColor,
                icon: icon,
                iconColor: iconColor,
                fontColor: fontColor
            }
        )
        setState(id, JSON.stringify(json), true);
    } 
    
    

    Wenn ich nun mehrfach, den Beispielcode mit meinem eigenen Datenpunkt aufrufe

    materialDesignWidgets.sendTo('javascript.0.Stati.Meldungen.Meldung-json2', 'message', 'color');
    

    funktioniert alles wie erwartet - bei jedem Aufruf über Cron-Job wird ein neuer Eintrag erzeugt.

    Ich hatte folgende Probleme, die meisten meiner Meldungen sollen nicht über die Schaltfläche im Widget verschwinden, sondern wenn ein Ereignis nicht mehr zutrifft. Dafür habe ich Datenpunkte erzeugt, die ich per Wenn/Dann abfragen kann - so weit so gut.

    • Wie kann ich das Widget leer machen - ich habe mir dafür einen Cron erstellt, der 2 Sekunden läuft bevor ein ander Cron den Datenpunkt befüllt - finde ich aber nicht so schick
    • Wenn ich nun versuche mehrere Meldungen in den Datenpunkt zu schreiben, wird immer nur der letzte übernommen - Wo habe ich den Fehler gemacht? Ich verstehe das einfach nicht :(

    Hier ein Testscript - sieht aber in meinem Script mit den ganzen Logikabfragen gleich aus

    schedule("2,32 * * * * *", function ()   // jede Minute in Sekunde 2 und 32
    {
            materialDesignWidgets.sendTo('javascript.0.Stati.Meldungen.Meldung-json2', '"Steroanlage länger als 2 Stunden an"', '#FE9A2E', '#FFFFFF', 'battery-alert', '#000000', '#FFFFFF' );
            console.warn('STEREOANLAGE ja');
        
            materialDesignWidgets.sendTo('javascript.0.Stati.Meldungen.Meldung-json2', 'Strahler', '#FE9A2E', '#FFFFFF', 'battery-alert', '#000000', '#FFFFFF' );
            console.warn('Strahler ja');
     
            materialDesignWidgets.sendTo('javascript.0.Stati.Meldungen.Meldung-json2', 'Es gibt Wetterwarnungen (DWD)', '#FA5858', '#FA5858', 'alert-outline', '#000000', '#FFFFFF' );
            console.warn('DWD ja');  
            
            materialDesignWidgets.sendTo('javascript.0.Stati.Meldungen.Meldung-json2', 'Es gibt Gefahren (Nina)', '#FA5858', '#FA5858', 'alert-outline', '#000000', '#FFFFFF' );
            console.warn('NINA ja');
    
            console.warn(getState("javascript.0.Stati.Meldungen.Meldung-json").val);
    });
    

    Vielen Dank für euren Support - bin da langsam am verzweifeln!
    Grüße
    Björn

    C 1 Antwort Letzte Antwort
    0
    • B bo_79

      Hallo zusammen,
      bin auf das Widget gestoßen und finde es ziemlich cool. Allerdings habe ich große Probleme mit der Ansteuerung.
      Dieses Script habe ich gemäß Anleitung in global laufen

      var materialDesignWidgets = {};
      materialDesignWidgets.sendTo = function (id, text, backgroundColor = '', borderColor = '', icon = '', iconColor = '', fontColor = '') {
          let json = getState(id).val;
       
          if (json) {
              try {
      
                  json = JSON.parse(json);
      
              } catch (e) {
                  json = [];
                  console.warn('Wert ist kein JSON string! Wert wird ersetzt!');
              }
          } else {
              json = [];
          }
      
          json.push(
              {
                  text: text,
                  backgroundColor: backgroundColor,
                  borderColor: borderColor,
                  icon: icon,
                  iconColor: iconColor,
                  fontColor: fontColor
              }
          )
          setState(id, JSON.stringify(json), true);
      } 
      
      

      Wenn ich nun mehrfach, den Beispielcode mit meinem eigenen Datenpunkt aufrufe

      materialDesignWidgets.sendTo('javascript.0.Stati.Meldungen.Meldung-json2', 'message', 'color');
      

      funktioniert alles wie erwartet - bei jedem Aufruf über Cron-Job wird ein neuer Eintrag erzeugt.

      Ich hatte folgende Probleme, die meisten meiner Meldungen sollen nicht über die Schaltfläche im Widget verschwinden, sondern wenn ein Ereignis nicht mehr zutrifft. Dafür habe ich Datenpunkte erzeugt, die ich per Wenn/Dann abfragen kann - so weit so gut.

      • Wie kann ich das Widget leer machen - ich habe mir dafür einen Cron erstellt, der 2 Sekunden läuft bevor ein ander Cron den Datenpunkt befüllt - finde ich aber nicht so schick
      • Wenn ich nun versuche mehrere Meldungen in den Datenpunkt zu schreiben, wird immer nur der letzte übernommen - Wo habe ich den Fehler gemacht? Ich verstehe das einfach nicht :(

      Hier ein Testscript - sieht aber in meinem Script mit den ganzen Logikabfragen gleich aus

      schedule("2,32 * * * * *", function ()   // jede Minute in Sekunde 2 und 32
      {
              materialDesignWidgets.sendTo('javascript.0.Stati.Meldungen.Meldung-json2', '"Steroanlage länger als 2 Stunden an"', '#FE9A2E', '#FFFFFF', 'battery-alert', '#000000', '#FFFFFF' );
              console.warn('STEREOANLAGE ja');
          
              materialDesignWidgets.sendTo('javascript.0.Stati.Meldungen.Meldung-json2', 'Strahler', '#FE9A2E', '#FFFFFF', 'battery-alert', '#000000', '#FFFFFF' );
              console.warn('Strahler ja');
       
              materialDesignWidgets.sendTo('javascript.0.Stati.Meldungen.Meldung-json2', 'Es gibt Wetterwarnungen (DWD)', '#FA5858', '#FA5858', 'alert-outline', '#000000', '#FFFFFF' );
              console.warn('DWD ja');  
              
              materialDesignWidgets.sendTo('javascript.0.Stati.Meldungen.Meldung-json2', 'Es gibt Gefahren (Nina)', '#FA5858', '#FA5858', 'alert-outline', '#000000', '#FFFFFF' );
              console.warn('NINA ja');
      
              console.warn(getState("javascript.0.Stati.Meldungen.Meldung-json").val);
      });
      

      Vielen Dank für euren Support - bin da langsam am verzweifeln!
      Grüße
      Björn

      C Offline
      C Offline
      Coffeelover
      schrieb am zuletzt editiert von
      #2

      @bo_79 Kennst du den schon: https://forum.iobroker.net/topic/29663/material-design-widgets-alerts-widget

      B 1 Antwort Letzte Antwort
      0
      • C Coffeelover

        @bo_79 Kennst du den schon: https://forum.iobroker.net/topic/29663/material-design-widgets-alerts-widget

        B Offline
        B Offline
        bo_79
        schrieb am zuletzt editiert von
        #3

        @Coffeelover
        Danke nochmal für den Link, kannte ich schon, habe den Thread aber jetzt nochmal komplett durchgearbeitet :-).
        Leider hat das mein Problem nicht gelöst.

        Da ich unterschiedlichste Status in die Meldungen packen wollte, und diese sich auch bei Statusänderung wieder automatisch entfernen sollten, war mein Gedanke.

        Per Cron und 2 Sekunden später per Script wieder befüllen.
        Ich habe jetzt herausgefunden, dass mein System das nicht packt wenn ich per Script unmittelbar hintereinander die Meldungen in den Datenpunkt schreibe. Jetzt habe ich pro Meldung ein Cron angelegt mit 2 Sekunden Abstand, das läuft jetzt stabil - ist aber noch keine schöne Lösung, da nun alle zwei Sekunden die Meldungen zugefügt werden.
        Leider bin ich nicht so fit in JS, aber man müsste vermutlich eine Variable definieren, die im Script die ganzen Meldungen gemäß den Vorgaben des JSON-String aneinander baut um es am Ende einmalig in den Datenpunkt zu schreiben...

        Oder hat noch jemand bessere Ideen?

        Grüße
        Björn

        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

        156

        Online

        32.4k

        Benutzer

        81.4k

        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