Fórum témák

» Több friss téma
Lapozás: OK   139 / 139
(#) kameleon2 válasza TavIR-AVR hozzászólására (») Júl 28, 2025 /
 
Milyen gyári kódra gondolsz? Van erre minta? Ott hasal el, amikor le kellene tölteni Error 301, Error 404, vagy Error-1 a válasz. Nekem úgy tűnik - el sem jut oda, hogy lehessen bárhová letölteni. Ha van valakinek olyan mintakód részlete, ami segíthet és működik - érdekelne.
A hozzászólás módosítva: Júl 28, 2025
(#) tki válasza kameleon2 hozzászólására (») Júl 29, 2025 /
 
Ennyire szófukar leírásokkal nehéz mit kezdeni - először neked kell dolgoznod, hogy egyértelmű legyen, mi a helyzet és mit akarsz, de nagyjából el tudom képzelni: kliensként el szeretnél érni resource-okat a firmware-ből az Interneten nyilván egy kicsit módosított programkóddal, amibe tesztfüggvények kerültek vagy a gyári kódot teszteled, és mindez nem úgy működik, ahogy szeretnéd.

A 404-es valóban azt jelenti, hogy nem érte el az eszköz az adott oldalt, de a TLS-nek ehhez még nincs köze; az adott oldal vagy fájl vagy akármilyen erőforrás ebben az esetben tényleg nem található, amit el szeretnél érni.

A 301-es viszont olyan értelemben nem hibaüzenet, hogy a szerver tudja, hol az adott erőforrás, csak egy átirányítás szükséges hozzá, mert nem a kért címen van. Ez azt jelenti, hogy ha ezt nem tette meg "magától" a meghívott függvény, akkor a 301-es válaszban kapott URL-lel neked kell egy új kérést csinálnod, és akkor már megkapod a kívánt erőforrást (fájlt, akármit). Ez akár biztatónak is mondható.

HTTP 1-es hiba nem létezik, az az adott szoftvertől jövő valamilyen saját hibaüzenet lehet, vagy pedig HTTP 1xx, három számjegyű üzenet volt - bár ez sem valószínű, mert a 100-asok folyamatban levő kérések státuszai, és szerintem egy "normál" lekéréssel, a szokásos kliens oldali függvényekkel olyat nem kaphatsz. De nem vagyok biztos benne, eddig csak szervert írtam ESP-re. : -) VIszont ha az alap fejlesztőrendszer függvénye, API-ja van használva a lekéréshez, akkor ezt a doksiban könnyű megtalálni (hogy milyen visszatérési értékei lehetnek az adott függvénynek).
A hozzászólás módosítva: Júl 29, 2025
(#) kameleon2 válasza tki hozzászólására (») Júl 30, 2025 /
 
Nem 1-es, hanem "-1" hibaüzenetet kaptam, ami a chatgpt szerint létező hibakód.
Idézet:
„Az httpCode == -1 pont ilyen rejtett SSL/TLS kudarcot jelez”
Van egy mintakódom, ebből talán jobban látszik a szándék:
  1. #include <WiFi.h>
  2. #include <HTTPClient.h>
  3. #include <unzipLIB.h>
  4. #include <Adafruit_GFX.h>
  5. #include <Adafruit_ST7735.h>
  6. #include <SPI.h>
  7.  
  8. // ----- PINOK -----
  9. #define TFT_CS     2
  10. #define TFT_RST    5
  11. #define TFT_DC     0
  12. #define TFT_SCLK   3
  13. #define TFT_MOSI   4
  14. #define EAR_PIN    6
  15.  
  16. // ----- WIFI -----
  17. const char* ssid = "xxxxx";
  18. const char* password = "yyyyy";
  19.  
  20. // ----- HARDVER -----
  21. SPIClass spi(FSPI);
  22. Adafruit_ST7735 tft = Adafruit_ST7735(&spi, TFT_CS, TFT_DC, TFT_RST);
  23.  
  24. // ----- AUDIO -----
  25. void playBlock(uint8_t* data, int len) {
  26.   for (int i = 0; i < len; i++) {
  27.     uint8_t b = data[i];
  28.     for (int j = 0; j < 8; j++) {
  29.       digitalWrite(EAR_PIN, (b & 0x80) ? HIGH : LOW);
  30.       delayMicroseconds(300);
  31.       b <<= 1;
  32.     }
  33.   }
  34.   digitalWrite(EAR_PIN, LOW);
  35.   delay(10);
  36. }
  37.  
  38. // ----- UNZIP + PLAY -----
  39. bool unzipAndPlay(uint8_t* zipBuf, int zipLen) {
  40.   UNZIP zip;
  41.   if (zip.openZIP(zipBuf, zipLen) != 0) return false;
  42.   if (zip.gotoFirstFile() != 0) return false;
  43.   if (zip.openCurrentFile() != 0) return false;
  44.  
  45.   const int MAX_LEN = 49152;
  46.   uint8_t* data = (uint8_t*)malloc(MAX_LEN);
  47.   if (!data) return false;
  48.  
  49.   int total = 0;
  50.   while (total < MAX_LEN) {
  51.     int r = zip.readCurrentFile(&data[total], MAX_LEN - total);
  52.     if (r <= 0) break;
  53.     total += r;
  54.   }
  55.   zip.closeCurrentFile();
  56.  
  57.   if (total < 3) {
  58.     free(data);
  59.     return false;
  60.   }
  61.  
  62.   if (data[0] == 0x13 && data[1] == 0x00) {
  63.     int ptr = 0;
  64.     while (ptr + 2 < total) {
  65.       uint16_t len = data[ptr] + (data[ptr + 1] << 8);
  66.       if (ptr + 2 + len > total) break;
  67.       playBlock(&data[ptr + 2], len);
  68.       ptr += 2 + len;
  69.     }
  70.   } else if (total > 10 && memcmp(data, "ZXTape!", 7) == 0) {
  71.     int ptr = 10;
  72.     while (ptr + 4 < total) {
  73.       if (data[ptr] == 0x10 && ptr + 4 <= total) {
  74.         uint16_t len = data[ptr + 2] + (data[ptr + 3] << 8);
  75.         if (ptr + 4 + len > total) break;
  76.         playBlock(&data[ptr + 4], len);
  77.         ptr += 4 + len;
  78.       } else {
  79.         break;
  80.       }
  81.     }
  82.   } else {
  83.     free(data);
  84.     return false;
  85.   }
  86.  
  87.   free(data);
  88.   return true;
  89. }
  90.  
  91. // ----- ZIP LETÖLTÉS IP + HOST fejléccel -----
  92. bool downloadAndPlayZIP() {
  93.   WiFi.begin(ssid, password);
  94.   tft.fillScreen(ST77XX_BLACK);
  95.   tft.setCursor(0, 0);
  96.   tft.println("WiFi kapcsolodas...");
  97.  
  98.   int tries = 0;
  99.   while (WiFi.status() != WL_CONNECTED && tries++ < 20) {
  100.     delay(500);
  101.   }
  102.  
  103.   if (WiFi.status() != WL_CONNECTED) {
  104.     tft.println("WiFi HIBA!");
  105.     return false;
  106.   }
  107.  
  108.   tft.println("Csatlakozva!");
  109.   delay(500);
  110.   tft.print("IP: ");
  111.   delay(500);
  112.   tft.println(WiFi.localIP());
  113.   delay(1000);
  114.  
  115.   // LETÖLTÉS IP + Host fejléc trükkel
  116.   tft.println("Letoltes inditasa...");
  117.   HTTPClient http;
  118.   http.begin("http://77.68.76.140/pub/sinclair/games/m/ManicMiner.tzx.zip");
  119.   http.setUserAgent("SpecPitty/1.0");
  120.   http.addHeader("Host", "worldofspectrum.org");
  121.   int httpCode = http.GET();
  122.  
  123.   if (httpCode != 200) {
  124.     tft.print("HTTP hiba: ");
  125.     delay(1000);
  126.     tft.println(httpCode);
  127.     delay(2000);
  128.     return false;
  129.   }
  130.  
  131.   int len = http.getSize();
  132.   tft.print("Meret: ");
  133.   tft.println(len);
  134.   delay(1000);
  135.  
  136.   uint8_t* buf = (uint8_t*)malloc(len);
  137.   if (!buf) {
  138.     tft.println("Memoria HIBA!");
  139.     return false;
  140.   }
  141.  
  142.   WiFiClient* stream = http.getStreamPtr();
  143.   int pos = 0;
  144.   tft.println("Letoltes...");
  145.   while (http.connected() && pos < len) {
  146.     if (stream->available()) {
  147.       buf[pos++] = stream->read();
  148.     }
  149.   }
  150.   http.end();
  151.  
  152.   tft.fillScreen(ST77XX_BLACK);
  153.   tft.setCursor(0, 0);
  154.   tft.println("Kicsomagolas...");
  155.   bool ok = unzipAndPlay(buf, len);
  156.   free(buf);
  157.  
  158.   if (!ok) {
  159.     tft.println("Kicsomagolasi hiba!");
  160.     delay(2000);
  161.   }
  162.  
  163.   return ok;
  164. }
  165.  
  166. // ----- SETUP -----
  167. void setup() {
  168.   pinMode(EAR_PIN, OUTPUT);
  169.   digitalWrite(EAR_PIN, LOW);
  170.  
  171.   spi.begin(TFT_SCLK, -1, TFT_MOSI, TFT_CS);
  172.   tft.initR(INITR_REDTAB);
  173.   tft.setRotation(1);
  174.   tft.fillScreen(ST77XX_BLACK);
  175.   tft.setTextColor(ST77XX_GREEN);
  176.   tft.setTextSize(1);
  177.   tft.setCursor(0, 0);
  178.   tft.println("SpecPitty v0");
  179.  
  180.   bool success = downloadAndPlayZIP();
  181.   tft.fillScreen(ST77XX_BLACK);
  182.   tft.setCursor(0, 0);
  183.   if (!success) {
  184.     tft.println("Letoltes/Kicsomag. hiba!");
  185.   } else {
  186.     tft.println("Betoltes kesz!");
  187.   }
  188. }
  189.  
  190. // ----- LOOP -----
  191. void loop() {
  192.   delay(1000);
  193. }
A hozzászólás módosítva: Júl 30, 2025
(#) tki válasza kameleon2 hozzászólására (») Júl 30, 2025 /
 
Rájöttem, csak emiatt már nem akartam újra írni. Mindenesetre nem segít, mert az egy általános hibaüzenet, úgyhogy "pont ezt" nem jelenti, csak ilyen is történhet..

Mi lett azzal, amit a 301-es hibára válaszoltam, nem segített? És melyik hiba mikor jön elő? Csak ideraktad a kódot.
(#) tki válasza tki hozzászólására (») Júl 30, 2025 /
 
Mellesleg megnéztem ezt a linket, és lehet, hogy korábban volt ilyen fájl, de most biztosan nincs - miközben a favicon meg elérhető ugyanott. Https-sel is ugyanez az eredmény.

Az IP Info szerint valahol Angliában van.
A hozzászólás módosítva: Júl 30, 2025
(#) TavIR-AVR válasza pajesz66 hozzászólására (») Aug 5, 2025 /
 
ESP programvédelem – röviden

ESP8266/ESP32 esetén van lehetőség a program kiolvasásának megnehezítésére, de
nem 100%-os a védelem. Az ESP32-ben hardveresen elérhető a
Flash Encryption és Secure Boot funkció – ezzel a program titkosítva kerül a flash-be,
és csak az adott chip képes futtatni. ESP8266-nál nincs teljes hardveres titkosítás,
ott csak firmware titkosítás + OTA jelszavas frissítés használható.
A védelem bekapcsolása után a soros kiolvasás és SPI-flash dump értelmetlen lesz,
de fizikai támadás ellen nem véd.

Részletes leírás:
ESP32 Flash Encryption dokumentáció
ESP8266 Secure OTA leírás


Tipp: Olyan chipre fejlessz, ami a tokozaton belül van a flash!
(#) kameleon2 válasza tki hozzászólására (») Aug 7, 2025 /
 
Erről a linkről indultam: Eredeti link amiről PC-re lejött a fájl, de esp-re az említett hibákat kaptam.
(#) tki válasza kameleon2 hozzászólására (») Aug 7, 2025 /
 
IP-címmel hivatkozni valamire nem ugyanaz, mint domain-névvel - sok esetben nem működik, ahogy most sem. Nem próbáltad ki azt az URL-t, amit a kódba raktál vagy raktak.

Esetleg nem működnek az eszközön a DNS-lekérdezések, azért került oda IP-cím? Mindenesetre az eredeti URI-t kellene használni, amire az előbb is hivatkoztál, ez nálam is működik.
A hozzászólás módosítva: Aug 7, 2025
(#) kameleon2 válasza tki hozzászólására (») Aug 8, 2025 /
 
Leírtam... Több módon próbáltam nem csak IP címmel - ami akkor egyébként böngészőből még működött. hanem a linken szereplő https, http protokollokkal. Azaz nameserverrel és nélküle, de mindegyik alkalommal a mikrokontrolleres próbálkozásnál az említett hibákat kaptam, ami úgy tűnik a https miatt van és nincs tanúsítvány. De mivel látom a kérdést sem értik sokan, küzdök tovább, hgy egy egyszerű zipet ebben a nagy IT káoszban hogyan tudjak letölteni egy célhardverre, https protokollal, ha már az ftp-t is kinyírták.
(#) Gafly válasza kameleon2 hozzászólására (») Aug 8, 2025 /
 
Nekem az benne a furmány (mert én is nézegettem), hogy maga szerver elvileg nem (sem IP címmel, sem DNS-el) érhető el, de maga a fájl pedig letöltődik, és ránézésre teljesen ép.
Idézet:
„08/08/2025 08:43 AM <DIR> ManicMiner.tzx
08/08/2025 08:35 AM 14,220 ManicMiner.tzx.zip”

Belenézve is, bár ugye binárisról a fene mondja meg...
A hozzászólás módosítva: Aug 8, 2025
(#) tki válasza kameleon2 hozzászólására (») Aug 8, 2025 /
 
Leírtam, hogy http-vel is elérhető az oldal, tehát semmi köze a cert-ekhez.

Miután megmutattad a domain nevét, leírtam, hogy most is működik, csak nem IP-címmel.

Azt is leírtam korábban, még látatlanban, hogy 301-es átirányítás lehetséges a letöltés során, amit lehet, hogy neked kell kezelned. Ezt nem igazán érted, hogy mit jelent és nem is nézel utána.

Mindenesetre most, hogy a részletek összeálltak, be is bizonyosodott, mivel tökéletesen látszik a böngészőben, hogy mi történik letöltéskor - lásd a képet. Ez egy szokásos megoldás, mikor www-vel nyitsz meg egy weblapot és az rögtön átirányít a saját www nélküli címére.

Próbáld ki így, és működni fog: http://worldofspectrum.org//pub/sinclair/games/m/ManicMiner.tzx.zip
A hozzászólás módosítva: Aug 8, 2025
(#) tki válasza tki hozzászólására (») Aug 8, 2025 /
 
Még a dupla perjelet esetleg ki lehet venni a .org és a pub közül, bár a szerver láthatóan kezelni tudja, mindenesetre felesleges.
(#) majkimester válasza kameleon2 hozzászólására (») Aug 8, 2025 /
 
Probáltál valahogy* TCP dump-ot készíteni a forgalomról?
Wireshark-ba betöltve látni lehetne mi is folyik a vonalon.

* Anno én az ENC28j60-s fejlesztésnél egy buta hub-bal oldottam meg, hogy a PC is megkapja az összes csomagot, ami az ENC küldött és fogadott, és így tudtam rögzíteni, de manapság biztosan vannak szofisztikáltam megoldások. Pl. egy router ami támogatja a dump mentést, vagy linux alapu és ssh-n be lehet rá jelentkezni, stb.
(#) tki válasza majkimester hozzászólására (») Aug 8, 2025 /
 
Teljesen felesleges, az átirányítás a probléma és a megoldás kulcsa. Az első kérdéseiben írta, most is ott áll, hogy olyan visszatérési értéket is kapott, hogy 301, vagyis minden működik nála, ami a kommunikációt illeti.

Csak valószínűleg a www nélküli változatra nem gondolt vagy elfelejtette kipróbálni, a 301-et meg ugyanolyan hibának vette, mintha nem lehetne elérni az adott resource-ot.

Olyat mondani, hogy “kipróbáltam és nem jó”, az semmi, nem információ, csak a tévedésekhez alkalmas. A próbálkozásokat fegyelmezetten dokumentálni kell, melyik sorban milyen szöveggel milyen visszatérési érték jött, különben pillanatok alatt át lehet ugrani dolgokat. De nem írtam volna ezt, ha nem nevez értetlennek. : -)

Még egy plusz infó, ha ez az a framework, rákerestem, valamint segítség, hogy ne nekem kelljen leírni:

https://avantmaker.com/references/esp32-arduino-core-index/esp32-ht...rects/
A hozzászólás módosítva: Aug 8, 2025
(#) majkimester válasza tki hozzászólására (») Aug 8, 2025 / 1
 
a 301-hez mondjuk tényleg nem kell, a -1 -re irtam.
(#) tki válasza majkimester hozzászólására (») Aug 13, 2025 /
 
Más: kiderült, hogy az S3-asból annak idején 1.0-ás hardverváltozatút sikerült vásárolnom, kettőt is. Azokon a chip 48-as lábára volt kötve a WS2812B RGB LED, ami, ahogy később rájöttek, zavarta az SPI memóriákkal való kapcsolatot, így áttették a 38-asra.

Ezt kellett utólag megvalósítani. Szerencsére tettek a LED adatlába elé egy nulla ohmos ellenállást, persze 0402-est - ezt kiforrasztottam (visszafelé nem biztos, hogy vállalnám), és a LED-et vékony vezetékkel rákötöttem a tüskesoron megtalálható 38-as lábra.

A vezetéket nem rögzítettem - tartva a magasságot középtájt meg kellene pöttyinteni egy kis melegragasztóval -, mert úgyis külső LED lesz majd használva. Természetesen működik, nincs vele gond. : -)
A hozzászólás módosítva: Aug 13, 2025
(#) tki válasza tki hozzászólására (») Aug 13, 2025 /
 
Jut eszembe, ezek a LED-ek eleve specifikáción kívül vannak használva, ami meglepett: ez a WS2812B-mini (3,5 x 3,5 mm) elvileg 3,7 V-tól felfelé működik, az 5050-es változat pedig 3,5 V-tól. : -) A mini V2-es változata is, sőt van még egy 2020-as, még kisebb kivitelű, és az is.
A hozzászólás módosítva: Aug 13, 2025
(#) kameleon2 válasza tki hozzászólására (») Csü, 22:52 /
 
Kipróbáltam a linket. Böngészőből (firefox) lejön, a célhardver (ESP) nem tölti le. Hibát dob. Pedig kap IP-t kap netet.
(#) kameleon2 válasza tki hozzászólására (») Csü, 23:07 /
 
A link . Eredmény http hiba: 301. PC firefox meg letölti.
A hozzászólás módosítva: Csü, 23:07
(#) B0nsh44 válasza kameleon2 hozzászólására (») Pé, 4:53 /
 
Mi akadályoz abban, hogy feltöltsd egy olyan tárhelyre ezt a fájlt, ahonnan az esp -vel letudod húzni?
(#) tki válasza kameleon2 hozzászólására (») Pé, 5:56 /
 
Ha 301-es hibát kapsz, akkor írasd ki, hogy mi jön vissza a válasz fejlécében ("Location"), és azt az URL-t próbáld letölteni - az előző képen van a segítség. Vagy használd a http.setFollowRedirects()-et, ha működik.

A böngészőben is megnézheted a Network fülön, ahogy én is tettem, hogy a böngésződ végül is hol találja meg a fájlt, az sem érdektelen.
(#) lalca válasza kameleon2 hozzászólására (») Pé, 10:52 /
 
Az org és a pub között miért van 2 perjel?
(#) tki válasza lalca hozzászólására (») Pé, 11:16 /
 
Idézném magamat: "Még a dupla perjelet esetleg ki lehet venni a .org és a pub közül, bár a szerver láthatóan kezelni tudja" Vagyis az adott szerveren semmit sem változtat, hogy egy vagy kettő van ott, ki lett próbálva. Én még nem is láttam olyat, hogy ne lett volna figyelmen kívül hagyva a duplázás, bár ez mérsékelten bizonyító erejű. : -)

Nem hinném, hogy egy ekkora oldalon lenne terheléselosztás, ami miatt különböző szerverekkel esetleg másként viselkedhetne egy kérés, de még bármi kiderülhet.
Következő: »»   139 / 139
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem