Modifications

Sauter à la navigation Sauter à la recherche
6 524 octets ajoutés ,  13 mars 2017 à 14:35
Ligne 1 : Ligne 1 :  
{{WIPY-NAV}}
 
{{WIPY-NAV}}
   −
{{traduction}}
+
== Configuration WiFi par défaut ==
 +
La [[Hack-wipy-generalite#Config_r.C3.A9seau_.28WLAN.29_par_d.C3.A9faut|configuration par défaut du WiPy est décrite ici]]
 +
 
 +
== Led Heartbeat et configuration ==
 +
La modification de configuration se fait dans le fichier {{fname|boot.py}}. Une fois configuré, vous pourrez redémarrer votre WiPy en faisant un [[Hack-wipy-boot-mode#R.C3.A9initialisation_mat.C3.A9rielle|{{fname|machine.reset()}} comme indiqué ici]].
 +
 
 +
S'il y a une erreur dans {{fname|boot.py}}, le script:
 +
* Ne pourra par être chargé (erreur de syntaxe)
 +
* Ne sera pas exécuté complètement (erreur sur une ligne)
 +
 
 +
En cas d'erreur, la LED heartbeat clignotera alors rapidement, histoire de vous prévenir que quelque-chose n'a pas fonctionné comme attendu (voyez [[Hack-wipy-generalite#La_LED_heartbeat|LED heartbeat]] pour plus de détails).
 +
 
 +
Si vous avez corrompu votre fichier {{fname|boot.py}}, vous certainement besoin d'utiliser
 +
* [[Hack-wipy-boot-mode#Safe_Boot_:_le_mode_sans_.C3.A9chec|Safe Boot : pour démarrer en mode sans échec]]
 +
* [[Hack-wipy-boot-mode#R.C3.A9initialiser_le_syst.C3.A8me_de_fichier|Réinitialiser le système de fichier]]
    
== Configuration WLAN étape par étape ==
 
== Configuration WLAN étape par étape ==
Ligne 34 : Ligne 48 :     
Le WiPy est capable d'utiliser une configuration en IP Fixe (voir point suivant) mais aussi capable de recevoir une adresse IP dynamique (assigné par votre routeur à l'aide de DHCP).
 
Le WiPy est capable d'utiliser une configuration en IP Fixe (voir point suivant) mais aussi capable de recevoir une adresse IP dynamique (assigné par votre routeur à l'aide de DHCP).
 +
 +
Il sera nécessaire de connaître l'identifiant de votre réseau WiFi (son ''SSID'') mais surtout, dans le cadre de cet exemple, votre modem WiFi doit faire un ''broadcast'' de son SSID (bref, il doit s'annoncer).
    
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
Ligne 55 : Ligne 71 :     
== Assigner une adresse IP Fixe ==
 
== Assigner une adresse IP Fixe ==
If you want your WiPy to connect to your home router after boot-up, and with a fixed IP address so that you can access it via telnet or FTP, use the following script as {{fname|/flash/boot.py}}:
+
Vous pouvez utiliser le script {{fname|/flash/boot.py}} suivant si vous voulez que votre WiPy se connecter sur le routeur WiFi de votre maison en utilisant une adresse IP Fixe.
 +
 
 +
Une adresse IP Fixe facilite les connexion Telnet et/ou FTP car vous connaissez l'adresse IP de votre WiPy:
    
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
 
import machine
 
import machine
 
from network import WLAN
 
from network import WLAN
wlan = WLAN() # get current object, without changing the mode
+
wlan = WLAN() # Obtenir l'objet actuel, sans changer le mode
    +
# Configurer le WiFi uniquement sur on redemarre le WiPy.
 +
# Ne pas modifier la config WiFi si on fait une réinitialisation logicielle avec CTRL-D
 
if machine.reset_cause() != machine.SOFT_RESET:
 
if machine.reset_cause() != machine.SOFT_RESET:
 
     wlan.init(WLAN.STA)
 
     wlan.init(WLAN.STA)
     # configuration below MUST match your home router settings!!
+
     # La configuration ci-dessous DOIT CORRESPONDRE A VOTRE ROUTEUR WIFI!!
 
     wlan.ifconfig(config=('192.168.178.107', '255.255.255.0', '192.168.178.1', '8.8.8.8'))
 
     wlan.ifconfig(config=('192.168.178.107', '255.255.255.0', '192.168.178.1', '8.8.8.8'))
 +
    # Exemple sur mon routeur, j'ai configuré l'adresse IP Fixe 192.168.1.220
 +
    # wlan.ifconfig(config=('192.168.1.220', '255.255.255.0', '192.168.1.1', '8.8.8.8'))
    
if not wlan.isconnected():
 
if not wlan.isconnected():
     # change the line below to match your network ssid, security and password
+
     # Modifiez la ligne suivante pour utiliser le ssid, sécurité et mot de passe de votre réseau WiFi
     wlan.connect('mywifi', auth=(WLAN.WPA2, 'mywifikey'), timeout=5000)
+
     wlan.connect('mon_wifi', auth=(WLAN.WPA2, 'ma_cle_wifi'), timeout=5000)
 
     while not wlan.isconnected():
 
     while not wlan.isconnected():
         machine.idle() # save power while waiting
+
         machine.idle() # économiser de l'énergie pendant l'attente
 
</syntaxhighlight>
 
</syntaxhighlight>
   −
{{ambox|text=Notice how we check for the reset cause and the connection status, this is crucial in order to be able to soft reset the WiPy during a telnet session without breaking the connection.}}
+
{{ambox|text=Avez-vous remarqué le test sur la cause du réset et le statut de la connexion? Ces tests sont cruciaux pour permettre de faire un soft-reset (avec CTRL-D) durant un session REPL '''sans interrompre''' la connexion en cours.}}
 +
 
 +
== Réseaux multiples avec IP Fixe ==
 +
Le script suivant (trouvé sur pycom.io) est très ingénieux sur le plan des fonctionnalités.
 +
 
 +
Le script essayer de connecter la plateforme sur un des réseaux WiFi renseignés dans la configuration. Si la connexion échoue '''il passe la plateforme en mode AP (''Access Point'' - ''point d'accès'')''' .
 +
Cette façon de faire permet de proposer une interface de configuration WiFi pour sélectionner et configurer la connexion sur le réseau WiFi du routeur... puis de basculer sur le réseau du routeur après le rédémarrage du WiPy.
 +
 
 +
<syntaxhighlight lang="python">
 +
import os
 +
import machine
 +
 
 +
uart = machine.UART(0, 115200)
 +
os.dupterm(uart)
 +
 
 +
known_nets = {
 +
    '<net>': {'pwd': '<password>'},
 +
    '<net>': {'pwd': '<password>', 'wlan_config':  ('10.0.0.114', '255.255.0.0', '10.0.0.1', '10.0.0.1')}, # (ip, subnet_mask, gateway, DNS_server)
 +
}
 +
 
 +
if machine.reset_cause() != machine.SOFT_RESET:
 +
    from network import WLAN
 +
    wl = WLAN()
 +
    wl.mode(WLAN.STA)
 +
    original_ssid = wl.ssid()
 +
    original_auth = wl.auth()
 +
 
 +
    print("Scanning for known wifi nets")
 +
    available_nets = wl.scan()
 +
    nets = frozenset([e.ssid for e in available_nets])
 +
 
 +
    known_nets_names = frozenset([key for key in known_nets])
 +
    net_to_use = list(nets & known_nets_names)
 +
    try:
 +
        net_to_use = net_to_use[0]
 +
        net_properties = known_nets[net_to_use]
 +
        pwd = net_properties['pwd']
 +
        sec = [e.sec for e in available_nets if e.ssid == net_to_use][0]
 +
        if 'wlan_config' in net_properties:
 +
            wl.ifconfig(config=net_properties['wlan_config'])
 +
        wl.connect(net_to_use, (sec, pwd), timeout=10000)
 +
        while not wl.isconnected():
 +
            machine.idle() # save power while waiting
 +
        print("Connected to "+net_to_use+" with IP address:" + wl.ifconfig()[0])
 +
 
 +
    except Exception as e:
 +
        print("Impossible de se connecter sur un reseau, passe en mode AP")
 +
        wl.init(mode=WLAN.AP, ssid=original_ssid, auth=original_auth, channel=6, antenna=WLAN.INT_ANT)
 +
</syntaxhighlight>
 +
 
 +
== Modifier le login ==
 +
Pour vous connecter sur votre WiPy en FTP ou Telnet, vous utiliser le login et mot de passe par défaut du WiPy (login: {{fname|micro}}, mot de passe: {{fname|python}}).
 +
 
 +
Il est vivement conseillé de modifier cette configuration par défaut, sinon votre WiPy est trop facilement accessible.
 +
 
 +
La modification du mot de passe se fait en utilisant la classe {{fname|Server}} du module {{fname|network}} (comme décrit [https://micropython.org/resources/docs/en/latest/wipy/library/network.html#network-server ici]).
 +
 
 +
Voici un exemple:
 +
<syntaxhighlight lang="python">
 +
import network
 +
# référence vers l'instance serveur
 +
server = network.Server()
 +
# désactive le serveur
 +
server.deinit()
 +
# Réactive le serveur avec la nouvelle configuration
 +
server.init(login=(‘utilisateur’, ‘mot_de_passe’), timeout=600)
 +
</syntaxhighlight>
 +
 
 +
Il ne reste plus qu'à mettre cela en musique dans le fichier {{fname|boot.py}} de la même façon [[Hack-wipy-wlan#Assigner_une_adresse_IP_Fixe|que pour les adresses IP fixe]].
 +
 
 +
Voici le script utilisé sur mon WiPy:
 +
* IP Fixe et
 +
* modif de login (les comptes utilisateurs et mot-de-passe masqués).
 +
 
 +
<syntaxhighlight lang="python">import machine
 +
from network import WLAN
 +
from network import Server
 +
wlan = WLAN() # Obtenir l'objet actuel, sans changer le mode
 +
 
 +
# Configurer le WiFi uniquement sur on redemarre le WiPy.
 +
# Ne pas modifier la config WiFi si on fait une réinitialisation logicielle avec CTRL-D
 +
if machine.reset_cause() != machine.SOFT_RESET:
 +
    wlan.init(WLAN.STA)
 +
    # La configuration ci-dessous DOIT CORRESPONDRE A VOTRE ROUTEUR WIFI!!
 +
    wlan.ifconfig(config=('192.168.1.205', '255.255.255.0', '192.168.1.1', '8.8.8.8'))
 +
 
 +
if not wlan.isconnected():
 +
    # Modifiez la ligne suivante pour utiliser le ssid, sécurité et mot de passe de votre réseau WiFi
 +
    wlan.connect('mon_wifi', auth=(WLAN.WPA2, 'wifi_password'), timeout=5000)
 +
    while not wlan.isconnected():
 +
        machine.idle() # économiser de l'énergie pendant l'attente
 +
    # Modifier le login et mot de passe par défaut
 +
    server = Server()
 +
    server.deinit()
 +
    server.init( login=('user1', '456789'), timeout=600 )
 +
</syntaxhighlight>
 +
 
 +
== Adresse MAC ==
 +
Si vous avez besoin de connaître l'adresse MAC de votre WiPy, ce qui arrive lorsque l'on a besoin de filtrer les accès sur un routeur, vous pouvez l'obtenir à l'aide des instructions suivantes:
 +
 
 +
<syntaxhighlight lang="python">
 +
import machine
 +
# Retourne l'identifiant unique de la carte codé sur 6 octets/bytes (l'adresse MAC du WiPy)
 +
machine.unique_id()
 +
</syntaxhighlight>
    
{{WIPY-TRAILER}}
 
{{WIPY-TRAILER}}
29 917

modifications

Menu de navigation