Skip to content
  • 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
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben)

NEWS

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

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

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

JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben)

Scheduled Pinned Locked Moved Tester
40 Posts 11 Posters 7.0k Views 17 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.
  • David G.D Online
    David G.D Online
    David G.
    wrote on last edited by
    #21

    Ich muss mal fragen, auch wenn ich mich glaube blamiere....
    Wo finde ich die Variablen "Status Code", "data" etc? Wollte gtad das erste Script umbauen und finde es einfach nicht.....

    Zeigt eure Lovelace-Visualisierung klick
    (Auch ideal um sich Anregungen zu holen)

    Meine Tabellen für eure Visualisierung klick

    O 1 Reply Last reply
    0
    • David G.D David G.

      Ich muss mal fragen, auch wenn ich mich glaube blamiere....
      Wo finde ich die Variablen "Status Code", "data" etc? Wollte gtad das erste Script umbauen und finde es einfach nicht.....

      O Offline
      O Offline
      oFbEQnpoLKKl6mbY5e13
      wrote on last edited by
      #22

      @david-g

      Data z. B. ist ein eigener Baustein unter Aktionen.

      David G.D 1 Reply Last reply
      0
      • O oFbEQnpoLKKl6mbY5e13

        @david-g

        Data z. B. ist ein eigener Baustein unter Aktionen.

        David G.D Online
        David G.D Online
        David G.
        wrote on last edited by
        #23

        @ofbeqnpolkkl6mby5e13

        Hmmmm.
        Grad mal das Repro umgestellt.

        War noch auf 7.9.
        Da war der neue Baustein drinnen aber noch nicht die gefragten Bausteine.

        Zeigt eure Lovelace-Visualisierung klick
        (Auch ideal um sich Anregungen zu holen)

        Meine Tabellen für eure Visualisierung klick

        haus-automatisierungH O 2 Replies Last reply
        0
        • David G.D David G.

          @ofbeqnpolkkl6mby5e13

          Hmmmm.
          Grad mal das Repro umgestellt.

          War noch auf 7.9.
          Da war der neue Baustein drinnen aber noch nicht die gefragten Bausteine.

          haus-automatisierungH Offline
          haus-automatisierungH Offline
          haus-automatisierung
          Developer Most Active
          wrote on last edited by
          #24

          @david-g sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

          Grad mal das Repro umgestellt.

          Warum Repo umstellen? Auf Beta? Um eine Beta-Version zu installieren ist das nicht nötig.
          Einfach über das npm-Tab im Expertenmodus den Adapter auswählen (das installiert dann automatisch @latest von npm).

          🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
          🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
          📚 Meine inoffizielle ioBroker Dokumentation

          1 Reply Last reply
          0
          • David G.D David G.

            @ofbeqnpolkkl6mby5e13

            Hmmmm.
            Grad mal das Repro umgestellt.

            War noch auf 7.9.
            Da war der neue Baustein drinnen aber noch nicht die gefragten Bausteine.

            O Offline
            O Offline
            oFbEQnpoLKKl6mbY5e13
            wrote on last edited by
            #25

            @david-g

            Okay, ich bin auf 8.3.0.

            js1.PNG

            1 Reply Last reply
            1
            • haus-automatisierungH haus-automatisierung

              @eisbaer721 Da muss ich den Telegram Adapter noch anpassen damit das klappt

              HiltexH Offline
              HiltexH Offline
              Hiltex
              wrote on last edited by
              #26

              @haus-automatisierung
              Vielen Dank für die Mühe und Energie, die du in den Adapter investierst.

              @haus-automatisierung sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

              @eisbaer721 Da muss ich den Telegram Adapter noch anpassen damit das klappt

              Hattest du schon Zeit das im Telegram-Adapter anzupassen?
              Ich habe Telegram gerade aus dem Latest installiert und bekomme trotzdem kein Bild zugesandt.
              Vom Aufbau her hab ich das so gemacht, wie hier:

              @eisbaer721 sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

              a338f028-c401-4153-9c3f-fe2de8c9b409-image.png

              Blog: indibit.de

              haus-automatisierungH 1 Reply Last reply
              0
              • HiltexH Hiltex

                @haus-automatisierung
                Vielen Dank für die Mühe und Energie, die du in den Adapter investierst.

                @haus-automatisierung sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

                @eisbaer721 Da muss ich den Telegram Adapter noch anpassen damit das klappt

                Hattest du schon Zeit das im Telegram-Adapter anzupassen?
                Ich habe Telegram gerade aus dem Latest installiert und bekomme trotzdem kein Bild zugesandt.
                Vom Aufbau her hab ich das so gemacht, wie hier:

                @eisbaer721 sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

                a338f028-c401-4153-9c3f-fe2de8c9b409-image.png

                haus-automatisierungH Offline
                haus-automatisierungH Offline
                haus-automatisierung
                Developer Most Active
                wrote on last edited by
                #27

                @hiltex sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

                Vom Aufbau her hab ich das so gemacht, wie hier:

                Das ist ja auch nicht richtig so. Du brauchst den kompletten Pfad zur Datei. Nicht nur den Namen. Dafür habe ich createTempFile als Funktion eingebaut. Hab ich im Kurs ausführlich mit Beispielen erklärt. Fehlt Dir da was?

                Hier habe ich das auch kurz angerissen: https://www.youtube.com/watch?v=dS6vkX6Mvjo

                🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                📚 Meine inoffizielle ioBroker Dokumentation

                HiltexH 1 Reply Last reply
                0
                • haus-automatisierungH haus-automatisierung

                  @hiltex sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

                  Vom Aufbau her hab ich das so gemacht, wie hier:

                  Das ist ja auch nicht richtig so. Du brauchst den kompletten Pfad zur Datei. Nicht nur den Namen. Dafür habe ich createTempFile als Funktion eingebaut. Hab ich im Kurs ausführlich mit Beispielen erklärt. Fehlt Dir da was?

                  Hier habe ich das auch kurz angerissen: https://www.youtube.com/watch?v=dS6vkX6Mvjo

                  HiltexH Offline
                  HiltexH Offline
                  Hiltex
                  wrote on last edited by
                  #28

                  @haus-automatisierung sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

                  Das ist ja auch nicht richtig so. Du brauchst den kompletten Pfad zur Datei. Nicht nur den Namen. Dafür habe ich createTempFile als Funktion eingebaut. ... Fehlt Dir da was?

                  Tatsächlich ja, allerdings muss ich gestehen, dass das zitierte Blockly falsch war (sorry). Gebaut habe ich folgendes:
                  Bildschirmfoto 2024-07-21 um 14.25.35.png

                  Das Problem ist folgendes: Das Bild wird nicht versendet, vermutlich weil der Dateiname fehlt, wie du geschrieben hast. Auf TempFile hat man aber nur Zugriff, wenn man mit einem Trigger auf Dateiänderungen reagiert. In meinem Fall funktioniert das aber so nicht, bzw. wünsche ich mir das anders.

                  Ich möchte, wenn jemand die Klingel an der Haustür drückt, per Telegram ein Bild von der Kamera an der Haustür haben. Es gibt aber noch weitere Möglichkeiten das Kamera-Bild abzurufen, z.B. per Telegram-Tastatur oder wenn die Haustür geöffnet wird, während ich nicht zuhause bin.

                  Bisher werte ich dafür die Objekt-ID aus, die getriggert hat und gebe dem Bild dann eine Beschriftung mit ("Es hat geklingelt" oder "Haustür wurde geöffnet"). Wenn jetzt mit einem Trigger das Bild abgelegt wird und mit einem weiteren Trigger auf die Änderung des Bildes reagiert wird, dann geht mir die Information verloren, woher das ursprünglich kam und ich kann das Bild nicht mehr Beschriften.

                  Gibt es dafür einen Weg, dass ich innerhalb von einem Trigger das Kamera-Bild abrufen und direkt auch versenden kann?

                  Blog: indibit.de

                  1 Reply Last reply
                  0
                  • S Away
                    S Away
                    Shadowhunter23
                    wrote on last edited by
                    #29

                    @haus-automatisierung

                    Ich hab hier ein Blockly gebaut:
                    1e118099-be64-4728-bf0e-3f367ddfa1b0-image.png
                    719f4591-0237-43a9-9481-00d90025309c-image.png

                    Die Funktion "Dateiereignis entfernen" sollte das Bild wieder löschen oder verstehe ich die Funktion fasch?

                    Proxmox 9 HA-Cluster mit 3x HP prodesk 400 G6 i5
                    Bei einem downvote bitte melden, es könnte sein, dass dieser ungewollt ist!

                    haus-automatisierungH 1 Reply Last reply
                    0
                    • S Shadowhunter23

                      @haus-automatisierung

                      Ich hab hier ein Blockly gebaut:
                      1e118099-be64-4728-bf0e-3f367ddfa1b0-image.png
                      719f4591-0237-43a9-9481-00d90025309c-image.png

                      Die Funktion "Dateiereignis entfernen" sollte das Bild wieder löschen oder verstehe ich die Funktion fasch?

                      haus-automatisierungH Offline
                      haus-automatisierungH Offline
                      haus-automatisierung
                      Developer Most Active
                      wrote on last edited by
                      #30

                      @shadowhunter23 Ja verstehst Du falsch. Das entfernt nur den Trigger.

                      Ist nicht notwendig die Datei zu speichern. Mittlerweile kann auch direkt eine temporäre Datei erstellt werden mit den HTTP Daten.

                      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                      📚 Meine inoffizielle ioBroker Dokumentation

                      S 1 Reply Last reply
                      0
                      • haus-automatisierungH haus-automatisierung

                        @shadowhunter23 Ja verstehst Du falsch. Das entfernt nur den Trigger.

                        Ist nicht notwendig die Datei zu speichern. Mittlerweile kann auch direkt eine temporäre Datei erstellt werden mit den HTTP Daten.

                        S Away
                        S Away
                        Shadowhunter23
                        wrote on last edited by Shadowhunter23
                        #31

                        @haus-automatisierung

                        Ok. Ist ja auch nicht nötig das Bild zu löschen.

                        Aber wenn ich das hier baue dann bekomme ich bei den weiteren Timeouts die 2 Bilder senden sollen immer mehr. Je timeout kommt immer ein Bild mehr pro Kamera. Ich sehe den Fehler nicht 😕
                        Die temporäre Datei möchte ich nicht verwenden.
                        b712311f-82d1-423b-a0fc-543f60b73cd2-image.png

                        Proxmox 9 HA-Cluster mit 3x HP prodesk 400 G6 i5
                        Bei einem downvote bitte melden, es könnte sein, dass dieser ungewollt ist!

                        haus-automatisierungH 1 Reply Last reply
                        0
                        • S Shadowhunter23

                          @haus-automatisierung

                          Ok. Ist ja auch nicht nötig das Bild zu löschen.

                          Aber wenn ich das hier baue dann bekomme ich bei den weiteren Timeouts die 2 Bilder senden sollen immer mehr. Je timeout kommt immer ein Bild mehr pro Kamera. Ich sehe den Fehler nicht 😕
                          Die temporäre Datei möchte ich nicht verwenden.
                          b712311f-82d1-423b-a0fc-543f60b73cd2-image.png

                          haus-automatisierungH Offline
                          haus-automatisierungH Offline
                          haus-automatisierung
                          Developer Most Active
                          wrote on last edited by
                          #32

                          @shadowhunter23 Das ist ja auch maximal umständlich gemacht. Warum schreibst und liest Du die Datei überhaupt? Einfach eine temporäre Datei mit den HTTP-Bausteinen erstellen und die an Telegram übergeben.

                          Ich kann das wirklich nicht ausführlicher erklären als im Kurs bereits geschehen 🙂

                          🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                          🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                          📚 Meine inoffizielle ioBroker Dokumentation

                          S 1 Reply Last reply
                          0
                          • haus-automatisierungH haus-automatisierung

                            @shadowhunter23 Das ist ja auch maximal umständlich gemacht. Warum schreibst und liest Du die Datei überhaupt? Einfach eine temporäre Datei mit den HTTP-Bausteinen erstellen und die an Telegram übergeben.

                            Ich kann das wirklich nicht ausführlicher erklären als im Kurs bereits geschehen 🙂

                            S Away
                            S Away
                            Shadowhunter23
                            wrote on last edited by Shadowhunter23
                            #33

                            @haus-automatisierung
                            Es läuft jetzt, ich muss das "Dateiereignis entfernen" gleich ausführen.
                            Wie gesagt ich möchte keine temporäre Datei verwenden.

                            Proxmox 9 HA-Cluster mit 3x HP prodesk 400 G6 i5
                            Bei einem downvote bitte melden, es könnte sein, dass dieser ungewollt ist!

                            haus-automatisierungH 1 Reply Last reply
                            0
                            • S Shadowhunter23

                              @haus-automatisierung
                              Es läuft jetzt, ich muss das "Dateiereignis entfernen" gleich ausführen.
                              Wie gesagt ich möchte keine temporäre Datei verwenden.

                              haus-automatisierungH Offline
                              haus-automatisierungH Offline
                              haus-automatisierung
                              Developer Most Active
                              wrote on last edited by
                              #34

                              @shadowhunter23 sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

                              Wie gesagt ich möchte keine temporäre Datei verwenden.

                              Wie soll es ohne gehen? Das erlaubt das Konzept vom Telegram-Adapter aktuell gar nicht. Und der JavaScript-Adapter räumt in den Verzeichnissen ja selbst wieder auf.

                              🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                              🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                              📚 Meine inoffizielle ioBroker Dokumentation

                              T 1 Reply Last reply
                              0
                              • haus-automatisierungH haus-automatisierung

                                @shadowhunter23 sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

                                Wie gesagt ich möchte keine temporäre Datei verwenden.

                                Wie soll es ohne gehen? Das erlaubt das Konzept vom Telegram-Adapter aktuell gar nicht. Und der JavaScript-Adapter räumt in den Verzeichnissen ja selbst wieder auf.

                                T Offline
                                T Offline
                                topsurfer
                                wrote on last edited by
                                #35

                                Hallo,
                                wollte gerade die Variante nutzen, ohne "extra" JS über Blockly direkt in eine Datei zu schreiben, funktioniert aber nicht.
                                Die obere "alte" Variante (JS, grün) funktioniert, nach /tmp/ wird die Datei: PV_Prozent.txt geschrieben/erstellt.
                                Drunter in orange dann die direkte Blocky-Variante, aber die Datei: PV_Prozent2.txt wird nicht erstellt (auch nicht unter /opt/iobroker).

                                datei-iob.png

                                Wo liegt der Fehler?
                                Muss "Objekt ID (meta)" noch verändert werden?


                                Anleitung zur Integration Enocean/Eltako in iobroker (Beta!)
                                https://www.mmhaus.de/eltako-device-in-iobroker-integrieren-enocean

                                M haus-automatisierungH 2 Replies Last reply
                                0
                                • T topsurfer

                                  Hallo,
                                  wollte gerade die Variante nutzen, ohne "extra" JS über Blockly direkt in eine Datei zu schreiben, funktioniert aber nicht.
                                  Die obere "alte" Variante (JS, grün) funktioniert, nach /tmp/ wird die Datei: PV_Prozent.txt geschrieben/erstellt.
                                  Drunter in orange dann die direkte Blocky-Variante, aber die Datei: PV_Prozent2.txt wird nicht erstellt (auch nicht unter /opt/iobroker).

                                  datei-iob.png

                                  Wo liegt der Fehler?
                                  Muss "Objekt ID (meta)" noch verändert werden?

                                  M Online
                                  M Online
                                  MCU
                                  wrote on last edited by MCU
                                  #36

                                  @topsurfer /tmp/ -Verzeichnis muss man erst anlegen.

                                  NUC i7 64GB mit Proxmox ---- https://mcuiobroker.gitbook.io/jarvis-infos/ Aktualisierungen der Doku auf Instagram verfolgen -> https://www.instagram.com/mcuiobroker
                                  Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                                  T 1 Reply Last reply
                                  0
                                  • M MCU

                                    @topsurfer /tmp/ -Verzeichnis muss man erst anlegen.

                                    T Offline
                                    T Offline
                                    topsurfer
                                    wrote on last edited by topsurfer
                                    #37

                                    @mcu Hmmm;
                                    auf Filesystemebene gibt es (natürlich) das /tmp schon - und darein soll ja geschrieben werden.

                                    Oder wo muss das "Verzeichnis" angelegt werden?


                                    Anleitung zur Integration Enocean/Eltako in iobroker (Beta!)
                                    https://www.mmhaus.de/eltako-device-in-iobroker-integrieren-enocean

                                    M 1 Reply Last reply
                                    0
                                    • T topsurfer

                                      @mcu Hmmm;
                                      auf Filesystemebene gibt es (natürlich) das /tmp schon - und darein soll ja geschrieben werden.

                                      Oder wo muss das "Verzeichnis" angelegt werden?

                                      M Online
                                      M Online
                                      MCU
                                      wrote on last edited by MCU
                                      #38

                                      @topsurfer Im Ordner

                                      files/0_userdata.0/tmp/
                                      

                                      bacff48c-7b58-4710-b3b9-e293f287d6ed-image.png

                                      NUC i7 64GB mit Proxmox ---- https://mcuiobroker.gitbook.io/jarvis-infos/ Aktualisierungen der Doku auf Instagram verfolgen -> https://www.instagram.com/mcuiobroker
                                      Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

                                      haus-automatisierungH 1 Reply Last reply
                                      1
                                      • M MCU

                                        @topsurfer Im Ordner

                                        files/0_userdata.0/tmp/
                                        

                                        bacff48c-7b58-4710-b3b9-e293f287d6ed-image.png

                                        haus-automatisierungH Offline
                                        haus-automatisierungH Offline
                                        haus-automatisierung
                                        Developer Most Active
                                        wrote on last edited by haus-automatisierung
                                        #39

                                        @mcu sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

                                        @topsurfer Im Ordner files/0_userdata.0/tmp/

                                        Bitte nie manuell Verzeichnisse oder Dateien unter 0_userdata.0 im ioBroker-Verzeichnis anlegen!

                                        🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                                        🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                                        📚 Meine inoffizielle ioBroker Dokumentation

                                        1 Reply Last reply
                                        1
                                        • T topsurfer

                                          Hallo,
                                          wollte gerade die Variante nutzen, ohne "extra" JS über Blockly direkt in eine Datei zu schreiben, funktioniert aber nicht.
                                          Die obere "alte" Variante (JS, grün) funktioniert, nach /tmp/ wird die Datei: PV_Prozent.txt geschrieben/erstellt.
                                          Drunter in orange dann die direkte Blocky-Variante, aber die Datei: PV_Prozent2.txt wird nicht erstellt (auch nicht unter /opt/iobroker).

                                          datei-iob.png

                                          Wo liegt der Fehler?
                                          Muss "Objekt ID (meta)" noch verändert werden?

                                          haus-automatisierungH Offline
                                          haus-automatisierungH Offline
                                          haus-automatisierung
                                          Developer Most Active
                                          wrote on last edited by
                                          #40

                                          @topsurfer sagte in JavaScript 7.11.0 - Neue Datei-Bausteine (lesen / schreiben):

                                          Die obere "alte" Variante (JS, grün) funktioniert, nach /tmp/ wird die Datei: PV_Prozent.txt geschrieben/erstellt.

                                          Du verwechselst da eventuell etwas. /tmp bezieht sich in diesem Fall ja nicht auf das /tmp Verzeichnis im Linux-Dateisystem, sondern immer auf das ioBroker-Dateisystem. Wo das liegt, hängt von Deinem Speichertyp für die Objektdatenbank ab.

                                          Nutzt Du beispielsweise redis, landen diese Daten nicht im Dateisystem, sondern ebenfalls in der Redis-Datenbank. Bei jsonl werden diese aber ganz normal im Dateisystem gespeichert. Am besten gar nicht im Dateisystem selbst suchen (wozu auch, darum kümmert sich ja der ioBroker).

                                          In jedem Fall sollten diese danach aber über das Dateien-Tab auffindbar sein:

                                          Screenshot 2025-11-12 at 11.36.27.png

                                          Screenshot 2025-11-12 at 11.37.20.png

                                          Insgesamt habe ich das Thema mit einigen Beispiel rauf und runter erklärt...

                                          🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                                          🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                                          📚 Meine inoffizielle ioBroker Dokumentation

                                          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

                                          258

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe