Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: Einmaliges senden

Einmaliges senden 16 Jul 2017 22:07 #216

  • FBeye
  • FBeyes Avatar
  • Offline
  • New Member
  • Beiträge: 1
  • Karma: 0
Hallo, ich bin gerade neu dabei mich ein wenig mit dem esp8266 zu beschäftigen.
Ich habe mir neine Nodemcu_firmware erstellen lassen, und experimentiere damit ein wenig herum.
Aktuelles Etappenziel ist es, diesen ESP (12er) in regelmäßigen Zeitintervallen einen Wert senden zu lassen.
Hier stoße ich aktuell an 2 Probleme:
  1. In allen Beispielen zum herstellen einer Verbindung finde ich in etwa folgenden Code
    con = net.createConnection(net.TCP, 0)
    con:connect(80,"192.168.4.1")
    con:send("Test1")
    con:close()
    Das funktioniert bei mir aber nicht und das Script bricht mit der Fehlermeldung ab, das keine Verbindung besteht.
    Also habe ich einen Timer hinzugefügt
    con:connect(80,"192.168.4.1")
    tmr.alarm(2, 10000, 1, function()
     con:send("Test1")
     con:close()
    end)
    An der Gegenstelle wird der Text so auch korrekt angezeigt.
    Ist die Verzögerung normal?

  2. Da der Wert ja in größeren Abständen gesendet werden soll, wollte ich "deepsleep" verwenden.
    Wenn ich den Befehl
    node.dsleep(15000000)
    in den Timer setze, wird die Verbindung aufgebaut, aber das Telegramm nicht mehr gesendet. Der Deepsleep funktioniert aber, denn alle 15 Sekunden startet der ESP neu.

    Den Befehl außerhalb des Timers zu setzen, macht ja keinen Sinn, da der Deepsleep ja direkt nach dem ersten Durchlauf aktiviert wird. Somit kommt nicht mal eine Verbindung zustande
Ich hoffe ich habe meine Probleme verständlich geschildert und freue mich über jeden Hinweis!

FBeye
Letzte Änderung: 16 Jul 2017 22:08 von FBeye.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Einmaliges senden 11 Sep 2017 12:31 #282

  • Addi
  • Addis Avatar
  • Offline
  • New Member
  • Beiträge: 4
  • Dank erhalten: 1
  • Karma: 0
Guten Morgen :D

Soweit ich weiß sind das asynchrone Befehle.
Daher es wird nicht gewartet bis der Befehl auch tatsächlich ausgeführt wurde sondern das wird alles im Hintergrund erledigt und sofort weiter gemacht mit dem Rest des Scripts.

Beim obigen Beispiel bedeutet das, dass er noch bevor die Verbindung tatsächlich aufgebaut wurde versucht etwas zu senden.

Bei deinem 2ten Beispiel bereitest du das Senden vor gehst dann aber in den Deepsleep-Modus wo aber alles an Peripherie abgestellt wird.


Die NodeMcu Firmware ist zu einem sehr großen Teil Event-Basiert das gilt besonderes für das Wifi Zeug.
Es gibt zu den einzenlnen Befehle bestimmte Eventhandler die du für deine Zwecke implementieren musst und die vom Treiber angesprungen werden wenn entweder ein bestimmter Status erreicht wurde, oder der Befehl ausgeführt wurde.

Ich verweise hierbei auf die NodeMCU Doku zum "net" Modul:
https://nodemcu.readthedocs.io/en/master/en/modules/net/

Da sollten auch Beispiele dabei sein.
Letzte Änderung: 11 Sep 2017 12:33 von Addi.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: StefanL38