[PYTHON] Best Practices für selbsternannte Raspeye-Remote-Entwicklungseinstellungen

zunaechst

Was ist das?

Dieses Mal habe ich diesen Artikel geschrieben, um den lästigen Teil von Razpai zu reduzieren, über den ich lange nachgedacht habe, insbesondere die Probleme während der IoT-Entwicklung. Schreiben Sie anstelle Ihres eigenen Memorandums.

Zielbenutzer

Der beabsichtigte Zielbenutzer ist eine Person, die eine Raspeltorte wie er gekauft hat, weil sie ein IoT-Gerät entwickeln wollte (dies kann für die allgemeine Entwicklung von IoT-Geräten nützlich sein, z. B. zum Herausnehmen des Geräts aus dem Haus oder außerhalb des Unternehmens).

In der Lage sein

Da Raspai ein Basis-PC ist, sind viele Geräte für die Entwicklung erforderlich, und es ist schwierig, ihn außerhalb zu verwenden.

Was Sie brauchen, um eine Raspeltorte zu entwickeln

  1. ** "Razpie Körper" **
  2. ** "Batteriestromversorgung und Kabel" **
  3. ** "Display und Kabel" **
  4. ** "Geräte wie WLAN" **
  5. ** "Tastatur" **
  6. ** "Maus falls erforderlich" **

Dies bedeutet jedoch, dass ** auch wenn das Gerät selbst klein ist, eine Umgebung erforderlich ist, die der Desktop-PC-Entwicklung entspricht **. Ich wollte den Raspeltorte im Freien installieren und je nach Situation für lokale Tests und Entwicklungen verwenden. Daher dachte ich über die Konfiguration nach, die für die lokale Entwicklung erforderlich ist, und minimierte gleichzeitig die Ausrüstung, die im Freien verwendet werden muss.

Die Konfiguration nach der Arbeit ist wie folgt.

  1. ** "Rasp Pie Body (bestätigtes Modell ist Rasp Pie 4, Betriebssystem ist Raspbian Buster)" **
  2. ** "Notebook-PC (Bestätigungsbetriebssystem ist Windows 10)" (Austausch von Display, Tastatur, Maus, auch wenn das Netzteil durch USB ersetzt werden kann) **
  3. ** "Smartphone (bestätigtes Modell ist Pixel3a OS ist Android)" (Alternative zu WiFi) **

Raspeye-Fernentwicklungsprinzipien im Selbststil

  1. ** Sofort nach dem Bau von Raspeye die Fernbedienung einstellen **
  2. ** Die Standardeinstellung ist das Spielen mit dem Raspeltorte "auf Ihrem Smartphone" **
  3. ** Remote-Verbindung mit RDP / VNC usw., wenn eine WLAN-Umgebung vorhanden ist **
  4. ** Es ist bequem, Protokolle usw. mit einem Tool zu benachrichtigen, das extern verknüpft werden kann, z. B. Slack **

Problem. ** Wenn die IP beim Umschalten zwischen Smartphone und WLAN nicht richtig wechselt **

1. Stellen Sie die Fernbedienung sofort nach dem Aufbau der Raspeltorte ein

Dieser Artikel beginnt mit "Bauen einer Raspeltorte". Es gibt viele Artikel im Internet über "Razpai Construction", bitte beziehen Sie sich auf sie. Das Wichtigste ist diesmal nach dem Bau. Nachdem Sie die Entwicklungsumgebung für Raspeye erstellt haben und das Betriebssystem mit Razzpie gestartet werden kann, nehmen Sie zunächst die folgenden Einstellungen in Eile vor.

  1. Installieren Sie xrdp für die RDP-Verbindung auf dem Terminalbildschirm Referenz: xrdp installieren und verbinden
$ sudo apt-get update
$ sudo apt-get install xrdp
$ sudo apt install tightvncserver
  1. Installieren Sie auf dem Terminalbildschirm von Raspeye slackweb, pustil, das im Skript für die lockere Kommunikation verwendet wird. Referenz: Verbindung mit Raspberry Pi über Remotedesktop herstellen
$ sudo pip install slackweb
$ sudo pip install psutil
  1. Legen Sie das folgende Programm für eine lockere Kommunikation auf den Raspeltorte Öffnen Sie den Bildschirm mit einem Editor wie vi, nano und fügen Sie das folgende Python-Programm ein Referenz: Slack über die WLAN-Adresse von Raspeye informieren Referenz: Ermitteln Sie das Ergebnis der Ping-Kommunikationsbestätigung mechanisch

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 = "Die von slack erhaltene WebHook-URL ist hier aufgelistet"
##
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. Versetzen Sie Ihr Smartphone in den Tethering-Modus und verbinden Sie es mit einem Kabel

Sie können sowohl iPhone als auch Android verwenden. In Bezug auf Folgendes ist iOS Blutooth, und Android ist über Kabel mit einem Kabel verbunden, sodass Sie über Tethering eine Verbindung zum Netzwerk von Raspai aus herstellen können. Referenz: [Tethering durch Herstellen einer Verbindung zu Belutooth zum 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 /) Referenz: USB-Tethering auf Raspberry Pi und Android

  1. Überprüfen Sie, ob Sie eine Verbindung zum Internet herstellen können, und registrieren Sie nach Möglichkeit die Slack-API.

