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. Praktische Anwendungen (Showcase)
  4. OBI Funk-Steckdosenumbau ESP8266 (Generation1 Rund)

NEWS

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

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

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

OBI Funk-Steckdosenumbau ESP8266 (Generation1 Rund)

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
obi steckdoseesp8266
464 Beiträge 37 Kommentatoren 158.2k Aufrufe 8 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.
  • T Offline
    T Offline
    thobastian
    schrieb am zuletzt editiert von
    #294

    und was bedeutet:

    CMD: /ON

    ??

    HW: Homematic CCU2, Amazon Echo, diverse NodeMCU's mit Sensoren,

    SW: IOBroker: immer neueste Version mit ESPEasy auf den NodeMCU's

    1 Antwort Letzte Antwort
    0
    • sissiwupS Offline
      sissiwupS Offline
      sissiwup
      schrieb am zuletzt editiert von
      #295

      @thobastian:

      und was bedeutet:

      CMD: /ON

      ?? `
      siehe c:

      per Webaufruf der URL IP/ON

      MfG

      Sissi

      –-----------------------------------------

      1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


      1 Antwort Letzte Antwort
      0
      • sissiwupS Offline
        sissiwupS Offline
        sissiwup
        schrieb am zuletzt editiert von
        #296

        Alexa ist da :-)

        Hallo,

        ich habe Alexa mal integriert. Achtung BETA!

        Verwendet wird die ESPALEXA-Bibliothek: https://github.com/Aircoookie/Espalexa

        Alexa erkennt die Steckdose als LED-Stripe:

        Was geht:

        Alexa "Steckdose" an

        Alexa "Steckdose" aus

        Alexa "Steckdose" 1-99 (Steckdose an für 1 bis 99 Minuten)

        Es wird keine Cloud-Anbindung für die Dose, noch Anbindung an ioBroker oder MQTT benötigt.

        Was geht nicht:

        Die Steckdose gibt keine Rückmeldung an Alexa wie Status oder Timer grade stehen.

        Konfiguration:

        alexa?name=Mein Name der Dose <- Umlaute und Sonderzeichen noch nicht getestet!

        alxea?active=1

        Bitte in der Reihenfolge. Wenn ihr komplett alexa ausschalten wollt, dann

        alexa?active=0, dann reboot.

        Nach jeder Änderung müßt ihr natürlich in Alexa nach neuen Geräten suchen lassen!

        609_bildschirmfoto_2018-10-27_um_10.17.03.png

        Für diejenigen die Selbst übersetzen:

        Es ist in der 2.4.x ein Bug: (<2.3.x sollte so funktionieren)
        609_bildschirmfoto_2018-10-23_um_01.02.12.png
        609_bildschirmfoto_2018-10-23_um_01.01.53.png
        609_bildschirmfoto_2018-10-23_um_01.01.46.png
        Die eine Zeile muss in der Datei angepasst werden.

        Wenn ihr das nicht macht: Dann wird immer nur auf AN geschaltet. Nichts anderes geht.

        609_firmware_1_2_2.zip
        609_code_1_2_2.zip

        MfG

        Sissi

        –-----------------------------------------

        1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


        1 Antwort Letzte Antwort
        0
        • sissiwupS Offline
          sissiwupS Offline
          sissiwup
          schrieb am zuletzt editiert von
          #297

          Hallo,

          ich habe folgende Idee und mich würde interessieren was ihr davon haltet:

          Man könnte in der Dose noch 199 weitere Alexa-Namen zulassen.

          Die Dose könnte dann ein Kommando über MQTT oder über Webcall absetzen

          mit dem Funktionsumfang ON/OFF 1-99 oder 0-100 oder 0-255

          Man benötigt dann für die Alexa-Integration keine Cloud mehr.

          Also:

          Alexa Kaffeemaschine an -> Steckdose "Kaffemaschine" bin ich nicht, rufe Kommando auf -> MQTT Kaffemaschine an -> weiter über normalen weg

          Sind 199 Geräte genug? Es gehen halt nur die oben angedachten Kommandos.

          MfG

          Sissi

          –-----------------------------------------

          1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


          1 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            meierchen006
            schrieb am zuletzt editiert von
            #298

            Hallo sissiwup,

            Nutze meine OBI Steckdose zum einschalten des Ladegerätes fürs EBike. Ladezeit in der Regel 3 bis 5 Stunden.

            Also 180 bis 300 Minuten, daher reichen für mich die 99 Minuten nicht aus.

            Kann man das anpassen (längere Ladezeit) mit Alexa?

            meierchen006

            1 Antwort Letzte Antwort
            0
            • T Offline
              T Offline
              thobastian
              schrieb am zuletzt editiert von
              #299

              Hallo !

              Also ich habe "Hängelampe" ausprobiert, Funktioniert wunderbar.

              Ein Großes DANKE für die Alexa-Integration. Das ist toll!!!

              HW: Homematic CCU2, Amazon Echo, diverse NodeMCU's mit Sensoren,

              SW: IOBroker: immer neueste Version mit ESPEasy auf den NodeMCU's

              1 Antwort Letzte Antwort
              0
              • M Offline
                M Offline
                meierchen006
                schrieb am zuletzt editiert von
                #300

                Hallo,

                So habe die Firmware drauf, lasse Alexa App suchen und finde nichts.

                Brauche ich noch einen Skill?

                Ich muss erwähnen dass ich keinen Echo habe sondern nur die Alexa App auf dem Tablet.

                meierchen006

                1 Antwort Letzte Antwort
                0
                • J Offline
                  J Offline
                  Jan1
                  schrieb am zuletzt editiert von
                  #301

                  Kein Echo, keine Alexa ;)

                  1 Antwort Letzte Antwort
                  0
                  • M Offline
                    M Offline
                    meierchen006
                    schrieb am zuletzt editiert von
                    #302

                    Hallo,

                    Das ist nicht richtig,

                    ich kann meine Bose Soundtouch auch über die App ein und ausschalten lassen.

                    Als welches Gerät muss ich die OBI Steckdose hinzufügen, ich habe unter sonstige gesucht

                    1 Antwort Letzte Antwort
                    0
                    • J Offline
                      J Offline
                      Jan1
                      schrieb am zuletzt editiert von
                      #303

                      Oh das ist mir neu, wie hast dann die Bose Soundtouch mit Alexa gekoppelt (gesucht)?

                      In der APP ist die Such ja mittlerweile etwas verwurschtelt aufgebaut, da empfehle ich die Suche direkt über Alexa Webseite, denn da ist immer noch die allgemeine Suche aktiv, die einfach nach allem sucht. Wobei ich es echt nicht glauben kann, dass man kein Echo mehr braucht um Geräte zu koppeln.

                      Deshalb interessiert es mich wirklich wie Du das gemacht hast.

                      1 Antwort Letzte Antwort
                      0
                      • M Offline
                        M Offline
                        meierchen006
                        schrieb am zuletzt editiert von
                        #304

                        Hallo,

                        Dazu braucht man einen Bose Skill

                        meierchen006

                        1 Antwort Letzte Antwort
                        0
                        • J Offline
                          J Offline
                          Jan1
                          schrieb am zuletzt editiert von
                          #305

                          OK, dann stellt der Skill die Geräte in Alexa bereit. Dann müsste es für die Obi Umbauten wohl auch ein Skill geben, kein Plan ich habe andere Steckdosen mit Tasmota am Laufen. Die brauchen kein Skill, dafür aber ein Echo :lol:

                          1 Antwort Letzte Antwort
                          0
                          • M Offline
                            M Offline
                            meierchen006
                            schrieb am zuletzt editiert von
                            #306

                            Hallo,

                            So ist es in den OBI Steckdosen eingestellt entweder als Name obi1 oder obi2.
                            7526_20181027_204158.png

                            So sieht bei meiner Obi1 Steckdose unter ip/espalexa aus
                            7526_20181027_210342.png

                            1 Antwort Letzte Antwort
                            0
                            • sissiwupS Offline
                              sissiwupS Offline
                              sissiwup
                              schrieb am zuletzt editiert von
                              #307

                              @meierchen006:

                              Hallo,

                              So habe die Firmware drauf, lasse Alexa App suchen und finde nichts.

                              Brauche ich noch einen Skill?

                              Ich muss erwähnen dass ich keinen Echo habe sondern nur die Alexa App auf dem Tablet.

                              meierchen006 `

                              Hi,

                              die Dosen simulieren eine Hue. Aber ich glaube das funktioniert nur mit den Alexa-Geräten, die auch diese steuern können.

                              Das sind wohl zumindest die Echo Dots.

                              Für obi1 / obi2:

                              Starte mal die Dose neu, was sagt sie dann?

                              MfG

                              Sissi

                              –-----------------------------------------

                              1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


                              1 Antwort Letzte Antwort
                              0
                              • J Offline
                                J Offline
                                Jan1
                                schrieb am zuletzt editiert von
                                #308

                                Ja mit Hue Emulator geht es nur mit nem Echo, da man die Dose nicht mit der Hue APP verknüpfen kann und dann auch der Skill nicht greift.

                                1 Antwort Letzte Antwort
                                0
                                • sissiwupS Offline
                                  sissiwupS Offline
                                  sissiwup
                                  schrieb am zuletzt editiert von
                                  #309

                                  Kleines Update für Alexa:

                                  Update der Oberfläche:
                                  609_bildschirmfoto_2018-10-28_um_09.05.44.png

                                  Integration MQTT:
                                  609_bildschirmfoto_2018-10-28_um_09.05.14.png

                                  Der Status der Dose wird korrekt an Alexa zurück gemeldet

                                  Bugfix:

                                  Timer -> ON ging nicht. Ist repariert.

                                  Für die Selbstübersetzer:

                                  ESPALEXA ist nicht mehr als LIB enthalten sondern die beiden Sourcen sind aktuell enthalten, da doch einige Anpassungen notwendig waren.

                                  609_firmware_1_2_2b.zip
                                  609_code_1_2_2b.zip

                                  MfG

                                  Sissi

                                  –-----------------------------------------

                                  1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


                                  1 Antwort Letzte Antwort
                                  0
                                  • M Offline
                                    M Offline
                                    meierchen006
                                    schrieb am zuletzt editiert von
                                    #310

                                    Hallo,

                                    ich habe auch noch eine Fire TV Box mit eingebauter Alexa.

                                    Auch dort werden die Obi Steckdosen nicht gefunden, schade.

                                    Werde mir bei Gelegenheit dann mal einen kleinen Echo Dot Version 3 kaufen, funktioniert es mit dem?

                                    @sissiwup

                                    ich habe die Steckdosen gestern schon mehrfach neu gestartet gehabt.

                                    Jetzt Aktuell mit der Firmware 1.2.2b

                                    Obi1 mit 1.2.2b
                                    7526_obi1.jpg

                                    Obi2 mit 1.2.2b
                                    7526_obi2.jpg

                                    1 Antwort Letzte Antwort
                                    0
                                    • sissiwupS Offline
                                      sissiwupS Offline
                                      sissiwup
                                      schrieb am zuletzt editiert von
                                      #311

                                      @meierchen006:

                                      Hallo,

                                      ich habe auch noch eine Fire TV Box mit eingebauter Alexa.

                                      Auch dort werden die Obi Steckdosen nicht gefunden, schade.

                                      Werde mir bei Gelegenheit dann mal einen kleinen Echo Dot Version 3 kaufen, funktioniert es mit dem? `

                                      > The ha-bridge requires a physical Amazon Echo (Gen1 or 2), Echo Plus, Dot (Gen 1 or 2), Tap, Show, Spot or Google Home or Mini device and does not work with prototype devices built using the Alexa Voice Service e.g. Amazon’s Alexa AVS Sample App and Sam Machin’s AlexaPi. The AVS version does not have any capability for HUE Bridge discovery!

                                      Also noch nicht getestet mit Dot Gen 3.0

                                      MfG

                                      Sissi

                                      –-----------------------------------------

                                      1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


                                      1 Antwort Letzte Antwort
                                      0
                                      • haselchenH Offline
                                        haselchenH Offline
                                        haselchen
                                        Most Active
                                        schrieb am zuletzt editiert von
                                        #312

                                        Anderer Weg in Alexa ist die HA-Bridge.

                                        Gerät dort anlegen mit IP Adresse und variablen Name (z.B. Gästezimmer)

                                        Alexa suchen lassen und zack kann man die Steckdose steuern wie man will.

                                        An / Aus / Routinen etc.

                                        Synology DS218+ & 2 x Fujitsu Esprimo (VM/Container) + FritzBox7590 + 2 AVM 3000 Repeater & Homematic & HUE & Osram & Xiaomi, NPM 10.9.4, Nodejs 22.21.0 ,JS Controller 7.0.7 ,Admin 7.7.19

                                        1 Antwort Letzte Antwort
                                        0
                                        • sissiwupS Offline
                                          sissiwupS Offline
                                          sissiwup
                                          schrieb am zuletzt editiert von
                                          #313

                                          @haselchen:

                                          Anderer Weg in Alexa ist die HA-Bridge.

                                          Gerät dort anlegen mit IP Adresse und variablen Name (z.B. Gästezimmer)

                                          Alexa suchen lassen und zack kann man die Steckdose steuern wie man will.

                                          An / Aus / Routinen etc. `

                                          Hi,

                                          gute Idee, habe ich auch ausprobiert, siehe dazu auch mein Script im entsprechenden Post.

                                          var anz=0;
                                          
                                          var habridgeURL = "http://192.168.1.13:8080/api/devices"
                                          var ioBrokerURL = "http://192.168.1.13:8087/set/"
                                          
                                          /////////////////////////////////////////// 
                                          function escapeRegExp(str) {
                                            return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\><");
                                          }
                                          
                                          function delDevices(from_val,to_val,habridgeURL) {
                                              for (var i=from_val;i<=to_val;i++) {
                                                	var request = require('request');
                                          		request.delete({
                                          				headers: {'content-type': 'application/json'},
                                          				url:     habridgeURL+"/"+i
                                          		}, function(error, response, body) {
                                          			if (error){
                                          				return log(error, 'error');
                                          			}
                                          			log("Del Response: "+JSON.stringify(body));
                                          		}); 
                                              }
                                          }
                                          
                                          function getDevice(val,habridgeURL) {
                                                	var request = require('sync-request');
                                          		var erg = request.get({
                                          				headers: {'content-type': 'application/json'},
                                          				url:     habridgeURL+"/"+val
                                          		}, function(error, response, body) {
                                          			if (error){
                                          				return log(error, 'error');
                                          			}
                                          			log("Get Response: "+body);
                                          			log("GET-NAME:"+JSON.parse(body).name);
                                          		});
                                          }
                                          
                                          function sendrequest(habridgeURL, params,id,devid){
                                              if (devid.length!==0) {  // ID Vorhanden, dh. hole Namen aus ha-bridge
                                                	var request = require('request');
                                          		var erg = request.get({
                                          				headers: {'content-type': 'application/json'},
                                          				url:     habridgeURL+"/"+devid
                                          		}, function(error, response, body) {
                                          			if (error){
                                          				return log(error, 'error');
                                          			}
                                          			// log("Get Response: "+body);
                                          			// log("GET-NAME:"+JSON.parse(body).name);
                                                      var name=JSON.parse(body).name;
                                                      var addurl="";
                                                      if (name===undefined) {
                                                          log("NOT FOUND - "+devid);
                                                          return;  // auskommentieren um nicht gefundene neu anzulegen!  <<<<<<<<<<<<<<<<<<<<<<<<<<<<
                                                          params["id"]=null;
                                                          sendrequest(habridgeURL, params,id,"");
                                                      } else if (name.length>0) {
                                                          params["name"]=name;
                                                          addurl="/"+devid;
                                                      }
                                                      var request = require('request');
                                          		    request.put({
                                          				headers: {'content-type': 'application/json'},
                                          				url:     habridgeURL+addurl,
                                          				body:   params,
                                          				json: true
                                          		    }, function(error, response, body) {
                                          			    if (error){
                                          				    return log(error, 'error');
                                          			    }
                                          			    // log("Update Response: "+JSON.stringify(body));
                                          	//		var regexp = escapeRegExp(ioBrokerURL)+"(.*)\\?value.*";
                                                  	    log("update ok - "+devid); 
                                          		    });
                                          		});
                                              } else {
                                                  var request = require('request');
                                          		request.post({
                                          				headers: {'content-type': 'application/json'},
                                          				url:     habridgeURL,
                                          				body:   params,
                                          				json: true
                                          		}, function(error, response, body) {
                                          			if (error){
                                          				return log(error, 'error');
                                          			}
                                          			// log("Response: "+JSON.stringify(body));
                                          			var regexp = escapeRegExp(ioBrokerURL)+"(.*)\\?value.*";
                                                      var patt = new RegExp(regexp);
                                                      var result = patt.exec(body[0].onUrl);
                                                      if (result!==null) {
                                          			    log("ID für "+ decodeURI(result[1]) +" erhalten: " + body[0].id); 
                                          			    if (!isNaN(body[0].id)) extendObject(decodeURI(result[1]), {common: {habridgeid: body[0].id}});
                                          			} else {
                                          			    log("update nok"); 
                                          			}
                                          		});
                                              }
                                          }
                                          
                                          function saveData(id,raum,devname,onurl,offurl,dimurl) {
                                          	// log("Objekt: "+id);
                                          	devid="";
                                          	var params = {};
                                          	if (isNaN((getObject(id).common.habridgeid))){
                                          	    devid="";
                                              	log("++++++++ Neu "+id+devid+" ");
                                          	} else {
                                          	    devid=getObject(id).common.habridgeid;    
                                              	log("======== Update "+id+"-"+devid+"-");
                                          	}
                                          	    // devid="";  // add trotz ID
                                              	idu=encodeURI(id);
                                              	if (devid.length>0) {
                                              	    params["id"]=devid;
                                              	} 
                                              	params["name"]= devname;
                                              	params["deviceType"]= "switch";
                                              	params["onUrl"]= "[{\"item\":\""+ioBrokerURL+idu+"?value="+onurl+"\",\"type\":\"httpDevice\"}]";
                                              	if (offurl.length>0) params["offUrl"]= "[{\"item\":\""+ioBrokerURL+idu+"?value="+offurl+"\",\"type\":\"httpDevice\"}]";
                                              	if (dimurl.length>0) params["dimUrl"]= "[{\"item\":\""+ioBrokerURL+idu+"?value="+dimurl+"\",\"type\":\"httpDevice\"}]";
                                              	params["description"]= "\""+raum+"\"";
                                              	params["comments"]= id;
                                          
                                              	sendrequest(habridgeURL,params,id,devid);
                                          
                                          }
                                          
                                          function callme(id,i,b,onurl,offurl,dimurl) {
                                                 if (getObject(id) && anz<500) {
                                                  var devname=getObject(id).common.name;
                                                  var channel=getObject(id).common.name.split(":");
                                                  var idteile=id.split(".");
                                                  var dev="";
                                                  var dp = getObject(id,"rooms");
                                                  var raum=dp.enumNames;
                                                  if (idteile.length>2) {
                                                      dev=idteile[2];
                                                  }
                                                  if (raum.length===0) {
                                                      raum="-"
                                                  }
                                                if (b===false || raum!="-") { 
                                                 anz=anz+1;
                                                 // log( '"'+id+'","'+channel[0]+'","'+devname+'","'+raum+'","'+dev+'"'+String.fromCharCode(10));
                                                 saveData(id,raum,devname,onurl,offurl,dimurl);
                                                }
                                              } 
                                          }
                                          
                                          // callme 
                                          //      id = Geraeteid
                                          //      i  = Nummer (nicht verwendet)
                                          //      b  = Nur Geräte mit Raum (true/false)
                                          //      onurl = Wert für ON
                                          //      offurl = Wert für OFF
                                          //      dimurl = Wert für DIM ("${intensity.percent}")
                                          
                                          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                                          
                                          //var states = $('broadlink2.0.*.L.*').each(function(id,i) { callme(id,i,false,"true","false",""); });
                                          //var states = $('broadlink2.0.States.*').each(function(id,i) { callme(id,i,false,"true","false",""); });
                                          //var states = $('broadlink2.0.Scenes.*').each(function(id,i) { callme(id,i,false,"true","false",""); });
                                          //var states = $('scene.0.*').each(function(id,i) { callme(id,i,false,"true","false",""); });
                                          //var states = $('hm-rpc.0.*.SET*').each(function(id,i) { callme(id,i,true,"true","false",""); });
                                          var states = $('hm-rpc.0.*.1.LEVEL').each(function(id,i) { callme(id,i,true,"100","0","${intensity.percent}"); });
                                          //var states = $('hm-rpc.0.LEQ1023360.1.LEVEL').each(function(id,i) { callme(id,i,true,"100","0","${intensity.percent}"); });   
                                          
                                          //delDevices(25,200,habridgeURL);
                                          //getDevice(25,habridgeURL);
                                          

                                          MfG

                                          Sissi

                                          –-----------------------------------------

                                          1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


                                          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

                                          968

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          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