ESP8266 als Brücke ins wlan mit AT gedöns

Alle Projekte hier herein, egal ob mit einem Atmel, Pic, oder einen anderen µC realisiert
Benutzeravatar
PIC18F2550
Beiträge: 2846
Registriert: Fr 30. Sep 2011, 13:08

Re: ESP8266 als Brücke ins wlan mit AT gedöns

Beitrag von PIC18F2550 »

Es tut sich was im Getriebe.
Dateianhänge
Dämliches Bild kann es auf Smartpatsche nicht drehen.
Dämliches Bild kann es auf Smartpatsche nicht drehen.
20181120_205528.jpg
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
PIC18F2550
Beiträge: 2846
Registriert: Fr 30. Sep 2011, 13:08

Re: ESP8266 als Brücke ins wlan mit AT gedöns

Beitrag von PIC18F2550 »

ESP on WiFi Logglist.

Zur Zeit merke ich das die Stromaufnahme Bei AT-RES so hoch ist das die 3,3V unter die BOR Schwelle des Props kommt und der ein Neustart durchführt.
Im VGA Bild konnte ich schon vorher etwas dunklere Streifen beim AT-RES erkennen.

Mal sehen Anderes Netzteil? oder dicker Elko!

Softwaremäßig muss ich noch die obere Menüleiste ändern.
Die Aktive Schaltfläche der Maus ist von 1 Feld davor bis 1 Feld danach.
Warum auch immer das der programmierer gemacht hat es muss geändert werden!
Was für eine Platzverschwendung.
Dateianhänge
20181122_231249.jpg
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
PIC18F2550
Beiträge: 2846
Registriert: Fr 30. Sep 2011, 13:08

Re: ESP8266 als Brücke ins wlan mit AT gedöns

Beitrag von PIC18F2550 »

Die Verschwender wurden gefunden in MenuItem.spin

1.
Aus

Code: Alles auswählen

PUB Init( pRow, pCol, pTextPtr, pVgaPtr, pVgaWidth ) | strIdx

  varVgaCols    := pVgaWidth
  varRow        := pRow
  varCol        := pCol
  varScreenPtr  := pVgaPtr
  varStatus     := 0  
  varWidth  := strsize( pTextPtr ) + 2
  varCol2   := varCol + varWidth - 1
    
  varTextN[0] := 32
  bytemove( @varTextN[1], pTextPtr, varWidth - 2 ) 'copy menu item text string
  varTextN[varWidth - 1] := 32
  varTextN[varWidth] := 0
  strIdx := 0
  repeat varWidth
    varTextI[strIdx] := varTextN[strIdx]+128    'invert the string
    strIdx++    
  varTextI[strIdx] := 0
 
  varVgaPos := varRow * varVgaCols + varCol     'now draw the menu item                                   
  bytemove( @byte[varScreenPtr][varVgaPos], @varTextI, varWidth )
wird

Code: Alles auswählen

VAR
  word varGdx         'GUI control variable
  long varScreenPtr   'screen buffer pointer
  long varVgaPos      'starting position of the menu item
  byte varTextN[16]   'normal text, 15 chars MAX, with room for terminating Null and bracketing spaces
  byte varTextI[16]   'inverted text, 15 chars MAX, with room for terminating Null and bracketing spaces
  byte varRow         'top row location
  byte varCol         'left col location
  byte varCol2        'right col location
  byte varWidth       'width of text
  byte varStatus      '0=normal else user defined value
  byte varVgaCols     'width of screen in columns
  

PUB Init( pRow, pCol, pTextPtr, pVgaPtr, pVgaWidth ) | strIdx

  varVgaCols    := pVgaWidth
  varRow        := pRow
  varCol        := pCol
  varScreenPtr  := pVgaPtr
  varStatus     := 0  
  varWidth  := strsize( pTextPtr )
  varCol2   := varCol + varWidth
    
  varTextN[0] := 32
  bytemove( @varTextN[0], pTextPtr, varWidth ) 'copy menu item text string
  varTextN[varWidth] := 0
  strIdx := 0
  repeat varWidth
    varTextI[strIdx] := varTextN[strIdx]+128    'invert the string
    strIdx++    
  varTextI[strIdx] := 0
 
  varVgaPos := varRow * varVgaCols + varCol     'now draw the menu item                                   
  bytemove( @byte[varScreenPtr][varVgaPos], @varTextI, varWidth )
  
2.
aus

Code: Alles auswählen

PUB SetText( pPtr ) | strIdx

  bytefill( @varTextN[1], 32, varWidth - 2 )    'clear it first
  bytemove( @varTextN[1], pPtr, strsize(pPtr) ) 'copy menu item text string
  strIdx := 0
  repeat varWidth
    varTextI[strIdx] := varTextN[strIdx]+128    'invert the string
    strIdx++ 
  bytemove( @byte[varScreenPtr][varVgaPos], varTextI, varWidth )

wird

Code: Alles auswählen

