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. Praktische Anwendungen (Showcase)
  4. Neu entwickelter Heizungs-Controller für ELV HmIP-VDMot

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    520

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

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

Neu entwickelter Heizungs-Controller für ELV HmIP-VDMot

Scheduled Pinned Locked Moved Praktische Anwendungen (Showcase)
199 Posts 15 Posters 34.6k Views 16 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.
  • E Elluminatus

    @gargano Ja gerne. Was meinst Du mit VDmot einstellen?

    GarganoG Offline
    GarganoG Offline
    Gargano
    wrote on last edited by Gargano
    #51

    @elluminatus In der Config :

    e7f03c3c-4c71-45c1-93a6-0c74e895c4a7-image.png

    wichtig ist dies:
    deac994b-9d05-412e-83c7-4761451c51d8-image.png

    Low und high ist der Multiplikator vom mittleren Motorstrom zum Ende erkennen.
    Wenn der Motor überspringt (lautes Rattern) ist der Faktor zu hoch. Bei den Homematic Motoren ist der Faktor 1,7 bei mir gut. Probier mal 0 und 100% in der Statuspage manuell aus.
    Start (%) ist die Ventilposition nach Poweron oder Reset.

    und unter Control :
    fe079f55-5511-4d53-9c21-409231bbdf71-image.png

    Für Control ist einiges unter

    Control
    beschrieben.

    Falls Du mehrere Heizkreise in einem Raum hast :
    Heizkreise linken

    E 1 Reply Last reply
    0
    • GarganoG Gargano

      @elluminatus In der Config :

      e7f03c3c-4c71-45c1-93a6-0c74e895c4a7-image.png

      wichtig ist dies:
      deac994b-9d05-412e-83c7-4761451c51d8-image.png

      Low und high ist der Multiplikator vom mittleren Motorstrom zum Ende erkennen.
      Wenn der Motor überspringt (lautes Rattern) ist der Faktor zu hoch. Bei den Homematic Motoren ist der Faktor 1,7 bei mir gut. Probier mal 0 und 100% in der Statuspage manuell aus.
      Start (%) ist die Ventilposition nach Poweron oder Reset.

      und unter Control :
      fe079f55-5511-4d53-9c21-409231bbdf71-image.png

      Für Control ist einiges unter

      Control
      beschrieben.

      Falls Du mehrere Heizkreise in einem Raum hast :
      Heizkreise linken

      E Offline
      E Offline
      Elluminatus
      wrote on last edited by
      #52

      @gargano Erstmal danke für die schnelle und umfangreiche Hilfe!

      Also Ti(S) und Ts(S) habe ich ehrlich gesagt nicht verstanden. Kannst Du mir da nochmal eine Idee geben was ich da eintragen muss?

      GarganoG 1 Reply Last reply
      0
      • E Elluminatus

        @gargano Erstmal danke für die schnelle und umfangreiche Hilfe!

        Also Ti(S) und Ts(S) habe ich ehrlich gesagt nicht verstanden. Kannst Du mir da nochmal eine Idee geben was ich da eintragen muss?

        GarganoG Offline
        GarganoG Offline
        Gargano
        wrote on last edited by
        #53

        @elluminatus
        Ti ist die Zeit für den Integrationsteil vom Pi-Regler.
        Hier kannst Du 1800 eintragen
        Ts ist die Sampling Time und ist das Zeitintervall nach dem ein neuer Stellwert berechnet wird.
        Hier kannst Du 450 eintragen.
        Xp erstmal auf 15 stellen.

        Das sind erstmal die Ausgangswerte.

        8ee75188-cbe3-480a-8713-37985e791614-image.png

        Dann ist es ratsam Dir die Kurven von Soll. Ist und Stellwert in eine Datenbank aufzuzeichnen.
        Danach kannst Du dann die Einstellungen verändern.
        Ich habe z. B. im Wintergarten mit 16 m² zwei Heizkreise und da ist die Temperatur über den Sollwert ziemlich rausgeschossen.

        94a2aaf3-0ea2-40d1-b6da-95251fbbfea3-image.png

        1 Reply Last reply
        0
        • GarganoG Offline
          GarganoG Offline
          Gargano
          wrote on last edited by Gargano
          #54

          @elluminatus sagte in Neu entwickelter Heizungs-Controller für ELV HmIP-VDMot:

          steht auf Manu, weiter Profile habe ich unter dem Alias auch erstmal zu Beginn nicht eingetragen. Wäre ja super, wenn ich es jetzt auf Auto stellen könnte und dann das Heatingcontrol Skript die Steuerung übernimt

          Also ich habs rausgefunden, ist nicht ganz einfach, da das NSPanelScript das Thermostat Device nicht richtig handelt.
          Folgende Änderungen mußt Du machen :

          Im NSPanelscript :

          Nach dieser Function die Zeilen zwischen 'add from gargano' einfügen :

          function GenerateThermoPage(page: PageThermo): Payload[] {
          
           if (o.common.role == 'thermostat') {
                              
                              // add from gargano
                              if (existsState(id + '.MODE') && getState(id + '.MODE').val != null) {
                                  if (getState(id + '.MODE').val===1) {
                                          statusStr = 'MANU';
                                  } else {
                                     statusStr = 'AUTO';
                                  }
                              }
                              // end add from gargano
                              
                              if (existsState(id + '.AUTOMATIC') && getState(id + '.AUTOMATIC').val != null) {
          

          Dein Thermostat im Script muss dann so aussehen :

          let Wohn_Themostat = <PageThermo>
          {
              'type': 'cardThermo',
              'heading': 'Wohn Thermostat',
              'useColor': true,
              'items': [<PageItem>{ id: 'alias.0.Thermostate.Wohn', minValue: 100, maxValue: 300,
                      popupThermoMode1: ['auto','manu'],
                      popUpThermoName: ['Auto/Manu'],
                      setThermoAlias: ['MODE1'],
                      icon: 'thermometer'
                      }]
          };
          
          

          Wichtig ist

          setThermoAlias: ['MODE1'],
          

          Dann unter Geräte Manager im Thermostat einen neuen Alias MODE1 mit type = String anlegen :

          86d939e2-3a33-499a-8413-3d9a1c775b64-image.png

          Unter '0_userdata.0' eine Verzeichnis 'HeatingControl' und darunter ein Verzeichnis 'Wohn' (oder Dein Raum) einrichten und darunter einen Datenpunkt 'Mode_Number'
          mit Type = number

          Darin holt sich dann das Thermostat im NSPanel den Zustand.

          Dann noch ein kleines Script :

          const idWohn_HC_State = "heatingcontrol.0.Rooms.Wohnzimmer.State";
          const idUser_Wohn_State = "0_userdata.0.HeatingControl.Wohn.Mode_Number";
          
          on({id: idWohn_HC_State}, function (obj) {
            let thisState =  1;
            if (obj.state.val=='auto') thisState = 0;
            setState(idUser_Wohn_State,thisState);
          });
          

          Da wird der State vom HeatingControl (String) umgesetzt in Number für den NSPanel.

          Die Bezeichnung Wohn mußt Du noch für Deine Räume ändern.
          Für jeden Raum dann ein eigenes Script und Gerät.

          Falls Fragen hast, einfach Fragen...

          E 1 Reply Last reply
          0
          • GarganoG Gargano

            @elluminatus sagte in Neu entwickelter Heizungs-Controller für ELV HmIP-VDMot:

            steht auf Manu, weiter Profile habe ich unter dem Alias auch erstmal zu Beginn nicht eingetragen. Wäre ja super, wenn ich es jetzt auf Auto stellen könnte und dann das Heatingcontrol Skript die Steuerung übernimt

            Also ich habs rausgefunden, ist nicht ganz einfach, da das NSPanelScript das Thermostat Device nicht richtig handelt.
            Folgende Änderungen mußt Du machen :

            Im NSPanelscript :

            Nach dieser Function die Zeilen zwischen 'add from gargano' einfügen :

            function GenerateThermoPage(page: PageThermo): Payload[] {
            
             if (o.common.role == 'thermostat') {
                                
                                // add from gargano
                                if (existsState(id + '.MODE') && getState(id + '.MODE').val != null) {
                                    if (getState(id + '.MODE').val===1) {
                                            statusStr = 'MANU';
                                    } else {
                                       statusStr = 'AUTO';
                                    }
                                }
                                // end add from gargano
                                
                                if (existsState(id + '.AUTOMATIC') && getState(id + '.AUTOMATIC').val != null) {
            

            Dein Thermostat im Script muss dann so aussehen :

            let Wohn_Themostat = <PageThermo>
            {
                'type': 'cardThermo',
                'heading': 'Wohn Thermostat',
                'useColor': true,
                'items': [<PageItem>{ id: 'alias.0.Thermostate.Wohn', minValue: 100, maxValue: 300,
                        popupThermoMode1: ['auto','manu'],
                        popUpThermoName: ['Auto/Manu'],
                        setThermoAlias: ['MODE1'],
                        icon: 'thermometer'
                        }]
            };
            
            

            Wichtig ist

            setThermoAlias: ['MODE1'],
            

            Dann unter Geräte Manager im Thermostat einen neuen Alias MODE1 mit type = String anlegen :

            86d939e2-3a33-499a-8413-3d9a1c775b64-image.png

            Unter '0_userdata.0' eine Verzeichnis 'HeatingControl' und darunter ein Verzeichnis 'Wohn' (oder Dein Raum) einrichten und darunter einen Datenpunkt 'Mode_Number'
            mit Type = number

            Darin holt sich dann das Thermostat im NSPanel den Zustand.

            Dann noch ein kleines Script :

            const idWohn_HC_State = "heatingcontrol.0.Rooms.Wohnzimmer.State";
            const idUser_Wohn_State = "0_userdata.0.HeatingControl.Wohn.Mode_Number";
            
            on({id: idWohn_HC_State}, function (obj) {
              let thisState =  1;
              if (obj.state.val=='auto') thisState = 0;
              setState(idUser_Wohn_State,thisState);
            });
            

            Da wird der State vom HeatingControl (String) umgesetzt in Number für den NSPanel.

            Die Bezeichnung Wohn mußt Du noch für Deine Räume ändern.
            Für jeden Raum dann ein eigenes Script und Gerät.

            Falls Fragen hast, einfach Fragen...

            E Offline
            E Offline
            Elluminatus
            wrote on last edited by
            #55

            @gargano sagte in Neu entwickelter Heizungs-Controller für ELV HmIP-VDMot:

            Es gibt hier bei der Umsetzung ein kleines Problem. Wenn ich hier auf das weiße Plus drücke und
            die folgenden Sachen eintrage, dann habe ich keinen Zugriff mehr auf den Tab Geräte.

            Muss hier noch etwas spezielles bei Rolle eingetragen werden? Warum ist bei Dir der Begriff rot? Muss ich über das rot + etwas importieren. Ich glaube mir fehlen hier genauere Zwischenschritte. Muss ich in der Expertenmodus gehen?

            1dc80f48-1f15-481c-8114-0d72cf6b63dc-image.png

            Dann unter Geräte Manager im Thermostat einen neuen Alias MODE1 mit type = String anlegen

            GarganoG 2 Replies Last reply
            0
            • E Elluminatus

              @gargano sagte in Neu entwickelter Heizungs-Controller für ELV HmIP-VDMot:

              Es gibt hier bei der Umsetzung ein kleines Problem. Wenn ich hier auf das weiße Plus drücke und
              die folgenden Sachen eintrage, dann habe ich keinen Zugriff mehr auf den Tab Geräte.

              Muss hier noch etwas spezielles bei Rolle eingetragen werden? Warum ist bei Dir der Begriff rot? Muss ich über das rot + etwas importieren. Ich glaube mir fehlen hier genauere Zwischenschritte. Muss ich in der Expertenmodus gehen?

              1dc80f48-1f15-481c-8114-0d72cf6b63dc-image.png

              Dann unter Geräte Manager im Thermostat einen neuen Alias MODE1 mit type = String anlegen

              GarganoG Offline
              GarganoG Offline
              Gargano
              wrote on last edited by
              #56

              @elluminatus versuchs mal mit rot+
              Ansonsten kann ich morgen nochmal schauen

              1 Reply Last reply
              0
              • E Elluminatus

                @gargano sagte in Neu entwickelter Heizungs-Controller für ELV HmIP-VDMot:

                Es gibt hier bei der Umsetzung ein kleines Problem. Wenn ich hier auf das weiße Plus drücke und
                die folgenden Sachen eintrage, dann habe ich keinen Zugriff mehr auf den Tab Geräte.

                Muss hier noch etwas spezielles bei Rolle eingetragen werden? Warum ist bei Dir der Begriff rot? Muss ich über das rot + etwas importieren. Ich glaube mir fehlen hier genauere Zwischenschritte. Muss ich in der Expertenmodus gehen?

                1dc80f48-1f15-481c-8114-0d72cf6b63dc-image.png

                Dann unter Geräte Manager im Thermostat einen neuen Alias MODE1 mit type = String anlegen

                GarganoG Offline
                GarganoG Offline
                Gargano
                wrote on last edited by
                #57

                @elluminatus welche Version hast Du beim Gerätemanager ?
                Die 1.1.2 ist buggy. Geh mal zurück auf die 1.1.1

                E 1 Reply Last reply
                0
                • GarganoG Gargano

                  @elluminatus welche Version hast Du beim Gerätemanager ?
                  Die 1.1.2 ist buggy. Geh mal zurück auf die 1.1.1

                  E Offline
                  E Offline
                  Elluminatus
                  wrote on last edited by Elluminatus
                  #58

                  @gargano Das hat schon mal geklappt mit dem alten Gerätemanager!

                  Jetzt bekomme ich im Javascript noch diese Fehlermeldung:

                  21:44:49.638 error javascript.0 (688) script.js.common.NSPanel.WT_KE_Werkstatt: TypeScript compilation failed: let Werkstatt_Themostat: PageThermo = { ^ ERROR: Type '{ type: "cardThermo"; heading: string; useColor: true; items: PageItem[]; }' is missing the following properties from type 'PageThermo': subPage, parent

                  let Werkstatt_Themostat: PageThermo = 
                  {
                      "type": "cardThermo",
                      "heading": "Thermostat Werkstatt",
                      "useColor": true,
                          'items': [<PageItem>{ id: 'alias.0.Thermostate.KE_Werkstatt', minValue: 150, maxValue: 270,
                  
                              popupThermoMode1: ['auto','manu'],
                  
                              popUpThermoName: ['Auto/Manu'],
                  
                              setThermoAlias: ['MODE1'],
                  
                              icon: 'thermometer'
                  
                              }]
                  
                  };
                  
                  

                  Habe jetzt noch

                  "subPage": false,
                      "parent": undefined,
                  

                  hinzugefügt?

                  GarganoG 1 Reply Last reply
                  0
                  • E Elluminatus

                    @gargano Das hat schon mal geklappt mit dem alten Gerätemanager!

                    Jetzt bekomme ich im Javascript noch diese Fehlermeldung:

                    21:44:49.638 error javascript.0 (688) script.js.common.NSPanel.WT_KE_Werkstatt: TypeScript compilation failed: let Werkstatt_Themostat: PageThermo = { ^ ERROR: Type '{ type: "cardThermo"; heading: string; useColor: true; items: PageItem[]; }' is missing the following properties from type 'PageThermo': subPage, parent

                    let Werkstatt_Themostat: PageThermo = 
                    {
                        "type": "cardThermo",
                        "heading": "Thermostat Werkstatt",
                        "useColor": true,
                            'items': [<PageItem>{ id: 'alias.0.Thermostate.KE_Werkstatt', minValue: 150, maxValue: 270,
                    
                                popupThermoMode1: ['auto','manu'],
                    
                                popUpThermoName: ['Auto/Manu'],
                    
                                setThermoAlias: ['MODE1'],
                    
                                icon: 'thermometer'
                    
                                }]
                    
                    };
                    
                    

                    Habe jetzt noch

                    "subPage": false,
                        "parent": undefined,
                    

                    hinzugefügt?

                    GarganoG Offline
                    GarganoG Offline
                    Gargano
                    wrote on last edited by
                    #59

                    @elluminatus hast Du das Thermostat in einer Subpage eingetragen ?
                    Ich habs direkt vor dem Service eingetragen

                    E 1 Reply Last reply
                    0
                    • GarganoG Gargano

                      @elluminatus hast Du das Thermostat in einer Subpage eingetragen ?
                      Ich habs direkt vor dem Service eingetragen

                      E Offline
                      E Offline
                      Elluminatus
                      wrote on last edited by Elluminatus
                      #60

                      @gargano Nein habe ich nicht in eine Subpage eingetragen. Nach meinen Ergänzungen scheint es zu laufen.. ich teset morgen mal umfänglicher...

                      GarganoG 1 Reply Last reply
                      0
                      • E Elluminatus

                        @gargano Nein habe ich nicht in eine Subpage eingetragen. Nach meinen Ergänzungen scheint es zu laufen.. ich teset morgen mal umfänglicher...

                        GarganoG Offline
                        GarganoG Offline
                        Gargano
                        wrote on last edited by
                        #61

                        @elluminatus ok

                        E 1 Reply Last reply
                        0
                        • GarganoG Gargano

                          @elluminatus ok

                          E Offline
                          E Offline
                          Elluminatus
                          wrote on last edited by Elluminatus
                          #62

                          @gargano Noch ne kurze Anfängerfrage. Wenn ich mehrere Skripte später laufen habe, muss ich dann diese Bezeichnungen (Wohn) bspw.

                          idWohn_HC_State
                          

                          dann auch jeweils mit einem universellen Namen versehen, oder können da später 10-15 Skripte parallel laufen?

                          GarganoG 1 Reply Last reply
                          0
                          • E Elluminatus

                            @gargano Noch ne kurze Anfängerfrage. Wenn ich mehrere Skripte später laufen habe, muss ich dann diese Bezeichnungen (Wohn) bspw.

                            idWohn_HC_State
                            

                            dann auch jeweils mit einem universellen Namen versehen, oder können da später 10-15 Skripte parallel laufen?

                            GarganoG Offline
                            GarganoG Offline
                            Gargano
                            wrote on last edited by Gargano
                            #63

                            @elluminatus muss jeweils separat sein für jeden NSPanel
                            Du kannst aber das in einem Script erledigen

                            GarganoG 1 Reply Last reply
                            0
                            • GarganoG Gargano

                              @elluminatus muss jeweils separat sein für jeden NSPanel
                              Du kannst aber das in einem Script erledigen

                              GarganoG Offline
                              GarganoG Offline
                              Gargano
                              wrote on last edited by Gargano
                              #64

                              @Elluminatus Du kannst aber die ganzen Routinen in einem Script erledigen

                              1 Reply Last reply
                              0
                              • E Offline
                                E Offline
                                Elluminatus
                                wrote on last edited by
                                #65

                                @Gargano Ich habe inzwischen erfolgreich einen Raum mit NSPanel an dem Modul am laufen. Frage ist dieser Weg der derzeit aktuelle? Oder hat sich an den Einrichtungsmöglichkeiten bei der VDmot Platine oder der beim heatingcontrol Skript etwas geändert (im Bezug auf die unterstützung von motorgetriebenen Ventilen?)

                                Beste Grüße
                                Elluminatus

                                1 Reply Last reply
                                0
                                • GarganoG Offline
                                  GarganoG Offline
                                  Gargano
                                  wrote on last edited by
                                  #66

                                  @elluminatus
                                  Bei der Übertragung der Soll/Ist Werte nach VDMot hat sich nichts getan. Es sind aber ein paar Erweiterungen hinzugekommen :

                                  • MQTT : Übersenden nur bei Änderungen (einstellbar)
                                  • Funktion Kühlen/Heizen (Wenn es die Heizung ermöglicht. Z.B. durch Wärmepumpe)
                                  • Ein Messenger kam hinzu, der bei Fehler eine Message per PushOver oder Email schickt
                                  • Anzeige der Soll / Ist Werte auf der Status Seite
                                  • kleinere Bugfixes

                                  Andreas hat dies noch nicht in das Master Repo geschoben.

                                  Wenn Du magst, kannst Du die neue Version von meinen Github runter laden :
                                  Download ESP32 hier

                                  Da ist aber nur das ESP32 File drin, für den STM sollte es die Version 1.1.1 sein.
                                  Download STM hier

                                  Wiki gibt es jetzt auch hier

                                  Viele Grüße

                                  1 Reply Last reply
                                  0
                                  • E Offline
                                    E Offline
                                    Elluminatus
                                    wrote on last edited by
                                    #67

                                    @gargano Hey danke für die superschnelle Antwort. Weisst Du ob die Einstellung beim update erhalten bleiben? Gruß Elluminatus

                                    GarganoG 1 Reply Last reply
                                    0
                                    • E Elluminatus

                                      @gargano Hey danke für die superschnelle Antwort. Weisst Du ob die Einstellung beim update erhalten bleiben? Gruß Elluminatus

                                      GarganoG Offline
                                      GarganoG Offline
                                      Gargano
                                      wrote on last edited by
                                      #68

                                      @elluminatus sagte in Neu entwickelter Heizungs-Controller für ELV HmIP-VDMot:

                                      Weisst Du ob die Einstellung beim update erhalten bleiben

                                      Sollten erhalten bleiben

                                      1 Reply Last reply
                                      0
                                      • S Offline
                                        S Offline
                                        Sevensworld
                                        wrote on last edited by
                                        #69

                                        Hallo zusammen
                                        Habe die Platine incl. der Teile und der beiden kleinen Aufsätze bestellt. Nachdem ich jetzt alles fertig verlötet habe, weiß ich gerade nicht weiter. Wie nehme ich die denn nun in Betrieb? Dazu habe ich bisher keinerlei Anleitungen gefunden. Gibt es eine Anleitung für DAUs ? ;-)

                                        Gruß
                                        Seven

                                        GarganoG 1 Reply Last reply
                                        0
                                        • S Sevensworld

                                          Hallo zusammen
                                          Habe die Platine incl. der Teile und der beiden kleinen Aufsätze bestellt. Nachdem ich jetzt alles fertig verlötet habe, weiß ich gerade nicht weiter. Wie nehme ich die denn nun in Betrieb? Dazu habe ich bisher keinerlei Anleitungen gefunden. Gibt es eine Anleitung für DAUs ? ;-)

                                          Gruß
                                          Seven

                                          GarganoG Offline
                                          GarganoG Offline
                                          Gargano
                                          wrote on last edited by
                                          #70

                                          @sevensworld hi Seven,
                                          Hier sind die benötigten Infos unter Installation.
                                          https://github.com/Lenti84/VdMot_Controller/wiki/FAQ#installation
                                          Gruß

                                          S 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

                                          260

                                          Online

                                          32.7k

                                          Users

                                          82.5k

                                          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