SonOff/Tasmota - zusätzliche Datei auf dem Webserver

Hallo Community, die Fehler der letzten Tage wurden hoffentlich behoben. Entschuldigt den Umstand! Viel Spaß weiterhin. Lg
  • Hallo,

    ich habe ein paar Steckdosen von SonOff und Gosund auf denen die Tasmota 6.5.0 läuft.

    Von meinem Verständnis her läuft ja dort jeweils ein kleiner Webserver. Ist es möglich eine zusätzliche Textdatei ins Rootverzeichnis vom Webserver abzulegen? Es geht mir nur um eine kleine Textdatei (1234.txt) mit einem kurzen Text (ca. 30 Zeichen).

    Ich möchte diese Textdatei über den Webserver jederzeit abrufen können:

    Code
    http://IPderSteckdose/1234.txt

    Wie kann ich das bewerkstelligen?

    Gibt es einen Zugriff per FTP oder SSH?

    -----------------------------------------------------------------------------------------------------------

    Nachtrag:

    Ich habe die Ports mal gescannt. Ich habe da nur die 80 gefunden.

    Meine Hardware@home: Fritzbox 7590AX, 15xTasmota-Geräte, Syno NAS, Raspberry Pi 4 f. PiHole, ioBroker, Docker, TasmoAdmin, Portainer

    Einmal editiert, zuletzt von Marc (18. Juni 2019 um 12:32)

  • Webserver bedeutet halt nicht gleichzeitig Fileserver,

    dafür sind die Ressourcen in Tasmota auch sehr begrenzt.

    Kannst dich bei Interesse ja hier durchkämpfen:

    https://github.com/arendst/Sonoff…elopment/sonoff

    im Besonderen xdrv_01_webserver.ino

  • Wie NoitaercX erwähnte eigentlich nur indem du die xdrv_01_webserver.ino moddest.

    Therotisch könntest du dort (https://github.com/arendst/Sonoff…1_webserver.ino), Zeile 529 eine weitere Seite definieren:

    WebServer->on("/tx", ShowTextFile);

    und eben eine neue Funktion integrieren:


    nach Zeile 2293 sowas in der Art einfügen:

    Keine Ahnung ob das funktioniert, kanns derzeit nicht testen

    @NoitaercX: läßt sich eigener Code eigentlich auch im online Compiler verarbeiten? :/

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

    2 Mal editiert, zuletzt von HoerMirAuf (18. Juni 2019 um 14:42)

  • läßt sich eigener Code eigentlich auch im online Compiler verarbeiten? :/

    Im WebIf von benzino77 so wie ich es sehe nicht,

    aber direkt mit Gitpod kann man arbeiten (fast) wie am eigenen Rechner:

    https://gitpod.io/#https://githu…ree/development

  • Interessant ... muss ich mir mal ansehen, noch sehe ich nix wie ich das compilieren antriggern kann :/

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • das compilieren antriggern

    Starten der Kompilierung in der PlatformIO-Konsole:

    platformio run -e sonoff-DE

    mit Rechtsklick kann man dann die fertige firmware.bin aus dem Ordner .pioenvs\... runterladen.

    Beschreibung dazu: Compiling Tasmota on Gitpod

    LG

  • Im Grunde scheint es ja möglich zu sein. Das ist ja schon mal gut. :)

    Das Kompilieren habe ich noch nie gemacht. Ich werde mich mal durchkämpfen, sobald das dafür angedachte Endgerät (Sonoff-Basic) hier ist.

    HoerMirAuf

    Ich werde das von dir ausprobieren.

    Im Moment frage ich mich aber noch, wo der Dateiname (z.B. 1234.txt) hinterlegt wird. Die Angabe fehlt.

    Meine Hardware@home: Fritzbox 7590AX, 15xTasmota-Geräte, Syno NAS, Raspberry Pi 4 f. PiHole, ioBroker, Docker, TasmoAdmin, Portainer

  • Im Moment frage ich mich aber noch, wo der Dateiname (z.B. 1234.txt) hinterlegt wird. Die Angabe fehlt.

    Den gibt es so nicht. Es wird auch keine Textdatei "dargestellt" sondern eine HTML Seite die den Text Deiner Datei enthält. (Wobei ich mich Frage wozu das nutzen soll?

    Aufgerufen wird die Seite. wenn es denn funktioniert mit: http://<sonoff>/tx (so gesehen wäre "/tx" Der "Dateiname")


    hmmmm ... im online kompiler läuft es ohne Fehler durch (Was nicht bedeutet das der Code funktioniert).

    Nur bietet der Download der firmware.bin ein HTML file mit 1,6k an?

    Seamonkey Browserproblem. Geht mit Chrome.

    @Marc

    Hier mal anbei die Standart Sonoff-DE mit der Änderung. Wenn du magst teste mal

    Dateien

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

    5 Mal editiert, zuletzt von HoerMirAuf (18. Juni 2019 um 15:13)

  • aber direkt mit Gitpod kann man arbeiten (fast) wie am eigenen Rechner:

    https://gitpod.io/#https://githu…ree/development

    Geile Sache!! Danke für den Tipp !

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Ich habe nun die Änderungen in der xdrv_01_webserver.ino in Zeile 529 und 2293 vorgenommen und die Datei gespeichert. Danach habe ich "platformio run -e sonoff-DE" ausgeführt.

    Hier die letzten Meldungen:

    Code
    Compiling .pioenvs/sonoff-DE/src/sonoff.ino.cpp.o
    Linking .pioenvs/sonoff-DE/firmware.elf
    Building .pioenvs/sonoff-DE/firmware.bin
    Retrieving maximum program size .pioenvs/sonoff-DE/firmware.elf
    Checking size .pioenvs/sonoff-DE/firmware.elf
    Memory Usage -> http://bit.ly/pio-memory-usage
    DATA:    [======    ]  57.5% (used 47140 bytes from 81920 bytes)
    PROGRAM: [======    ]  56.2% (used 575488 bytes from 1023984 bytes)
    Creating BIN file ".pioenvs/sonoff-DE/firmware.bin" using ".pioenvs/sonoff-DE/firmware.elf"

    Im Verzeichnis ".pioenvs/sonoff-DE/" fand ich dann die generierte firmware.bin (568k), die ich dann runtergeladen habe.

    Habe ich so alles richtig gemacht?

    Was ist mit der firmware.elf?

    Ich habe noch den SonOff-S20. Hier würde ich dann die firmware.bin hochladen und mal testen.

    Meine Hardware@home: Fritzbox 7590AX, 15xTasmota-Geräte, Syno NAS, Raspberry Pi 4 f. PiHole, ioBroker, Docker, TasmoAdmin, Portainer

  • würde ich dann die firmware.bin hochladen und mal testen.

    Ja, trau dich - kann nichts passieren,

    außer du hast den roten Knopf für die Atom-Bombe damit verbunden :/ :S

    firmware.elf ist die Link-Datei, nicht weiter interessant.


  • außer du hast den roten Knopf für die Atom-Bombe damit verbunden :/ :S

    ??? ... Der ist gut ?

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

    Einmal editiert, zuletzt von HoerMirAuf (19. Juni 2019 um 08:54)

  • Zwischenstand:

    Es hat grundsätzlich funktioniert.

    Ich hatte als Ausgabe nicht den ganzen HTML-Bereich (siehe oben) eingefügt, sondern nur testweise eine Zeichenkette mit 20 Zeichen:

    Code
    WSContentSend_P(PSTR("12345678901234567890"));

    Wenn ich nun

    Code
    http://IPvomSonoff/tx

    aufrufe, bekomme ich leider etwas mehr als gewünscht ausgeworfen.

    Im Browser ist nichts zu sehen, im Quelltext steht das hier:

    HTML
    <!DOCTYPE html><html lang="de" class=""><head><meta charset='utf-8'><meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"/><title>KÜ LED Fenster - Informationen</title><script>var x=null,lt,to,tp,pc='';function eb(s){return document.getElementById(s);}function qs(s){return document.querySelector(s);}function sp(i){eb(i).type=(eb(i).type==='text'?'password':'text');}function wl(f){window.addEventListener('load',f);}12345678901234567890<div style='text-align:right;font-size:11px;'><hr/><a href='https://bit.ly/tasmota' target='_blank' style='color:#aaa;'>Sonoff-Tasmota 6.5.0.16 von Theo Arends</a></div></div></body></html>

    Wie man sieht, ist die Zeichenkette (12345678901234567890) drin, leider noch das Gedöns drumherum.

    Irgendwelche Ideen wie ich das noch machen könnte?

    Nachtrag:

    Einen kleinen Workaround habe ich gefunden. Mit curl und cut bekomme ich die betreffende Phase extrahiert.

    Meine Hardware@home: Fritzbox 7590AX, 15xTasmota-Geräte, Syno NAS, Raspberry Pi 4 f. PiHole, ioBroker, Docker, TasmoAdmin, Portainer

    Einmal editiert, zuletzt von Marc (18. Juni 2019 um 23:00)

  • Warum hast du nicht einfach mal mein Beispiel 1:1

    WSContentSend_P(PSTR("12345678901234567890"));

    Oke ... fast wie ich vermutet habe.

    WSContentStart_P(S_INFORMATION);

    Erzeugt das ganze Gedöns und damit entfällt ein kleiner Teil.

    Allerdings hatte es einen guten Grunde warum ich die Zeilen die ich im Beispiel eingefügt habe in HTML Code gepackt habe.

    Setz doch da mal ein:

    Code
    WSContentSend_P(PSTR("</head><body>"));
    WSContentSend_P(PSTR("<p>Zeile 1 der Textdatei</p>"));
    WSContentSend_P(PSTR("<div><div>"));

    die Zeichen < .. > ...< ... > und deren Inhalt sind die HTML -Tags, die hast du z.B. komplett unterschlagen hast und genau daran liegt es auch das Deine Zahlenfolge nicht angezeigt wird ....

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Gerade nchmal drüber nachgedacht...

    Müsste man halt mal testen, es könnte auch sein das folgendes geht:

    HTML
    void ShowTextFile(void)
    
    {
      if (!HttpCheckPriviledgedAccess()) { return; }
      WSContentSend_P(PSTR("<html><head></head><body>"));WSContentSend_P(PSTR("<p>Zeile 1 der Textdatei</p>"));
      WSContentSend_P(PSTR("<p>Zeile 2 der Textdatei</p>"));
      WSContentSend_P(PSTR("</body></html>"));
    }

    Oder wenn du das File ohne HTML zum download brauchst, allerdings wird dann vermutlich nichts im Briower angezeigt.

    Code
    void ShowTextFile(void)
    {
      if (!HttpCheckPriviledgedAccess()) { return; }
      WSContentSend_P(PSTR("Zeile 1 der Textdatei"));
      WSContentSend_P(PSTR("Zeile 2 der Textdatei"));
    }


    EDIT:

    So, nach ein wenig herumspielen ...

    Code
    void ShowTextFile(void)
    {  
      if (!HttpCheckPriviledgedAccess()) { return; }
      WSContentStart_P(S_CONFIGURATION);
      WSContentSendStyle();
      WSContentSend_P(PSTR("Zeile 1 der Textdatei<br>"));
      WSContentSend_P(PSTR("Zeile 2 der Textdatei<br>"));
      WSContentStop();
    }

    Wird so eigener Textinhalt sogar im Tasmota Style angezeigt.

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

    4 Mal editiert, zuletzt von HoerMirAuf (19. Juni 2019 um 08:29)

  • Nach insgesamt 7 Versuchen habe ich die Lösung für reinen Plaintext.

    Wichtig war die Angabe "CT_PLAIN" und am Ende statt WSContentStop ein WSContentEnd.

    Code
    void ShowTextFile(void)
    {
    if (!HttpCheckPriviledgedAccess()) { return; }
    WSContentBegin(200, CT_PLAIN);
    WSContentSend_P(PSTR("12345678901234567890"));
    WSContentEnd();
    }

    So sieht die Ausgabe im Browser, sowie als Quelltext aus:

    Code
    12345678901234567890

    Ansonsten ist da nichts mehr.

    Meine Hardware@home: Fritzbox 7590AX, 15xTasmota-Geräte, Syno NAS, Raspberry Pi 4 f. PiHole, ioBroker, Docker, TasmoAdmin, Portainer

    Einmal editiert, zuletzt von Marc (19. Juni 2019 um 08:45)

  • WSContentBegin(200, CT_PLAIN);

    Richtig, wenn du eine reine Text Datei möchtest.

    Hast du aber ja nirgend erwähnt ob der Text nur angezeigt werden soll oder für einen Download bereit stehen soll ;)

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Darf ich Fragen für was du das brauchst?

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro Basic / MagicHome / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer / Gosund SP111 / ESP12E / WEMOS D1 Mini / ESP32Cam

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712/INA219/MHZ19B/DS3231

    Alexa Sprachsteuerung

    mosquitto/bash/html/cgi auf Wyse5070

  • Hier mal anbei die Standart Sonoff-DE mit der Änderung. Wenn du magst teste mal

    Sorry, Das habe ich erst jetzt gesehen, dass du dort eine firmware.bin zum Testen erstellt hast.

    Hast du aber ja nirgend erwähnt ob der Text nur angezeigt werden soll oder für einen Download bereit stehen soll

    Im Eingangsposting steht, dass ich etwas mit reinem Text benötige. Ich dachte zuerst an eine Textdatei, die man einfach ins Rootverzeichnis vom Webserver legt. Als Ausgabe so geht es natürlich auch.

    Meine Hardware@home: Fritzbox 7590AX, 15xTasmota-Geräte, Syno NAS, Raspberry Pi 4 f. PiHole, ioBroker, Docker, TasmoAdmin, Portainer