Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   654 / 848
(#) morgo válasza Lamprologus hozzászólására (») Szept 25, 2020 / 1
 
Portable verzióval, nem az operációs rendszer merevlemezén használva nem lesz hasonló problémád.
(#) usane válasza morgo hozzászólására (») Szept 25, 2020 / 1
 
Nem kell hozzá portable verzió. Csak le kell menteni a //user/documents/Arduino/libraries könyvtárat és visszamásolni. Ha zipből csomagolod is oda kell rakni. A board file-t viszont ugyanugy fel kell telepíteni az az IDE-be telepíti magát.

Javítom magam. Lehet, hogy nálam azért működött mert már fel volt telepítve 1x.
De csak ha odamásolod zipből library manager helyett akkor is működik egy lib, tehát elvileg működnie kell.
A hozzászólás módosítva: Szept 25, 2020
(#) morgo válasza usane hozzászólására (») Szept 25, 2020 /
 
Én jobban szeretem a portable változatot, azért javasoltam. Hátrányát eddig nem vettem észre, előnye meg főleg az, hogy akárhova magammal tudom vinni. A board fájlokat is mappán belülre telepíti, tehát egy rendszer újratelepítés után sem változik semmi.
(#) krauszkrisztian14 hozzászólása Szept 26, 2020 /
 
Üdv!
Adott egy esp32, ami egy oldalt hostol helyi hálózaton 80-as proton, 192.168.0.107-es ip címen. Helyi hálózaton tökéletesen működik, viszont a portforwardolás nem igazán akar működni. Service és internal portnak 80-at adtam meg, ip címnek azt a címet, amin helyi hálózaton elérem az oldalt, ip címnek pedig a "What's my IP" keresésre kidobott ipcímet adtam meg. Mit ronthattam el? (Router: TP-Link TL-WR740N)
Ezelőtt nem próbálkoztam portforwardolással, nincs benne tapasztalatom.
A segítő válaszokat előre is köszönöm!
(#) pipi válasza krauszkrisztian14 hozzászólására (») Szept 26, 2020 / 1
 
Hali!
Lehet hogy nem publikus az ipcímed, amit a szolgáltatótól kapsz, olyan mintha egy másik router mögött lennél, amin nincs konfigurálva a port forward. Hívd fel a szolgáltatód, nekem a Digi, régebben az UPC is díjmentesen átállította a kapcsolatom publikus ipcímre. Ezen kivül ha kivölről akarod elérni tudnod kell a ezt a külső ipcímedet, ami minden csatlakozás után más lehet, vagyis hiába nézed meg, mint írtad, holnap már lehet más a címed. Valamilyen dinamikus dns szolgáltatást is igénybe kellene venned, célszerűen amit a routered támogat, vagy futtatsz egy klienst pc-n vagy valamelyik hálózati eszközödön ami frissíti az ipcímed.
(#) krauszkrisztian14 válasza pipi hozzászólására (») Szept 26, 2020 /
 
Köszönöm!
Holnap megtudakolom a szolgáltatónál, mi a helyzet.
(#) pipi válasza krauszkrisztian14 hozzászólására (») Szept 26, 2020 /
 
Lehet kérni fix ipcímet is, de ahhoz vastagabb pénztárca kell
(#) proba válasza pipi hozzászólására (») Szept 27, 2020 /
 
Nálunk vékonyabb is elég ( azt hiszem ingyenes) , ha csak domain nevet kérek.
(#) usane válasza proba hozzászólására (») Szept 28, 2020 /
 
Azt meg hogy? DDNS szolgáltatást ad az internet szolgáltató? Nem tudtam, hogy ilyen is van. De ha DDNS minek érte fizetni? Van ingyenes is.
(#) Ivan93 válasza krauszkrisztian14 hozzászólására (») Szept 28, 2020 /
 
Szia,
Nekem is volt hasonló problémám, 2 TP-Link routerrel is. Mindkettőnél máshogy oldottam meg. A probléma az, hogy a külső 80-as porton figyel a router remote management szolgáltatása, akkor is, ha nincs bekapcsolva. Ha a router engedi, akkor a remote management portot állítsd át másra. Ha nem engedi, akkor a forward beállításoknál kell másik service portot megadnod. Ez esetben így írd be az url-t a böngészőben: külső_ip_cím:service_port
A hozzászólás módosítva: Szept 28, 2020
(#) krauszkrisztian14 válasza Ivan93 hozzászólására (») Szept 28, 2020 /
 
Szia
Átállítottam a remote management portot 79-re, de most a router ip címét beírva már meg se nyitja az oldalát
A hozzászólás módosítva: Szept 28, 2020
(#) Bakman válasza krauszkrisztian14 hozzászólására (») Szept 28, 2020 /
 
Pl.: http://192.168.0.0:79

Az IP cím után meg kell adni a portot is, ha nem 80.
(#) proba válasza usane hozzászólására (») Szept 28, 2020 /
 
Az ingyenes DDNS szolgáltatók a szolgáltatóm routerén fentakadnak ( annak a WAN oldali IP címét adják vissza) . Nekem egy belső IP címet ad a szolgáltató,(10.xxx.xxx.xxx) azt kívülről senki nem éri el. ( ugyan úgy ahogyan a saját routerem mögé sem lát be senki, akit nem engedek be.) A domain néven viszont már elérhetővé teszi a routeremet a net felől, anélkül, hogy neki plusz költséget okozna a külső IP-cím fentartása.
(#) krauszkrisztian14 válasza Bakman hozzászólására (») Szept 28, 2020 /
 
Automatikusan kitölti, mégse megy.
Mi lehet a baj?
(#) tbarath válasza proba hozzászólására (») Szept 28, 2020 /
 
Tessék?
A 10/8, 192.168/16, 172.16/12 címek privát címek, ezeket senki se éri el kívülről, domain néven keresztül se, mert az is IP címre fordul le. Minden normális tűzfal eldobja a link local és a private címeket, és a CGNAT címeket is kívülről.
Ez v4 esetén biztosan igaz. Ha eléred a router-ed kívülről, akkor vagy a szolgáltatód ad neked egy web felületet a router-edhez, amin keresztül tudod konfigolni, vagy v6-on keresztül megy ez a forgalom, ami megint más kávéház...
(#) tbarath válasza krauszkrisztian14 hozzászólására (») Szept 28, 2020 /
 
Nem tudom, de hogy az arduino témához semmi köze, az biztos.
(#) Skori válasza tbarath hozzászólására (») Szept 29, 2020 /
 
Ez ahhoz hasonló amikor egyetlen IP címen több különböző webszerver fut, különböző domain nevek alatt.

Amikor a szolgáltatóhoz befut egy kérés, akkor a böngésző nem csak egyszerűen az adott IP 80-as portját kéri le, hanem a kérésben benne van a domain név is. Ez alapján a domain név alapján a szolgáltató (visszafelé NAT-olva) továbbítja a kérést a megfelelő user belső IP címe felé (van erre az "elő-szerverre" egy szakkifejezés, ami most nem ugrik be)... Így egyetlen IPv4 címet használva több különböző domain nevű weboldal kiszolgálható.
A hozzászólás módosítva: Szept 29, 2020
(#) asch válasza Skori hozzászólására (») Szept 30, 2020 / 1
 
Reverse proxy-nak hívják az "elő-szervert", ami le tudja válogatni, hogy melyik szervernek kell passzolni a kérést domain név alapján. Web szerverrel adott funkcionalitás ez, az ismert webszerverek tudják ezt, nálam most nginx-en fut ez a lépés.

Hogy hogy működik mindez írok egy kis összefoglalót, szerintem hasznos határterületi ismeret Arduinohoz:

* A szolgáltatók alapvetően háromféle kapcsolatot adhatnak:
** Saját Fix IP cím: ez erősen zsebbenyúlós, ebben az esetben minden portra mindent be lehet állítani.
** Saját IP cím (úgy értve, hogy az IP azonosítja a nálunk lévő dobozt), de időnként változik: az IP címek fogyása miatt ezt most már kérni kell, de most még ingyenesen adják (az én szolgáltatómnál). Itt is minden portot tetszőlegesen irányíthatunk, viszont meg kell oldani, hogy a domain név-> IP hozzárendelés frissüljön, amikor új címet kapunk. Illetve kellemetlen velejárója, hogy a DNS-nek van egy időzített természete, váltáskor egy rövid ideig beragadhat az előző IP cím: érdemes a DNS timeout-ot a lehető legkisebbre venni. A domain név szolgáltatómnál van olyan, hogy programból lehet frissíteni az IP-t, illetve a dyndns szolgáltatók eleve erre valók.
** NAT-olt hálózat: nincs saját publikus IP-nk, hanem egyetlen IP mögött van egy csomó felhasználó. Ilyenkor port forwardot egyáltalán nem lehet beállítani, azaz lényegében csak kifelé menő TCP kéréseket tud a hálózat kezelni. Technikailag persze be lehet port forwardingot állítani, de a standard portokra (http:80 https:443) nem fognak, mert egy IP:port párost csak egyetlen gépre lehet átirányítani.

NAT-olt esetben működik a reverse proxy: ez nem sima port forwarding, hanem olyan, hogy "belenéz" a TCP üzenet elejébe, aminek http-nek kell lenni, és abban benne van, hogy melyik szervernek (domain név szerint) szól az üzenet, és eszerint találja meg, hogy melyik szervernek kell továbbküldeni a kérést. További érdekesség, hogy https-sel is működik ez, mert https-en majdnem minden titkosított, de a domain nevet még titkosítatlanul is átküldi a kliens éppen ezért, hogy lehessen reverse proxy-zni a titkosított https-t is. Ráadásul a titkosítás része, hogy a szerver azonosítja magát, hogy a domain névnek ő a valódi kiszolgálója, és ezt is a domain név alapján teszi. Tehát nem csak reverse proxyhoz, hanem ahhoz is szükséges ez, hogy egy szerver több domain nevet is kiszolgálhasson https protokollon - különben nem tudná, hogy melyik SSL kulccsal kell azonosítania magát a kliens felé.

Ez nekem is új volt, hogy van szolgáltató aki NAT mellé ad reverse proxy szolgáltatást. Ilyen esetben a publikus IP cím még nem azonosítja a gépedet, csak a domain névvel együtt (amit a böngésző a DNS lekérésre használ, ami visszaadja a szolgáltató NAT kilépőpontját, majd utána a http(s) csomagban is elküldi erre a címre, és ott a szolgáltató eszerint ágaztatja el, hogy hova kell továbbküldeni a kérést). Ezért ha az IP címet írod be a böngészőbe, akkor nem fog működni, csak akkor ha a rendes címmel nyitod meg az oldalt.

Reverse Proxy-t azért érdemes sajátot is üzemeltetni, mert így be lehet állítani olyat, hogy egyetlen belépési pontról több szerver tartalmát is kiszolgálhatod. Illetve a reverse proxy szerver csinálhatja a titkosítást, sőt akár login előtétet is lehet tenni rá. A belső hálózatodon lesz csak titkosítatlan a forgalom, így már valóban báran ki lehet tenni publikus netre az Arduino-t. A Reverse Proxy futhat egy mini gépen - pl Raspberry PI, stb, vagy akár a roueren is, ha hackelhető routered van kellő tárhellyel és RAM-mal.

Nálam így van beállítva:
https://domainnevem.com/egyik/ -> kérések az egyik belső http szerver felé mennek
https://domainnevem.com/masik/ -> kérések a másik belső http szerver felé mennek
Így egyetlen domain név (bár az aldomain ingyenes volna: valami.domainnevem.com) és SSL certificate (bár LetsEncrypt-nél ez teljesen ingyenes) kell csak, és többféle tartalmat ki tud szolgálni. Leginkább az a jó benne, hogy a domain+SSL cert+login részt egyszer kellett csak megcsinálni.
(#) tbarath válasza Skori hozzászólására (») Szept 30, 2020 /
 
Jogos, a reverse proxy nem jutott eszembe. Nem is értem miért, mert én is csináltam már ilyet
(#) Moderátor hozzászólása Okt 1, 2020
 
Tisztelt Kollégák!
A beszélgetés olyan irányt vett, ami nem igazán tartozik az Arduino témakörébe, habár a kiindulási pont valóban e köré épült. Mivel azonban a HE deklaráltan nem informatikai fórum, ezért kérjük, hogy ezt a beszélgetést valamely szakirányú oldalon szíveskedjetek folytatni!
Megértéseteket köszönjük.
(#) sdrlab hozzászólása Okt 1, 2020 /
 
Jól látom, hogy Arduino alatt nem lehet(vagy legalábbis nem egyértelmű) az EEPROM-ba fordítási időben adatot elhelyezni?
(#) sargarigo válasza sdrlab hozzászólására (») Okt 1, 2020 /
 
Sose csináltam még, de eléggé elképzelhetetlennek tűnik. Legrosszabb esetben írsz egy Móritzka prógramot, ami beírja az eepromot neked, aztán jöhet a másik program ami meg használja. Ha sehogy másként nem megy, így biztosan fog
(#) cua válasza sdrlab hozzászólására (») Okt 1, 2020 /
 
Forditasi idoben? Vagy forditas utan feltoltes kozben?
En mostansag az avra forditot hasznaltam es az avr-objcopy-val allitom elo az eep.hex file-t, ami az eepromba irando adatokat tartalmazza es fel is tolti a programmal egyutt.
Feltetelezem az arduino kornyezet is tudja ezt csipobol.
A hozzászólás módosítva: Okt 1, 2020
(#) sdrlab válasza sargarigo hozzászólására (») Okt 1, 2020 /
 
Igen, jelenleg hasonló módon egy fix címen figyeli, üres e még az EEPROM, s ha igen, induláskor feltölti az alapértékekkel azt, majd beállítja a fix címet foglalttá. Ez így működik, de nem túl elegáns...
(#) sdrlab válasza cua hozzászólására (») Okt 1, 2020 /
 
Fordításit írtam ) Nem szeretnék mókolgatni hasonló módon! Talán itt is menne, de ez így túl macerás, és végképp nem elegáns megoldás.
Normális fejlesztő környezetekben ezt különösebb probléma nélkül megadható deklaráláskor, hogy hová szeretném, hogy kerüljön az adat(hely, cím)..., gondoltam talán itt is van valami hivatalos lehetőség erre...
(#) Skori válasza sdrlab hozzászólására (») Okt 1, 2020 /
 
Szerintem csak a flash-ba tud beírni ilyen módon:
const dataType variableName[] PROGMEM = {data0, data1, data3…​};
const dataType variableName[] PROGMEM = {}; // use this form
const PROGMEM dataType variableName[] = {}; // or this one
const dataType PROGMEM variableName[] = {}; // not this one

dataType: Allowed data types: any variable type.
variableName: the name for your array of data.

Ez sem túl elegáns, de innen is másolható az EEPROM-ba az alapértelmezett adat, és így legalább nem foglal el az SRAM-ból területet erre a célra.
(#) sargarigo válasza sdrlab hozzászólására (») Okt 1, 2020 /
 
Akkor próbáld meg így:
  1. // Use of EEMEM
  2. // Arduino IDE 1.5.8.
  3. // Uno board
  4. //
  5. // A EEMEM structure or EEMEM variable is not located somewhere.
  6. // The compiler uses it only to calculate offsets.
  7. // When more EEMEM variables are used, the order is defined
  8. // by the compiler.
  9. // With a new compiler, that order in EEPROM might change.
  10.  
  11. // a definition of the data in EEPROM
  12. struct myEEdata_struct {
  13.   int16_t myint;
  14.   uint16_t myword;
  15.   int32_t mylong;
  16.   char myText[10];
  17. };
  18.  
  19. // Tell the compiler that the data is in EEPROM
  20. // It is not possible to set initial values.
  21. // This struct is only used for offset in EEPROM.
  22. myEEdata_struct EEMEM myEEdata;
  23.  
  24. // Another EEMEM variable.
  25. uint32_t EEMEM myEEsec;
  26.  
  27. // Global variable to keep track of total time.
  28. unsigned long totalSec;
  29.  
  30. void setup() {
  31.   Serial.begin(9600);
  32.   Serial.println(F("\n---------"));
  33.   Serial.println(F("Start"));
  34.  
  35.   // write it
  36.   // The function wants a pointer to an unsigned integer, so a cast is needed.
  37.   eeprom_write_word( (uint16_t *) &myEEdata.myint, 15);
  38.  
  39.   // read it
  40.   uint16_t i = eeprom_read_word( (uint16_t *) &myEEdata.myint);
  41.   Serial.print(F("myEEdata.myint="));
  42.   Serial.println(i);
  43.  
  44.   // Reset the time, uncomment it and run it once.
  45.   // eeprom_write_dword(&myEEsec, 0UL);
  46.  
  47.   // Read value of the last time
  48.   totalSec = eeprom_read_dword(&myEEsec);
  49. }
  50.  
  51. void loop() {
  52.   // use the variable to keep track of time.
  53.   totalSec++;
  54.   Serial.print(F("time="));
  55.   Serial.println(totalSec);
  56.  
  57.   // Remember the current time by storing it in EEPROM
  58.   eeprom_write_dword(&myEEsec, totalSec);
  59.  
  60.   // do loop once a second
  61.   delay(1000);
  62. }
(#) vargham válasza sdrlab hozzászólására (») Okt 1, 2020 /
 
Használj AVR programozó hardvert. Az Arduino bootloader nem támogatja az EEPROM írását.
(#) sdrlab hozzászólása Okt 1, 2020 /
 
Skori:
Ez ismert megoldás, a flash memóriába való tárolásra.

sargarigo:
Ez nem nyújt semmivel sem többet, azon kívül, hogy a címeket nem neked kell kezelned!

2015-ös állapot szerint a bootloaderje nem támogatja az EEPROM-ba való írást, ezért nem tölthető fel fordítási időben. Feltehetően ez azóta sem változott meg... :/
(#) sdrlab válasza vargham hozzászólására (») Okt 1, 2020 /
 
Igen, én is erre jutottam! Úgy működne, nyilván..., de akkor az Arduino kényelmét veszíteném el, részben...

Marad az eddigi megoldás, amit már leírtam.
Következő: »»   654 / 848
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