PUB SetText( pPtr ) | strIdx

  bytefill( @varTextN[0], 32, varWidth )    'clear it first
  bytemove( @varTextN[0], pPtr, strsize(pPtr) ) 'copy menu item text string
  strIdx := 0
  repeat varWidth
    varTextI[strIdx] := varTextN[strIdx]+128    'invert the string
    strIdx++ 
  bytemove( @byte[varScreenPtr][varVgaPos], varTextI, varWidth )

So jetzt brauche ich noch etwas Zeit um das zu Testen. :LACHEN
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
PIC18F2550
Beiträge: 2846
Registriert: Fr 30. Sep 2011, 13:08

Re: ESP8266 als Brücke ins wlan mit AT gedöns

Beitrag von PIC18F2550 »

Einmal zu mir bitte.
Dateianhänge
20181204_235723.jpg
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
PIC18F2550
Beiträge: 2846
Registriert: Fr 30. Sep 2011, 13:08

Re: ESP8266 als Brücke ins wlan mit AT gedöns

Beitrag von PIC18F2550 »

Da beschleicht mich ein seltsame Gedanken .....

- Boot über WLAN
- Programme über das WLAN von einen Server laden
- .....

Dateien von einen HTTP Server zu laden ist einfacher als von einem FTP. :)
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
PIC18F2550
Beiträge: 2846
Registriert: Fr 30. Sep 2011, 13:08

Re: ESP8266 als Brücke ins wlan mit AT gedöns

Beitrag von PIC18F2550 »

Ein bisschen auf dem Server rum getippt

Code: Alles auswählen

<?php
$ipaddress = $_SERVER['REMOTE_ADDR'];
echo $ipaddress ;
?>
und dann noch etwas BST gefüttert.

Mit dem Ergebnis das ich an die "öffentliche" IP heran komme.
Da muss ich keinen dynDNS auf meinen Router einladen.
Natürlich gibt es genug Seiten die einen die eigene öffendliche IP verraten aber wenn Die Ihre Seite ändern muss auch jedesmal das programm abgeändert werden.
Was im php-Skript noch fehlt ist eine Überprüfung das nicht jeder eine Antwort bekommt. "Währe bestimmt besser."

Als nächstes müsste ich noch die Zeit abfragen.
Mal sehen ob das auch klappt.
Dateianhänge
20181205_232836.jpg
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
PIC18F2550
Beiträge: 2846
Registriert: Fr 30. Sep 2011, 13:08

Re: ESP8266 als Brücke ins wlan mit AT gedöns

Beitrag von PIC18F2550 »

Code: Alles auswählen

<?php
error_reporting(E_ALL ^ E_NOTICE);
ini_set("display_errors", 1);
date_default_timezone_set("America/Argentina/Buenos_Aires");
function query_time_server ($timeserver, $socket)
{
    $fp = fsockopen($timeserver,$socket,$err,$errstr,5);
        # parameters: server, socket, error code, error text, timeout
    if($fp)
    {
        fputs($fp, "\n");
        $timevalue = fread($fp, 49);
        fclose($fp); # close the connection
    }
    else
    {
        $timevalue = " ";
    }
    $ret = array();
    $ret[] = $timevalue;
    $ret[] = $err;     # error code
    $ret[] = $errstr;  # error text
    return($ret);
} # function query_time_server
$timeserver = "ntp.pads.ufrj.br";
$timercvd = query_time_server($timeserver, 37);
//if no error from query_time_server
if(!$timercvd[1])
{
    $timevalue = bin2hex($timercvd[0]);
    $timevalue = abs(HexDec('7fffffff') - HexDec($timevalue) - HexDec('7fffffff'));
    $tmestamp = $timevalue - 2208988800; # convert to UNIX epoch time stamp
    $datum = date("Y-m-d (D) H:i:s",$tmestamp - date("Z",$tmestamp)); /* incl time zone offset */
    $doy = (date("z",$tmestamp)+1);
    echo "Time check from time server ",$timeserver," : [<font color=\"red\">",$timevalue,"</font>]";
    echo " (seconds since 1900-01-01 00:00.00).<br>\n";
    echo "The current date and universal time is ",$datum," UTC. ";
    echo "It is day ",$doy," of this year.<br>\n";
    echo "The unix epoch time stamp is $tmestamp.<br>\n";
    echo date("d/m/Y H:i:s", $tmestamp);
}
else
{
    echo "Unfortunately, the time server $timeserver could not be reached at this time. ";
    echo "$timercvd[1] $timercvd[2].<br>\n";
}
?>
Mal sehen wie ich das verSPINne. :)

date_default_timezone_set("America/Argentina/Buenos_Aires"); ==>> in =>> date_default_timezone_set("Europa/Germany/Berlin");

$timeserver = "ntp.pads.ufrj.br"; ==>> in =>> $timeserver = "server 0.de.pool.ntp.org";

Port 37 bei TCIP?
Normalerweise 123 und UTP
Schaun wir mal ob das so geht.

