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. Servicemeldungen - All inclusive für Homematic -

NEWS

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

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

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

Servicemeldungen - All inclusive für Homematic -

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
1.0k Beiträge 93 Kommentatoren 323.1k Aufrufe 102 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.
  • cashC Offline
    cashC Offline
    cash
    Most Active
    schrieb am zuletzt editiert von
    #40

    Im ersten Beitrag ist die aktuelle Version von heute:

    05.02.19 V1.08 Bei Sabotage wurde nicht die Variable für die Prio berücksichtigt

    • geändert von Kanal 1 auf 0 var cacheSelectorSABOTAGE = $('channel[state.id=hm-rpc.*.0.SABOTAGE_ALARM$]');

    • Batterieliste aktualisiert

    • Wenn Batterie nicht ermittelbar erfogt ein Hinweis im Log

    • Neue Konfig Möglichkeit um Nachrichtentext in Objekte zu schreiben (erstmal Testweise nur in LOWBAT)

    • Ergebnis in Datenfleder schreiben zum testen in LOWBAT eingefügt

    • 06.02.19 V1.09 Serviemeldung ERROR_CODE aufgenommen

    • Wenn Script manuell gestartet wurde wurde kein Ergebnis geloggt wenn eine Servicemeldung vorliegt und Debug = false war

    • Logging optimiert

    • Es wird keine Push mehr verschickt wenn eine Servicemeldung vorliegt und das Script manuell gestartet wird

    **************************/

    Zum ersten mal hatte ich heute Nacht um 3 Uhr einen Echtfall. :mrgreen:

    Batterie von einen Wandthermostat ist leer. Das Script funktioniert bei mir also auch im Echtfall. Allerdings hat er leider falsche Batterien ermittelt. Der Fehler tritt dann auf wenn der Gerätetyp nicht eindeutig ist. Da muss ich nochmal ran. Derzeit habe ich da aber noch keine Idee wie ich das umgehe.

    Beispiel es gibt den Gerätetyp: HM-Sec-RHS und HM-Sec-RHS-2. Hat man nun den zweiten passt es. Beim ersten kommt es zum Fehler weil der erste Gerätetyp auch im zweiten vorhanden ist.

    Gestern habe ich Testweise die Möglichkeit geschaffen Ergebnisse in Datenfelder zu schreiben. Habe es aber noch nicht 100% getestet. Auf jeden Fall würde das dazu führen das das Script noch länger wird. Geschätzt um über 200 Zeilen. Ob ich das also wirklich einbaue weiß ich noch nicht. Es sollte ja auch in jeden erdenklichen Fall funktionieren…

    1 Antwort Letzte Antwort
    0
    • sigi234S Online
      sigi234S Online
      sigi234
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #41

      @cash:

      Im ersten Beitrag ist die aktuelle Version von heute:

      05.02.19 V1.08 Bei Sabotage wurde nicht die Variable für die Prio berücksichtigt

      • geändert von Kanal 1 auf 0 var cacheSelectorSABOTAGE = $('channel[state.id=hm-rpc.*.0.SABOTAGE_ALARM$]');

      • Batterieliste aktualisiert

      • Wenn Batterie nicht ermittelbar erfogt ein Hinweis im Log

      • Neue Konfig Möglichkeit um Nachrichtentext in Objekte zu schreiben (erstmal Testweise nur in LOWBAT)

      • Ergebnis in Datenfleder schreiben zum testen in LOWBAT eingefügt

      • 06.02.19 V1.09 Serviemeldung ERROR_CODE aufgenommen

      • Wenn Script manuell gestartet wurde wurde kein Ergebnis geloggt wenn eine Servicemeldung vorliegt und Debug = false war

      • Logging optimiert

      • Es wird keine Push mehr verschickt wenn eine Servicemeldung vorliegt und das Script manuell gestartet wird

      **************************/

      Zum ersten mal hatte ich heute Nacht um 3 Uhr einen Echtfall. :mrgreen:

      Batterie von einen Wandthermostat ist leer. Das Script funktioniert bei mir also auch im Echtfall. Allerdings hat er leider falsche Batterien ermittelt. Der Fehler tritt dann auf wenn der Gerätetyp nicht eindeutig ist. Da muss ich nochmal ran. Derzeit habe ich da aber noch keine Idee wie ich das umgehe.

      Beispiel es gibt den Gerätetyp: HM-Sec-RHS und HM-Sec-RHS-2. Hat man nun den zweiten passt es. Beim ersten kommt es zum Fehler weil der erste Gerätetyp auch im zweiten vorhanden ist.

      Gestern habe ich Testweise die Möglichkeit geschaffen Ergebnisse in Datenfelder zu schreiben. Habe es aber noch nicht 100% getestet. Auf jeden Fall würde das dazu führen das das Script noch länger wird. Geschätzt um über 200 Zeilen. Ob ich das also wirklich einbaue weiß ich noch nicht. Es sollte ja auch in jeden erdenklichen Fall funktionieren… `

      19:14:24.817	info	javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Bitte melden: Licht_Vorraum (OEQxxxxxx) --- HM-LC-Sw1PBU-FM --- Batterietyp fehlt im Script
      

      Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
      Immer Daten sichern!

      1 Antwort Letzte Antwort
      0
      • cashC Offline
        cashC Offline
        cash
        Most Active
        schrieb am zuletzt editiert von
        #42

        Das habe ich auch neu eingebaut :-)

        1 Antwort Letzte Antwort
        0
        • cashC Offline
          cashC Offline
          cash
          Most Active
          schrieb am zuletzt editiert von
          #43

          Das einzige was mich stutzig macht. Hat dieses Gerät wirklich den Datenpunkt LOWBAT? Das Gerät ist das an Strom angeschlossen und so kann es zu keinem LOWBAt kommen?

          1 Antwort Letzte Antwort
          0
          • sigi234S Online
            sigi234S Online
            sigi234
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #44

            @cash:

            Das einzige was mich stutzig macht. Hat dieses Gerät wirklich den Datenpunkt LOWBAT? Das Gerät ist das an Strom angeschlossen und so kann es zu keinem LOWBAt kommen? `

            Ja eben, das ist ein Funk-Schaltaktor 1-fach für Markenschalter, Unterputzmontage

            Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
            Immer Daten sichern!

            1 Antwort Letzte Antwort
            0
            • cashC Offline
              cashC Offline
              cash
              Most Active
              schrieb am zuletzt editiert von
              #45

              Was es ist habe ich gesehen. Guckmal ob das Gerät den Datenpunkt hat und ich wette das Gerät hat den Datenpunkt.

              1 Antwort Letzte Antwort
              0
              • sigi234S Online
                sigi234S Online
                sigi234
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #46

                @cash:

                Was es ist habe ich gesehen. Guckmal ob das Gerät den Datenpunkt hat und ich wette das Gerät hat den Datenpunkt. `

                2858_screenshot__1757__li.jpg

                Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                Immer Daten sichern!

                1 Antwort Letzte Antwort
                0
                • cashC Offline
                  cashC Offline
                  cash
                  Most Active
                  schrieb am zuletzt editiert von
                  #47

                  Wie ich also vermutet habe. Das Script macht was es soll. Entweder ist der Datenpunkt ein Fehler von iobroker (was ich nicht glaube, da iobroker einfach alle Felder aus der ccu ausliest) oder der Programmierer bei eq3 war bekifft als er den Schalter programmiert hat :-)

                  1 Antwort Letzte Antwort
                  0
                  • sigi234S Online
                    sigi234S Online
                    sigi234
                    Forum Testing Most Active
                    schrieb am zuletzt editiert von
                    #48

                    @cash:

                    Wie ich also vermutet habe. Das Script macht was es soll. Entweder ist der Datenpunkt ein Fehler von iobroker (was ich nicht glaube, da iobroker einfach alle Felder aus der ccu ausliest) oder der Programmierer bei eq3 war bekifft als er den Schalter programmiert hat :-) `

                    Tja, da trifft eher letzteres zu…...... :)

                    Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                    Immer Daten sichern!

                    1 Antwort Letzte Antwort
                    0
                    • cashC Offline
                      cashC Offline
                      cash
                      Most Active
                      schrieb am zuletzt editiert von
                      #49

                      Auf der ersten Seite ist wieder die aktuelle Version. Im wesentlichen habe ich nur den Teil neu geschrieben der die benötigten Batterien ermittelt.

                      Mit der neuen Variante werden jetzt zuverlässig die richtige Batterie ermittelt. Sonstige Änderungen habe ich nicht vorgenommen.

                      1 Antwort Letzte Antwort
                      0
                      • dslraserD Offline
                        dslraserD Offline
                        dslraser
                        Forum Testing Most Active
                        schrieb am zuletzt editiert von
                        #50

                        @cash:

                        Auf der ersten Seite ist wieder die aktuelle Version. Im wesentlichen habe ich nur den Teil neu geschrieben der die benötigten Batterien ermittelt.

                        Mit der neuen Variante werden jetzt zuverlässig die richtige Batterie ermittelt. Sonstige Änderungen habe ich nicht vorgenommen. `

                        javascript.0	2019-02-08 20:10:26.871	warn	at script.js.08Statusabfragen.Alle_Meldungen_neu1:1574:5
                        javascript.0	2019-02-08 20:10:26.871	warn	at LOWBAT (script.js.08Statusabfragen.Alle_Meldungen_neu1:381:17)
                        javascript.0	2019-02-08 20:10:26.868	warn	State "Systemvariable.0.Servicemeldungen.Anzahl_LOWBAT" not found
                        
                        1 Antwort Letzte Antwort
                        0
                        • cashC Offline
                          cashC Offline
                          cash
                          Most Active
                          schrieb am zuletzt editiert von
                          #51

                          Hast Du das Script einfach ausgeführt oder vorher die Konfig bearbeitet?

                          var write_state = true; —> Schreibe Ergebnis in die Systemvariable die zwei Zeilen darunter zu finden ist… Wenn es die bei Dir nicht gibt ist die Fehlermeldung nachvollziehbar.

                          Falls Du den Paramter write_state auf false hattest sollte der Fehler hoffentlich nicht kommen. Diese Funktion teste ich gerade. Funktioniert nur für die LOWBAT Meldungen...

                          1 Antwort Letzte Antwort
                          0
                          • dslraserD Offline
                            dslraserD Offline
                            dslraser
                            Forum Testing Most Active
                            schrieb am zuletzt editiert von
                            #52

                            ich habe jetzt gerade den Rechner aus gemacht. Dann habe ich das bestimmt übersehen.

                            1 Antwort Letzte Antwort
                            0
                            • S Offline
                              S Offline
                              simpixo
                              schrieb am zuletzt editiert von
                              #53

                              Super Script!!! Vielen Dank!

                              Ist es möglich anstelle von Pushover, Telegram einzubauen?

                              1 Antwort Letzte Antwort
                              0
                              • L Offline
                                L Offline
                                lesiflo
                                Most Active
                                schrieb am zuletzt editiert von
                                #54

                                Hi, kannst du das Script von deinem ersten Post nochmal neu einstellen. Wenn ich es importieren kommen jede Menge
                                Fehlermeldungen. Die meisten habe ich zwar herausbekommen aber bei dieser Zeile hier komme ich nicht weiter:

                                for (i = 0; i <lr44x2.length; i++)/{/if/(lr44x2[i]="=" native_type)/batterie="2x LR44/AG13" ;/break;/}/for/(i="0;" i/<lr6x2.length;/(lr6x2[i]="=" </lr6x3.length;/(lr6x3[i]="=" lr6x4.length;/(lr6x4[i]="=" lr3x1.length;/(lr3x1[i]="=" lr3x2.length;/(lr3x2[i]="=" lr3x3.length;/(lr3x3[i]="=" lr3x3a.length;/(lr3x3a[i]="=" block9.length;/(block9[i]="=" fixed.length;/(fixed[i]="=" ohne.length;/(ohne[i]="=" recharge.length;/(recharge[i]="=" return(batterie);/function/lowbat(obj)/var/meldungsart="LOWBAT" gesamt="0;" betroffen="0;" text="[];" _message_tmp=" " log_manuell="false;" (obj)/common_name="obj.common.name.substr(0," obj.common.name.indexof(':'));/status="obj.newState.val;" status_text;/if(status="==" 0){/status_text="Batterie ok" else/(status="=" 1){/2){/id_name="obj.id.split('.')[2];" log('neue/servicemeldung:/'/+common_name/+'/('+id_name/+')/+'---/typ:/'+meldungsart/---/status:/+status/+status_text);/if(debugging){/log('function/+meldungsart/wird/gestartet.');/cacheselectorlowbat.each(function/(id,/i)/schleife/für/jedes/gefundenen/element/*.lowbat/obj="getObject(id);" datum="formatDate(getState(id).lc," "tt.mm.jj/ss:mm:ss");/datum_neu;/datum_seit;/if(datum/'01.01.71/01:00:00'){/datum_seit/datum_neu/}else{/uhr';/native_type="getObject(id.substring(0," id.lastindexof('.')/-/2)).native.type;/1)/wenn/zustand="true," dann/die/anzahl/der/geräte/hochgezählt/++betroffen;/text.push(common_name/+')');/zu/array/hinzufügen/+')'/+/<font/color="red">Spannung Batterien/Akkus gering. '+Batterie+'\n';
                                
                                1 Antwort Letzte Antwort
                                0
                                • cashC Offline
                                  cashC Offline
                                  cash
                                  Most Active
                                  schrieb am zuletzt editiert von
                                  #55

                                  Geht derzeit leider nicht. Beim Versuch das Script neu hochzuladen kommt eine Fehlermeldung das mein Beitrag zu lang ist.

                                  Telegram ist natürlich möglich. Kann man sich selber anpassen. Ich selber nutze kein Telegram.

                                  1 Antwort Letzte Antwort
                                  0
                                  • cashC Offline
                                    cashC Offline
                                    cash
                                    Most Active
                                    schrieb am zuletzt editiert von
                                    #56

                                    Habe das Script eben angepasst. Nachdem ich die erste STICKY_UNREACH hatte habe ich nun die Funktion eingebaut um diese Servicemeldung automatisch zu bestätigen.

                                    Bitte Konfiguration vom Script vorher anpassen. Das Script habe ich nun auf GitHub gepackt. Ist evtl. einfacher für mich.

                                    Link im ersten Beitrag.

                                    sigi234S 1 Antwort Letzte Antwort
                                    0
                                    • cashC cash

                                      Habe das Script eben angepasst. Nachdem ich die erste STICKY_UNREACH hatte habe ich nun die Funktion eingebaut um diese Servicemeldung automatisch zu bestätigen.

                                      Bitte Konfiguration vom Script vorher anpassen. Das Script habe ich nun auf GitHub gepackt. Ist evtl. einfacher für mich.

                                      Link im ersten Beitrag.

                                      sigi234S Online
                                      sigi234S Online
                                      sigi234
                                      Forum Testing Most Active
                                      schrieb am zuletzt editiert von
                                      #57

                                      @cash

                                      11.2.2019, 21:25:33.297	[info ]: javascript.0 Stop script script.js.CCU2.Servicemeldungen_Homematic_Geraete
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 Start javascript script.js.CCU2.Servicemeldungen_Homematic_Geraete
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Bitte melden: Skript (CUX2801001) ---  --- Batterietyp fehlt im Script
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Bitte melden: Multimedia (CUX2801002) ---  --- Batterietyp fehlt im Script
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Bitte melden: CUX MEDIA PLAYER (CUX2801003) ---  --- Batterietyp fehlt im Script
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Bitte melden: HM-RC-19 CUX2801004 (CUX2801004) ---  --- Batterietyp fehlt im Script
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Bitte melden: HM-RC-P1 CUX2801005 (CUX2801005) ---  --- Batterietyp fehlt im Script
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Bitte melden: Pushsafer (CUX2801006) ---  --- Batterietyp fehlt im Script
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Es gibt: 13 Geräte mit dem Datenpunkt LOWBAT.
                                      11.2.2019, 21:25:34.289	[warn ]: javascript.0     at LOWBAT (script.js.CCU2.Servicemeldungen_Homematic_Geraete:382:17)
                                      11.2.2019, 21:25:34.289	[warn ]: javascript.0     at script.js.CCU2.Servicemeldungen_Homematic_Geraete:1576:5
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Keine Geräte gefunden mit dem Datenpunkt LOW_BAT.
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Es gibt: 15 Geräte mit dem Datenpunkt UNREACH.
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Es gibt: 14 Geräte mit dem Datenpunkt STICKY_UNREACH.
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Es gibt: 8 Geräte mit dem Datenpunkt CONFIG_PENDING.
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Es gibt: 6 Geräte mit dem Datenpunkt UPDATE_PENDING.
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Es gibt: 6 Geräte mit dem Datenpunkt DEVICE_IN_BOOTLOADER.
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Es gibt: 3 Geräte mit dem Datenpunkt ERROR.
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Keine Geräte gefunden mit dem Datenpunkt ERROR_CODE.
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Es gibt: 1 Geräte mit dem Datenpunkt FAULT_REPORTING.
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: Keine Geräte gefunden mit dem Datenpunkt SABOTAGE.
                                      11.2.2019, 21:25:34.289	[info ]: javascript.0 script.js.CCU2.Servicemeldungen_Homematic_Geraete: registered 66 subscriptions and 0 schedules
                                      

                                      Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                      Immer Daten sichern!

                                      cashC 1 Antwort Letzte Antwort
                                      0
                                      • G Offline
                                        G Offline
                                        Gerni
                                        schrieb am zuletzt editiert von
                                        #58

                                        Sowas jetzt noch als Blockly für die, die da nicht so bewandert sind - wie ich 😂

                                        Jede Menge verschiedenes Zeug

                                        1 Antwort Letzte Antwort
                                        0
                                        • kmxakK Offline
                                          kmxakK Offline
                                          kmxak
                                          Most Active
                                          schrieb am zuletzt editiert von
                                          #59

                                          bekomme noch folgende Fehlermeldung:

                                          javascript.0	2019-02-11 23:00:47.704	warn	at script.js.User.Homematic.Batterie:1579:5
                                          javascript.0	2019-02-11 23:00:47.704	warn	at STICKY_UNREACH (script.js.User.Homematic.Batterie:660:33)
                                          javascript.0	2019-02-11 23:00:47.704	warn	at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:564:29)
                                          javascript.0	2019-02-11 23:00:47.704	warn	at script.js.User.Homematic.Batterie:692:17
                                          javascript.0	2019-02-11 23:00:47.704	warn	at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1236:28)
                                          javascript.0	2019-02-11 23:00:47.703	warn	State "[object Object]" not found
                                          

                                          Und noch eine Frage:

                                          Der Datenpunkt ist doch Systemvariable.0.Servicemeldungen.xxx oder nicht also nicht imjavascript.0 Ordner zu finden oder?

                                          Ich habe mir einen Datenpunkt für Sticky unreach angelegt was auch eine Meldung auslösen sollte aber ich habe keine neuen erstellten Objekte.

                                          Gruß Alex

                                          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

                                          890

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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