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. Visualisierung
  4. [Showcase] Jarvis - just another remarkable vis

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

[Showcase] Jarvis - just another remarkable vis

Scheduled Pinned Locked Moved Visualisierung
vis
453 Posts 81 Posters 143.9k Views 95 Watching
  • 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.
  • W WW1983

    @octopus180

    Wenn du als Trigger Element "ButtonAction" einstellst, kannst du über den Schraubenschlüssel den Text des Buttons bearbeiten:
    cc0cfd15-a68b-45a8-9e79-53e0cf7e4539-image.png

    56691ca5-76f8-464e-9ee6-b2d5ff5dad76-image.png

    Und übrige Buttons, also die auf der linken Seite, kannst du bei dem jeweiligen Gerät selber einstellen:

    eaba36fe-f6cc-4c14-8ef8-1dc33c20968a-image.png

    D Offline
    D Offline
    Dead4K
    wrote on last edited by
    #300

    @ww1983 also ich wüsste gerne wie du den status in Worten angezeigt bekommst und die Akku Ladung in Prozent mit dem Prozent Zeichen. bin auch absolut neu in Jarvis und fuchs mich gerade so erst in alles rein

    M 1 Reply Last reply
    0
    • D Offline
      D Offline
      Dead4K
      wrote on last edited by
      #301

      @mcu folgendes Habich eingetragen

      body {
      	background-color: #0cbaba;
      	background-image: linear-gradient(315deg, #0cbaba 0%, #380036 74%);
      }
      
      .jarvis-AppBar {
      	background: none;
      }
      
      .jarvis-Toolbar,
      .jarvis-Tabs,
      .jarvis-Widget {
      	background-color: rgba(255,255,255,0.2);
      }
      
      .jarvis-Tabs {
      	border-bottom: 0;
      }
      

      post 151 von zefau selber ist es

      M 1 Reply Last reply
      0
      • D Dead4K

        @mcu folgendes Habich eingetragen

        body {
        	background-color: #0cbaba;
        	background-image: linear-gradient(315deg, #0cbaba 0%, #380036 74%);
        }
        
        .jarvis-AppBar {
        	background: none;
        }
        
        .jarvis-Toolbar,
        .jarvis-Tabs,
        .jarvis-Widget {
        	background-color: rgba(255,255,255,0.2);
        }
        
        .jarvis-Tabs {
        	border-bottom: 0;
        }
        

        post 151 von zefau selber ist es

        M Offline
        M Offline
        MCU
        wrote on last edited by MCU
        #302

        @dead4k
        Soll es so aussehen?
        31b4d3fb-1e8b-49b8-97f4-f5c43a516aa9-image.png

        .jarvis-page-container {
        	background-color: #0cbaba;
        	background-image: linear-gradient(315deg, #0cbaba 0%, #380036 74%);
        }
        
        .body--dark .jarvis-header {
        	background-color: rgba(0,0,0,0.2) !important;
        }
        
        .jarvis-tabs-container {
        	background-color: rgba(0,0,0,0.2) !important;
        }
        
        .jarvis-widget-container {
        	background-color: rgba(0,0,0,0.2) !important;
        }
        
        .body--dark .jarvis-widget {
        	background: rgba(0,0,0,0.2);
        }
        
        .body--light .jarvis-widget {
        	background: rgba(255,255,255,1);
        }
        
        .body--dark .jarvis-tabs-container {
        	background-color: rgba(0,0,0,0.2) !important;
        }
        .q-table__container {
        	background-color: transparent !important;
        }
        

        Hab ich in die Doku mit aufgenommen:
        https://mcuiobroker.gitbook.io/jarvis-infos/jarvis/besonderheiten-v3/styles/gradient-design

        NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
        Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

        D 1 Reply Last reply
        1
        • D Dead4K

          @ww1983 also ich wüsste gerne wie du den status in Worten angezeigt bekommst und die Akku Ladung in Prozent mit dem Prozent Zeichen. bin auch absolut neu in Jarvis und fuchs mich gerade so erst in alles rein

          M Offline
          M Offline
          MCU
          wrote on last edited by MCU
          #303

          @dead4k Status in Worten mit der Anzeigevariante
          Beispiel, habe keine Roboterwerte

          {"0":"Parkt","1":"Fährt"}
          

          Ladung in Prozent:
          caacb536-1a1d-4e77-85f5-3073d18774eb-image.png

          NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
          Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

          1 Reply Last reply
          1
          • M MCU

            @dead4k
            Soll es so aussehen?
            31b4d3fb-1e8b-49b8-97f4-f5c43a516aa9-image.png

            .jarvis-page-container {
            	background-color: #0cbaba;
            	background-image: linear-gradient(315deg, #0cbaba 0%, #380036 74%);
            }
            
            .body--dark .jarvis-header {
            	background-color: rgba(0,0,0,0.2) !important;
            }
            
            .jarvis-tabs-container {
            	background-color: rgba(0,0,0,0.2) !important;
            }
            
            .jarvis-widget-container {
            	background-color: rgba(0,0,0,0.2) !important;
            }
            
            .body--dark .jarvis-widget {
            	background: rgba(0,0,0,0.2);
            }
            
            .body--light .jarvis-widget {
            	background: rgba(255,255,255,1);
            }
            
            .body--dark .jarvis-tabs-container {
            	background-color: rgba(0,0,0,0.2) !important;
            }
            .q-table__container {
            	background-color: transparent !important;
            }
            

            Hab ich in die Doku mit aufgenommen:
            https://mcuiobroker.gitbook.io/jarvis-infos/jarvis/besonderheiten-v3/styles/gradient-design

            D Offline
            D Offline
            Dead4K
            wrote on last edited by
            #304

            @mcu

            Ja fast! Etwas heller tatsächlich gerne noch.

            ACC0F1AD-449F-46B0-BCB9-512058345D41.png

            So hatte zefau das ganz weit oben mal.

            Und danke für Status und Prozent Anzeige !!

            M 1 Reply Last reply
            0
            • D Offline
              D Offline
              disaster123
              wrote on last edited by
              #305

              Gibt es eine Möglichkeit das man beim Klick auf eine Anzeige einen Graphen als Popup / Layer öffnet? Ich habe einige Werte wo ich manchmal gerne schnell die Historie sehen würde.

              M 1 Reply Last reply
              0
              • D disaster123

                Gibt es eine Möglichkeit das man beim Klick auf eine Anzeige einen Graphen als Popup / Layer öffnet? Ich habe einige Werte wo ich manchmal gerne schnell die Historie sehen würde.

                M Offline
                M Offline
                MCU
                wrote on last edited by
                #306

                @disaster123 Was für eine Anzeige (Bild, Graph)? Nein. StateList-StateDP ja.

                NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                D 1 Reply Last reply
                0
                • D Dead4K

                  @mcu

                  Ja fast! Etwas heller tatsächlich gerne noch.

                  ACC0F1AD-449F-46B0-BCB9-512058345D41.png

                  So hatte zefau das ganz weit oben mal.

                  Und danke für Status und Prozent Anzeige !!

                  M Offline
                  M Offline
                  MCU
                  wrote on last edited by MCU
                  #307

                  @dead4k Setz mal überall wo dort 0.2 steht eine 0.1, ist es dann hell genug?

                  .jarvis-page-container {
                  	background-color: #0cbaba;
                  	background-image: linear-gradient(315deg, #0cbaba 0%, #661f64 74%);
                  	/* #661f64 old #380036*/
                  }
                  
                  .body--dark .jarvis-header {
                  	background-color: rgba(0,0,0,0.01) !important;
                  }
                  
                  .jarvis-tabs-container {
                  	background-color: rgba(0,0,0,0.01) !important;
                  }
                  
                  .jarvis-widget-container {
                  	background-color: rgba(0,0,0,0.01) !important;
                  }
                  
                  .body--dark .jarvis-widget {
                  	background: rgba(0,0,0,0.01);
                  }
                  
                  .body--light .jarvis-widget {
                  	background: rgba(255,255,255,0.5);
                  }
                  
                  .body--dark .jarvis-tabs-container {
                  	background-color: rgba(0,0,0,0.01) !important;
                  }
                  
                  .q-table__container {
                  	background-color: transparent !important;
                  }
                  

                  NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                  Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                  1 Reply Last reply
                  1
                  • M MCU

                    @disaster123 Was für eine Anzeige (Bild, Graph)? Nein. StateList-StateDP ja.

                    D Offline
                    D Offline
                    disaster123
                    wrote on last edited by
                    #308

                    @mcu ich meine wenn man eine statelist hat das man beim klicken auf einen Wert einen predefined graph angezeigt bekommt

                    M 1 Reply Last reply
                    0
                    • D disaster123

                      @mcu ich meine wenn man eine statelist hat das man beim klicken auf einen Wert einen predefined graph angezeigt bekommt

                      M Offline
                      M Offline
                      MCU
                      wrote on last edited by
                      #309

                      @disaster123
                      https://mcuiobroker.gitbook.io/jarvis-infos/jarvis/besonderheiten-v3/styles/statelist-1/statelist-popup

                      NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                      D 1 Reply Last reply
                      1
                      • M MCU

                        @disaster123
                        https://mcuiobroker.gitbook.io/jarvis-infos/jarvis/besonderheiten-v3/styles/statelist-1/statelist-popup

                        D Offline
                        D Offline
                        disaster123
                        wrote on last edited by
                        #310

                        @mcu sagte in [Showcase] Jarvis - just another remarkable vis:

                        @disaster123
                        https://mcuiobroker.gitbook.io/jarvis-infos/jarvis/besonderheiten-v3/styles/statelist-1/statelist-popup

                        DANKE!! Etwas aufwändiger als gedacht aber es geht!

                        1 Reply Last reply
                        1
                        • FeuersturmF Offline
                          FeuersturmF Offline
                          Feuersturm
                          wrote on last edited by Feuersturm
                          #311

                          Hallo zusammen,

                          ich bin gerade dabei die "Willkommensseite" von der ioBroker Doku zu überarbeiten (https://forum.iobroker.net/topic/51919/brainstorming-doku-abschnitt-willkommen/11)

                          Ich bin aktuell dabei das Kapitel "Visualisierung" zu überarbeiten.
                          Den aktuellen Entwurfsstand für jarvis findet ihr hier:
                          https://github.com/Feuer-sturm/ioBroker.docs/blob/FS-welcome/docs/de/README.md#jarvis

                          Ich suche weiteren Input für die Doku und würde mich über Rückmeldungen zu den folgenden Themen freuen:

                          • Kurzbeschreibung / Merkmale von jarvis ( @Zefau kannst du hier unterstützen?)
                          • Eure jarvis Views welche in die Doku als Beispiel eingettet werden können und einem Besucher helfen einen ersten Eindruck von jarvis zu bekommen
                          Rene.HomeR Dominik F.D 2 Replies Last reply
                          0
                          • FeuersturmF Feuersturm

                            Hallo zusammen,

                            ich bin gerade dabei die "Willkommensseite" von der ioBroker Doku zu überarbeiten (https://forum.iobroker.net/topic/51919/brainstorming-doku-abschnitt-willkommen/11)

                            Ich bin aktuell dabei das Kapitel "Visualisierung" zu überarbeiten.
                            Den aktuellen Entwurfsstand für jarvis findet ihr hier:
                            https://github.com/Feuer-sturm/ioBroker.docs/blob/FS-welcome/docs/de/README.md#jarvis

                            Ich suche weiteren Input für die Doku und würde mich über Rückmeldungen zu den folgenden Themen freuen:

                            • Kurzbeschreibung / Merkmale von jarvis ( @Zefau kannst du hier unterstützen?)
                            • Eure jarvis Views welche in die Doku als Beispiel eingettet werden können und einem Besucher helfen einen ersten Eindruck von jarvis zu bekommen
                            Rene.HomeR Offline
                            Rene.HomeR Offline
                            Rene.Home
                            wrote on last edited by
                            #312

                            @Zefau
                            Ich habe es nun heute geschafft meine Json-Tabelle in Jarvis zu implementieren. Allerding habe ich ein Problem mit der Formatierung. Ich kann die Daten alle Anzeigen, auch in der Reihenfolge wie ich es will, aber bei der Formatierung stelle ich mich zu "glatt" an.

                            In dem einen Feld habe ich zwei unterschiedliche Werte einmal "ja" und einmal "nein". Nun wollte ich in der Json-Tabelle gern die Werte oder ggf nur das Wort "ja" in "grün" und "nein" in "rot" Darstellen.

                            Wenn ich das mit der Formatierung richtig verstanden habe sollte das über Spalten (Json Format) gemacht werden können. Leider gibt es keine genauen Dokumentationen ob das überhaupt umsetzbar ist.

                            Zur Zeit habe ich das folgende eingetragen:

                            [{"field:":"Name","label":"HWN Name"},{"field":"Position","label":"Coordinaten"},{"field":"Wert","label":"Gestempelt","align":"left","format": "ja"=>{"#090"}}}]

                            Lt Hint, wenn des Felder sollte das ja irgendwie gehen oder liege ich da falsch?

                            Hat jemand eine Idee was ich hier übersehen habe.

                            Rene.HomeR 1 Reply Last reply
                            0
                            • Rene.HomeR Rene.Home

                              @Zefau
                              Ich habe es nun heute geschafft meine Json-Tabelle in Jarvis zu implementieren. Allerding habe ich ein Problem mit der Formatierung. Ich kann die Daten alle Anzeigen, auch in der Reihenfolge wie ich es will, aber bei der Formatierung stelle ich mich zu "glatt" an.

                              In dem einen Feld habe ich zwei unterschiedliche Werte einmal "ja" und einmal "nein". Nun wollte ich in der Json-Tabelle gern die Werte oder ggf nur das Wort "ja" in "grün" und "nein" in "rot" Darstellen.

                              Wenn ich das mit der Formatierung richtig verstanden habe sollte das über Spalten (Json Format) gemacht werden können. Leider gibt es keine genauen Dokumentationen ob das überhaupt umsetzbar ist.

                              Zur Zeit habe ich das folgende eingetragen:

                              [{"field:":"Name","label":"HWN Name"},{"field":"Position","label":"Coordinaten"},{"field":"Wert","label":"Gestempelt","align":"left","format": "ja"=>{"#090"}}}]

                              Lt Hint, wenn des Felder sollte das ja irgendwie gehen oder liege ich da falsch?

                              Hat jemand eine Idee was ich hier übersehen habe.

                              Rene.HomeR Offline
                              Rene.HomeR Offline
                              Rene.Home
                              wrote on last edited by Rene.Home
                              #313

                              Sorry doppel Post

                              1 Reply Last reply
                              0
                              • FeuersturmF Feuersturm

                                Hallo zusammen,

                                ich bin gerade dabei die "Willkommensseite" von der ioBroker Doku zu überarbeiten (https://forum.iobroker.net/topic/51919/brainstorming-doku-abschnitt-willkommen/11)

                                Ich bin aktuell dabei das Kapitel "Visualisierung" zu überarbeiten.
                                Den aktuellen Entwurfsstand für jarvis findet ihr hier:
                                https://github.com/Feuer-sturm/ioBroker.docs/blob/FS-welcome/docs/de/README.md#jarvis

                                Ich suche weiteren Input für die Doku und würde mich über Rückmeldungen zu den folgenden Themen freuen:

                                • Kurzbeschreibung / Merkmale von jarvis ( @Zefau kannst du hier unterstützen?)
                                • Eure jarvis Views welche in die Doku als Beispiel eingettet werden können und einem Besucher helfen einen ersten Eindruck von jarvis zu bekommen
                                Dominik F.D Offline
                                Dominik F.D Offline
                                Dominik F.
                                wrote on last edited by
                                #314

                                @feuersturm

                                Wenn sie dir gefallen, kannst du Bilde von meiner Visualisierung mit Jarvis nutzen.

                                Unbenannt4.PNG
                                Unbenannt3.PNG
                                Unbenannt2.PNG
                                Unbenannt1.PNG
                                Unbenannt.PNG

                                1 Reply Last reply
                                1
                                • uwe12489U Offline
                                  uwe12489U Offline
                                  uwe12489
                                  wrote on last edited by
                                  #315

                                  Hallo zusammen, kurze Frage: Kann ich ein eigenes Bild als Icon bei den Geräten eintragen?
                                  Danke.

                                  M 1 Reply Last reply
                                  0
                                  • uwe12489U uwe12489

                                    Hallo zusammen, kurze Frage: Kann ich ein eigenes Bild als Icon bei den Geräten eintragen?
                                    Danke.

                                    M Offline
                                    M Offline
                                    MCU
                                    wrote on last edited by
                                    #316

                                    @uwe12489
                                    https://mcuiobroker.gitbook.io/jarvis-infos/jarvis/beispiele/geraete-einstellungen/icons-eigene/eigene-icons

                                    NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
                                    Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                                    uwe12489U 1 Reply Last reply
                                    0
                                    • M MCU

                                      @uwe12489
                                      https://mcuiobroker.gitbook.io/jarvis-infos/jarvis/beispiele/geraete-einstellungen/icons-eigene/eigene-icons

                                      uwe12489U Offline
                                      uwe12489U Offline
                                      uwe12489
                                      wrote on last edited by
                                      #317

                                      @mcu Super Service. Hat geklappt. Danke.

                                      1 Reply Last reply
                                      0
                                      • F frajop

                                        @jayr nicht besonders elegant, geht aber .....
                                        Ich habe in Jarvis ein Gerät 'DWD' mit den Datenpunkten angelegt, diese können dann als CustomHtml angezeigt werden

                                        // Meldungen von DWD Adapter in HTML formatieren für jarvis - Anzeige
                                        
                                        // Datenpunkte 
                                        createState('0_userdata.0.DWD.headline' , "-", { read: true, write: true, type: 'string', name: 'DWDheadline' });
                                        createState('0_userdata.0.DWD.zeitraum' , "-", { read: true, write: true, type: 'string', name: 'DWDzeitraum' });
                                        createState('0_userdata.0.DWD.text', "-",      { read: true, write: true, type: 'string', name: 'DWDtext' });
                                        createState('0_userdata.0.DWD.headline1', " ", { read: true, write: true, type: 'string', name: 'DWDheadline' });
                                        createState('0_userdata.0.DWD.zeitraum1', " ", { read: true, write: true, type: 'string', name: 'DWDzeitraum' });
                                        createState('0_userdata.0.DWD.text1', " ",     { read: true, write: true, type: 'string', name: 'DWDtext' });
                                        createState('0_userdata.0.DWD.headline2', " ", { read: true, write: true, type: 'string', name: 'DWDheadline' });
                                        createState('0_userdata.0.DWD.zeitraum2', " ", { read: true, write: true, type: 'string', name: 'DWDzeitraum' });
                                        createState('0_userdata.0.DWD.text2', " ",     { read: true, write: true, type: 'string', name: 'DWDtext' });
                                        
                                        //--------------------------------------------------------------------------------------
                                        var f_begin = " ";
                                        var f_end = " ";
                                        var headline = " ";
                                        var zeitraum = " ";
                                        var text = " ";
                                        var level = " ";
                                        
                                        schedule('*/5 * * * *', function () {        // alle 5 min
                                        
                                           //***** Erste Warnung ****************************************************
                                           var begin = getState('dwd.0.warning.begin').val;      
                                           var end   = getState('dwd.0.warning.end').val;
                                           if ((begin === null) && (end === null)) {
                                               // keine Meldungen aktiv
                                               log ("DWD - Keine Warnungen");
                                               headline = '<b>Keine Warnungen</b>';
                                               zeitraum = " ";
                                               text = " ";
                                               level = " ";
                                               setState('0_userdata.0.DWD.headline', headline);
                                               setState('0_userdata.0.DWD.zeitraum', zeitraum);
                                               setState('0_userdata.0.DWD.text', text);
                                           }
                                           else {
                                               // Meldungen vorhanden
                                               log("DWD - Warnungen aktiv");
                                        
                                               // date/time formatieren
                                               if (begin != null) {
                                                   if (end != null) {
                                                       f_begin = (formatDate(begin, "WW TT.MM.JJJJ S") + ' Uhr bis ');
                                                   } else {
                                                       f_begin = (formatDate(begin, "WW TT.MM.JJJJ S") + ' Uhr');
                                                   }
                                               } else {
                                                   f_begin = " ";
                                               }
                                               if (end != null) {
                                                   f_end = (formatDate(end, "WW TT.MM.JJJJ S") + ' Uhr');
                                               } else {
                                                   f_end = " ";
                                               }
                                        
                                               // LEVEL
                                               level = ' (Stufe ' + getState('dwd.0.warning.severity').val + ')';
                                               // Headline bold
                                               headline = '<b>' + getState('dwd.0.warning.headline').val + '</b>' + level;
                                               setState('0_userdata.0.DWD.headline', headline);
                                               zeitraum = f_begin + f_end; 
                                               setState('0_userdata.0.DWD.zeitraum', '<i>' + zeitraum + '</i>');
                                               text = getState('dwd.0.warning.description').val;
                                               setState('0_userdata.0.DWD.text', text + '<br>&nbsp;<hr>');
                                           }
                                        
                                           //***** Nächste Warnung ****************************************************
                                           begin = getState('dwd.0.warning1.begin').val;      
                                           end   = getState('dwd.0.warning1.end').val;
                                           if ((begin === null) && (end === null)) {
                                               // keine Meldungen aktiv
                                               log ("keine 2te Warnung");
                                               headline = " ";
                                               zeitraum = " ";
                                               text = " ";
                                               level = " ";
                                               setState('0_userdata.0.DWD.headline1', headline);
                                               setState('0_userdata.0.DWD.zeitraum1', zeitraum);
                                               setState('0_userdata.0.DWD.text1', text);
                                           }
                                           else {
                                               // Meldungen vorhanden
                                               log("DWD - 2te Warnung aktiv");
                                               // date/time formatieren
                                               if (begin != null) {
                                                   if (end != null) {
                                                       f_begin = (formatDate(begin, "WW TT.MM.JJJJ S") + ' Uhr bis ');
                                                   } else {
                                                       f_begin = (formatDate(begin, "WW TT.MM.JJJJ S") + ' Uhr');
                                                   }
                                               } else {
                                                   f_begin = " ";
                                               }
                                               if (end != null) {
                                                   f_end = (formatDate(end, "WW TT.MM.JJJJ S") + ' Uhr');
                                               } else {
                                                   f_end = " ";
                                               }
                                               // LEVEL
                                               level = ' (Stufe ' + getState('dwd.0.warning1.severity').val + ')';
                                               // Headline bold
                                               headline = '<b>' + getState('dwd.0.warning1.headline').val + '</b>' + level;
                                               setState('0_userdata.0.DWD.headline1', headline);
                                               zeitraum = f_begin + f_end;
                                               setState('0_userdata.0.DWD.zeitraum1', '<i>' + zeitraum + '</i>');
                                               text = getState('dwd.0.warning1.description').val;
                                               setState('0_userdata.0.DWD.text1', text + '<br>&nbsp;<hr>');
                                           }
                                        
                                           //***** Übernächste Warnung ****************************************************
                                           begin = getState('dwd.0.warning2.begin').val;      
                                           end   = getState('dwd.0.warning2.end').val;
                                           if ((begin === null) && (end === null)) {
                                               // keine Meldungen aktiv
                                               log ("keine 3te Warnung");
                                               headline = " ";
                                               zeitraum = " ";
                                               text = " ";
                                               level = " ";
                                               setState('0_userdata.0.DWD.headline2', headline);
                                               setState('0_userdata.0.DWD.zeitraum2', zeitraum);
                                               setState('0_userdata.0.DWD.text2', text);
                                           }
                                           else {
                                               // Meldungen vorhanden
                                               log("DWD - 3te Warnung aktiv");
                                               // date/time formatieren
                                               if (begin != null) {
                                                   if (end != null) {
                                                       f_begin = (formatDate(begin, "WW TT.MM.JJJJ S") + ' Uhr bis ');
                                                   } else {
                                                       f_begin = (formatDate(begin, "WW TT.MM.JJJJ S") + ' Uhr');
                                                   }
                                               } else {
                                                   f_begin = " ";
                                               }
                                               if (end != null) {
                                                   f_end = (formatDate(end, "WW TT.MM.JJJJ S") + ' Uhr');
                                               } else {
                                                   f_end = " ";
                                               }
                                               // LEVEL
                                               level = ' (Stufe ' + getState('dwd.0.warning2.severity').val + ')';
                                               // Headline bold
                                               headline = '<b>' + getState('dwd.0.warning2.headline').val + '</b>' + level;
                                               setState('0_userdata.0.DWD.headline2', headline);
                                               zeitraum = f_begin + f_end;
                                               setState('0_userdata.0.DWD.zeitraum2', '<i>' + zeitraum + '</i>');
                                               text = getState('dwd.0.warning2.description').val;
                                               setState('0_userdata.0.DWD.text2', text + '<br>&nbsp;<hr>');
                                           }
                                        });
                                        
                                        

                                        M Offline
                                        M Offline
                                        Minta79
                                        wrote on last edited by
                                        #318

                                        @frajop Hi. Script funktioniert. Vielen Dank dafür! Mit der Tabelle in Jarvis tue ich mich noch schwer. Arbeite mit Version 3.0.11. "CustomHTML" gibt es da nicht mehr. Ich habe es mit "StateHTML" versucht, bekomme es aber nicht hin, weil ich nicht weiß wie ich dort dann die Datenpunkte eintragen muss. Es wird immer nur der erste angezeigt.

                                        1 Reply Last reply
                                        0
                                        • C cws

                                          @frajop @JayR Angeregt von Deinem Skript @frajop habe ich die Anzeige etwas "verfeinert":

                                          Beim DWD-Adapter kann man einstellen, wieviele Meldungen man bekommen möchte. Für die Anzahl der Meldungen (bei mir 4) habe ich vier User-Datenpunkte (warnung0, warnung1, warnung2 und warnung3) angelegt, sowie einen zusätzlichen Datenpunkt "warnungen".

                                          Das Skript habe ich nun so modifiziert, dass alle 5 Minuten die Datenpunkte des DWD-Adapter abgefragt werden und daraus dann eine große Liste mit den Warnungen angezeigt wird (inkl. Symbole und Farbmarkierungen).

                                          Hier das Skript dazu:

                                          // Meldungen von DWD Adapter in HTML formatieren für jarvis - Anzeige
                                           
                                          //--------------------------------------------------------------------------------------
                                          var f_begin = " ";
                                          var f_end = " ";
                                          var headline = " ";
                                          var zeitraum = " ";
                                          var text = " ";
                                          
                                          var level = " ";
                                          var level_txt = " ";
                                          var level_clr = " ";
                                          
                                          var typ = " ";
                                          var typ_icn = " ";
                                          var typ_txt = " ";
                                          
                                          var warn_num = 0;
                                          var i;
                                          var warnung = [];
                                          
                                          schedule('*/5 * * * *', function () {        // alle 5 min
                                          
                                          warn_num = getState("dwd.0.numberofwarnings").val;
                                          //setState("0_userdata.0.DWD.warnungen", " ");
                                          
                                          if (warn_num > 0) {
                                          
                                              for (i = 0; i < warn_num; i++) {
                                                  if (i == 0) {
                                                      w = "";
                                                  } else {
                                                      w = i;
                                                  }
                                          
                                                  var begin = getState('dwd.0.warning'+w+'.begin').val;      
                                                  var end   = getState('dwd.0.warning'+w+'.end').val;
                                                  if ((begin === null) && (end === null)) {
                                                      // keine Meldungen aktiv
                                                      log ("DWD - Keine "+ i +"te Warnungen");
                                                      warnung[i] = " ";
                                                      setState("0_userdata.0.DWD.warnung"+i, " ");
                                                  }
                                                  else {
                                                      // Meldungen vorhanden
                                                      log("DWD - "+ i +"te Warnungen aktiv");
                                                      setState("0_userdata.0.DWD.warnung"+i, " ");
                                           
                                                      // date/time formatieren
                                                      if (begin != null) {
                                                          if (end != null) {
                                                              f_begin = (formatDate(begin, "W TT.MM.JJJJ S") + ' Uhr bis ');
                                                          } else {
                                                              f_begin = (formatDate(begin, "W TT.MM.JJJJ S") + ' Uhr');
                                                          }
                                                      } else {
                                                          f_begin = " ";
                                                      }
                                                      if (end != null) {
                                                          f_end = (formatDate(end, "W TT.MM.JJJJ S") + ' Uhr');
                                                      } else {
                                                          f_end = " ";
                                                      }
                                           
                                                     // LEVEL
                                                     level = getState('dwd.0.warning'+w+'.level').val;
                                                 
                                                      switch(level) {
                                                          case 1 :
                                                              level_txt = "VOR-WARNUNG";
                                                              level_clr = "#a6acaf";
                                                              break;
                                                          case 2 :
                                                              level_txt = "GERING (1 von 4)";
                                                              level_clr = "#f1c40f";  
                                                              break;
                                                          case 3 :
                                                              level_txt = "ERHÖHT (2 von 4)";
                                                              level_clr = "#df7f19";
                                                              break;
                                                          case 4 :
                                                              level_txt = "HOCH (3 von 4)";
                                                              level_clr = "#cb4335";
                                                              break;
                                                          case 5 :
                                                              level_txt = "EXTREM (4 von 4)";
                                                              level_clr = "#6c3483";
                                                              break;
                                                          default :
                                                              level_txt = "UNBEKANNT";
                                                              level_clr = "#cb4335";
                                                              break;
                                                      }
                                              
                                                      typ = getState('dwd.0.warning'+w+'.type').val;
                                          
                                                      switch(typ) {
                                                          case 0 :
                                                              typ_txt = "GEWITTER";
                                                              typ_icn = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1em" height="1em" style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M5 2v11h3v9l7-12h-4l4-8m2 13h2v2h-2v-2m0-8h2v6h-2V7z" fill="' + level_clr + '"/></svg>';
                                                              break;
                                                          case 1 :
                                                              typ_txt = "STURM";
                                                              typ_icn = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1em" height="1em" style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M7 5v8l15-2V7L7 5m3 1.91l3 .4v3.38l-3 .4V6.91m6 .8l3 .4v1.78l-3 .4V7.71M5 10v1h1v1H5v9H3V4c0-.55.45-1 1-1s1 .45 1 1v2h1v1H5v3z" fill="' + level_clr + '"/></svg>';
                                                              break;
                                                          case 2 :
                                                              typ_txt = "REGEN";
                                                              typ_icn = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1em" height="1em" style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M9 12c.53.14.85.69.71 1.22l-1.3 4.83c-.14.54-.69.85-1.22.71a.967.967 0 0 1-.69-1.22l1.28-4.83c.14-.54.69-.85 1.22-.71m4 0c.53.14.85.69.71 1.22l-2.07 7.73c-.14.55-.69.85-1.23.71c-.53-.16-.85-.69-.71-1.23l2.08-7.72c.14-.54.69-.85 1.22-.71m4 0c.53.14.85.69.71 1.22l-1.3 4.83c-.14.54-.69.85-1.22.71a.967.967 0 0 1-.69-1.22l1.28-4.83c.14-.54.69-.85 1.22-.71m0-2V9a5 5 0 0 0-5-5C9.5 4 7.45 5.82 7.06 8.19C6.73 8.07 6.37 8 6 8a3 3 0 0 0-3 3c0 1.11.6 2.08 1.5 2.6v-.01c.5.28.64.91.37 1.37c-.28.47-.87.64-1.37.36v.01A4.98 4.98 0 0 1 1 11a5 5 0 0 1 5-5c1-2.35 3.3-4 6-4c3.43 0 6.24 2.66 6.5 6.03L19 8a4 4 0 0 1 4 4c0 1.5-.8 2.77-2 3.46c-.5.27-1.09.11-1.37-.37c-.27-.48-.13-1.09.37-1.37v.01c.6-.34 1-.99 1-1.73a2 2 0 0 0-2-2h-2z" fill="' + level_clr + '"/></svg>';
                                                              break;
                                                          case 3 :
                                                              typ_txt = "SCHNEE";
                                                              typ_icn = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1em" height="1em" style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M16.46 9.41L13 7.38V5.12l1.71-1.71L13.29 2L12 3.29L10.71 2L9.29 3.41L11 5.12v2.26L8.5 8.82l-2-1.13l-.58-2.33L4 5.88l.47 1.77l-1.77.47l.52 1.93l2.33-.62l2 1.13v2.89l-2 1.13l-2.33-.62l-.52 1.93l1.77.47L4 18.12l1.93.52l.62-2.33l2-1.13L11 16.62v2.26l-1.71 1.71L10.71 22L12 20.71L13.29 22l1.41-1.41l-1.7-1.71v-2.26l3.46-2.01M9.5 10.56L12 9.11l2.5 1.45v2.88L12 14.89l-2.5-1.45M19 13V7h2v6h-2m0 4v-2h2v2h-2z" fill="' + level_clr + '"/></svg>';
                                                              break;
                                                          case 4 :
                                                              typ_txt = "NEBEL";
                                                              typ_icn = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1em" height="1em" style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M3 15h10a1 1 0 0 1 1 1a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1a1 1 0 0 1 1-1m13 0h5a1 1 0 0 1 1 1a1 1 0 0 1-1 1h-5a1 1 0 0 1-1-1a1 1 0 0 1 1-1M1 12a5 5 0 0 1 5-5c1-2.35 3.3-4 6-4c3.43 0 6.24 2.66 6.5 6.03L19 9c2.19 0 3.97 1.76 4 4h-2a2 2 0 0 0-2-2h-2v-1a5 5 0 0 0-5-5C9.5 5 7.45 6.82 7.06 9.19C6.73 9.07 6.37 9 6 9a3 3 0 0 0-3 3a3 3 0 0 0 .17 1H1.1L1 12m2 7h2a1 1 0 0 1 1 1a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1a1 1 0 0 1 1-1m5 0h13a1 1 0 0 1 1 1a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1a1 1 0 0 1 1-1z" fill="' + level_clr + '"/></svg>';
                                                              break;
                                                          case 5 :
                                                              typ_txt = "FROST";
                                                              typ_icn = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1em" height="1em" style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M17 13V7h2v6h-2m0 4v-2h2v2h-2m-4-4V5c0-1.7-1.3-3-3-3S7 3.3 7 5v8c-2.2 1.7-2.7 4.8-1 7s4.8 2.7 7 1s2.7-4.8 1-7c-.3-.4-.6-.7-1-1m-3-9c.6 0 1 .4 1 1v3H9V5c0-.6.4-1 1-1z" fill="' + level_clr + '"/></svg>';
                                                              break;
                                                          case 6 :
                                                              typ_txt = "GLÄTTE";
                                                              typ_icn = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1em" height="1em" style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M16.46 9.41L13 7.38V5.12l1.71-1.71L13.29 2L12 3.29L10.71 2L9.29 3.41L11 5.12v2.26L8.5 8.82l-2-1.13l-.58-2.33L4 5.88l.47 1.77l-1.77.47l.52 1.93l2.33-.62l2 1.13v2.89l-2 1.13l-2.33-.62l-.52 1.93l1.77.47L4 18.12l1.93.52l.62-2.33l2-1.13L11 16.62v2.26l-1.71 1.71L10.71 22L12 20.71L13.29 22l1.41-1.41l-1.7-1.71v-2.26l3.46-2.01M9.5 10.56L12 9.11l2.5 1.45v2.88L12 14.89l-2.5-1.45M19 13V7h2v6h-2m0 4v-2h2v2h-2z" fill="' + level_clr + '"/></svg>';
                                                              break;
                                                          case 7 :
                                                              typ_txt = "TAU-WETTER";
                                                              typ_icn = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1em" height="1em" style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M8 17.85C8 19.04 7.11 20 6 20s-2-.96-2-2.15C4 16.42 6 14 6 14s2 2.42 2 3.85M16.46 12v-1.44l2-1.13l2.33.62l.52-1.93l-1.77-.47l.46-1.77l-1.93-.52l-.62 2.33l-2 1.13L13 7.38V5.12l1.71-1.71L13.29 2L12 3.29L10.71 2L9.29 3.41L11 5.12v2.26L8.5 8.82l-2-1.13l-.58-2.33L4 5.88l.47 1.77l-1.77.47l.52 1.93l2.33-.62l2 1.13V12H2v1h20v-1h-5.54M9.5 12v-1.44L12 9.11l2.5 1.45V12h-5M20 17.85c0 1.19-.89 2.15-2 2.15s-2-.96-2-2.15c0-1.43 2-3.85 2-3.85s2 2.42 2 3.85m-6 3c0 1.19-.89 2.15-2 2.15s-2-.96-2-2.15c0-1.43 2-3.85 2-3.85s2 2.42 2 3.85z" fill="' + level_clr + '"/></svg>';
                                                              break;
                                                          case 8 :
                                                              typ_txt = "HITZE";
                                                              typ_icn = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1em" height="1em" style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M17 13V7h2v6h-2m0 4v-2h2v2h-2m-4-4V5c0-1.7-1.3-3-3-3S7 3.3 7 5v8c-2.2 1.7-2.7 4.8-1 7s4.8 2.7 7 1s2.7-4.8 1-7c-.3-.4-.6-.7-1-1m-3-9c.6 0 1 .4 1 1v3H9V5c0-.6.4-1 1-1z" fill="' + level_clr + '"/></svg>';
                                                              break;
                                                          case 9 :
                                                              typ_txt = "UV";
                                                              typ_icn = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1em" height="1em" style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 0-5 5a5 5 0 0 0 5 5a5 5 0 0 0 5-5a5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3a3 3 0 0 1 3-3a3 3 0 0 1 3 3a3 3 0 0 1-3 3m0-13l2.39 3.42C13.65 5.15 12.84 5 12 5c-.84 0-1.65.15-2.39.42L12 2M3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29L3.34 7m.02 10l1.76-3.77a7.131 7.131 0 0 0 2.38 4.14L3.36 17M12 22l-2.41-3.44c.74.27 1.55.44 2.41.44c.82 0 1.63-.17 2.37-.44M19 13V7h2v6h-2m0 4v-2h2v2" fill="' + level_clr + '"/></svg>';
                                                              break;
                                                          default :
                                                              typ_txt = "UNBEKANNT";
                                                              typ_icn = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" focusable="false" width="1em" height="1em" style="-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path d="M13 13h-2V7h2m0 10h-2v-2h2M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2z" fill="' + level_clr + '"/></svg>';
                                                              break;
                                                      }
                                          
                                                      zeitraum = f_begin + f_end; 
                                                      text = getState('dwd.0.warning'+w+'.description').val;
                                          
                                                      warnung[i] = '<ul class="MuiList-root MuiList-padding">';
                                                      warnung[i] = warnung[i] + '<div class="MuiButtonBase-root MuiListItem-root MuiListItem-gutters MuiListItem-button popup" tabindex="0" role="button" aria-disabled="false" style="display: block ruby;">';
                                                      warnung[i] = warnung[i] + '<div class="" style="margin-right: 8px; margin-left: -8px; vertical-align: top; font-size: 24px;">';
                                                      warnung[i] = warnung[i] + '<span>' + typ_icn + '</span></div>';
                                                      warnung[i] = warnung[i] + '<div class="MuiListItemText-root popup" style="display: flex;">';
                                                      warnung[i] = warnung[i] + '<div class="StateListItemBody" style="flex: 1 1 auto; margin: auto 0px;">';
                                                      warnung[i] = warnung[i] + '<b><span style="color: ' + level_clr + ';">' + getState('dwd.0.warning'+w+'.headline').val + '</b>';
                                                      warnung[i] = warnung[i] + '<br /><i style="font-size: 13px;">' + zeitraum + '</i>';
                                                      warnung[i] = warnung[i] + '<p>' + text + '</p>';
                                                      warnung[i] = warnung[i] + '<p style="font-size: 12px;">' + level_txt + '</p>';
                                                      warnung[i] = warnung[i] + '</div>';
                                                      warnung[i] = warnung[i] + '</div>';
                                                      warnung[i] = warnung[i] + '</ul>';
                                          
                                                      setState("0_userdata.0.DWD.warnung"+i, warnung[i]);
                                                  }
                                              }
                                           
                                              warnungen = '<div class="MuiCardContent-root WidgetContent CardContent" style="transform: scale(1); transform-origin: center top 0px;">';
                                              for (i = 0; i < warn_num; i++) {
                                                  warnungen = warnungen + warnung[i];
                                              }
                                              warnungen = warnungen + '</div>';
                                          
                                              setState("0_userdata.0.DWD.warnungen", warnungen);
                                          } else {
                                              warnungen = '<div class="MuiCardContent-root WidgetContent CardContent" style="transform: scale(1); transform-origin: center top 0px;">';
                                              warnungen = warnungen + '<i>Derzeit gibt es keine Wetterwarnungen</i>';
                                              warnungen = warnungen + '</div>';
                                              setState("0_userdata.0.DWD.warnungen", warnungen);
                                          }
                                          });
                                          

                                          Zum Schluss nur noch die jeweiligen Datenpunkte in jarvis anlegen und per "CustomHTML" einbinden.

                                          Vielleicht gefällt's oder gibt Inspiration für weitere Anpassungen. Mir würde da noch was zu NINA fehlen ;-)

                                          M Offline
                                          M Offline
                                          Minta79
                                          wrote on last edited by
                                          #319

                                          @cws said in [Showcase] Jarvis - just another remarkable vis:

                                          User-Datenpunkte (warnung0, warnung1, warnung2 und warnung3) angelegt, sowie einen zusätzlichen Datenpunkt "warnungen".

                                          Nutzt du nur die oder auch die anderen von @frajop?
                                          Kannst du mir sagen wir das mit der Tabelle funktioniert dann in jarvis?

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          713

                                          Online

                                          32.6k

                                          Users

                                          82.3k

                                          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