Code: Alles auswählen

query_time_server($timeserver, 37);


Gesendet wird anscheinend nur ein NL

Code: Alles auswählen

fputs($fp, "\n");
Empfangen werden dagegen 49 Zeichen

Code: Alles auswählen

fread($fp, 49);

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

Zum Test auf den Server erst mal weiter im php als SNTP aber mein ESP.
So möchte ich erst einmal sehen was alles an einen echten SNTP Server gesendet wird.

Code: Alles auswählen

<?php
error_reporting(E_ALL ^ E_NOTICE);
ini_set("display_errors", 1);
date_default_timezone_set("America/Argentina/Buenos_Aires");
function query_time_server ($timeserver, $socket)
{
    $fp = fsockopen($timeserver,$socket,$err,$errstr,5);
        # parameters: server, socket, error code, error text, timeout
    if($fp)
    {
        fputs($fp, "\n");
        $timevalue = fread($fp, 49);
        fclose($fp); # close the connection
    }
    else
    {
        $timevalue = " ";
    }
    $ret = array();
    $ret[] = $timevalue;
    $ret[] = $err;     # error code
    $ret[] = $errstr;  # error text
    return($ret);
} # function query_time_server
$timeserver = "192.168.1.102";
$timercvd = query_time_server($timeserver, 37);
//if no error from query_time_server
if(!$timercvd[1])
{
    $timevalue = bin2hex($timercvd[0]);
    $timevalue = abs(HexDec('7fffffff') - HexDec($timevalue) - HexDec('7fffffff'));
    $tmestamp = $timevalue - 2208988800; # convert to UNIX epoch time stamp
    $datum = date("Y-m-d (D) H:i:s",$tmestamp - date("Z",$tmestamp)); /* incl time zone offset */
    $doy = (date("z",$tmestamp)+1);
//    echo "Time check from time server ",$timeserver," : [<font color=\"red\">",$timevalue,"</font>]";
//    echo " (seconds since 1900-01-01 00:00.00).<br>\n";
//    echo "The current date and universal time is ",$datum," UTC. ";
//    echo "It is day ",$doy," of this year.<br>\n";
//    echo "The unix epoch time stamp is $tmestamp.<br>\n";
//    echo date("d/m/Y H:i:s", $tmestamp);
}
else
{
    echo "Unfortunately, the time server $timeserver could not be reached at this time. ";
    echo "$timercvd[1] $timercvd[2].<br>\n";
}
?>
-------------------------------------------------------------------------------------------------------------

auch noch was zum Testen

port 13 :)

PHP-Code:

Code: Alles auswählen

$array = query_time_server('ntps1-1.cs.tu-berlin.de',13);
echo '<pre>';
print_r($array);
echo '</pre>'; 
output:

Code: Alles auswählen

Array
(
    [0] => Fri Sep  5 03:07:16 2003

    [1] => 0
    [2] => 
)
ptbtime1.ptb.de spuckt es uebrigens in der form aus:

05 SEP 2003 03:07:16 METDST
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
PIC18F2550
Beiträge: 2846
Registriert: Fr 30. Sep 2011, 13:08

Re: ESP8266 als Brücke ins wlan mit AT gedöns

Beitrag von PIC18F2550 »

Gedankenblitz :

Da alle Eingehenden datenströme und Systemmeldungen einzig über das Nadelöhr RX-Pin eingeflogen kommen muss ich einen DEMUX mir häkeln.

Alle Zeichen werden dabei nach der zeichenfolge "+IPD," Byteweise durchsucht

Wird die Zeichenfolge gefunden wird die ID ermittelt und die Daten in einen extra Puffer zu 2048 Byte geladen.

+IPD,id,len:data <= werde ich erstmal nicht unterstützen wegen extra speicherbedarf 4x2048 Byte =8192 Byte
+IPD,len:data

Code: Alles auswählen

VAR
' Antwort auf Kommandos
  word  ComIdx[1]        ' 0 = Leer >0 = Datengröße in Byte
  byte  ComBuf[2048]   ' Puffer
' Empfangsdaten
  word  BinIdx[1]        ' 0 = Leer >0 = Datengröße in Byte
  byte  BinBuf[2048]   ' Puffer
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
PIC18F2550
Beiträge: 2846
Registriert: Fr 30. Sep 2011, 13:08

Re: ESP8266 als Brücke ins wlan mit AT gedöns

Beitrag von PIC18F2550 »

SNTP will nicht.
Warum auch immer.
Selbst die AT-funktion will nicht.
Da muss ich erst ein paar Kaffee kippen damit ich das verstehe.
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
PIC18F2550
Beiträge: 2846
Registriert: Fr 30. Sep 2011, 13:08

Re: ESP8266 als Brücke ins wlan mit AT gedöns

Beitrag von PIC18F2550 »

Verschwender eliminiert und das Programm läuft noch. juhu :D
Dateianhänge
20181207_011038.jpg
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Antworten