Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Ical - keine Erkennung vom Kalender [gelöst]

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    324

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

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

Ical - keine Erkennung vom Kalender [gelöst]

Geplant Angeheftet Gesperrt Verschoben JavaScript
98 Beiträge 5 Kommentatoren 8.2k Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • wendy2702W wendy2702

    Vielleicht habe ich es wieder übersehen aber in den logs sehe ich nirgendwo etwas vom ical. Immer nur Javascript.

    Stoppe doch mal das Javascript, stelle die ICAL Instanz auf Debug, starte die eine Instanz und poste dann das logfile.

    GlasfaserG Offline
    GlasfaserG Offline
    Glasfaser
    schrieb am zuletzt editiert von Glasfaser
    #49

    @wendy2702 sagte in Ical funktioniert nicht - keine Erkennung vom Kalender:

    Immer nur Javascript.

    Jipp .... deshalb habe Ihm schon gesagt , das wir erstmal die Baustelle Ical machen :)

    Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

    1 Antwort Letzte Antwort
    0
    • I Offline
      I Offline
      Idefix01
      schrieb am zuletzt editiert von
      #50

      @Glasfaser
      @wendy2702

      sorry dauert wie gesagt etwas, mein iobroker funktioniert gar nicht mehr, muss nochmal alles neu aufsetzen. Melde mich wenn es soweit ist

      GlasfaserG 1 Antwort Letzte Antwort
      0
      • I Idefix01

        @Glasfaser
        @wendy2702

        sorry dauert wie gesagt etwas, mein iobroker funktioniert gar nicht mehr, muss nochmal alles neu aufsetzen. Melde mich wenn es soweit ist

        GlasfaserG Offline
        GlasfaserG Offline
        Glasfaser
        schrieb am zuletzt editiert von Glasfaser
        #51

        @Idefix01 sagte in Ical funktioniert nicht - keine Erkennung vom Kalender:

        mein iobroker funktioniert gar nicht mehr,

        nicht das es daran lag :face_with_thermometer: :anguished:

        Nimm aber die aktuelle , wenn du neu aufsetzt !! v4.1.0

        Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

        1 Antwort Letzte Antwort
        0
        • I Offline
          I Offline
          Idefix01
          schrieb am zuletzt editiert von
          #52

          @Glasfaser

          Gute Grage, ich komme nicht auf iobroker, aber meine Visu funktioniert noch

          GlasfaserG 1 Antwort Letzte Antwort
          0
          • I Idefix01

            @Glasfaser

            Gute Grage, ich komme nicht auf iobroker, aber meine Visu funktioniert noch

            GlasfaserG Offline
            GlasfaserG Offline
            Glasfaser
            schrieb am zuletzt editiert von
            #53

            @Idefix01

            Dann ist nur ein Adapter aus
            nachschauen !!

            iobroker list instances 
            

            Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

            1 Antwort Letzte Antwort
            0
            • I Offline
              I Offline
              Idefix01
              schrieb am zuletzt editiert von
              #54

              @Glasfaser

              würde ich gern, aber ich komme nicht auf die Webseite mehr drauf, Docker läuft aber noch

              Hast du eine Idee wie ich da drauf komme? Vielleicht erspare ich mir das neu aufsetzen dann

              GlasfaserG 1 Antwort Letzte Antwort
              0
              • wendy2702W Online
                wendy2702W Online
                wendy2702
                schrieb am zuletzt editiert von
                #55

                Konsole im Docker öffnen und dann per Befehlszeile.

                Bitte keine Fragen per PN, die gehören ins Forum!

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                1 Antwort Letzte Antwort
                0
                • I Idefix01

                  @Glasfaser

                  würde ich gern, aber ich komme nicht auf die Webseite mehr drauf, Docker läuft aber noch

                  Hast du eine Idee wie ich da drauf komme? Vielleicht erspare ich mir das neu aufsetzen dann

                  GlasfaserG Offline
                  GlasfaserG Offline
                  Glasfaser
                  schrieb am zuletzt editiert von
                  #56

                  @Idefix01

                  1.JPG

                  Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                  1 Antwort Letzte Antwort
                  0
                  • wendy2702W Online
                    wendy2702W Online
                    wendy2702
                    schrieb am zuletzt editiert von wendy2702
                    #57

                    https://www.iobroker.net/#de/documentation/trouble/RunsNoMore.md

                    Bitte erstmal nur die Abfragen machen und Ergebnisse hier posten.

                    Bitte keine Fragen per PN, die gehören ins Forum!

                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                    1 Antwort Letzte Antwort
                    0
                    • I Offline
                      I Offline
                      Idefix01
                      schrieb am zuletzt editiert von
                      #58

                      @Glasfaser

                      ich glaube ich habe aus versehen den alexa2 instance beendet gehabt.

                      Wie kann ich das per Terminal wieder starten

                      GlasfaserG 1 Antwort Letzte Antwort
                      0
                      • I Idefix01

                        @Glasfaser

                        ich glaube ich habe aus versehen den alexa2 instance beendet gehabt.

                        Wie kann ich das per Terminal wieder starten

                        GlasfaserG Offline
                        GlasfaserG Offline
                        Glasfaser
                        schrieb am zuletzt editiert von Glasfaser
                        #59

                        @Idefix01 sagte in Ical funktioniert nicht - keine Erkennung vom Kalender:

                        versehen den alexa2 instance beendet gehabt.

                        Hääääh ?????

                        Zeige den Auszug von

                        iobroker list instances 
                        

                        @wendy2702
                        Verstehst du das , was er meint !?

                        Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                        1 Antwort Letzte Antwort
                        0
                        • I Offline
                          I Offline
                          Idefix01
                          schrieb am zuletzt editiert von
                          #60

                          @Glasfaser

                          Alles wieder gut, habe es wieder am laufen.

                          Ich würde sagen ich lösche jetzt nochmal das Skript für den Kalender abruf, sowie die Kalender Adapter.
                          Und würde dann morgen nochmal neu mit Euch zusammen beginnen, denn ich muss leider noch in die Nachtschicht

                          1 Antwort Letzte Antwort
                          0
                          • wendy2702W Online
                            wendy2702W Online
                            wendy2702
                            schrieb am zuletzt editiert von
                            #61

                            Nichts löschen.

                            Lass es so wie es ist einfach bis morgen laufen.

                            Bitte keine Fragen per PN, die gehören ins Forum!

                            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                            1 Antwort Letzte Antwort
                            0
                            • I Offline
                              I Offline
                              Idefix01
                              schrieb am zuletzt editiert von
                              #62

                              @wendy2702

                              ok dann lasse ich es so laufen. Besten Dank erst mal

                              Habt ihr ein Tip was ich morgen als ersten versuchen könnte?
                              Wie gesagt unter ical1 - data - html - sind noch immer keine Daten vorhanden

                              1 Antwort Letzte Antwort
                              0
                              • wendy2702W wendy2702

                                Vielleicht habe ich es wieder übersehen aber in den logs sehe ich nirgendwo etwas vom ical. Immer nur Javascript.

                                Stoppe doch mal das Javascript, stelle die ICAL Instanz auf Debug, starte die eine Instanz und poste dann das logfile.

                                wendy2702W Online
                                wendy2702W Online
                                wendy2702
                                schrieb am zuletzt editiert von
                                #63

                                Ich zitiere mich mal selbst.

                                @wendy2702 sagte in Ical funktioniert nicht - keine Erkennung vom Kalender:

                                Vielleicht habe ich es wieder übersehen aber in den logs sehe ich nirgendwo etwas vom ical. Immer nur Javascript.

                                Stoppe doch mal das Javascript, stelle die ICAL Instanz auf Debug, starte die eine Instanz und poste dann das logfile.

                                Bitte keine Fragen per PN, die gehören ins Forum!

                                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                1 Antwort Letzte Antwort
                                0
                                • wendy2702W wendy2702

                                  Dann stellt sich mir die Frage ob du das Script oben einfach nur 1 zu 1 kopiert hast oder auch die Entsprechenden Einstellungen vorgenommen hast.

                                  Laut deinen Script logs sucht er diese States:

                                  getState "ical.0.events.9.GelberSack" not found (3)
                                  ical.0.events.9.Altpapier
                                  ical.0.events.9.Hausmüll
                                  

                                  Die Events im Adapter müssen genauso geschrieben sein.

                                  Zeig mal ein Screenshot der Objekte von der ICAL Instanz.

                                  wendy2702W Online
                                  wendy2702W Online
                                  wendy2702
                                  schrieb am zuletzt editiert von
                                  #64

                                  Und nochmal

                                  @wendy2702 sagte in Ical funktioniert nicht - keine Erkennung vom Kalender:

                                  Dann stellt sich mir die Frage ob du das Script oben einfach nur 1 zu 1 kopiert hast oder auch die Entsprechenden Einstellungen vorgenommen hast.

                                  Laut deinen Script logs sucht er diese States:

                                  getState "ical.0.events.9.GelberSack" not found (3)
                                  ical.0.events.9.Altpapier
                                  ical.0.events.9.Hausmüll
                                  

                                  Die Events im Adapter müssen genauso geschrieben sein.

                                  Zeig mal ein Screenshot der Objekte von der ICAL Instanz.

                                  Bitte keine Fragen per PN, die gehören ins Forum!

                                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                  1 Antwort Letzte Antwort
                                  0
                                  • I Offline
                                    I Offline
                                    Idefix01
                                    schrieb am zuletzt editiert von
                                    #65

                                    @wendy2702

                                    Jetzt hab ich es auch gesehen im Log, frag mich nur wo der das her nimmt, denn ich habe das Skript im oberen Bereich entsprechend angepasst zu events.0

                                    // Skript basiered auf JoJ123's Müllskript und Pix' Regenskript
                                    // v 0.2, tempestas 21.12.2018
                                    // Voraussetzung: ical 1.7
                                    
                                    
                                    // Anleitung: 
                                    /*
                                    
                                    1) im ical Adapter die Ereignisse definieren, die gesucht werden sollen (z.B. Restabfall)
                                    
                                    2) const PFAD auf euren ical Adapter anpassen (0, oder 1, zwei...)
                                    
                                    3) im Bereich EINTRAEGE vor den Doppelpunkten die Ereignisse analog des ical Ereginis eintragen. 
                                    ACHTUNG: ES DÜRFEN HIER KEINE FREIZEICHEN GENUTZT WERDEN; ICAL MACHT AUS "Gelber Sack" ALS EREIGNIS DATENPUNKT "GelberSack"
                                    daher muss hier dann "GelberSack" eingetragen werden
                                    
                                    hinter den Doppelpunkten wird der Pfad angegeben, in dem die Datenpunkte für die Tage bis zum jeweiligen Müll gespeichert werden.
                                    Davor wird dann noch die Javascript Instanz gesetzt, in der ihr das Skript startet.
                                    Gesamtpfad dann also z.B. "javascript.0.muell.restmuell" 
                                    
                                    
                                    Hinweis: das Skript kann für alle Arten von Events genutzt werden, daher hier auf dne Begriff "Muell" verzichtet.
                                    
                                    
                                    
                                    */
                                    
                                    debug = true;
                                    
                                    const PFAD = "ical.0.events.";
                                    const EINTRAEGE = {                       
                                        "Hausmüll": "javascript.0.muell.restmuell",
                                        "Altpapier": "javascript.0.muell.papier",
                                        //"Bioabfall": 'javascript.0.muell.bioabfall',
                                        "GelberSack": "javascript.0.muell.gelbersack"
                                    };
                                    
                                    
                                    
                                    
                                    
                                    //States anlegen
                                    
                                    Object.keys(EINTRAEGE).forEach(key => {
                                        createState(EINTRAEGE[key], -1);
                                        if (debug) log("State "+EINTRAEGE[key] +" angelegt");
                                    });
                                    
                                    createState("muell.next");  // state, in den der kleinste Wert geschrieben wird, falls man z.B. auf einer Hauptübersicht immer nur den Wert bis zum nächsten Event (egal welches) sehen möchte)
                                    var idNext = "muell.next";
                                    
                                    function check() {
                                    
                                        var i;
                                        var min = 30;  // maximale Vorschau der Tage im ical ist 90, von dort aus suchen wir den kleinsten Wert
                                    
                                        Object.keys(EINTRAEGE).forEach(eintrag => {
                                            
                                            // erst prüfen, ob event heute vorliegt
                                            
                                            if ( getState(PFAD + 0 +".today." + eintrag).val === true) {   // Pfad weicht von den anderen Tagen ab!
                                            setState(EINTRAEGE[eintrag], 0);
                                            min = 0;
                                            if(debug) log(eintrag + " wird heute abgeholt");
                                            }
                                            
                                            // falls nicht, weiter schauen, wann es kommt
                                           
                                            else {
                                        
                                                for (i=1 ; i<30;i++) {                       // heute (0) wird separat geprüft, da dort ein andere Pfad zum Tragen kommt; max 90 Tage Vorschau 
                                                    if ( getState(PFAD + i +"." + eintrag).val === true) {
                                                    setState(EINTRAEGE[eintrag], i);
                                                    if (i < min) min = i;
                                                    //if(debug) log(eintrag + " in "+i +" Tagen");
                                                    break;              // beim ersten gefundenen Eitnrag wird unterbrochen, da ja der nächste Termin gesucht wird
                                                    }
                                                    
                                                }   
                                            }    
                                        });
                                    
                                        // kleinsten Wert in next - State schreiben
                                        
                                        if(debug) log("Der nächste Müll ist in "+min +" Tagen");
                                        setState(idNext, min);
                                    
                                    }
                                    
                                    // Bei Start
                                    
                                    setTimeout(check, 5000);   // 5 Sekunde warten, um beim erstmaligen Start Fehler zu vermeiden, die aus nicht existierenden States resultieren
                                        
                                    schedule('10 0 * * *', () => check() );    
                                    
                                    
                                    HomoranH 1 Antwort Letzte Antwort
                                    0
                                    • I Idefix01

                                      @wendy2702

                                      Jetzt hab ich es auch gesehen im Log, frag mich nur wo der das her nimmt, denn ich habe das Skript im oberen Bereich entsprechend angepasst zu events.0

                                      // Skript basiered auf JoJ123's Müllskript und Pix' Regenskript
                                      // v 0.2, tempestas 21.12.2018
                                      // Voraussetzung: ical 1.7
                                      
                                      
                                      // Anleitung: 
                                      /*
                                      
                                      1) im ical Adapter die Ereignisse definieren, die gesucht werden sollen (z.B. Restabfall)
                                      
                                      2) const PFAD auf euren ical Adapter anpassen (0, oder 1, zwei...)
                                      
                                      3) im Bereich EINTRAEGE vor den Doppelpunkten die Ereignisse analog des ical Ereginis eintragen. 
                                      ACHTUNG: ES DÜRFEN HIER KEINE FREIZEICHEN GENUTZT WERDEN; ICAL MACHT AUS "Gelber Sack" ALS EREIGNIS DATENPUNKT "GelberSack"
                                      daher muss hier dann "GelberSack" eingetragen werden
                                      
                                      hinter den Doppelpunkten wird der Pfad angegeben, in dem die Datenpunkte für die Tage bis zum jeweiligen Müll gespeichert werden.
                                      Davor wird dann noch die Javascript Instanz gesetzt, in der ihr das Skript startet.
                                      Gesamtpfad dann also z.B. "javascript.0.muell.restmuell" 
                                      
                                      
                                      Hinweis: das Skript kann für alle Arten von Events genutzt werden, daher hier auf dne Begriff "Muell" verzichtet.
                                      
                                      
                                      
                                      */
                                      
                                      debug = true;
                                      
                                      const PFAD = "ical.0.events.";
                                      const EINTRAEGE = {                       
                                          "Hausmüll": "javascript.0.muell.restmuell",
                                          "Altpapier": "javascript.0.muell.papier",
                                          //"Bioabfall": 'javascript.0.muell.bioabfall',
                                          "GelberSack": "javascript.0.muell.gelbersack"
                                      };
                                      
                                      
                                      
                                      
                                      
                                      //States anlegen
                                      
                                      Object.keys(EINTRAEGE).forEach(key => {
                                          createState(EINTRAEGE[key], -1);
                                          if (debug) log("State "+EINTRAEGE[key] +" angelegt");
                                      });
                                      
                                      createState("muell.next");  // state, in den der kleinste Wert geschrieben wird, falls man z.B. auf einer Hauptübersicht immer nur den Wert bis zum nächsten Event (egal welches) sehen möchte)
                                      var idNext = "muell.next";
                                      
                                      function check() {
                                      
                                          var i;
                                          var min = 30;  // maximale Vorschau der Tage im ical ist 90, von dort aus suchen wir den kleinsten Wert
                                      
                                          Object.keys(EINTRAEGE).forEach(eintrag => {
                                              
                                              // erst prüfen, ob event heute vorliegt
                                              
                                              if ( getState(PFAD + 0 +".today." + eintrag).val === true) {   // Pfad weicht von den anderen Tagen ab!
                                              setState(EINTRAEGE[eintrag], 0);
                                              min = 0;
                                              if(debug) log(eintrag + " wird heute abgeholt");
                                              }
                                              
                                              // falls nicht, weiter schauen, wann es kommt
                                             
                                              else {
                                          
                                                  for (i=1 ; i<30;i++) {                       // heute (0) wird separat geprüft, da dort ein andere Pfad zum Tragen kommt; max 90 Tage Vorschau 
                                                      if ( getState(PFAD + i +"." + eintrag).val === true) {
                                                      setState(EINTRAEGE[eintrag], i);
                                                      if (i < min) min = i;
                                                      //if(debug) log(eintrag + " in "+i +" Tagen");
                                                      break;              // beim ersten gefundenen Eitnrag wird unterbrochen, da ja der nächste Termin gesucht wird
                                                      }
                                                      
                                                  }   
                                              }    
                                          });
                                      
                                          // kleinsten Wert in next - State schreiben
                                          
                                          if(debug) log("Der nächste Müll ist in "+min +" Tagen");
                                          setState(idNext, min);
                                      
                                      }
                                      
                                      // Bei Start
                                      
                                      setTimeout(check, 5000);   // 5 Sekunde warten, um beim erstmaligen Start Fehler zu vermeiden, die aus nicht existierenden States resultieren
                                          
                                      schedule('10 0 * * *', () => check() );    
                                      
                                      
                                      HomoranH Nicht stören
                                      HomoranH Nicht stören
                                      Homoran
                                      Global Moderator Administrators
                                      schrieb am zuletzt editiert von
                                      #66

                                      @Idefix01 sagte in Ical funktioniert nicht - keine Erkennung vom Kalender:

                                      "GelberSack": "javascript.0.muell.gelbersack"

                                      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                      1 Antwort Letzte Antwort
                                      0
                                      • I Offline
                                        I Offline
                                        Idefix01
                                        schrieb am zuletzt editiert von
                                        #67

                                        @Homoran

                                        aus dem Kalender soll er lesen: Hausmüll, Altpapier, GelberSack und macht dann im Skript daraus
                                        die Bezeichnungen entsprechend und zählt wieviel Tage bis dahin noch, das steht dann unter:
                                        javascript.0 - muell und dann je nachdem restmuell, altpapier oder gelbersack

                                        1 Antwort Letzte Antwort
                                        0
                                        • wendy2702W Online
                                          wendy2702W Online
                                          wendy2702
                                          schrieb am zuletzt editiert von wendy2702
                                          #68

                                          Das z.B. im Script:

                                          @Idefix01 sagte in Ical funktioniert nicht - keine Erkennung vom Kalender:

                                          GelberSack": "javascript.0.muell.gelbersack

                                          laut log wird aber der DP gesucht den ICAL anlegt bzw. anlegen sollte:

                                          getState "ical.0.events.9.GelberSack" not found (3)
                                          ical.0.events.9.Altpapier
                                          ical.0.events.9.Hausmüll
                                          

                                          Aber:Bevor hier ical nicht läuft, laut deiner Aussage, ist es überflüssig weiter über das Script zu reden.

                                          Bitte keine Fragen per PN, die gehören ins Forum!

                                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          592

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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