Dieses Mal erhalten wir die Webhook-URL von slack und setzen sie so, dass die vom Python-Skript erhaltenen Informationen auf slack übersprungen werden. Bitte überprüfen Sie die folgenden für Details. Wenn Sie es nicht verwenden möchten, kommentieren Sie die folgenden Zeilen 28 und 29 des Skripts aus. Es funktioniert ohne Slack. Wechseln Sie daher zu einer Methode, die extern verknüpft werden kann, z. B. Web-API oder E-Mail-Übertragung.

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

Referenz: Verfahren zur Erfassung der Slack Webhook-URL

  1. Überprüfen Sie, ob send_IPinfo.py funktioniert. Wenn Sie dies überprüfen können, registrieren Sie es in cron. Referenz: Verwendung von cron auf Raspberry Pi zum automatischen Ausführen von Befehlen beim Start oder zum wiederholten Ausführen in n-Minuten-Intervallen
@reboot /usr/bin/python /home/pi/ipinfo_slack.py 
  1. Setzen Sie die Remotedesktop-App auf Ihren PC und Ihr Smartphone ein und prüfen Sie, ob Sie eine Verbindung mit der IP herstellen können, die auf Slack und der Konsole angezeigt wird.

Zu diesem Zeitpunkt ist die Einstellung selbst abgeschlossen. Wenn Sie die Schritte 1 bis 7 erfolgreich abgeschlossen haben, können Sie entwickeln, ohne etwas anderes als das Netzteil an den Raspeltorte anzuschließen.

2. Die Grundeinstellung ist, mit dem Raspeltorte "auf Ihrem Smartphone" zu spielen.

Da wir uns diesmal auf die "Remote-Entwicklung von Raspeye" konzentrieren, ist eine Netzwerkverbindung für die Remote-Verbindung erforderlich. Es gibt jedoch nicht immer ein Netzwerk wie WLAN im Freien, und es geht darum, das Tethering auf dem Smartphone für diesen Zweck zu verwenden.

Selbst wenn Sie keinen Notebook-PC haben, können Sie ihn einfach einstellen, indem Sie ihn an Ihr Smartphone anschließen und die RDP-Software auf Ihrem Smartphone installieren, sodass Sie ihn für andere Zwecke verwenden können, z. B. zum Einrichten eines anderen WLAN-Netzwerks.

3. Remote-Verbindung mit RDP / VNC usw., wenn eine WLAN-Umgebung vorhanden ist

Wenn Sie über eine Netzwerkumgebung wie WLAN verfügen, können Sie eine Remote-Verbindung zu Raspai herstellen (auch mit Smartphone-Tethering). Dieses Mal habe ich mich für RDP entschieden, das auch unter Windows problemlos mit der grafischen Benutzeroberfläche kompatibel ist und mit Smartphones kompatibel ist. Ich denke jedoch, dass es mit anderen Tools wie VNC kein Problem gibt.

4. Es ist praktisch, Protokolle usw. mit einem Tool zu benachrichtigen, das extern verknüpft werden kann, z. B. Slack

Wenn möglich, ist es wünschenswert, ohne Verbindung zu Raspeye arbeiten zu können, außer wenn eine Entwicklung erforderlich ist. Dieses Mal wird davon ausgegangen, dass Sie eine Remoteverbindung herstellen.

Der Widerspruch wird geboren. Ursprünglich möchte ich die IP kennen, ohne eine Verbindung zu Raspeye herzustellen, daher habe ich einen Mechanismus, der "ein Skript erstellt, das Ihre eigene IP überprüft und Slack benachrichtigt und es beim Start mit cron ausführt".

(*) Stellen Sie zur Vorsicht sicher, dass Sie beim Starten eine Verbindung zu Tethering oder WLAN auf Ihrem Smartphone herstellen können. Wenn Sie sofort pingen, wird das Programm vor der Netzwerkkommunikation gestartet, sodass Sie entsprechend 3 Minuten warten müssen, und die Benachrichtigung wird nicht sofort an Slack gesendet.

Problem. Wenn die IP beim Umschalten zwischen Smartphone und WLAN nicht richtig umschaltet

Wenn Sie Ihr Smartphone nacheinander mit WLAN verbinden oder über WLAN eine Verbindung zu Ihrem Smartphone herstellen, wird die IP-Adresse automatisch entsprechend dem Netzwerk umgeschaltet. In einigen Fällen wird die IP-Adresse jedoch nicht ordnungsgemäß umgeschaltet. Es gibt. Versuchen Sie in diesem Fall, den xrdp-Dienst neu zu starten. Wenn dies nicht funktioniert, installieren Sie ihn erneut.

Starten Sie den Dienst neu

sudo service xrdp restart

Wenn nicht, installieren Sie xrdp neu

sudo apt remove xrdp
sudo apt update
sudo apt install xrdp 

Am Ende

Mit den oben genannten Einstellungen oder Ideen kann Razpai meiner Meinung nach einfacher aus der Ferne entwickelt werden.

Recommended Posts

Best Practices für selbsternannte Raspeye-Remote-Entwicklungseinstellungen
AWS Lambda-Entwicklung Meine Best Practices
Persönliche Best Practices für die Python-Entwicklungsumgebung mit VS-Code