Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Material Design Widgets - Alerts

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Material Design Widgets - Alerts

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      bo_79 last edited by

      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 Reply Last reply Reply Quote 0
      • C
        Coffeelover @bo_79 last edited by

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

        B 1 Reply Last reply Reply Quote 0
        • B
          bo_79 @Coffeelover last edited by

          @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 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          383
          Online

          31.8k
          Users

          80.0k
          Topics

          1.3m
          Posts

          2
          3
          420
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo