Basic maintenance mode
Siehe auch Maintenance mode galore.
Einleitung
Mit der neuesten Version im Repository bekommt man:
- Einführung des Wartungsmodus, bei dem deep sleep maskiert und der Schlafzyklus auf fünf Sekunden begrenzt wird.
- Einfache aber effektive und komfortable Aktivierung des Wartungsmodus inkl. device discovery im LAN. Anleitung: Toggle between maintenance and field mode.
Synopsis
Displays successful device discovery and maintenance mode enablement.
$ sudo python3 -m tools.terkin maintain
2019-07-10 19:49:21,698 [terkin] INFO : IP networks found: ['192.168.178.0/24']
2019-07-10 19:49:21,698 [terkin] INFO : Sending an ARP ping to discover already connected devices on network 192.168.178.0/24
2019-07-10 19:49:21,698 [terkin] INFO : Waiting for any devices having MAC address prefixes of ['30:ae:a4', '80:7d:3a'] to appear on your local network
2019-07-10 19:49:25,172 [terkin] INFO : Found device at {'mac': '80:7d:3a:c2:de:44', 'ip': '192.168.178.166'}
2019-07-10 19:49:25,172 [terkin] INFO : Connecting to device mode server at 192.168.178.166:666
2019-07-10 19:49:25,172 [terkin] INFO : Pulling 192.168.178.166 into maintenance mode
Details
Mit obigen Dingen wurden einige Aspekte implementiert, die wir bei ESP32 network discovery through LAN IP scanning and Ethernet ARP monitoring diskutiert hatten, es bildet gleichzeitig die Grundlage für Maintenance mode galore. Vielen Dank für Eure Beiträge!
Damit lassen sich bei folgenden Beiträgen aufgegriffene Dinge zukünftig komfortabler gestalten:
- Remote via WLAN (telnet, FTP) auf den WiPy / FiPy zugreifen
- Upload und initiale Konfiguration der MicroPython-Firmware
Es besteht nun die Möglichkeit, direkt von der commandline aus komfortabel die IP-Adresse des Geräts herausfinden zu können sowie – neueste Firmware aus dem Repository HEAD/master vorausgesetzt – das Gerät jeweils temporär in den Wartungs- bzw. wieder zurück in den Feldbetriebsmodus zu versetzen.
Unter der Haube wird dazu ein kleines UDP Beacon an das Gerät versendet, sobald es im Netzwerk gefunden werden konnte, à la
echo 'maintenance.enable()' | ncat --udp 192.168.178.20 666
Howto
Hier eine kurze Übersicht der aktuell noch etwas hemdsärmligen Bedienung:
# Device discovery only.
# Will continuously monitor local network for
# devices and print out their MAC- and IP-addresses.
sudo python3 -m tools.terkin monitor
# Device discovery plus "maintenance mode" switchover.
# Wait for device to appear on local network, then enable maintenance mode.
sudo python3 -m tools.terkin maintain
# Same as above, but address specific device.
sudo python3 -m tools.terkin maintain 80:7d:3a:c2:de:44
# Device discovery plus "field mode" switchover.
# Wait for device to appear on local network, then disable maintenance mode.
# Note that power cycling will also do the same.
sudo python3 -m tools.terkin field
Setup
Damit das klappt, muss man noch ein paar Abhängigkeiten installieren. Wir skizzieren hier die Installation unter Linux/macOS sowie Windows.
Installationsanleitungen für Linux, macOS und Windows
Installation unter Linux/macOS
Da Python meist schon installiert ist, reicht normalerweise eine einfache Installation der benötigten Pakete à la…
pip3 install scapy netifaces netaddr
Installation unter Windows
Es handelt sich um Python 3.x für Windows, einige weitere Python Pakete, sowie die Npcap: Windows Packet Capture Library & Driver.
Es ist zu beachten, dass der MicroTerkin Agent nativ unter Windows installiert werden muss, eine Installation innerhalb von WSL funktioniert hier nicht.
Python 3 über Anaconda oder Chocolatey
Unter Windows ist der Griff zu Anaconda oft hilfreicher als der Fußweg. Danke, @MKO!
Eine weitere komfortable Alternative ist aber auch die Installation des neuesten Python 3.x
Letzteres ist u.U. sparsamer bei der Download-Größe. Anaconda hat in der Basisinstallation laut bereits ~500 MB. Danke, @clemens.
Npcap
Bei Npcap: Windows Packet Capture Library & Driver bekommt man Npcap (den Nachfolger von Winpcap) solo. Direktlink: Npcap 0.996 installer for Windows Vista/2008, 7/2008R2, 8/2012, 8.1/2012R2, 10/2016 (x86 and x64).
Python Pakete
bekommt man entweder per pip
oder per conda
installiert. Es handelt sich um scapy · PyPI, netifaces · PyPI und netaddr · PyPI.
# Installation per pip
pip install scapy netifaces netaddr
# Installation per conda
conda install -c conda-forge scapy netifaces netaddr