src/eric7/MicroPython/Devices/EspDevices.py

Thu, 03 Aug 2023 17:33:07 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 03 Aug 2023 17:33:07 +0200
branch
eric7
changeset 10153
ffe7432f716b
parent 10144
45a9177c8e77
child 10170
6cf1ee737d8f
permissions
-rw-r--r--

MicroPython
- Added support to set the host name of the device (WiFi and Ethernet).
- Added support to set the WiFi country code (where supported by the device and the installed firmware).

7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9624
diff changeset
3 # Copyright (c) 2019 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
8119
1653972f2de5 EspDevices: fixed a typo and a little issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8117
diff changeset
7 Module implementing the device interface class for ESP32 and ESP8266 based
1653972f2de5 EspDevices: fixed a typo and a little issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8117
diff changeset
8 boards.
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
11 import ast
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
12 import binascii
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
13 import json
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
14 import os
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
15
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
16 from PyQt6.QtCore import QCoreApplication, QProcess, QUrl, pyqtSlot
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
17 from PyQt6.QtNetwork import QNetworkReply, QNetworkRequest
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
18 from PyQt6.QtWidgets import QDialog, QMenu
7108
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
19
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
20 from eric7 import Globals, Preferences
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
21 from eric7.EricGui.EricOverrideCursor import EricOverrideCursor
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
22 from eric7.EricWidgets import EricMessageBox
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
23 from eric7.EricWidgets.EricApplication import ericApp
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
24 from eric7.EricWidgets.EricProcessDialog import EricProcessDialog
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
25 from eric7.SystemUtilities import PythonUtilities
7065
e3d04faced34 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7059
diff changeset
26
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
27 from ..MicroPythonWidget import HAS_QTCHART
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9752
diff changeset
28 from . import FirmwareGithubUrls
9870
0399d3607829 Fixed a few code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9868
diff changeset
29 from .CircuitPythonDevices import CircuitPythonDevice
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9752
diff changeset
30 from .DeviceBase import BaseDevice
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9752
diff changeset
33 class EspDevice(BaseDevice):
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 Class implementing the device for ESP32 and ESP8266 based boards.
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
37
8117
aaa5e0eacd4e MicroPython: changed the logic to synchronize the time because some devices don't implement long integer and failed defining the 'set_time()' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8096
diff changeset
38 def __init__(self, microPythonWidget, deviceType, parent=None):
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
41
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @param microPythonWidget reference to the main MicroPython widget
7134
21d23ca51680 Renamed "MicroPythonReplWidget" to "MicroPythonWidget".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7125
diff changeset
43 @type MicroPythonWidget
8117
aaa5e0eacd4e MicroPython: changed the logic to synchronize the time because some devices don't implement long integer and failed defining the 'set_time()' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8096
diff changeset
44 @param deviceType device type assigned to this device interface
aaa5e0eacd4e MicroPython: changed the logic to synchronize the time because some devices don't implement long integer and failed defining the 'set_time()' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8096
diff changeset
45 @type str
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 @param parent reference to the parent object
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 @type QObject
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8205
diff changeset
49 super().__init__(microPythonWidget, deviceType, parent)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
50
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
51 self.__createEsp32Submenu()
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
52
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
53 self.__cpyDevice = None
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
54 # needed to delegate some methods to a CircuitPython variant
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
55
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
56 self.__statusTranslations = {
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
57 200: self.tr("beacon timeout"),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
58 201: self.tr("no matching access point found"),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
59 202: self.tr("authentication failed"),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
60 203: self.tr("association failed"),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
61 204: self.tr("handshake timeout"),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
62 1000: self.tr("idle"),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
63 1001: self.tr("connecting"),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
64 1010: self.tr("connected"),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
65 }
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
66 self.__securityTranslations = {
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
67 0: self.tr("open", "open WiFi network"),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
68 1: "WEP",
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
69 2: "WPA",
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
70 3: "WPA2",
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
71 4: "WPA/WPA2",
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
72 5: "WPA2 (CCMP)",
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
73 6: "WPA3",
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
74 7: "WPA2/WPA3",
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
75 }
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
76
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
77 def __createCpyDevice(self):
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
78 """
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
79 Private method to create a CircuitPython device interface.
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
80 """
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
81 if self.hasCircuitPython() and self.__cpyDevice is None:
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
82 self.__cpyDevice = CircuitPythonDevice(
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
83 self.microPython,
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
84 "esp32_circuitpython",
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
85 "esp32",
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
86 hasWorkspace=False,
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
87 parent=self.parent(),
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
88 )
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
89
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
90 def setConnected(self, connected):
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
91 """
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
92 Public method to set the connection state.
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
93
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
94 Note: This method can be overwritten to perform actions upon connect
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
95 or disconnect of the device.
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
96
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
97 @param connected connection state
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
98 @type bool
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
99 """
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
100 super().setConnected(connected)
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
101
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
102 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
103 self._submitMode = "paste"
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
104 self.__createCpyDevice()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
105
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 def setButtons(self):
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 Public method to enable the supported action buttons.
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8205
diff changeset
110 super().setButtons()
9763
52f982c08301 Removed the 'Open' and 'Save' buttons from the MicroPython widget and made the repl and file manager start automatically upon connecting to the selected device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9756
diff changeset
111
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 self.microPython.setActionButtons(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
113 run=True, repl=True, files=True, chart=HAS_QTCHART
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
114 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
115
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 def forceInterrupt(self):
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 Public method to determine the need for an interrupt when opening the
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 serial connection.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
120
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 @return flag indicating an interrupt is needed
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 @rtype bool
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 return True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
125
7125
2028553ee58c CircuitPythonDevices, EspDevices, MicroPythonDevices: added a method to get the device name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7115
diff changeset
126 def deviceName(self):
2028553ee58c CircuitPythonDevices, EspDevices, MicroPythonDevices: added a method to get the device name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7115
diff changeset
127 """
2028553ee58c CircuitPythonDevices, EspDevices, MicroPythonDevices: added a method to get the device name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7115
diff changeset
128 Public method to get the name of the device.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
129
7125
2028553ee58c CircuitPythonDevices, EspDevices, MicroPythonDevices: added a method to get the device name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7115
diff changeset
130 @return name of the device
2028553ee58c CircuitPythonDevices, EspDevices, MicroPythonDevices: added a method to get the device name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7115
diff changeset
131 @rtype str
2028553ee58c CircuitPythonDevices, EspDevices, MicroPythonDevices: added a method to get the device name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7115
diff changeset
132 """
2028553ee58c CircuitPythonDevices, EspDevices, MicroPythonDevices: added a method to get the device name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7115
diff changeset
133 return self.tr("ESP8266, ESP32")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
134
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 def canStartRepl(self):
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 Public method to determine, if a REPL can be started.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
138
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 @return tuple containing a flag indicating it is safe to start a REPL
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 and a reason why it cannot.
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 @rtype tuple of (bool, str)
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 """
7095
8e10acb1cd85 Refactored and improved the MicroPython code to be able to show the file manager and the REPL simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7091
diff changeset
143 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
144
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 def canStartPlotter(self):
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 Public method to determine, if a Plotter can be started.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
148
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 @return tuple containing a flag indicating it is safe to start a
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 Plotter and a reason why it cannot.
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 @rtype tuple of (bool, str)
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 """
7095
8e10acb1cd85 Refactored and improved the MicroPython code to be able to show the file manager and the REPL simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7091
diff changeset
153 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
154
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 def canRunScript(self):
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 """
7091
84d2a73b448a EspDevices, MicroPythonDevices: fixed a wrong source docu string.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7077
diff changeset
157 Public method to determine, if a script can be executed.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
158
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 @return tuple containing a flag indicating it is safe to start a
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 Plotter and a reason why it cannot.
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 @rtype tuple of (bool, str)
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 """
8119
1653972f2de5 EspDevices: fixed a typo and a little issue.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8117
diff changeset
163 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
164
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 def runScript(self, script):
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 Public method to run the given Python script.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
168
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 @param script script to be executed
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 @type str
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 pythonScript = script.split("\n")
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 self.sendCommands(pythonScript)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
174
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 def canStartFileManager(self):
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 Public method to determine, if a File Manager can be started.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
178
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 @return tuple containing a flag indicating it is safe to start a
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 File Manager and a reason why it cannot.
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 @rtype tuple of (bool, str)
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 """
7095
8e10acb1cd85 Refactored and improved the MicroPython code to be able to show the file manager and the REPL simultaneously.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7091
diff changeset
183 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
184
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
185 def __createEsp32Submenu(self):
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
186 """
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
187 Private method to create the ESP32 submenu.
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
188 """
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
189 self.__espMenu = QMenu(self.tr("ESP32 Functions"))
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
190
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
191 self.__showMpyAct = self.__espMenu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
192 self.tr("Show MicroPython Versions"), self.__showFirmwareVersions
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
193 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
194 self.__espMenu.addSeparator()
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
195 self.__eraseFlashAct = self.__espMenu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
196 self.tr("Erase Flash"), self.__eraseFlash
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
197 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
198 self.__flashMpyAct = self.__espMenu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
199 self.tr("Flash MicroPython Firmware"), self.__flashMicroPython
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
200 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
201 self.__espMenu.addSeparator()
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
202 self.__flashAdditionalAct = self.__espMenu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
203 self.tr("Flash Additional Firmware"), self.__flashAddons
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
204 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
205 self.__espMenu.addSeparator()
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
206 self.__backupAct = self.__espMenu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
207 self.tr("Backup Firmware"), self.__backupFlash
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
208 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
209 self.__restoreAct = self.__espMenu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
210 self.tr("Restore Firmware"), self.__restoreFlash
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
211 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
212 self.__espMenu.addSeparator()
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
213 self.__chipIdAct = self.__espMenu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
214 self.tr("Show Chip ID"), self.__showChipID
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
215 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
216 self.__flashIdAct = self.__espMenu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
217 self.tr("Show Flash ID"), self.__showFlashID
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
218 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
219 self.__macAddressAct = self.__espMenu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
220 self.tr("Show MAC Address"), self.__showMACAddress
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
221 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
222 self.__espMenu.addSeparator()
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
223 self.__resetAct = self.__espMenu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
224 self.tr("Reset Device"), self.__resetDevice
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
225 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
226 self.__espMenu.addSeparator()
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
227 self.__espMenu.addAction(self.tr("Install 'esptool.py'"), self.__installEspTool)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
228
7108
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
229 def addDeviceMenuEntries(self, menu):
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
230 """
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
231 Public method to add device specific entries to the given menu.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
232
7108
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
233 @param menu reference to the context menu
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
234 @type QMenu
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
235 """
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
236 connected = self.microPython.isConnected()
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
237 linkConnected = self.microPython.isLinkConnected()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
238
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
239 self.__showMpyAct.setEnabled(connected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
240 self.__eraseFlashAct.setEnabled(not linkConnected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
241 self.__flashMpyAct.setEnabled(not linkConnected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
242 self.__flashAdditionalAct.setEnabled(not linkConnected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
243 self.__backupAct.setEnabled(not linkConnected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
244 self.__restoreAct.setEnabled(not linkConnected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
245 self.__chipIdAct.setEnabled(not linkConnected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
246 self.__flashIdAct.setEnabled(not linkConnected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
247 self.__macAddressAct.setEnabled(not linkConnected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
248 self.__resetAct.setEnabled(connected or not linkConnected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
249
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
250 menu.addMenu(self.__espMenu)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
251
8096
5425a9072300 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
252 def hasFlashMenuEntry(self):
5425a9072300 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
253 """
5425a9072300 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
254 Public method to check, if the device has its own flash menu entry.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
255
8096
5425a9072300 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
256 @return flag indicating a specific flash menu entry
5425a9072300 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
257 @rtype bool
5425a9072300 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
258 """
5425a9072300 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
259 return True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
260
7108
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
261 @pyqtSlot()
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
262 def __eraseFlash(self):
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
263 """
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
264 Private slot to erase the device flash memory.
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
265 """
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
266 eraseFlash(self.microPython.getCurrentPort())
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
267
7108
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
268 @pyqtSlot()
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
269 def __flashMicroPython(self):
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
270 """
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
271 Private slot to flash a MicroPython firmware to the device.
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
272 """
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
273 flashPythonFirmware(self.microPython.getCurrentPort())
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
274
7108
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
275 @pyqtSlot()
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
276 def __flashAddons(self):
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
277 """
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
278 Private slot to flash some additional firmware images.
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
279 """
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
280 flashAddonFirmware(self.microPython.getCurrentPort())
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
281
7108
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
282 @pyqtSlot()
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
283 def __backupFlash(self):
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
284 """
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
285 Private slot to backup the currently flashed firmware.
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
286 """
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9752
diff changeset
287 from .EspDialogs.EspBackupRestoreFirmwareDialog import (
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
288 EspBackupRestoreFirmwareDialog,
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9752
diff changeset
289 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
290
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
291 dlg = EspBackupRestoreFirmwareDialog(backupMode=True)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8119
diff changeset
292 if dlg.exec() == QDialog.DialogCode.Accepted:
8945
b6be65111565 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8924
diff changeset
293 chip, flashSize, baudRate, flashMode, firmware = dlg.getData()
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
294 flashArgs = [
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
295 "-u",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
296 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
297 "esptool",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
298 "--chip",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
299 chip,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
300 "--port",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
301 self.microPython.getCurrentPort(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
302 "--baud",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
303 baudRate,
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
304 "read_flash",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
305 "0x0",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
306 flashSize,
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
307 firmware,
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
308 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
309 dlg = EricProcessDialog(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
310 self.tr("'esptool read_flash' Output"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
311 self.tr("Backup Firmware"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
312 showProgress=True,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
313 )
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
314 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), flashArgs)
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
315 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7595
diff changeset
316 dlg.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
317
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
318 @pyqtSlot()
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
319 def __restoreFlash(self):
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
320 """
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
321 Private slot to restore a previously saved firmware.
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
322 """
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9752
diff changeset
323 from .EspDialogs.EspBackupRestoreFirmwareDialog import (
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
324 EspBackupRestoreFirmwareDialog,
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9752
diff changeset
325 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
326
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
327 dlg = EspBackupRestoreFirmwareDialog(backupMode=False)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8119
diff changeset
328 if dlg.exec() == QDialog.DialogCode.Accepted:
8945
b6be65111565 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8924
diff changeset
329 chip, flashSize, baudRate, flashMode, firmware = dlg.getData()
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
330 flashArgs = [
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
331 "-u",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
332 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
333 "esptool",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
334 "--chip",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
335 chip,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
336 "--port",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
337 self.microPython.getCurrentPort(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
338 "--baud",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
339 baudRate,
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
340 "write_flash",
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
341 ]
8945
b6be65111565 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8924
diff changeset
342 if flashMode:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
343 flashArgs.extend(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
344 [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
345 "--flash_mode",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
346 flashMode,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
347 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
348 )
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
349 if bool(flashSize):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
350 flashArgs.extend(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
351 [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
352 "--flash_size",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
353 flashSize,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
354 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
355 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
356 flashArgs.extend(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
357 [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
358 "0x0",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
359 firmware,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
360 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
361 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
362 dlg = EricProcessDialog(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
363 self.tr("'esptool write_flash' Output"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
364 self.tr("Restore Firmware"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
365 showProgress=True,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
366 )
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
367 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), flashArgs)
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
368 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7595
diff changeset
369 dlg.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
370
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
371 @pyqtSlot()
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
372 def __showFirmwareVersions(self):
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
373 """
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
374 Private slot to show the firmware version of the connected device and the
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
375 available firmware version.
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
376 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
377 if self.hasCircuitPython():
9870
0399d3607829 Fixed a few code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9868
diff changeset
378 self.__cpyDevice.showCircuitPythonVersions()
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
379
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
380 if self.microPython.isConnected():
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
381 if self._deviceData["mpy_name"] == "micropython":
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
382 url = QUrl(FirmwareGithubUrls["micropython"])
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
383 elif self._deviceData["mpy_name"] == "circuitpython":
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
384 url = QUrl(FirmwareGithubUrls["circuitpython"])
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
385 else:
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
386 EricMessageBox.critical(
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
387 None,
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
388 self.tr("Show MicroPython Versions"),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
389 self.tr(
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
390 """The firmware of the connected device cannot be"""
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
391 """ determined or the board does not run MicroPython"""
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
392 """ or CircuitPython. Aborting..."""
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
393 ),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
394 )
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
395 return
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
396
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
397 ui = ericApp().getObject("UserInterface")
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
398 request = QNetworkRequest(url)
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
399 reply = ui.networkAccessManager().head(request)
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
400 reply.finished.connect(lambda: self.__firmwareVersionResponse(reply))
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
401
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
402 @pyqtSlot(QNetworkReply)
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
403 def __firmwareVersionResponse(self, reply):
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
404 """
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
405 Private slot handling the response of the latest version request.
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
406
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
407 @param reply reference to the reply object
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
408 @type QNetworkReply
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
409 """
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
410 latestUrl = reply.url().toString()
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
411 tag = latestUrl.rsplit("/", 1)[-1]
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
412 while tag and not tag[0].isdecimal():
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
413 # get rid of leading non-decimal characters
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
414 tag = tag[1:]
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
415 latestVersion = Globals.versionToTuple(tag)
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
416
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
417 if self._deviceData["mpy_version"] == "unknown":
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
418 currentVersionStr = self.tr("unknown")
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
419 currentVersion = (0, 0, 0)
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
420 else:
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
421 currentVersionStr = self._deviceData["mpy_version"]
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
422 currentVersion = Globals.versionToTuple(currentVersionStr)
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
423
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
424 if self._deviceData["mpy_name"] == "circuitpython":
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
425 kind = "CircuitPython"
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
426 elif self._deviceData["mpy_name"] == "micropython":
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
427 kind = "MicroPython"
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
428
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
429 msg = self.tr(
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
430 "<h4>{0} Version Information</h4>"
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
431 "<table>"
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
432 "<tr><td>Installed:</td><td>{1}</td></tr>"
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
433 "<tr><td>Available:</td><td>{2}</td></tr>"
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
434 "</table>"
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
435 ).format(kind, currentVersionStr, tag)
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
436 if currentVersion < latestVersion:
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
437 msg += self.tr("<p><b>Update available!</b></p>")
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
438
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
439 EricMessageBox.information(
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
440 None,
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
441 self.tr("{0} Version").format(kind),
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
442 msg,
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
443 )
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
444
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
445 @pyqtSlot()
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
446 def __showChipID(self):
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
447 """
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
448 Private slot to show the ID of the ESP chip.
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
449 """
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
450 args = [
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
451 "-u",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
452 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
453 "esptool",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
454 "--port",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
455 self.microPython.getCurrentPort(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
456 "chip_id",
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
457 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
458 dlg = EricProcessDialog(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
459 self.tr("'esptool chip_id' Output"), self.tr("Show Chip ID")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
460 )
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
461 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), args)
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
462 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7595
diff changeset
463 dlg.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
464
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
465 @pyqtSlot()
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
466 def __showFlashID(self):
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
467 """
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
468 Private slot to show the ID of the ESP flash chip.
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
469 """
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
470 args = [
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
471 "-u",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
472 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
473 "esptool",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
474 "--port",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
475 self.microPython.getCurrentPort(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
476 "flash_id",
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
477 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
478 dlg = EricProcessDialog(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
479 self.tr("'esptool flash_id' Output"), self.tr("Show Flash ID")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
480 )
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
481 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), args)
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
482 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7595
diff changeset
483 dlg.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
484
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
485 @pyqtSlot()
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
486 def __showMACAddress(self):
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
487 """
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
488 Private slot to show the MAC address of the ESP chip.
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
489 """
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
490 args = [
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
491 "-u",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
492 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
493 "esptool",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
494 "--port",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
495 self.microPython.getCurrentPort(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
496 "read_mac",
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
497 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
498 dlg = EricProcessDialog(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
499 self.tr("'esptool read_mac' Output"), self.tr("Show MAC Address")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
500 )
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
501 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), args)
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
502 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7595
diff changeset
503 dlg.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
504
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
505 @pyqtSlot()
7174
de8175253dfc MicroPython: did some fine tuning of the MicroPython interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7173
diff changeset
506 def __resetDevice(self):
de8175253dfc MicroPython: did some fine tuning of the MicroPython interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7173
diff changeset
507 """
de8175253dfc MicroPython: did some fine tuning of the MicroPython interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7173
diff changeset
508 Private slot to reset the connected device.
de8175253dfc MicroPython: did some fine tuning of the MicroPython interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7173
diff changeset
509 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
510 if self.microPython.isConnected() and not self.hasCircuitPython():
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
511 self.executeCommands(
9834
1fdaebde6316 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
512 "import machine\nmachine.reset()\n", mode=self._submitMode
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
513 )
7353
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
514 else:
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
515 # perform a reset via esptool using flash_id command ignoring
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
516 # the output
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
517 args = [
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
518 "-u",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
519 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
520 "esptool",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
521 "--port",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
522 self.microPython.getCurrentPort(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
523 "flash_id",
7353
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
524 ]
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
525 proc = QProcess()
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
526 proc.start(PythonUtilities.getPythonExecutable(), args)
7353
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
527 procStarted = proc.waitForStarted(10000)
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
528 if procStarted:
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
529 proc.waitForFinished(10000)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
530
7174
de8175253dfc MicroPython: did some fine tuning of the MicroPython interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7173
diff changeset
531 @pyqtSlot()
7108
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
532 def __installEspTool(self):
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
533 """
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
534 Private slot to install the esptool package via pip.
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
535 """
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
536 pip = ericApp().getObject("Pip")
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
537 pip.installPackages(
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
538 ["esptool"], interpreter=PythonUtilities.getPythonExecutable()
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
539 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
540
7161
728018c32b09 MicroPythonWidget: added actions to show the device documentation and to open the configuration page to the hamburger menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
541 def getDocumentationUrl(self):
728018c32b09 MicroPythonWidget: added actions to show the device documentation and to open the configuration page to the hamburger menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
542 """
728018c32b09 MicroPythonWidget: added actions to show the device documentation and to open the configuration page to the hamburger menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
543 Public method to get the device documentation URL.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
544
7161
728018c32b09 MicroPythonWidget: added actions to show the device documentation and to open the configuration page to the hamburger menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
545 @return documentation URL of the device
728018c32b09 MicroPythonWidget: added actions to show the device documentation and to open the configuration page to the hamburger menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
546 @rtype str
728018c32b09 MicroPythonWidget: added actions to show the device documentation and to open the configuration page to the hamburger menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
547 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
548 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
549 return self.__cpyDevice.getDocumentationUrl()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
550
7161
728018c32b09 MicroPythonWidget: added actions to show the device documentation and to open the configuration page to the hamburger menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
551 return Preferences.getMicroPython("MicroPythonDocuUrl")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
552
7328
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
553 def getFirmwareUrl(self):
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
554 """
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
555 Public method to get the device firmware download URL.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
556
7328
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
557 @return firmware download URL of the device
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
558 @rtype str
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
559 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
560 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
561 return self.__cpyDevice.getFirmwareUrl()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
562
7328
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
563 return Preferences.getMicroPython("MicroPythonFirmwareUrl")
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
564
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
565 ##################################################################
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
566 ## time related methods below
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
567 ##################################################################
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
568
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
569 def _getSetTimeCode(self):
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
570 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
571 Protected method to get the device code to set the time.
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
572
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
573 Note: This method must be implemented in the various device specific
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
574 subclasses.
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
575
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
576 @return code to be executed on the connected device to set the time
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
577 @rtype str
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
578 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
579 # rtc_time[0] - year 4 digit
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
580 # rtc_time[1] - month 1..12
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
581 # rtc_time[2] - day 1..31
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
582 # rtc_time[3] - weekday 1..7 1=Monday
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
583 # rtc_time[4] - hour 0..23
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
584 # rtc_time[5] - minute 0..59
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
585 # rtc_time[6] - second 0..59
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
586 # rtc_time[7] - yearday 1..366
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
587 # rtc_time[8] - isdst 0, 1, or -1
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
588
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
589 # The machine.RTC.init() (ESP32) and machine.rtc.datetime() (ESP8266) functions
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
590 # take the arguments in the order:
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
591 # (year, month, day, weekday, hour, minute, second, subseconds)
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
592 # __IGNORE_WARNING_M891__
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
593 # https://docs.micropython.org/en/latest/library/machine.RTC.html#machine-rtc
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
594 #
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
595 # LoBo variant of MPy deviates.
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
596 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
597 return super()._getSetTimeCode()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
598
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
599 return """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
600 def set_time(rtc_time):
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
601 import machine
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
602 rtc = machine.RTC()
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
603 try:
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
604 rtc.datetime(rtc_time[:7] + (0,))
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
605 except Exception:
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
606 import os
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
607 if 'LoBo' in os.uname()[0]:
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
608 clock_time = rtc_time[:3] + rtc_time[4:7] + (rtc_time[3], rtc_time[7])
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
609 else:
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
610 clock_time = rtc_time[:7] + (0,)
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
611 rtc.init(clock_time)
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
612 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
613
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
614 ##################################################################
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
615 ## Methods below implement WiFi related methods
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
616 ##################################################################
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
617
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
618 def addDeviceWifiEntries(self, menu):
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
619 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
620 Public method to add device specific entries to the given menu.
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
621
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
622 @param menu reference to the context menu
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
623 @type QMenu
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
624 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
625 if not self.hasCircuitPython():
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
626 menu.addSeparator()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
627 menu.addAction(self.tr("Set Country"), self.__setCountry)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
628 menu.addAction(self.tr("Reset Country"), self.__resetCountry)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
629
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
630 def hasWifi(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
631 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
632 Public method to check the availability of WiFi.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
633
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
634 @return tuple containing a flag indicating the availability of WiFi
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
635 and the WiFi type (esp32)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
636 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
637 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
638 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
639 self.__createCpyDevice()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
640 return self.__cpyDevice.hasWifi()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
641
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
642 return True, "esp32"
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
643
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
644 def hasWifiCountry(self):
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
645 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
646 Public method to check, if the device has support to set the WiFi country.
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
647
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
648 @return flag indicating the support of WiFi country
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
649 @rtype bool
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
650 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
651 return True
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
652
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
653 def getWifiData(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
654 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
655 Public method to get data related to the current WiFi status.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
656
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
657 @return tuple of three dictionaries containing the WiFi status data
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
658 for the WiFi client, access point and overall data
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
659 @rtype tuple of (dict, dict, dict)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
660 @exception OSError raised to indicate an issue with the device
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
661 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
662 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
663 return self.__cpyDevice.getWifiData()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
664
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
665 command = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
666 def wifi_status():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
667 import ubinascii
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
668 import ujson
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
669 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
670
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
671 wifi = network.WLAN(network.STA_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
672 station = {
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
673 'active': wifi.active(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
674 'connected': wifi.isconnected(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
675 'status': wifi.status(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
676 'ifconfig': wifi.ifconfig(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
677 'mac': ubinascii.hexlify(wifi.config('mac'), ':').decode(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
678 }
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
679 if wifi.active():
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
680 try:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
681 station['txpower'] = wifi.config('txpower')
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
682 except ValueError:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
683 pass
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
684 print(ujson.dumps(station))
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
685
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
686 wifi = network.WLAN(network.AP_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
687 ap = {
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
688 'active': wifi.active(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
689 'connected': wifi.isconnected(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
690 'status': wifi.status(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
691 'ifconfig': wifi.ifconfig(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
692 'mac': ubinascii.hexlify(wifi.config('mac'), ':').decode(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
693 'channel': wifi.config('channel'),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
694 'essid': wifi.config('essid'),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
695 }
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
696 if wifi.active():
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
697 try:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
698 ap['txpower'] = wifi.config('txpower')
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
699 except ValueError:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
700 pass
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
701 print(ujson.dumps(ap))
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
702
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
703 overall = {
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
704 'active': station['active'] or ap['active']
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
705 }
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
706 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
707 overall['hostname'] = network.hostname()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
708 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
709 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
710 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
711 overall['country'] = network.country()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
712 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
713 pass
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
714 print(ujson.dumps(overall))
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
715
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
716 wifi_status()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
717 del wifi_status
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
718 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
719
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
720 out, err = self.executeCommands(command, mode=self._submitMode)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
721 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
722 raise OSError(self._shortError(err))
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
723
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
724 stationStr, apStr, overallStr = out.decode("utf-8").splitlines()
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
725 station = json.loads(stationStr)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
726 ap = json.loads(apStr)
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
727 overall = json.loads(overallStr)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
728 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
729 station["status"] = self.__statusTranslations[station["status"]]
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
730 except KeyError:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
731 station["status"] = str(station["status"])
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
732 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
733 ap["status"] = self.__statusTranslations[ap["status"]]
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
734 except KeyError:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
735 ap["status"] = str(ap["status"])
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
736 return station, ap, overall
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
737
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
738 def connectWifi(self, ssid, password, hostname):
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
739 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
740 Public method to connect a device to a WiFi network.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
741
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
742 @param ssid name (SSID) of the WiFi network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
743 @type str
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
744 @param password password needed to connect
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
745 @type str
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
746 @param hostname host name of the device
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
747 @type str
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
748 @return tuple containing the connection status and an error string
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
749 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
750 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
751 if self.hasCircuitPython():
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
752 return self.__cpyDevice.connectWifi(ssid, password, hostname)
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
753
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
754 command = """
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
755 def connect_wifi(ssid, password, hostname):
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
756 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
757 import ujson
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
758 from time import sleep
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
759
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
760 if hostname:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
761 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
762 network.hostname(hostname)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
763 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
764 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
765
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
766 wifi = network.WLAN(network.STA_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
767 wifi.active(False)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
768 wifi.active(True)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
769 wifi.connect(ssid, password)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
770 max_wait = 140
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
771 while max_wait and wifi.status() == network.STAT_CONNECTING:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
772 max_wait -= 1
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
773 sleep(0.1)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
774 status = wifi.status()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
775 print(ujson.dumps({{'connected': wifi.isconnected(), 'status': status}}))
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
776
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
777 connect_wifi({0}, {1}, {2})
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
778 del connect_wifi
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
779 """.format(
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
780 repr(ssid),
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
781 repr(password if password else ""),
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
782 repr(hostname),
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
783 )
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
784
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
785 with EricOverrideCursor():
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
786 out, err = self.executeCommands(
9827
21803aa6c3e2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
787 command, mode=self._submitMode, timeout=15000
9799
a79430a8811d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9798
diff changeset
788 )
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
789 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
790 return False, err
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
791
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
792 result = json.loads(out.decode("utf-8").strip())
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
793 if result["connected"]:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
794 error = ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
795 else:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
796 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
797 error = self.__statusTranslations[result["status"]]
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
798 except KeyError:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
799 error = str(result["status"])
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
800
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
801 return result["connected"], error
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
802
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
803 def disconnectWifi(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
804 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
805 Public method to disconnect a device from the WiFi network.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
806
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
807 @return tuple containing a flag indicating success and an error string
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
808 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
809 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
810 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
811 return self.__cpyDevice.disconnectWifi()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
812
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
813 command = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
814 def disconnect_wifi():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
815 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
816 from time import sleep
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
817
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
818 wifi = network.WLAN(network.STA_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
819 wifi.disconnect()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
820 wifi.active(False)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
821 sleep(0.1)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
822 print(not wifi.isconnected())
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
823
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
824 disconnect_wifi()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
825 del disconnect_wifi
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
826 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
827
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
828 out, err = self.executeCommands(command, mode=self._submitMode)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
829 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
830 return False, err
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
831
10144
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
832 return out.decode("utf-8").strip() == "True", ""
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
833
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
834 def isWifiClientConnected(self):
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
835 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
836 Public method to check the WiFi connection status as client.
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
837
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
838 @return flag indicating the WiFi connection status
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
839 @rtype bool
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
840 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
841 if self.hasCircuitPython():
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
842 return self.__cpyDevice.isWifiClientConnected()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
843
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
844 command = """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
845 def wifi_connected():
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
846 import network
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
847
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
848 wifi = network.WLAN(network.STA_IF)
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
849 print(wifi.isconnected())
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
850
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
851 wifi_connected()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
852 del wifi_connected
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
853 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
854
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
855 out, err = self.executeCommands(command, mode=self._submitMode)
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
856 if err:
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
857 return False
10138
56614cf9d03c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
858
10144
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
859 return out.strip() == b"True"
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
860
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
861 def isWifiApConnected(self):
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
862 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
863 Public method to check the WiFi connection status as access point.
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
864
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
865 @return flag indicating the WiFi connection status
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
866 @rtype bool
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
867 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
868 if self.hasCircuitPython():
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
869 return self.__cpyDevice.isWifiApConnected()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
870
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
871 command = """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
872 def wifi_connected():
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
873 import network
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
874
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
875 wifi = network.WLAN(network.AP_IF)
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
876 print(wifi.isconnected())
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
877
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
878 wifi_connected()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
879 del wifi_connected
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
880 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
881
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
882 out, err = self.executeCommands(command, mode=self._submitMode)
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
883 if err:
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
884 return False
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
885
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
886 return out.strip() == b"True"
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
887
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
888 def writeCredentials(self, ssid, password, hostname, country):
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
889 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
890 Public method to write the given credentials to the connected device and modify
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
891 the start script to connect automatically.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
892
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
893 @param ssid SSID of the network to connect to
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
894 @type str
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
895 @param password password needed to authenticate
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
896 @type str
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
897 @param hostname host name of the device
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
898 @type str
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
899 @param country WiFi country code
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
900 @type str
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
901 @return tuple containing a flag indicating success and an error message
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
902 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
903 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
904 if self.hasCircuitPython():
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
905 return self.__cpyDevice.writeCredentials(ssid, password, hostname)
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
906
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
907 nvsCommand = """
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
908 def save_wifi_creds(ssid, password, hostname, country):
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
909 import esp32
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
910
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
911 nvs = esp32.NVS('wifi_creds')
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
912 nvs.set_blob('ssid', ssid)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
913 nvs.set_blob('password', password)
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
914 nvs.set_blob('hostname', hostname)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
915 nvs.set_blob('country', country)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
916 nvs.commit()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
917
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
918 save_wifi_creds({0}, {1}, {2}, {3})
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
919 del save_wifi_creds
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
920 """.format(
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
921 repr(ssid),
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
922 repr(password) if password else "''",
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
923 repr(hostname) if hostname else "''",
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
924 repr(country.upper()) if country else "''",
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
925 )
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
926 bootCommand = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
927 def modify_boot():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
928 add = True
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
929 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
930 with open('/boot.py', 'r') as f:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
931 for ln in f.readlines():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
932 if 'wifi_connect' in ln:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
933 add = False
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
934 break
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
935 except:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
936 pass
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
937 if add:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
938 with open('/boot.py', 'a') as f:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
939 f.write('\\nimport wifi_connect\\n')
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
940 print(True)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
941
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
942 modify_boot()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
943 del modify_boot
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
944 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
945
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
946 out, err = self.executeCommands(nvsCommand, mode=self._submitMode)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
947 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
948 return False, self.tr("Error saving credentials: {0}").format(err)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
949
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
950 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
951 # copy auto-connect file
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
952 self.put(
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
953 os.path.join(
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
954 os.path.dirname(__file__), "MCUScripts", "esp32WiFiConnect.py"
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
955 ),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
956 "/wifi_connect.py",
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
957 )
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
958 except OSError as err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
959 return False, self.tr("Error saving auto-connect script: {0}").format(err)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
960
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
961 out, err = self.executeCommands(bootCommand, mode=self._submitMode)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
962 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
963 return False, self.tr("Error modifying 'boot.py': {0}").format(err)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
964
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
965 return True, ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
966
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
967 def removeCredentials(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
968 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
969 Public method to remove the saved credentials from the connected device.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
970
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
971 @return tuple containing a flag indicating success and an error message
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
972 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
973 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
974 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
975 return self.__cpyDevice.removeCredentials()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
976
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
977 nvsCommand = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
978 def delete_wifi_creds():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
979 import esp32
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
980
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
981 nvs = esp32.NVS('wifi_creds')
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
982 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
983 nvs.erase_key('ssid')
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
984 nvs.erase_key('password')
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
985 nvs.commit()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
986 except OSError:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
987 pass
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
988
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
989 delete_wifi_creds()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
990 del delete_wifi_creds
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
991 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
992
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
993 out, err = self.executeCommands(nvsCommand, mode=self._submitMode)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
994 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
995 return False, self.tr("Error deleting credentials: {0}").format(err)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
996
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
997 return True, ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
998
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
999 def checkInternet(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1000 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1001 Public method to check, if the internet can be reached.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1002
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1003 @return tuple containing a flag indicating reachability and an error string
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1004 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1005 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1006 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1007 return self.__cpyDevice.checkInternet()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1008
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1009 command = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1010 def check_internet():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1011 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1012 import socket
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1013
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1014 wifi = network.WLAN(network.STA_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1015 if wifi.isconnected():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1016 s = socket.socket()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1017 try:
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
1018 s.connect(socket.getaddrinfo('quad9.net', 80)[0][-1])
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1019 s.close()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1020 print(True)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1021 except:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1022 print(False)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1023 else:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1024 print(False)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1025
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1026 check_internet()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1027 del check_internet
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1028 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1029
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1030 out, err = self.executeCommands(command, mode=self._submitMode)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1031 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1032 return False, err
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1033
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1034 return out.decode("utf-8").strip() == "True", ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1035
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1036 def scanNetworks(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1037 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1038 Public method to scan for available WiFi networks.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1039
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1040 @return tuple containing the list of available networks as a tuple of 'Name',
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1041 'MAC-Address', 'channel', 'RSSI' and 'security' and an error string
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1042 @rtype tuple of (list of tuple of (str, str, int, int, str), str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1043 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1044 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1045 return self.__cpyDevice.scanNetworks()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1046
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1047 command = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1048 def scan_networks():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1049 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1050
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1051 wifi = network.WLAN(network.STA_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1052 active = wifi.active()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1053 if not active:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1054 wifi.active(True)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1055 network_list = wifi.scan()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1056 if not active:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1057 wifi.active(False)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1058 print(network_list)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1059
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1060 scan_networks()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1061 del scan_networks
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1062 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1063
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1064 out, err = self.executeCommands(command, mode=self._submitMode, timeout=15000)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1065 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1066 return [], err
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1067
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1068 networksList = ast.literal_eval(out.decode("utf-8"))
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1069 networks = []
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1070 for network in networksList:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1071 if network[0]:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1072 ssid = network[0].decode("utf-8")
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1073 mac = binascii.hexlify(network[1], ":").decode("utf-8")
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1074 channel = network[2]
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1075 rssi = network[3]
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1076 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1077 security = self.__securityTranslations[network[4]]
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1078 except KeyError:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1079 security = self.tr("unknown ({0})").format(network[4])
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1080 networks.append((ssid, mac, channel, rssi, security))
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1081
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1082 return networks, ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1083
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1084 def deactivateInterface(self, interface):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1085 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1086 Public method to deactivate a given WiFi interface of the connected device.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1087
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1088 @param interface designation of the interface to be deactivated (one of 'AP'
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1089 or 'STA')
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1090 @type str
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1091 @return tuple containg a flag indicating success and an error message
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1092 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1093 @exception ValueError raised to indicate a wrong value for the interface type
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1094 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1095 if interface not in ("STA", "AP"):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1096 raise ValueError(
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1097 "interface must be 'AP' or 'STA', got '{0}'".format(interface)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1098 )
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1099
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1100 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1101 return self.__cpyDevice.deactivateInterface(interface)
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1102
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1103 command = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1104 def deactivate():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1105 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1106 from time import sleep
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1107
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1108 wifi = network.WLAN(network.{0}_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1109 wifi.active(False)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1110 sleep(0.1)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1111 print(not wifi.active())
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1112
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1113 deactivate()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1114 del deactivate
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1115 """.format(
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
1116 interface
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
1117 )
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1118
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1119 out, err = self.executeCommands(command, mode=self._submitMode)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1120 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1121 return False, err
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1122 else:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1123 return out.decode("utf-8").strip() == "True", ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1124
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1125 def startAccessPoint(
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1126 self,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1127 ssid,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1128 security=None,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1129 password=None,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1130 hostname=None,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1131 ifconfig=None,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1132 ):
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1133 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1134 Public method to start the access point interface.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1135
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1136 @param ssid SSID of the access point
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1137 @type str
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1138 @param security security method (defaults to None)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1139 @type int (optional)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1140 @param password password (defaults to None)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1141 @type str (optional)
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1142 @param hostname host name of the device (defaults to None)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1143 @type str (optional)
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
1144 @param ifconfig IPv4 configuration for the access point if not default
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
1145 (IPv4 address, netmask, gateway address, DNS server address)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
1146 @type tuple of (str, str, str, str)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1147 @return tuple containing a flag indicating success and an error message
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1148 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1149 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1150 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1151 return self.__cpyDevice.startAccessPoint(
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1152 ssid,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1153 security=security,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1154 password=password,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1155 hostname=hostname,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1156 ifconfig=ifconfig,
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1157 )
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1158
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1159 if security is None or password is None:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1160 security = 0
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1161 password = ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1162 if security > 4:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1163 security = 4 # security >4 cause an error thrown by the ESP32
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1164
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1165 command = """
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1166 def start_ap(ssid, authmode, password, hostname, ifconfig):
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1167 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1168
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1169 if hostname:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1170 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1171 network.hostname(hostname)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1172 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1173 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1174
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1175 ap = network.WLAN(network.AP_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1176 ap.active(False)
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
1177 if ifconfig:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
1178 ap.ifconfig(ifconfig)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1179 ap.active(True)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1180 try:
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
1181 ap.config(ssid=ssid, authmode=authmode, password=password)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1182 except:
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
1183 ap.config(essid=ssid, authmode=authmode, password=password)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1184
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1185 start_ap({0}, {1}, {2}, {3}, {4})
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1186 del start_ap
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1187 """.format(
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1188 repr(ssid), security, repr(password), repr(hostname), ifconfig
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
1189 )
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1190
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1191 out, err = self.executeCommands(command, mode=self._submitMode, timeout=15000)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1192 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1193 return False, err
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1194 else:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1195 return True, ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1196
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1197 def stopAccessPoint(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1198 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1199 Public method to stop the access point interface.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1200
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1201 @return tuple containg a flag indicating success and an error message
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1202 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1203 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1204 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1205 return self.__cpyDevice.stopAccessPoint()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1206
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1207 return self.deactivateInterface("AP")
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1208
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1209 def getConnectedClients(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1210 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1211 Public method to get a list of connected clients.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1212
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1213 @return a tuple containing a list of tuples containing the client MAC-Address
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1214 and the RSSI (if supported and available) and an error message
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1215 @rtype tuple of ([(bytes, int)], str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1216 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1217 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1218 return self.__cpyDevice.getConnectedClients()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1219
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1220 command = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1221 def get_stations():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1222 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1223
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1224 ap = network.WLAN(network.AP_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1225 stations = ap.status('stations')
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1226 print(stations)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1227
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1228 get_stations()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1229 del get_stations
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1230 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1231
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1232 out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1233 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1234 return [], err
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1235
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1236 clientsList = ast.literal_eval(out.decode("utf-8"))
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1237 return clientsList, ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1238
10022
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1239 def enableWebrepl(self, password):
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1240 """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1241 Public method to write the given WebREPL password to the connected device and
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1242 modify the start script to start the WebREPL server.
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1243
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1244 @param password password needed to authenticate
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1245 @type str
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1246 @return tuple containing a flag indicating success and an error message
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1247 @rtype tuple of (bool, str)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1248 """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1249 command = """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1250 def modify_boot():
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1251 import os
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1252
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1253 try:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1254 with open('/boot.py', 'r') as old_f, open('/boot.py.tmp', 'w') as new_f:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1255 found = False
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1256 for l in old_f.read().splitlines():
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1257 if 'webrepl' in l:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1258 found = True
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1259 if l.startswith('#'):
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1260 l = l[1:]
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1261 new_f.write(l + '\\n')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1262 if not found:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1263 new_f.write('\\nimport webrepl\\nwebrepl.start()\\n')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1264
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1265 os.remove('/boot.py')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1266 os.rename('/boot.py.tmp', '/boot.py')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1267 except:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1268 pass
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1269
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1270 print(True)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1271
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1272 modify_boot()
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1273 del modify_boot
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1274 """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1275
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1276 try:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1277 # write config file
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1278 config = "PASS = {0}\n".format(repr(password))
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1279 self.putData("/webrepl_cfg.py", config.encode("utf-8"))
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1280 except OSError as err:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1281 return False, str(err)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1282
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1283 # modify boot.py
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1284 out, err = self.executeCommands(command, mode=self._submitMode)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1285 if err:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1286 return False, err
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1287
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1288 return out.decode("utf-8").strip() == "True", ""
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1289
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1290 def disableWebrepl(self):
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1291 """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1292 Public method to write the given WebREPL password to the connected device and
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1293 modify the start script to start the WebREPL server.
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1294
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1295 @return tuple containing a flag indicating success and an error message
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1296 @rtype tuple of (bool, str)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1297 """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1298 command = """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1299 def modify_boot():
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1300 import os
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1301
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1302 try:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1303 with open('/boot.py', 'r') as old_f, open('/boot.py.tmp', 'w') as new_f:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1304 for l in old_f.read().splitlines():
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1305 if 'webrepl' in l:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1306 if not l.startswith('#'):
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1307 l = '#' + l
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1308 new_f.write(l + '\\n')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1309
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1310 os.remove('/boot.py')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1311 os.rename('/boot.py.tmp', '/boot.py')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1312 except:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1313 pass
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1314
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1315 print(True)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1316
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1317 modify_boot()
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1318 del modify_boot
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1319 """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1320
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1321 # modify boot.py
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1322 out, err = self.executeCommands(command, mode=self._submitMode)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1323 if err:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1324 return False, err
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1325
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1326 return out.decode("utf-8").strip() == "True", ""
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1327
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1328 @pyqtSlot()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1329 def __setCountry(self):
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1330 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1331 Private slot to configure the country of the connected ESP32 device.
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1332
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1333 The country is the two-letter ISO 3166-1 Alpha-2 country code.
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1334 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1335 from ..WifiDialogs.WifiCountryDialog import WifiCountryDialog
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1336
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1337 dlg = WifiCountryDialog()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1338 if dlg.exec() == QDialog.DialogCode.Accepted:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1339 country, remember = dlg.getCountry()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1340 if remember:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1341 Preferences.setMicroPython("WifiCountry", country)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1342
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1343 command = """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1344 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1345 import network
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1346 network.country({0})
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1347 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1348 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1349 """.format(
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1350 repr(country)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1351 )
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1352
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1353 out, err = self.executeCommands(command, mode=self._submitMode)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1354 if err:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1355 self.microPython.showError("country()", err)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1356
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1357 @pyqtSlot()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1358 def __resetCountry(self):
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1359 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1360 Private slot to reset the country of the connected ESP32 device.
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1361
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1362 The country is the two-letter ISO 3166-1 Alpha-2 country code. This method
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1363 resets it to the default code 'XX' representing the "worldwide" region.
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1364 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1365 command = """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1366 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1367 import network
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1368 network.country('XX')
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1369 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1370 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1371 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1372
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1373 out, err = self.executeCommands(command, mode=self._submitMode)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1374 if err:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1375 self.microPython.showError("country()", err)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1376
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1377 ##################################################################
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1378 ## Methods below implement Bluetooth related methods
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1379 ##################################################################
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1380
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1381 def hasBluetooth(self):
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1382 """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1383 Public method to check the availability of Bluetooth.
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1384
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1385 @return flag indicating the availability of Bluetooth
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1386 @rtype bool
9857
0122ae72618d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9855
diff changeset
1387 @exception OSError raised to indicate an issue with the device
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1388 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1389 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1390 self.__createCpyDevice()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1391 return self.__cpyDevice.hasBluetooth()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1392
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1393 command = """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1394 def has_bt():
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1395 try:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1396 import bluetooth
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1397 if hasattr(bluetooth, 'BLE'):
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1398 return True
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1399 except ImportError:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1400 pass
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1401
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1402 return False
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1403
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1404 print(has_bt())
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1405 del has_bt
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1406 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1407 out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000)
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1408 if err:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1409 raise OSError(self._shortError(err))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1410 return out.strip() == b"True"
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1411
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1412 def getBluetoothStatus(self):
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1413 """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1414 Public method to get Bluetooth status data of the connected board.
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1415
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1416 @return list of tuples containing the translated status data label and
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1417 the associated value
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1418 @rtype list of tuples of (str, str)
9857
0122ae72618d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9855
diff changeset
1419 @exception OSError raised to indicate an issue with the device
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1420 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1421 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1422 return self.__cpyDevice.getBluetoothStatus()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1423
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1424 command = """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1425 def ble_status():
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1426 import bluetooth
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1427 import ubinascii
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1428 import ujson
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1429
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1430 ble = bluetooth.BLE()
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1431
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1432 ble_active = ble.active()
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1433 if not ble_active:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1434 ble.active(True)
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1435
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1436 res = {
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1437 'active': ble_active,
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1438 'mac': ubinascii.hexlify(ble.config('mac')[1], ':').decode(),
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1439 'addr_type': ble.config('mac')[0],
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1440 'name': ble.config('gap_name'),
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1441 'mtu': ble.config('mtu'),
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1442 }
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1443
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1444 if not ble_active:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1445 ble.active(False)
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1446
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1447 print(ujson.dumps(res))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1448
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1449 ble_status()
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1450 del ble_status
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1451 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1452 out, err = self.executeCommands(command, mode=self._submitMode)
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1453 if err:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1454 raise OSError(self._shortError(err))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1455
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1456 status = []
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1457 bleStatus = json.loads(out.decode("utf-8"))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1458 status.append((self.tr("Active"), self.bool2str(bleStatus["active"])))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1459 status.append((self.tr("Name"), bleStatus["name"]))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1460 status.append((self.tr("MAC-Address"), bleStatus["mac"]))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1461 status.append(
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1462 (
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1463 self.tr("Address Type"),
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1464 self.tr("Public") if bleStatus == 0 else self.tr("Random"),
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1465 )
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1466 )
9857
0122ae72618d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9855
diff changeset
1467 status.append((self.tr("MTU"), self.tr("{0} Bytes").format(bleStatus["mtu"])))
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1468
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1469 return status
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1470
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1471 def activateBluetoothInterface(self):
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1472 """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1473 Public method to activate the Bluetooth interface.
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1474
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1475 @return flag indicating the new state of the Bluetooth interface
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1476 @rtype bool
9857
0122ae72618d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9855
diff changeset
1477 @exception OSError raised to indicate an issue with the device
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1478 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1479 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1480 return self.__cpyDevice.activateBluetoothInterface()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1481
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1482 command = """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1483 def activate_ble():
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1484 import bluetooth
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1485
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1486 ble = bluetooth.BLE()
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1487 if not ble.active():
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1488 ble.active(True)
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1489 print(ble.active())
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1490
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1491 activate_ble()
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1492 del activate_ble
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1493 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1494 out, err = self.executeCommands(command, mode=self._submitMode)
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1495 if err:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1496 raise OSError(self._shortError(err))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1497
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1498 return out.strip() == b"True"
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1499
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1500 def deactivateBluetoothInterface(self):
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1501 """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1502 Public method to deactivate the Bluetooth interface.
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1503
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1504 @return flag indicating the new state of the Bluetooth interface
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1505 @rtype bool
9857
0122ae72618d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9855
diff changeset
1506 @exception OSError raised to indicate an issue with the device
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1507 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1508 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1509 return self.__cpyDevice.deactivateBluetoothInterface()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1510
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1511 command = """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1512 def deactivate_ble():
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1513 import bluetooth
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1514
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1515 ble = bluetooth.BLE()
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1516 if ble.active():
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1517 ble.active(False)
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1518 print(ble.active())
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1519
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1520 deactivate_ble()
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1521 del deactivate_ble
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1522 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1523 out, err = self.executeCommands(command, mode=self._submitMode)
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1524 if err:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1525 raise OSError(self._shortError(err))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1526
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1527 return out.strip() == b"True"
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1528
9859
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1529 def getDeviceScan(self, timeout=10):
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1530 """
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1531 Public method to perform a Bluetooth device scan.
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1532
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1533 @param timeout duration of the device scan in seconds (defaults
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1534 to 10)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1535 @type int (optional)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1536 @return tuple containing a dictionary with the scan results and
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1537 an error string
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1538 @rtype tuple of (dict, str)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1539 """
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1540 from ..BluetoothDialogs.BluetoothAdvertisement import BluetoothAdvertisement
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1541
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1542 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1543 return self.__cpyDevice.getDeviceScan(timeout)
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1544
9859
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1545 command = """
10032
102b79b2a8cd Finetuned the bluetooth scan function for various MicroPython boards.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10022
diff changeset
1546 _scan_done = False
102b79b2a8cd Finetuned the bluetooth scan function for various MicroPython boards.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10022
diff changeset
1547
9859
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1548 def ble_scan():
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1549 import bluetooth
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1550 import time
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1551 import ubinascii
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1552
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1553 IRQ_SCAN_RESULT = 5
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1554 IRQ_SCAN_DONE = 6
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1555
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1556 def _bleIrq(event, data):
10032
102b79b2a8cd Finetuned the bluetooth scan function for various MicroPython boards.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10022
diff changeset
1557 global _scan_done
9859
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1558 if event == IRQ_SCAN_RESULT:
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1559 addr_type, addr, adv_type, rssi, adv_data = data
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1560 if addr:
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1561 print({{
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1562 'address': ubinascii.hexlify(addr,':').decode('utf-8'),
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1563 'rssi': rssi,
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1564 'adv_type': adv_type,
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1565 'advertisement': bytes(adv_data),
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1566 }})
10032
102b79b2a8cd Finetuned the bluetooth scan function for various MicroPython boards.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10022
diff changeset
1567 elif event == IRQ_SCAN_DONE:
102b79b2a8cd Finetuned the bluetooth scan function for various MicroPython boards.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10022
diff changeset
1568 _scan_done = True
9859
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1569
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1570 ble = bluetooth.BLE()
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1571
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1572 ble_active = ble.active()
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1573 if not ble_active:
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1574 ble.active(True)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1575
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1576 ble.irq(_bleIrq)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1577 ble.gap_scan({0} * 1000, 1000000, 50000, True)
10032
102b79b2a8cd Finetuned the bluetooth scan function for various MicroPython boards.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10022
diff changeset
1578 while not _scan_done:
102b79b2a8cd Finetuned the bluetooth scan function for various MicroPython boards.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10022
diff changeset
1579 time.sleep(0.2)
9859
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1580
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1581 if not ble_active:
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1582 ble.active(False)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1583
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1584 ble_scan()
10032
102b79b2a8cd Finetuned the bluetooth scan function for various MicroPython boards.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10022
diff changeset
1585 del ble_scan, _scan_done
9859
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1586 """.format(
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1587 timeout
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1588 )
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1589 out, err = self.executeCommands(
9859
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1590 command, mode=self._submitMode, timeout=(timeout + 5) * 1000
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1591 )
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1592 if err:
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1593 return {}, err
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1594
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1595 scanResults = {}
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1596 for line in out.decode("utf-8").splitlines():
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1597 res = ast.literal_eval(line)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1598 address = res["address"]
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1599 if address not in scanResults:
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1600 scanResults[address] = BluetoothAdvertisement(address)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1601 scanResults[address].update(
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1602 res["adv_type"], res["rssi"], res["advertisement"]
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1603 )
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1604
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1605 return scanResults, ""
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1606
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1607 ##################################################################
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1608 ## Methods below implement NTP related methods
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1609 ##################################################################
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1610
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1611 def hasNetworkTime(self):
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1612 """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1613 Public method to check the availability of network time functions.
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1614
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1615 @return flag indicating the availability of network time functions
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1616 @rtype bool
9870
0399d3607829 Fixed a few code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9868
diff changeset
1617 @exception OSError raised to indicate an issue with the device
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1618 """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1619 if self.hasCircuitPython():
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1620 self.__createCpyDevice()
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1621 return self.__cpyDevice.hasNetworkTime()
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1622
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1623 command = """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1624 def has_ntp():
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1625 try:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1626 import ntptime
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1627 return True
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1628 except ImportError:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1629 return False
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1630
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1631 print(has_ntp())
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1632 del has_ntp
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1633 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1634 out, err = self.executeCommands(command, mode=self._submitMode)
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1635 if err:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1636 raise OSError(self._shortError(err))
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1637 return out.strip() == b"True"
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1638
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1639 def setNetworkTime(self, server="0.pool.ntp.org", tzOffset=0, timeout=10):
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1640 """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1641 Public method to set the time to the network time retrieved from an
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1642 NTP server.
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1643
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1644 @param server name of the NTP server to get the network time from
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1645 (defaults to "0.pool.ntp.org")
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1646 @type str (optional)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1647 @param tzOffset offset with respect to UTC (defaults to 0)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1648 @type int (optional)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1649 @param timeout maximum time to wait for a server response in seconds
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1650 (defaults to 10)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1651 @type int
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1652 @return tuple containing a flag indicating success and an error string
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1653 @rtype tuple of (bool, str)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1654 """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1655 if self.hasCircuitPython():
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1656 return self.__cpyDevice.setNetworkTime(
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1657 server=server, tzOffset=tzOffset, timeout=timeout
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1658 )
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1659
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1660 command = """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1661 def set_ntp_time(server, tz_offset, timeout):
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1662 import network
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1663 import ntptime
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1664 import machine
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1665
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1666 if not network.WLAN(network.STA_IF).isconnected():
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1667 return False
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1668
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1669 ntptime.host = server
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1670 ntptime.timeout = timeout
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1671 ntptime.settime()
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1672
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1673 rtc = machine.RTC()
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1674 t = list(rtc.datetime())
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1675 t[4] += tz_offset
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1676 rtc.datetime(t)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1677
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1678 return True
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1679
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1680 try:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1681 print({{
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1682 'result': set_ntp_time({0}, {1}, {2}),
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1683 'error': '',
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1684 }})
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1685 except Exception as err:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1686 print({{
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1687 'result': False,
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1688 'error': str(err),
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1689 }})
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1690 del set_ntp_time
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1691 """.format(
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1692 repr(server), tzOffset, timeout
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1693 )
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1694 out, err = self.executeCommands(
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1695 command, mode=self._submitMode, timeout=(timeout + 2) * 1000
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1696 )
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1697 if err:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1698 return False, err
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1699 else:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1700 res = ast.literal_eval(out.decode("utf-8"))
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1701 return res["result"], res["error"]
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1702
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1703
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10032
diff changeset
1704 def createDevice(
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10032
diff changeset
1705 microPythonWidget, deviceType, vid, pid, boardName, serialNumber # noqa: U100
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10032
diff changeset
1706 ):
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1707 """
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1708 Function to instantiate a MicroPython device object.
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1709
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1710 @param microPythonWidget reference to the main MicroPython widget
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1711 @type MicroPythonWidget
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1712 @param deviceType device type assigned to this device interface
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1713 @type str
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1714 @param vid vendor ID
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1715 @type int
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1716 @param pid product ID
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1717 @type int
9738
4ae976ee5339 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1718 @param boardName name of the board
4ae976ee5339 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1719 @type str
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
1720 @param serialNumber serial number of the board
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
1721 @type str
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1722 @return reference to the instantiated device object
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1723 @rtype EspDevice
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1724 """
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1725 return EspDevice(microPythonWidget, deviceType)
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1726
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1727
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1728 ################################################################################
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1729 ## Functions below implement flashing related functionality needed elsewhere ##
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1730 ## as well. ##
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1731 ################################################################################
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1732
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1733
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1734 @pyqtSlot()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1735 def eraseFlash(port):
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1736 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1737 Slot to erase the device flash memory.
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1738
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1739 @param port name of the serial port device to be used
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1740 @type str
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1741 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1742 ok = EricMessageBox.yesNo(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1743 None,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1744 QCoreApplication.translate("EspDevice", "Erase Flash"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1745 QCoreApplication.translate(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1746 "EspDevice", """Shall the flash of the selected device really be erased?"""
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1747 ),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1748 )
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1749 if ok:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1750 flashArgs = [
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1751 "-u",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1752 "-m",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1753 "esptool",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1754 "--port",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1755 port,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1756 "erase_flash",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1757 ]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1758 dlg = EricProcessDialog(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1759 QCoreApplication.translate("EspDevice", "'esptool erase_flash' Output"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1760 QCoreApplication.translate("EspDevice", "Erase Flash"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1761 showProgress=True,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1762 )
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1763 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), flashArgs)
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1764 if res:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1765 dlg.exec()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1766
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1767
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1768 @pyqtSlot()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1769 def flashPythonFirmware(port):
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1770 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1771 Slot to flash a MicroPython firmware to the device.
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1772
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1773 @param port name of the serial port device to be used
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1774 @type str
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1775 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1776 from .EspDialogs.EspFirmwareSelectionDialog import EspFirmwareSelectionDialog
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1777
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1778 dlg = EspFirmwareSelectionDialog()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1779 if dlg.exec() == QDialog.DialogCode.Accepted:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1780 chip, firmware, baudRate, flashMode, flashAddress = dlg.getData()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1781 flashArgs = [
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1782 "-u",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1783 "-m",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1784 "esptool",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1785 "--chip",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1786 chip,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1787 "--port",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1788 port,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1789 ]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1790 if baudRate != "115200":
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1791 flashArgs += ["--baud", baudRate]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1792 flashArgs.append("write_flash")
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1793 if flashMode:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1794 flashArgs += ["--flash_mode", flashMode]
9848
3d750b2e012c Corrected flashing of ESP 8266 devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
1795 if chip == "esp8266":
3d750b2e012c Corrected flashing of ESP 8266 devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
1796 # ESP 8266 seems to need flash size detection
3d750b2e012c Corrected flashing of ESP 8266 devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
1797 flashArgs += ["--flash_size", "detect"]
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1798 flashArgs += [
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1799 flashAddress,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1800 firmware,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1801 ]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1802 dlg = EricProcessDialog(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1803 QCoreApplication.translate("EspDevice", "'esptool write_flash' Output"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1804 QCoreApplication.translate("EspDevice", "Flash µPy/CPy Firmware"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1805 showProgress=True,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1806 )
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1807 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), flashArgs)
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1808 if res:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1809 dlg.exec()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1810
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1811
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1812 @pyqtSlot()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1813 def flashAddonFirmware(port):
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1814 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1815 Slot to flash some additional firmware images.
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1816
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1817 @param port name of the serial port device to be used
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1818 @type str
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1819 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1820 from .EspDialogs.EspFirmwareSelectionDialog import EspFirmwareSelectionDialog
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1821
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1822 dlg = EspFirmwareSelectionDialog(addon=True)
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1823 if dlg.exec() == QDialog.DialogCode.Accepted:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1824 chip, firmware, baudRate, flashMode, flashAddress = dlg.getData()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1825 flashArgs = [
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1826 "-u",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1827 "-m",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1828 "esptool",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1829 "--chip",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1830 chip,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1831 "--port",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1832 port,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1833 ]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1834 if baudRate != "115200":
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1835 flashArgs += ["--baud", baudRate]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1836 flashArgs.append("write_flash")
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1837 if flashMode:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1838 flashArgs += ["--flash_mode", flashMode]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1839 flashArgs += [
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1840 flashAddress.lower(),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1841 firmware,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1842 ]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1843 dlg = EricProcessDialog(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1844 QCoreApplication.translate("EspDevice", "'esptool write_flash' Output"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1845 QCoreApplication.translate("EspDevice", "Flash Additional Firmware"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1846 showProgress=True,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1847 )
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1848 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), flashArgs)
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1849 if res:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1850 dlg.exec()

eric ide

mercurial