Wemos D1, NodeMCU, ESP8266

  • Könnte ein Schubs in die richtige Richtung gewesen sein! Danke, @ClaudiaF!

    Wird auf jeden Fall getestet :)

    Vermutlich kann ich sogar noch eine Optimierung am Flash-Speicher mit einbauen, wenn ich anstatt einfach nur Wifi.begin(ssid, password); folgendes nehme:

    C
    WiFi.persistent(false);
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);

    Denn so wie es aussieht, wird jedes Mal bei Wifi.begin(ssid, password) der Flash mit den Logindaten überschrieben - auch wenn sich die nicht geändert haben.

    Klingt dann fast danach, als ob der OTA Sketch (was er ja muss) den ESP explizit im AP + STA Mode öffnet. Ich mach dann später einfach wieder nur Wifi.begin(ssid, password) und er nutzt die vorher noch im Flash vorhandenen Informationen, doch dann bitte wieder AP + STA zu verwenden.

    Links dazu:
    https://www.mikrocontroller.net/topic/416329
    https://github.com/esp8266/Arduin…s.md#persistent
    https://github.com/esp8266/Arduino/issues/3641

    OpenELEC 5.0 Final (5.0.7 / 5.0.8 github) | SolidRun CuBox-i4Pro (CPU: ARM Cortex A9 | GPU: Vivante GC2000)
    Kein kodi.log => Kein Support! | Spendier' mir ein Bier!

    2 Mal editiert, zuletzt von root2 (13. November 2017 um 14:03) aus folgendem Grund: Missverständlichen Code verbessert.

  • Ich hab leider keinen Zugriff auf den Sketch gerade.
    Kann sein, dass ich .begin() verwende oder eben auch .begin(ssid, password).

    Leider wird in der Doku auch nur gesagt, dass .begin() die zuletzt verwendeten Informationen aus dem Flash benutzt. Aber nicht explizit, dass dort keine Flash Befehle mehr ausgeführt werden.

    Ich denke mit einem persistent(false) macht man nicht viel falsch - solange die Logindaten sich nicht ändern.

  • Gestern habe ich ein paar meiner Li-Ion-Batterien getestet.
    Ich habe billige "Fire" aus China (nagelneu), relativ teure von Samsung (neu) und die aus meinem Robomäher. Die aus dem Robo haben über 1500 Ladezyklen hinter sich.
    Die Chinakracher haben zwar einen eingebauten Laderegler bzw Entladeregler, bringen aber nur ~1000mAh. Verkauft werden die mit 4000mAh.
    Die Samsungs schaffen 2500. Ordentlich.
    Und selbst die aus dem Robo packen noch 1500. Eine von denen ist jedoch hinüber. Die kommt gerade auf 700mAh.
    Vermutlich ist der Mäher wegen der einen Zelle immer stehen geblieben. Irgendwo kann man das ja auch nur bedingt kompensieren.
    Unterm Strich also wie erwartet. Wobei ich nicht gedacht hätte, dass die aus dem Robo sogar noch brauchbar sind.

  • Was habt ihr für Projekte damit umgesetzt?

    Ohne den Thread hijacken zu wollen: ich plane derzeit Infrarot Signale einer Fernbedienung von einem Raum in einen anderen zu übertragen. Also so wie es die Marmitek Powermid Pyramiden machen. Das ganze soll so aussehen, dass ein ESP8266 die IR Signale empfängt und an einen oder mehrere andere ESP8266 via WLAN überträgt, die diese dann ausgeben.

    Wozu das ganze? Die Erklärung ist etwas länger...
    In einem Zimmer stehen TV, AV-Receiver, BluRay Player, S905x Box und dergleichen. Die steuere ich alle mit einer Harmony mit Hub. Vor einiger Zeit habe ich mir mit einem Arduino einen IR zu 433 MHZ konverter gebastelt, damit ich mit der Harmony auch Funksteckdosen steuern kann. Klappt.
    Die nächste erweiteung war, dass ich den Arduino mit einem Ethernet Shield versehen habe und diesen so programmiert habe, dass er nachdem die Harmony einen bestimmten IR code gesendet hat ein WOL Signal an diverse PCs in meiner Wohnung versendet, um diese aufzuwecken. Also quasi ein IR-WOL Server der kaum Strom braucht. Funktioniert ebenso.
    Der nächste Schritt war (ganz klar :rolleyes: :( Sprachsteuerung. Über Tasker, Autovoice und dem Logitech Plugin für Tasker (Harmony funktioniert immer noch nicht mit Google Assistant oder Home, obwohl Logitech dies auf ihrer Homepage behaupten) kann ich alles, was ich mit der Harmony steuern kann jetzt auch über den Google assistant bedienen (auch das 433 MHZ Licht und das Aufwecken der PCs mittels WOL). Google assistant und nicht google home, weil ich das ganze eigenlich "nur mal" ausprobieren wollte, der Assistant sowieso am Samsung S8 funktioniert und ich zu Versuchszwecken nicht Google Home anschaffen wollte.
    Der nächste Schritt ist jetzt wohl auch klar: da ich eigentlich in jedem Raum meiner Wohnung einen TV (ja, auch im Badezimmer. Nur nicht im Klo, da ich mich nicht entscheiden konnte ob ich im sitzen oder im stehen TV schauen können soll :D ), Beamer oder Sat receiver habe, wäre es toll auch diese mit Sprachsteuerung zu bedienen. Und genau dafür ist es notwendig die IR Signale von dem Raum, in dem der Harmony Hub steht in die anderen Räume zu übertragen. WIFI bietet sich an, da man keine Kabel verlegen muss, der ESP8266 natürlich wegen der Kosten. Ich missbrauche also den Harmony Hub um damit sprachgesteuert alle Geräte in der Wohnung bedienen zu können die über IR ansprechbar sind.

    Da meine letzte Arduino Programmiererei doch schon einige Zeit zurückliegt, muss ich mich mal in die Materie wieder einlesen, bis die ESPs aus China ankommen... Aber ich denke, dass ich auch nach dem Lesen diverser tutorials auf Eure Hilfe angewiesen sein werde.

    Falls jemand im Netz ein ähnliches Projekt gefunden hat bin ich über Tipps dankbar. Ich kenne nur Projekte bei denen über eine Website ein ESP dazu gebracht wird, IR signale zu senden und dieses Projekt, allerdings über LAN
    https://www.riyas.org/2014/03/sendin…o-ethernet.html

  • Ui! Die Chinesen sind inzwischen schneller geworden. 2 Wochen für 3 NodeMCUs für laue 10 Euronen lass ich mir einreden...

    In der Zwischenzeit habe ich versucht die Sketches zu erstellen. Wobei erstellen übertrieben ist. Ich habe versucht meine nahezu nicht vorhandenen Arduino Kenntnisse via Web aufzufrischen, mich vor allem an diesen seiten orientiert und versucht die dort vorhandenen sketches zu verstehen (was teilweise missglückt ist 8| ) und zu kombinieren:

    https://www.riyas.org/2014/03/sendin…o-ethernet.html
    http://www.instructables.com/id/WiFi-Commun…66-Based-MCU-T/

    Herausgekommen ist folgendes. Ich habe mich wirklich bemüht, eine Struktur reinzubringen. Falls das missglückt ist, steinigt mich bitte nicht.
    SSID und Passwort sind natürlich nicht "TOPSECRET" :rolleyes:


    und


    Die C-Nummern bitte ich zu ignorieren. Ich musste zum Teil andere Bauteile nehmen, da C die gewünschten dann doch nicht lagernd hatte :cursing: . Anhand der auf github verfügbaren IR sende Demo Sketches bin ich mir sicher, dass die hardware funktioniert. Dieser Sketch https://github.com/esp8266/Basic/…ples/IRsendDemo lässt die IR led (über die Handycam betrachtet) blinken.

    Jetzt zum Problem bei dem ich Euch bitte mir zu helfen. Vielleicht braucht jemand anderes diese Idee auch. Oder die Hilfe erfolgt nur des Sportsgeists willen :rolleyes:

    Die zwei Nodemcus verbinden sich auch offenbar. Nach dem uploaden der Sketches und drücken einer Taste auf einer Fernbedienung gibt der Serial Motitor des Cliet aus:


    Code
    IR Codes empfangen
     m4350 s750 m1550 s750 m1550 s750 m1550 s750 m450 s750 m450 s750 m450 s750 m450 s750 m450 s750 m1550 s750 m1550 s750 m1550 s750 m450 s750 m450 s750 m450 s750 m450 s750 m450 s750 m450 s750 m450 s750 m1550 s750 m450 s750 m450 s750 m450 s750 m450 s750 m450 s750 m1550 s750 m1550 s750 m450 s750 m1550 s750 m1550 s750 m1550 s750 m1550 s750 m1550 s750
    Sende Codes
    IR Codes empfangen
     m4350 s750 m1550 s750 m1550 s750 m1550 s750 m450 s750 m450 s750 m450 s750 m450 s750 m450 s750 m1550 s750 m1550 s750 m1550 s750 m450 s750 m450 s750 m450 s750 m450 s750 m450 s750 m450 s750 m450 s750 m1550 s750 m450 s750 m450 s750 m450 s750 m450 s750 m450 s750 m1550 s750 m1550 s750 m450 s750 m1550 s750 m1550 s750 m1550 s750 m1550 s750 m1550 s750
    Sende Codes

    und der Serial Monitor des Servers:

    Code
    GET /435075015507501550750155075045075045075045075045075045075015507501550750155075045075045075045075045075045075045075045075015507504507504507504507504507504507501550750155075045075015507501550750155
    0
    Sent IR signals
    GET /435075015507001600750155075045075045075045075045075045075015507501550750155075045075045075045075045075045075045075045075015507504507504507504507004507004507001600750155075045075015507501550750155
    0
    Sent IR signals
    GET /435075015507501550750155075045075045075045075045075045075015507501550750155075045075045075045070045075045075045075045075015507504507504507504507504507504507501550750155075045075015507501550750155
    0
    Sent IR signals

    Die drecks IR Led am Server sendet aber definitiv keine Signale. Weder tut sich was am TV , noch erkenne ich eine Aktivität der LED via Handycam (die Led reagiert wie gesagt beim Demo Sketch, daher ist die Hardware OK).Da der serielle Monitor aber was ausgibt und auch die interne Led blinkt (Server Code Line 95 bis 98) verstehe ich nicht warum die LED nicht reagiert ?( ?( ?( .
    Ich nehme daher an, dass der Fehler irgendwo im Sketch liegt...

    Einmal editiert, zuletzt von Momo90 (7. Februar 2018 um 09:00) aus folgendem Grund: SSID und PW unkenntlich gemacht

  • Also wenn ich den Code richtig deute dann ist die
    0 = der Wert der counter variable und
    045075045075015507504507504507504507004507004507001600750155075045075015507501550750155 = readString

    Wenn ich mir nun anschaue, dass laut Code die variable counter nur erhöht werden soll wenn ein & in readString gefunden wurde,
    dann macht das für mich Sinn das counter immer noch 0 ist, da im readString kein & vorhanden ist, oder?


    Cheers
    Claudia

  • Ich habe auch den Verdacht, dass das Problem beim counter liegt. Ich glaube nicht dass der null sein sollte. Aber um ehrlich zu sein habe ich Zeile 66 bis 94 des Sketches nicht so ganz verstanden.
    Auch ein Kommentar beim original Sketch bestätigt diesen Verdacht:


    Und da der counter auf 0 ist gibt der Serial monitor auch nur readString und counter aus (Zeile 88 und 89), nicht aber rawCodes (Zeile 90 bis 94).

    Weiter bringt mich das aber auch nicht... ?(

  • Solange Du nur Nummern schickst, brauchst Du nur die Prüfung nach & kommentieren ala

    wobei die Zeile 4 mich verwirrt, ich würde erwarten das die so aussieht


    Wobei das ganze ansich, meiner Meinung nach, etwas geändert gehört. Aber erstmal kleine Änderungen und
    dann wenn es funktioniert und gewünscht ist kann man immer noch ein bisschen ändern.

    Cheers
    Claudia

  • wobei die Zeile 4 mich verwirrt,

    Jupp, weil das eher nach einer bitweisen ver-Undung aussieht, als nach einer logischen :) Mich würde nicht wundern, wenn C das bitweise erkennt und seltsame Effekte produziert.

    Außerdem kann die Arduino IDE - soweit ich gesehen habe - keine char per <> vergleichen, sondern nur int, float, double, byte, short, long.

  • Danke für Eure hinweise. Das & kann tatsächlich nicht stimmen.

    Ich versuche mal die von Claudia vorgeschlagene Lösung und berichte Euch

    @root2: müsste wegen des char vergleichs dann nicht schon beim kompilieren ein fehler ausgegeben werden?

    wenn nicht könnte eventuell das abhelfen?
    Zeile 79

    Code
    if((strcmp(d,'0') == 0) || (strcmp(d,'1') == 0) || (strcmp(d,'2') == 0) || (strcmp(d,'3') == 0) || (strcmp(d,'4') == 0) || (strcmp(d,'5') == 0) || (strcmp(d,'6') == 0) || (strcmp(d,'7') == 0) || (strcmp(d,'8') == 0) || (strcmp(d,'9') == 0))

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!