[PYTHON] Meilleures pratiques pour les paramètres de développement à distance Raspeye

en premier

Qu'est-ce que c'est?

Cette fois, j'ai écrit cet article pour réduire la partie gênante de Razpai à laquelle je réfléchis depuis longtemps, en particulier les problèmes lors du développement de l'IoT. Écrivez au lieu de votre propre mémorandum.

Utilisateur cible

L'utilisateur cible visé est une personne qui a acheté Raspai parce qu'il voulait développer un appareil IoT comme lui (cela peut être utile pour le développement général d'un appareil IoT, comme sortir l'appareil de la maison ou de l'entreprise).

Pouvoir

--Comprendre la procédure de connexion et de développement de Raspai à distance

Étant donné que Raspai est un PC de base, de nombreux périphériques sont nécessaires pour le développement et il est difficile de l'utiliser à l'extérieur.

Ce dont vous avez besoin pour développer une tarte aux râpes

  1. ** "Corps Razpie" **
  2. ** "Alimentation par batterie et câble" **
  3. ** "Écran et câble" **
  4. ** "Appareils tels que le Wi-Fi" **
  5. ** "Clavier" **
  6. ** "Souris si nécessaire" **

Cependant, cela signifie que ** même si l'appareil lui-même est petit, un environnement équivalent au développement d'un PC de bureau est requis **. Je voulais installer la tarte à la râpe à l'extérieur et l'utiliser pour des tests et des développements locaux en fonction de la situation, j'ai donc pensé à la configuration nécessaire au développement local tout en minimisant le matériel à emporter à l'extérieur.

La configuration après le travail est la suivante.

  1. ** "Corps Rasppie (le modèle confirmé est Rasppie 4, le système d'exploitation est Raspbian Buster)" **
  2. ** «Notebook PC (confirmation OS is Windows 10)» (remplacement de l'écran, du clavier, de la souris, même lorsque l'alimentation peut être remplacée par USB) **
  3. ** "Smartphone (le modèle confirmé est le système d'exploitation Pixel 3a est Android)" (alternative au wifi) **

Principe de développement à distance de la tarte aux râpes

  1. ** Réglez immédiatement la télécommande après avoir construit Raspeye **
  2. ** Le paramètre par défaut est de jouer avec la tarte à la râpe "sur votre smartphone" **
  3. ** Connexion à distance avec RDP / VNC etc. quand il y a un environnement wifi **
  4. ** Il est pratique de notifier les journaux, etc. avec un outil qui peut être lié en externe tel que slack **

Problème. ** Si l'IP ne bascule pas correctement lors de la commutation entre smartphone et wifi **

1. Réglez immédiatement la télécommande après avoir créé la tarte à la râpe

Cet article commence par «construire une tarte aux râpes». Il existe de nombreux articles sur Internet à propos de "Razpai Construction", veuillez donc vous y référer. L'important cette fois, c'est après la construction. Une fois que vous avez créé l'environnement de développement pour Raspeye et que le système d'exploitation peut être démarré avec Razzpie, tout d'abord, effectuez rapidement les paramètres suivants.

  1. Installez xrdp pour la connexion RDP sur l'écran du terminal Référence: Installation et connexion de xrdp
$ sudo apt-get update
$ sudo apt-get install xrdp
$ sudo apt install tightvncserver
  1. Sur l'écran du terminal de Raspeye, installez slackweb, pustil utilisé dans le script pour la communication slack. Référence: Se connecter à Raspberry Pi avec un bureau à distance
$ sudo pip install slackweb
$ sudo pip install psutil
  1. Placez le programme suivant pour une communication détendue sur la tarte à la râpe Ouvrez l'écran avec un éditeur tel que vi, nano et collez le programme python suivant Référence: Notifier à Slack l'adresse Wi-Fi de Raspeye Référence: Déterminez mécaniquement le résultat de la confirmation de la communication ping

send_IPinfo.py


import slackweb
import psutil
import socket
import time
import subprocess

def is_ping(host):
	# linux only
    ping = subprocess.Popen(["ping", "-w", "3", "-c", "1", host], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
    ping.communicate()
    return ping.returncode == 0

time.sleep(180)
hostname = socket.gethostname()
slackurl = "L'URL du WebHook obtenue par slack est répertoriée ici"
##
for name, addrs in psutil.net_if_addrs().items():
    if name == "usb0" or name == "wlan0":
        print("connect succeed")
        flg = True
        for addr in addrs:
            if addr.family == socket.AF_INET:
                message = hostname + " " + name + " is " + addr.address
        slack = slackweb.Slack(url = slackurl)
        slack.notify(text="%s" % message)
        print(message)
  1. Mettez votre smartphone en mode modem et connectez-vous avec un câble

Vous pouvez utiliser à la fois iPhone et Android. En référence à ce qui suit, iOS est Blutooth et Android est connecté par fil avec un câble, de sorte que vous pouvez vous connecter au réseau depuis Raspai par partage de connexion. Référence: [Tethering by connect to Belutooth to iPhone](http://make.bcde.jp/raspberry-pi/iphone%E3%81%ABbelutooth%E6%8E%A5%E7%B6%9A%E3%81% 97% E3% 81% A6% E3% 83% 86% E3% 82% B6% E3% 83% AA% E3% 83% B3% E3% 82% B0 /) Référence: Partage de connexion USB sur Raspberry Pi et Android

  1. Vérifiez si vous pouvez vous connecter à Internet et, si possible, enregistrez l'API slack.

Cette fois, nous obtiendrons l'URL du webhook de slack et le définirons pour ignorer les informations obtenues par le script python sur slack. Veuillez vérifier les éléments suivants pour plus de détails. Si vous ne souhaitez pas l'utiliser, commentez les lignes 28 et 29 suivantes du script et cela fonctionnera sans utiliser de slack, veuillez donc passer à une méthode pouvant être liée de manière externe, telle que l'API Web ou la transmission de courrier électronique.

slack = slackweb.Slack(url = slackurl)
slack.notify(text="%s" % message)

Référence: Procédure d'acquisition d'URL Slack Webhook

  1. Vérifiez si send_IPinfo.py fonctionne, et si vous pouvez le vérifier, enregistrez-le dans cron. Référence: Comment utiliser cron sur Raspberry Pi pour exécuter automatiquement des commandes au démarrage ou les exécuter à plusieurs reprises à des intervalles de n minutes
@reboot /usr/bin/python /home/pi/ipinfo_slack.py 
  1. Mettez l'application de bureau à distance sur votre PC et votre smartphone et vérifiez si vous pouvez vous connecter avec l'adresse IP qui apparaît sur le jeu et la console.

À ce stade, le réglage lui-même est terminé. Si vous avez réussi les étapes 1 à 7, vous serez prêt à développer sans connecter autre chose que l'alimentation à la tarte à la râpe.

2. Le réglage initial est de jouer avec la tarte à la râpe "sur votre smartphone"

Cette fois, puisque nous nous concentrons sur le "développement à distance de Raspeye", une connexion réseau pour une connexion à distance est nécessaire. Cependant, il n'y a pas toujours de réseau tel que le wifi à l'extérieur, et le but est d'utiliser le partage de connexion sur le smartphone à cette fin.

Même si vous n'avez pas d'ordinateur portable, vous pouvez facilement le configurer en le connectant à votre smartphone et en installant le logiciel RDP sur votre smartphone, afin que vous puissiez l'utiliser à d'autres fins telles que la configuration d'un autre réseau wifi.

3. Connexion à distance avec RDP / VNC etc. quand il y a un environnement wifi

Si vous disposez d'un environnement réseau tel que le wifi, vous pouvez vous connecter à Raspai à distance (même avec le partage de connexion smartphone). Cette fois, comme procédure, j'ai choisi RDP, qui peut être facilement manipulé avec l'interface graphique même sous Windows et est compatible avec les smartphones, mais je pense qu'il n'y a pas de problème avec d'autres outils tels que VNC.

4. Il est pratique de notifier les journaux, etc. avec un outil qui peut être lié de manière externe, comme slack

Si possible, il est souhaitable de pouvoir opérer sans se connecter à Raspeye sauf lorsque le développement est nécessaire. Cette fois, il est supposé que vous vous connecterez à distance,

--Je veux me connecter à distance

La contradiction naîtra. À l'origine, je veux connaître l'IP sans me connecter à Raspeye, j'ai donc un mécanisme qui "crée un script qui vérifie votre propre adresse IP et notifie slack, et l'exécute avec cron au démarrage".

(*) Par mesure de prudence, veuillez vous assurer que vous pouvez vous connecter au partage de connexion ou au wifi sur votre smartphone lorsque vous le démarrez. De plus, si vous envoyez un ping immédiatement, le programme démarrera avant la communication réseau, vous devez donc attendre 3 minutes de manière appropriée et la notification ne sera pas envoyée immédiatement à Slack.

Problème. Si l'adresse IP ne change pas correctement lors de la commutation entre le smartphone et le wifi

Si vous connectez votre smartphone au wifi en séquence ou que vous vous connectez à votre smartphone depuis le wifi, l'IP basculera automatiquement en fonction du réseau, mais il y a des moments où l'IP ne bascule pas correctement. Il y a. Dans ce cas, essayez de redémarrer le service xrdp et, sinon, de le réinstaller.

Redémarrer le service

sudo service xrdp restart

Sinon, réinstallez xrdp

sudo apt remove xrdp
sudo apt update
sudo apt install xrdp 

À la fin

Avec les paramètres ou les idées ci-dessus, je pense que Razpai peut être développé à distance plus facilement.

Recommended Posts

Meilleures pratiques pour les paramètres de développement à distance Raspeye
Développement AWS Lambda Mes meilleures pratiques
Meilleures pratiques personnelles pour l'environnement de développement Python basé sur VS Code