src/eric7/MicroPython/Devices/EspDevices.py

Sun, 03 Nov 2024 17:50:34 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 03 Nov 2024 17:50:34 +0100
branch
eric7
changeset 11034
7b8a21fd2d58
parent 11006
a671918232f3
child 11038
918bc08e1f89
permissions
-rw-r--r--

Extended the EricMessageBox module to determine a parent widget if none was given and extended the EricApplication class to store a reference to the main widget.

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

eric ide

mercurial