src/eric7/MicroPython/Devices/EspDevices.py

Fri, 27 Sep 2024 17:27:11 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 27 Sep 2024 17:27:11 +0200
branch
eric7
changeset 10933
95a15b70f7bb
parent 10806
2f6df822e3b9
child 11005
b918c6c2736b
permissions
-rw-r--r--

Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.

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 """
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
267 eraseFlash(self.microPython.getCurrentPort())
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 """
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
274 flashPythonFirmware(self.microPython.getCurrentPort())
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 """
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
281 flashAddonFirmware(self.microPython.getCurrentPort())
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
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
292 dlg = EspBackupRestoreFirmwareDialog(backupMode=True)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8119
diff changeset
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"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
316 )
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
317 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), flashArgs)
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
318 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7595
diff changeset
319 dlg.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
320
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
321 @pyqtSlot()
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
322 def __restoreFlash(self):
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
323 """
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
324 Private slot to restore a previously saved firmware.
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
325 """
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9752
diff changeset
326 from .EspDialogs.EspBackupRestoreFirmwareDialog import (
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
327 EspBackupRestoreFirmwareDialog,
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9752
diff changeset
328 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
329
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
330 dlg = EspBackupRestoreFirmwareDialog(backupMode=False)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8119
diff changeset
331 if dlg.exec() == QDialog.DialogCode.Accepted:
8945
b6be65111565 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8924
diff changeset
332 chip, flashSize, baudRate, flashMode, firmware = dlg.getData()
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
333 flashArgs = [
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
334 "-u",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
335 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
336 "esptool",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
337 "--chip",
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 "--port",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
340 self.microPython.getCurrentPort(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
341 "--baud",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
342 baudRate,
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
343 "write_flash",
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
344 ]
8945
b6be65111565 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8924
diff changeset
345 if flashMode:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
346 flashArgs.extend(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
347 [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
348 "--flash_mode",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
349 flashMode,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
350 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
351 )
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
352 if bool(flashSize):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
353 flashArgs.extend(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
354 [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
355 "--flash_size",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
356 flashSize,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
357 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
358 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
359 flashArgs.extend(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
360 [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
361 "0x0",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
362 firmware,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
363 ]
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 dlg = EricProcessDialog(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
366 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
367 self.tr("Restore Firmware"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
368 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
369 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
370 encoding=Preferences.getSystem("IOEncoding"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
371 )
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
372 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), flashArgs)
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
373 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7595
diff changeset
374 dlg.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
375
7352
5f69f55b919f MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7346
diff changeset
376 @pyqtSlot()
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
377 def __showFirmwareVersions(self):
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
378 """
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
379 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
380 available firmware version.
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
381 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
382 if self.hasCircuitPython():
9870
0399d3607829 Fixed a few code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9868
diff changeset
383 self.__cpyDevice.showCircuitPythonVersions()
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
384
10329
a389b06170d2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10235
diff changeset
385 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
386 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
387 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
388 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
389 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
390 else:
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
391 EricMessageBox.critical(
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
392 None,
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
393 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
394 self.tr(
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
395 """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
396 """ 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
397 """ or CircuitPython. Aborting..."""
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
398 ),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
399 )
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
400 return
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
401
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
402 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
403 request = QNetworkRequest(url)
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
404 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
405 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
406
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
407 @pyqtSlot(QNetworkReply)
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
408 def __firmwareVersionResponse(self, reply):
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
409 """
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
410 Private slot handling the response of the latest version request.
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
411
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
412 @param reply reference to the reply object
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
413 @type QNetworkReply
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
414 """
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
415 latestUrl = reply.url().toString()
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
416 tag = latestUrl.rsplit("/", 1)[-1]
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
417 while tag and not tag[0].isdecimal():
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
418 # get rid of leading non-decimal characters
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
419 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
420 latestVersion = EricUtilities.versionToTuple(tag)
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
421
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
422 if self._deviceData["mpy_version"] == "unknown":
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
423 currentVersionStr = self.tr("unknown")
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
424 currentVersion = (0, 0, 0)
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
425 else:
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
426 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
427 currentVersion = EricUtilities.versionToTuple(currentVersionStr)
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
428
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
429 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
430 kind = "CircuitPython"
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
431 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
432 kind = "MicroPython"
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
433
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
434 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
435 "<h4>{0} Version Information</h4>"
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
436 "<table>"
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
437 "<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
438 "<tr><td>Available:</td><td>{2}</td></tr>"
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
439 "</table>"
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
440 ).format(kind, currentVersionStr, tag)
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
441 if currentVersion < latestVersion:
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
442 msg += self.tr("<p><b>Update available!</b></p>")
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
443
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
444 EricMessageBox.information(
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
445 None,
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
446 self.tr("{0} Version").format(kind),
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
447 msg,
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
448 )
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
449
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
450 @pyqtSlot()
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
451 def __showChipID(self):
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
452 """
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
453 Private slot to show the ID of the ESP chip.
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 args = [
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
456 "-u",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
457 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
458 "esptool",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
459 "--port",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
460 self.microPython.getCurrentPort(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
461 "chip_id",
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
462 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
463 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
464 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
465 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
466 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
467 encoding=Preferences.getSystem("IOEncoding"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
468 )
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
469 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), args)
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
470 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7595
diff changeset
471 dlg.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
472
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
473 @pyqtSlot()
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
474 def __showFlashID(self):
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
475 """
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
476 Private slot to show the ID of the ESP flash chip.
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
477 """
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
478 args = [
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
479 "-u",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
480 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
481 "esptool",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
482 "--port",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
483 self.microPython.getCurrentPort(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
484 "flash_id",
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
485 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
486 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
487 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
488 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
489 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
490 encoding=Preferences.getSystem("IOEncoding"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
491 )
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
492 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), args)
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
493 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7595
diff changeset
494 dlg.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
495
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
496 @pyqtSlot()
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
497 def __showMACAddress(self):
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
498 """
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
499 Private slot to show the MAC address of the ESP chip.
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
500 """
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
501 args = [
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
502 "-u",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
503 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
504 "esptool",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
505 "--port",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
506 self.microPython.getCurrentPort(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
507 "read_mac",
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
508 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
509 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
510 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
511 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
512 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
513 encoding=Preferences.getSystem("IOEncoding"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
514 )
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
515 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), args)
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
516 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7595
diff changeset
517 dlg.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
518
7346
9108d26211f7 MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7337
diff changeset
519 @pyqtSlot()
7174
de8175253dfc MicroPython: did some fine tuning of the MicroPython interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7173
diff changeset
520 def __resetDevice(self):
de8175253dfc MicroPython: did some fine tuning of the MicroPython interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7173
diff changeset
521 """
de8175253dfc MicroPython: did some fine tuning of the MicroPython interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7173
diff changeset
522 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
523 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
524 if self.microPython.isConnected() and not self.hasCircuitPython():
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
525 self.executeCommands(
9834
1fdaebde6316 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
526 "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
527 )
7353
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
528 else:
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
529 # 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
530 # the output
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
531 args = [
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
532 "-u",
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
533 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
534 "esptool",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
535 "--port",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
536 self.microPython.getCurrentPort(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
537 "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
538 ]
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
539 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
540 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
541 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
542 if procStarted:
caa2ccd5677c EspDevices: fixed an issue resetting the attached device when not connected.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7352
diff changeset
543 proc.waitForFinished(10000)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
544
7174
de8175253dfc MicroPython: did some fine tuning of the MicroPython interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7173
diff changeset
545 @pyqtSlot()
7108
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
546 def __installEspTool(self):
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
547 """
4f6133a01c6a Started rearranging menu structure and testing and fixing on CircuitPython.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7100
diff changeset
548 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
549 """
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
550 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
551 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
552 ["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
553 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
554
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
555 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
556 """
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
557 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
558
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
559 @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
560 @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
561 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
562 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
563 return self.__cpyDevice.getDocumentationUrl()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
564
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
565 return Preferences.getMicroPython("MicroPythonDocuUrl")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
566
7328
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
567 def getFirmwareUrl(self):
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
568 """
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
569 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
570
7328
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
571 @return firmware download URL of the device
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
572 @rtype str
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
573 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
574 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
575 return self.__cpyDevice.getFirmwareUrl()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
576
7328
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
577 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
578
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
579 ##################################################################
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
580 ## time related methods below
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
581 ##################################################################
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
582
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
583 def _getSetTimeCode(self):
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 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
586
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
587 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
588 subclasses.
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 @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
591 @rtype str
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
592 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
593 # rtc_time[0] - year 4 digit
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
594 # rtc_time[1] - month 1..12
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
595 # rtc_time[2] - day 1..31
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
596 # 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
597 # rtc_time[4] - hour 0..23
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
598 # rtc_time[5] - minute 0..59
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
599 # rtc_time[6] - second 0..59
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
600 # rtc_time[7] - yearday 1..366
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
601 # 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
602
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
603 # 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
604 # take the arguments in the order:
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
605 # (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
606 # __IGNORE_WARNING_M891__
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
607 # 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
608 #
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
609 # LoBo variant of MPy deviates.
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
610 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
611 return super()._getSetTimeCode()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
612
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
613 return """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
614 def set_time(rtc_time):
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
615 import machine
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
616 rtc = machine.RTC()
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
617 try:
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
618 rtc.datetime(rtc_time[:7] + (0,))
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
619 except Exception:
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
620 import os
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
621 if 'LoBo' in os.uname()[0]:
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
622 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
623 else:
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
624 clock_time = rtc_time[:7] + (0,)
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
625 rtc.init(clock_time)
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
626 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
627
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
628 ##################################################################
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
629 ## Methods below implement WiFi related methods
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
630 ##################################################################
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
631
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
632 def addDeviceWifiEntries(self, menu):
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
633 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
634 Public method to add device specific entries to the given menu.
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
635
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
636 @param menu reference to the context menu
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
637 @type QMenu
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 if not self.hasCircuitPython():
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
640 menu.addSeparator()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
641 menu.addAction(self.tr("Set Country"), self.__setCountry)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
642 menu.addAction(self.tr("Reset Country"), self.__resetCountry)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
643
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
644 def hasWifi(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
645 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
646 Public method to check the availability of WiFi.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
647
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
648 @return tuple containing a flag indicating the availability of WiFi
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
649 and the WiFi type (esp32)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
650 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
651 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
652 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
653 self.__createCpyDevice()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
654 return self.__cpyDevice.hasWifi()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
655
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
656 return True, "esp32"
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
657
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
658 def hasWifiCountry(self):
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
659 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
660 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
661
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
662 @return flag indicating the support of WiFi country
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
663 @rtype bool
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 return True
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
666
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
667 def getWifiData(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
668 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
669 Public method to get data related to the current WiFi status.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
670
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
671 @return tuple of three dictionaries containing the WiFi status data
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
672 for the WiFi client, access point and overall data
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
673 @rtype tuple of (dict, dict, dict)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
674 @exception OSError raised to indicate an issue with the device
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
675 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
676 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
677 return self.__cpyDevice.getWifiData()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
678
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
679 command = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
680 def wifi_status():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
681 import ubinascii
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
682 import ujson
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
683 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
684
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
685 wifi = network.WLAN(network.STA_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
686 station = {
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
687 'active': wifi.active(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
688 'connected': wifi.isconnected(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
689 'status': wifi.status(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
690 'ifconfig': wifi.ifconfig(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
691 'mac': ubinascii.hexlify(wifi.config('mac'), ':').decode(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
692 }
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
693 if wifi.active():
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
694 try:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
695 station['txpower'] = wifi.config('txpower')
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
696 except ValueError:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
697 pass
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
698 print(ujson.dumps(station))
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
699
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
700 wifi = network.WLAN(network.AP_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
701 ap = {
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
702 'active': wifi.active(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
703 'connected': wifi.isconnected(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
704 'status': wifi.status(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
705 'ifconfig': wifi.ifconfig(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
706 'mac': ubinascii.hexlify(wifi.config('mac'), ':').decode(),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
707 'channel': wifi.config('channel'),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
708 'essid': wifi.config('essid'),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
709 }
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
710 if wifi.active():
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
711 try:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
712 ap['txpower'] = wifi.config('txpower')
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
713 except ValueError:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
714 pass
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
715 print(ujson.dumps(ap))
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
716
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
717 overall = {
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
718 'active': station['active'] or ap['active']
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
719 }
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
720 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
721 overall['hostname'] = network.hostname()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
722 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
723 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
724 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
725 overall['country'] = network.country()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
726 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
727 pass
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
728 print(ujson.dumps(overall))
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
729
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
730 wifi_status()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
731 del wifi_status
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
732 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
733
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
734 out, err = self.executeCommands(command, mode=self._submitMode)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
735 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
736 raise OSError(self._shortError(err))
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
737
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
738 stationStr, apStr, overallStr = out.decode("utf-8").splitlines()
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
739 station = json.loads(stationStr)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
740 ap = json.loads(apStr)
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
741 overall = json.loads(overallStr)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
742 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
743 station["status"] = self.__statusTranslations[station["status"]]
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
744 except KeyError:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
745 station["status"] = str(station["status"])
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
746 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
747 ap["status"] = self.__statusTranslations[ap["status"]]
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
748 except KeyError:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
749 ap["status"] = str(ap["status"])
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
750 return station, ap, overall
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
751
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
752 def connectWifi(self, ssid, password, hostname):
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
753 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
754 Public method to connect a device to a WiFi network.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
755
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
756 @param ssid name (SSID) of the WiFi network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
757 @type str
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
758 @param password password needed to connect
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
759 @type str
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
760 @param hostname host name of the device
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
761 @type str
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
762 @return tuple containing the connection status and an error string
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
763 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
764 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
765 if self.hasCircuitPython():
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
766 return self.__cpyDevice.connectWifi(ssid, password, hostname)
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
767
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
768 command = """
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
769 def connect_wifi(ssid, password, hostname):
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
770 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
771 import ujson
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
772 from time import sleep
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
773
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
774 if hostname:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
775 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
776 network.hostname(hostname)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
777 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
778 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
779
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
780 wifi = network.WLAN(network.STA_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
781 wifi.active(False)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
782 wifi.active(True)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
783 wifi.connect(ssid, password)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
784 max_wait = 140
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
785 while max_wait and wifi.status() == network.STAT_CONNECTING:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
786 max_wait -= 1
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
787 sleep(0.1)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
788 status = wifi.status()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
789 print(ujson.dumps({{'connected': wifi.isconnected(), 'status': status}}))
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
790
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
791 connect_wifi({0}, {1}, {2})
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
792 del connect_wifi
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
793 """.format(
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
794 repr(ssid),
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
795 repr(password if password else ""),
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
796 repr(hostname),
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
797 )
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
798
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
799 with EricOverrideCursor():
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
800 out, err = self.executeCommands(
9827
21803aa6c3e2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
801 command, mode=self._submitMode, timeout=15000
9799
a79430a8811d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9798
diff changeset
802 )
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
803 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
804 return False, err
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
805
10235
4a12b160094c MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10233
diff changeset
806 while not out.startswith(b"{"):
4a12b160094c MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10233
diff changeset
807 # discard output until next newline
4a12b160094c MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10233
diff changeset
808 _, out = out.split(b"\r\n", 1)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
809 result = json.loads(out.decode("utf-8").strip())
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
810 if result["connected"]:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
811 error = ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
812 else:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
813 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
814 error = self.__statusTranslations[result["status"]]
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
815 except KeyError:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
816 error = str(result["status"])
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
817
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
818 return result["connected"], error
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
819
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
820 def disconnectWifi(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
821 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
822 Public method to disconnect a device from the WiFi network.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
823
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
824 @return tuple containing a flag indicating success and an error string
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
825 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
826 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
827 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
828 return self.__cpyDevice.disconnectWifi()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
829
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
830 command = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
831 def disconnect_wifi():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
832 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
833 from time import sleep
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
834
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
835 wifi = network.WLAN(network.STA_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
836 wifi.disconnect()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
837 wifi.active(False)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
838 sleep(0.1)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
839 print(not wifi.isconnected())
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
840
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
841 disconnect_wifi()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
842 del disconnect_wifi
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
843 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
844
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
845 out, err = self.executeCommands(command, mode=self._submitMode)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
846 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
847 return False, err
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
848
10144
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
849 return out.decode("utf-8").strip() == "True", ""
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
850
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
851 def isWifiClientConnected(self):
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
852 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
853 Public method to check the WiFi connection status as client.
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
854
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
855 @return flag indicating the WiFi connection status
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
856 @rtype bool
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 if self.hasCircuitPython():
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
859 return self.__cpyDevice.isWifiClientConnected()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
860
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
861 command = """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
862 def wifi_connected():
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
863 import network
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
864
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
865 wifi = network.WLAN(network.STA_IF)
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
866 print(wifi.isconnected())
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
867
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
868 wifi_connected()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
869 del wifi_connected
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
870 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
871
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
872 out, err = self.executeCommands(command, mode=self._submitMode)
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
873 if err:
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
874 return False
10138
56614cf9d03c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
875
10144
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
876 return out.strip() == b"True"
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
877
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
878 def isWifiApConnected(self):
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
879 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
880 Public method to check the WiFi connection status as access point.
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
881
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
882 @return flag indicating the WiFi connection status
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
883 @rtype bool
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 if self.hasCircuitPython():
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
886 return self.__cpyDevice.isWifiApConnected()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
887
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
888 command = """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
889 def wifi_connected():
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
890 import network
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
891
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
892 wifi = network.WLAN(network.AP_IF)
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
893 print(wifi.isconnected())
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
894
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
895 wifi_connected()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
896 del wifi_connected
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
897 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
898
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
899 out, err = self.executeCommands(command, mode=self._submitMode)
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
900 if err:
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
901 return False
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 return out.strip() == b"True"
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
904
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
905 def writeCredentials(self, ssid, password, hostname, country):
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
906 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
907 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
908 the start script to connect automatically.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
909
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
910 @param ssid SSID of the network to connect to
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
911 @type str
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
912 @param password password needed to authenticate
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
913 @type str
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
914 @param hostname host name of the device
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
915 @type str
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
916 @param country WiFi country code
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
917 @type str
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
918 @return tuple containing a flag indicating success and an error message
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
919 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
920 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
921 if self.hasCircuitPython():
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
922 return self.__cpyDevice.writeCredentials(ssid, password, hostname)
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
923
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
924 nvsCommand = """
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
925 def save_wifi_creds(ssid, password, hostname, country):
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
926 import esp32
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
927
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
928 nvs = esp32.NVS('wifi_creds')
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
929 nvs.set_blob('ssid', ssid)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
930 nvs.set_blob('password', password)
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
931 nvs.set_blob('hostname', hostname)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
932 nvs.set_blob('country', country)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
933 nvs.commit()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
934
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
935 save_wifi_creds({0}, {1}, {2}, {3})
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
936 del save_wifi_creds
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
937 """.format(
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
938 repr(ssid),
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
939 repr(password) if password else "''",
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
940 repr(hostname) if hostname else "''",
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
941 repr(country.upper()) if country else "''",
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
942 )
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
943 bootCommand = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
944 def modify_boot():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
945 add = True
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
946 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
947 with open('/boot.py', 'r') as f:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
948 for ln in f.readlines():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
949 if 'wifi_connect' in ln:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
950 add = False
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
951 break
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
952 except:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
953 pass
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
954 if add:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
955 with open('/boot.py', 'a') as f:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
956 f.write('\\nimport wifi_connect\\n')
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
957 print(True)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
958
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
959 modify_boot()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
960 del modify_boot
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
961 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
962
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
963 out, err = self.executeCommands(nvsCommand, mode=self._submitMode)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
964 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
965 return False, self.tr("Error saving credentials: {0}").format(err)
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 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
968 # copy auto-connect file
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
969 self.put(
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
970 os.path.join(
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
971 os.path.dirname(__file__), "MCUScripts", "esp32WiFiConnect.py"
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
972 ),
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
973 "/wifi_connect.py",
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
974 )
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
975 except OSError as err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
976 return False, self.tr("Error saving auto-connect script: {0}").format(err)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
977
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
978 out, err = self.executeCommands(bootCommand, mode=self._submitMode)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
979 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
980 return False, self.tr("Error modifying 'boot.py': {0}").format(err)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
981
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
982 return True, ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
983
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
984 def removeCredentials(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
985 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
986 Public method to remove the saved credentials from the connected device.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
987
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
988 @return tuple containing a flag indicating success and an error message
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
989 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
990 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
991 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
992 return self.__cpyDevice.removeCredentials()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
993
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
994 nvsCommand = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
995 def delete_wifi_creds():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
996 import esp32
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
997
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
998 nvs = esp32.NVS('wifi_creds')
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
999 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1000 nvs.erase_key('ssid')
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1001 nvs.erase_key('password')
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1002 nvs.commit()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1003 except OSError:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1004 pass
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1005
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1006 delete_wifi_creds()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1007 del delete_wifi_creds
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1008 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1009
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1010 out, err = self.executeCommands(nvsCommand, mode=self._submitMode)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1011 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1012 return False, self.tr("Error deleting credentials: {0}").format(err)
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 return True, ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1015
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1016 def checkInternet(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1017 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1018 Public method to check, if the internet can be reached.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1019
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1020 @return tuple containing a flag indicating reachability and an error string
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1021 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1022 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1023 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1024 return self.__cpyDevice.checkInternet()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1025
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1026 command = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1027 def check_internet():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1028 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1029 import socket
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1030
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1031 wifi = network.WLAN(network.STA_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1032 if wifi.isconnected():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1033 s = socket.socket()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1034 try:
10233
51a6649ba79d MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
1035 s.connect(socket.getaddrinfo('quad9.net', 443)[0][-1])
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1036 s.close()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1037 print(True)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1038 except:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1039 print(False)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1040 else:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1041 print(False)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1042
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1043 check_internet()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1044 del check_internet
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1045 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1046
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1047 out, err = self.executeCommands(command, mode=self._submitMode)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1048 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1049 return False, err
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 return out.decode("utf-8").strip() == "True", ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1052
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1053 def scanNetworks(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1054 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1055 Public method to scan for available WiFi networks.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1056
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1057 @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
1058 'MAC-Address', 'channel', 'RSSI' and 'security' and an error string
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1059 @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
1060 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1061 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1062 return self.__cpyDevice.scanNetworks()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1063
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1064 command = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1065 def scan_networks():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1066 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1067
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1068 wifi = network.WLAN(network.STA_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1069 active = wifi.active()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1070 if not active:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1071 wifi.active(True)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1072 network_list = wifi.scan()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1073 if not active:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1074 wifi.active(False)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1075 print(network_list)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1076
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1077 scan_networks()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1078 del scan_networks
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1079 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1080
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1081 out, err = self.executeCommands(command, mode=self._submitMode, timeout=15000)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1082 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1083 return [], err
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 networksList = ast.literal_eval(out.decode("utf-8"))
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1086 networks = []
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1087 for network in networksList:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1088 if network[0]:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1089 ssid = network[0].decode("utf-8")
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1090 mac = binascii.hexlify(network[1], ":").decode("utf-8")
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1091 channel = network[2]
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1092 rssi = network[3]
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1093 try:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1094 security = self.__securityTranslations[network[4]]
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1095 except KeyError:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1096 security = self.tr("unknown ({0})").format(network[4])
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1097 networks.append((ssid, mac, channel, rssi, security))
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1098
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1099 return networks, ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1100
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1101 def deactivateInterface(self, interface):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1102 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1103 Public method to deactivate a given WiFi interface of the connected device.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1104
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1105 @param interface designation of the interface to be deactivated (one of 'AP'
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1106 or 'STA')
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1107 @type str
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1108 @return tuple containg a flag indicating success and an error message
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1109 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1110 @exception ValueError raised to indicate a wrong value for the interface type
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1111 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1112 if interface not in ("STA", "AP"):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1113 raise ValueError(
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1114 "interface must be 'AP' or 'STA', got '{0}'".format(interface)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1115 )
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1116
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1117 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1118 return self.__cpyDevice.deactivateInterface(interface)
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1119
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1120 command = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1121 def deactivate():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1122 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1123 from time import sleep
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1124
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1125 wifi = network.WLAN(network.{0}_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1126 wifi.active(False)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1127 sleep(0.1)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1128 print(not wifi.active())
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 deactivate()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1131 del deactivate
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1132 """.format(
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
1133 interface
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
1134 )
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1135
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1136 out, err = self.executeCommands(command, mode=self._submitMode)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1137 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1138 return False, err
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1139 else:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1140 return out.decode("utf-8").strip() == "True", ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1141
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1142 def startAccessPoint(
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1143 self,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1144 ssid,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1145 security=None,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1146 password=None,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1147 hostname=None,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1148 ifconfig=None,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1149 ):
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1150 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1151 Public method to start the access point interface.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1152
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1153 @param ssid SSID of the access point
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1154 @type str
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1155 @param security security method (defaults to None)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1156 @type int (optional)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1157 @param password password (defaults to None)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1158 @type str (optional)
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1159 @param hostname host name of the device (defaults to None)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1160 @type str (optional)
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
1161 @param ifconfig IPv4 configuration for the access point if not default
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
1162 (IPv4 address, netmask, gateway address, DNS server address)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
1163 @type tuple of (str, str, str, str)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1164 @return tuple containing a flag indicating success and an error message
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1165 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1166 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1167 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1168 return self.__cpyDevice.startAccessPoint(
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1169 ssid,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1170 security=security,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1171 password=password,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1172 hostname=hostname,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1173 ifconfig=ifconfig,
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1174 )
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1175
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1176 if security is None or password is None:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1177 security = 0
10170
6cf1ee737d8f Corrected some more code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
1178 password = "" # secok
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1179 if security > 4:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1180 security = 4 # security >4 cause an error thrown by the ESP32
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1181
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1182 command = """
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1183 def start_ap(ssid, authmode, password, hostname, ifconfig):
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1184 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1185
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1186 if hostname:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1187 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1188 network.hostname(hostname)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1189 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1190 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1191
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1192 ap = network.WLAN(network.AP_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1193 ap.active(False)
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
1194 if ifconfig:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
1195 ap.ifconfig(ifconfig)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1196 ap.active(True)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1197 try:
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
1198 ap.config(ssid=ssid, authmode=authmode, password=password)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1199 except:
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9795
diff changeset
1200 ap.config(essid=ssid, authmode=authmode, password=password)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1201
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1202 start_ap({0}, {1}, {2}, {3}, {4})
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1203 del start_ap
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1204 """.format(
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1205 repr(ssid), security, repr(password), repr(hostname), ifconfig
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
1206 )
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1207
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1208 out, err = self.executeCommands(command, mode=self._submitMode, timeout=15000)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1209 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1210 return False, err
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1211 else:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1212 return True, ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1213
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1214 def stopAccessPoint(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1215 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1216 Public method to stop the access point interface.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1217
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1218 @return tuple containg a flag indicating success and an error message
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1219 @rtype tuple of (bool, str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1220 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1221 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1222 return self.__cpyDevice.stopAccessPoint()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1223
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1224 return self.deactivateInterface("AP")
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1225
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1226 def getConnectedClients(self):
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1227 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1228 Public method to get a list of connected clients.
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1229
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1230 @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
1231 and the RSSI (if supported and available) and an error message
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1232 @rtype tuple of ([(bytes, int)], str)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1233 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1234 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1235 return self.__cpyDevice.getConnectedClients()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1236
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1237 command = """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1238 def get_stations():
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1239 import network
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1240
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1241 ap = network.WLAN(network.AP_IF)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1242 stations = ap.status('stations')
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1243 print(stations)
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1244
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1245 get_stations()
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1246 del get_stations
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1247 """
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1248
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1249 out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000)
9795
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1250 if err:
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1251 return [], err
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 clientsList = ast.literal_eval(out.decode("utf-8"))
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1254 return clientsList, ""
11b4d39d7584 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
1255
10022
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1256 def enableWebrepl(self, password):
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1257 """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1258 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
1259 modify the start script to start the WebREPL server.
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1260
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1261 @param password password needed to authenticate
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1262 @type str
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1263 @return tuple containing a flag indicating success and an error message
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1264 @rtype tuple of (bool, str)
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 command = """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1267 def modify_boot():
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1268 import os
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1269
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1270 try:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1271 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
1272 found = False
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1273 for l in old_f.read().splitlines():
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1274 if 'webrepl' in l:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1275 found = True
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1276 if l.startswith('#'):
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1277 l = l[1:]
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1278 new_f.write(l + '\\n')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1279 if not found:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1280 new_f.write('\\nimport webrepl\\nwebrepl.start()\\n')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1281
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1282 os.remove('/boot.py')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1283 os.rename('/boot.py.tmp', '/boot.py')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1284 except:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1285 pass
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 print(True)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1288
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1289 modify_boot()
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1290 del modify_boot
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
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1293 try:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1294 # write config file
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1295 config = "PASS = {0}\n".format(repr(password))
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1296 self.putData("/webrepl_cfg.py", config.encode("utf-8"))
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1297 except OSError as err:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1298 return False, str(err)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1299
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1300 # modify boot.py
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1301 out, err = self.executeCommands(command, mode=self._submitMode)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1302 if err:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1303 return False, 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 return out.decode("utf-8").strip() == "True", ""
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1306
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1307 def disableWebrepl(self):
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1308 """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1309 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
1310 modify the start script to start the WebREPL server.
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 @return tuple containing a flag indicating success and an error message
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1313 @rtype tuple of (bool, str)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1314 """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1315 command = """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1316 def modify_boot():
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1317 import os
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1318
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1319 try:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1320 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
1321 for l in old_f.read().splitlines():
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1322 if 'webrepl' in l:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1323 if not l.startswith('#'):
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1324 l = '#' + l
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1325 new_f.write(l + '\\n')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1326
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1327 os.remove('/boot.py')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1328 os.rename('/boot.py.tmp', '/boot.py')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1329 except:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1330 pass
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 print(True)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1333
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1334 modify_boot()
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1335 del modify_boot
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
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1338 # modify boot.py
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1339 out, err = self.executeCommands(command, mode=self._submitMode)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1340 if err:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1341 return False, err
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 return out.decode("utf-8").strip() == "True", ""
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10019
diff changeset
1344
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1345 @pyqtSlot()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1346 def __setCountry(self):
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1347 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1348 Private slot to configure the country of the connected ESP32 device.
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1349
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1350 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
1351 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1352 from ..WifiDialogs.WifiCountryDialog import WifiCountryDialog
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1353
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1354 dlg = WifiCountryDialog()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1355 if dlg.exec() == QDialog.DialogCode.Accepted:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1356 country, remember = dlg.getCountry()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1357 if remember:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1358 Preferences.setMicroPython("WifiCountry", country)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1359
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1360 command = """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1361 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1362 import network
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1363 network.country({0})
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1364 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1365 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1366 """.format(
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1367 repr(country)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1368 )
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1369
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1370 out, err = self.executeCommands(command, mode=self._submitMode)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1371 if err:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1372 self.microPython.showError("country()", err)
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 @pyqtSlot()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1375 def __resetCountry(self):
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1376 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1377 Private slot to reset the country of the connected ESP32 device.
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 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
1380 resets it to the default code 'XX' representing the "worldwide" region.
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 command = """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1383 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1384 import network
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1385 network.country('XX')
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1386 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1387 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1388 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1389
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1390 out, err = self.executeCommands(command, mode=self._submitMode)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1391 if err:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1392 self.microPython.showError("country()", err)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1393
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1394 ##################################################################
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1395 ## Methods below implement Bluetooth related methods
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1396 ##################################################################
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1397
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1398 def hasBluetooth(self):
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 Public method to check the availability of Bluetooth.
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1401
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1402 @return flag indicating the availability of Bluetooth
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1403 @rtype bool
9857
0122ae72618d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9855
diff changeset
1404 @exception OSError raised to indicate an issue with the device
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1405 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1406 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1407 self.__createCpyDevice()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1408 return self.__cpyDevice.hasBluetooth()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1409
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1410 command = """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1411 def has_bt():
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1412 try:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1413 import bluetooth
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1414 if hasattr(bluetooth, 'BLE'):
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1415 return True
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1416 except ImportError:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1417 pass
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1418
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1419 return False
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1420
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1421 print(has_bt())
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1422 del has_bt
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1423 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1424 out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000)
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1425 if err:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1426 raise OSError(self._shortError(err))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1427 return out.strip() == b"True"
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1428
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1429 def getBluetoothStatus(self):
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1430 """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1431 Public method to get Bluetooth status data of the connected board.
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1432
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1433 @return list of tuples containing the translated status data label and
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1434 the associated value
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1435 @rtype list of tuples of (str, str)
9857
0122ae72618d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9855
diff changeset
1436 @exception OSError raised to indicate an issue with the device
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1437 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1438 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1439 return self.__cpyDevice.getBluetoothStatus()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1440
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1441 command = """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1442 def ble_status():
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1443 import bluetooth
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1444 import ubinascii
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1445 import ujson
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1446
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1447 ble = bluetooth.BLE()
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1448
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1449 ble_active = ble.active()
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1450 if not ble_active:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1451 ble.active(True)
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1452
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1453 res = {
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1454 'active': ble_active,
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1455 'mac': ubinascii.hexlify(ble.config('mac')[1], ':').decode(),
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1456 'addr_type': ble.config('mac')[0],
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1457 'name': ble.config('gap_name'),
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1458 'mtu': ble.config('mtu'),
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1459 }
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1460
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1461 if not ble_active:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1462 ble.active(False)
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1463
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1464 print(ujson.dumps(res))
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 ble_status()
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1467 del ble_status
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1468 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1469 out, err = self.executeCommands(command, mode=self._submitMode)
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1470 if err:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1471 raise OSError(self._shortError(err))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1472
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1473 status = []
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1474 bleStatus = json.loads(out.decode("utf-8"))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1475 status.append((self.tr("Active"), self.bool2str(bleStatus["active"])))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1476 status.append((self.tr("Name"), bleStatus["name"]))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1477 status.append((self.tr("MAC-Address"), bleStatus["mac"]))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1478 status.append(
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1479 (
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1480 self.tr("Address Type"),
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1481 self.tr("Public") if bleStatus == 0 else self.tr("Random"),
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1482 )
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1483 )
9857
0122ae72618d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9855
diff changeset
1484 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
1485
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1486 return status
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 def activateBluetoothInterface(self):
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1489 """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1490 Public method to activate the Bluetooth interface.
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1491
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1492 @return flag indicating the new state of the Bluetooth interface
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1493 @rtype bool
9857
0122ae72618d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9855
diff changeset
1494 @exception OSError raised to indicate an issue with the device
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1495 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1496 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1497 return self.__cpyDevice.activateBluetoothInterface()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1498
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1499 command = """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1500 def activate_ble():
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1501 import bluetooth
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1502
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1503 ble = bluetooth.BLE()
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1504 if not ble.active():
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1505 ble.active(True)
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1506 print(ble.active())
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 activate_ble()
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1509 del activate_ble
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1510 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1511 out, err = self.executeCommands(command, mode=self._submitMode)
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1512 if err:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1513 raise OSError(self._shortError(err))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1514
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1515 return out.strip() == b"True"
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1516
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1517 def deactivateBluetoothInterface(self):
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1518 """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1519 Public method to deactivate the Bluetooth interface.
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1520
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1521 @return flag indicating the new state of the Bluetooth interface
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1522 @rtype bool
9857
0122ae72618d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9855
diff changeset
1523 @exception OSError raised to indicate an issue with the device
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1524 """
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1525 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1526 return self.__cpyDevice.deactivateBluetoothInterface()
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1527
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1528 command = """
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1529 def deactivate_ble():
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1530 import bluetooth
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1531
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1532 ble = bluetooth.BLE()
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1533 if ble.active():
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1534 ble.active(False)
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1535 print(ble.active())
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 deactivate_ble()
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1538 del deactivate_ble
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1539 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1540 out, err = self.executeCommands(command, mode=self._submitMode)
9855
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1541 if err:
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1542 raise OSError(self._shortError(err))
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1543
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1544 return out.strip() == b"True"
c9244db5566a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9848
diff changeset
1545
9859
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1546 def getDeviceScan(self, timeout=10):
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1547 """
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1548 Public method to perform a Bluetooth device scan.
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1549
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1550 @param timeout duration of the device scan in seconds (defaults
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1551 to 10)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1552 @type int (optional)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1553 @return tuple containing a dictionary with the scan results and
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1554 an error string
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1555 @rtype tuple of (dict, str)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1556 """
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1557 from ..BluetoothDialogs.BluetoothAdvertisement import BluetoothAdvertisement
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1558
9866
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1559 if self.hasCircuitPython():
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1560 return self.__cpyDevice.getDeviceScan(timeout)
0cf5dda5512f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9859
diff changeset
1561
9859
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1562 command = """
10032
102b79b2a8cd Finetuned the bluetooth scan function for various MicroPython boards.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10022
diff changeset
1563 _scan_done = False
102b79b2a8cd Finetuned the bluetooth scan function for various MicroPython boards.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10022
diff changeset
1564
9859
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1565 def ble_scan():
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1566 import bluetooth
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1567 import time
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1568 import ubinascii
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1569
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1570 IRQ_SCAN_RESULT = 5
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1571 IRQ_SCAN_DONE = 6
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1572
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1573 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
1574 global _scan_done
9859
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1575 if event == IRQ_SCAN_RESULT:
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1576 addr_type, addr, adv_type, rssi, adv_data = data
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1577 if addr:
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1578 print({{
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1579 'address': ubinascii.hexlify(addr,':').decode('utf-8'),
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1580 'rssi': rssi,
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1581 'adv_type': adv_type,
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1582 'advertisement': bytes(adv_data),
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1583 }})
10032
102b79b2a8cd Finetuned the bluetooth scan function for various MicroPython boards.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10022
diff changeset
1584 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
1585 _scan_done = True
9859
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1586
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1587 ble = bluetooth.BLE()
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1588
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1589 ble_active = ble.active()
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1590 if not ble_active:
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1591 ble.active(True)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1592
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1593 ble.irq(_bleIrq)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1594 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
1595 while not _scan_done:
102b79b2a8cd Finetuned the bluetooth scan function for various MicroPython boards.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10022
diff changeset
1596 time.sleep(0.2)
9859
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 if not ble_active:
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1599 ble.active(False)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1600
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1601 ble_scan()
10032
102b79b2a8cd Finetuned the bluetooth scan function for various MicroPython boards.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10022
diff changeset
1602 del ble_scan, _scan_done
9859
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1603 """.format(
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1604 timeout
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1605 )
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1606 out, err = self.executeCommands(
9859
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1607 command, mode=self._submitMode, timeout=(timeout + 5) * 1000
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1608 )
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1609 if err:
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1610 return {}, err
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1611
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1612 scanResults = {}
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1613 for line in out.decode("utf-8").splitlines():
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1614 res = ast.literal_eval(line)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1615 address = res["address"]
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1616 if address not in scanResults:
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1617 scanResults[address] = BluetoothAdvertisement(address)
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1618 scanResults[address].update(
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1619 res["adv_type"], res["rssi"], res["advertisement"]
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1620 )
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1621
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1622 return scanResults, ""
829c1edbf253 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9857
diff changeset
1623
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1624 ##################################################################
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1625 ## Methods below implement NTP related methods
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1626 ##################################################################
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1627
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1628 def hasNetworkTime(self):
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 Public method to check the availability of network time functions.
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 @return flag indicating the availability of network time functions
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1633 @rtype bool
9870
0399d3607829 Fixed a few code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9868
diff changeset
1634 @exception OSError raised to indicate an issue with the device
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1635 """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1636 if self.hasCircuitPython():
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1637 self.__createCpyDevice()
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1638 return self.__cpyDevice.hasNetworkTime()
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1639
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1640 command = """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1641 def has_ntp():
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1642 try:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1643 import ntptime
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1644 return True
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1645 except ImportError:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1646 return False
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1647
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1648 print(has_ntp())
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1649 del has_ntp
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1650 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1651 out, err = self.executeCommands(command, mode=self._submitMode)
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1652 if err:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1653 raise OSError(self._shortError(err))
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1654 return out.strip() == b"True"
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1655
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1656 def setNetworkTime(self, server="0.pool.ntp.org", tzOffset=0, timeout=10):
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1657 """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1658 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
1659 NTP server.
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 @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
1662 (defaults to "0.pool.ntp.org")
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1663 @type str (optional)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1664 @param tzOffset offset with respect to UTC (defaults to 0)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1665 @type int (optional)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1666 @param timeout maximum time to wait for a server response in seconds
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1667 (defaults to 10)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1668 @type int
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1669 @return tuple containing a flag indicating success and an error string
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1670 @rtype tuple of (bool, str)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1671 """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1672 if self.hasCircuitPython():
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1673 return self.__cpyDevice.setNetworkTime(
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1674 server=server, tzOffset=tzOffset, timeout=timeout
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1675 )
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 command = """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1678 def set_ntp_time(server, tz_offset, timeout):
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1679 import network
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1680 import ntptime
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1681 import machine
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1682
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1683 if not network.WLAN(network.STA_IF).isconnected():
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1684 return False
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1685
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1686 ntptime.host = server
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1687 ntptime.timeout = timeout
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1688 ntptime.settime()
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1689
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1690 rtc = machine.RTC()
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1691 t = list(rtc.datetime())
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1692 t[4] += tz_offset
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1693 rtc.datetime(t)
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 return True
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1696
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1697 try:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1698 print({{
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1699 'result': set_ntp_time({0}, {1}, {2}),
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1700 'error': '',
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 except Exception as err:
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': False,
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1705 'error': str(err),
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 del set_ntp_time
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1708 """.format(
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1709 repr(server), tzOffset, timeout
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1710 )
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1711 out, err = self.executeCommands(
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1712 command, mode=self._submitMode, timeout=(timeout + 2) * 1000
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1713 )
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1714 if err:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1715 return False, err
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1716 else:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1717 res = ast.literal_eval(out.decode("utf-8"))
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1718 return res["result"], res["error"]
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9866
diff changeset
1719
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1720
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
1721 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
1722 """
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1723 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
1724
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1725 @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
1726 @type MicroPythonWidget
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1727 @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
1728 @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
1729 @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
1730 @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
1731 @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
1732 @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
1733 @param _boardName name of the board (unused)
9738
4ae976ee5339 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1734 @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
1735 @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
1736 @type str
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1737 @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
1738 @rtype EspDevice
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1739 """
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1740 return EspDevice(microPythonWidget, deviceType)
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1741
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1742
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1743 ################################################################################
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1744 ## Functions below implement flashing related functionality needed elsewhere ##
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1745 ## as well. ##
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 @pyqtSlot()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1750 def eraseFlash(port):
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 Slot to erase the device flash memory.
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 @param port name of the serial port device to be used
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1755 @type str
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 ok = EricMessageBox.yesNo(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1758 None,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1759 QCoreApplication.translate("EspDevice", "Erase Flash"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1760 QCoreApplication.translate(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1761 "EspDevice", """Shall the flash of the selected device really be erased?"""
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1762 ),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1763 )
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1764 if ok:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1765 flashArgs = [
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1766 "-u",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1767 "-m",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1768 "esptool",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1769 "--port",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1770 port,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1771 "erase_flash",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1772 ]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1773 dlg = EricProcessDialog(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1774 QCoreApplication.translate("EspDevice", "'esptool erase_flash' Output"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1775 QCoreApplication.translate("EspDevice", "Erase Flash"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1776 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
1777 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
1778 encoding=Preferences.getSystem("IOEncoding"),
9820
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 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), flashArgs)
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1781 if res:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1782 dlg.exec()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1783
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1784
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1785 @pyqtSlot()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1786 def flashPythonFirmware(port):
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 Slot to flash a MicroPython firmware to the device.
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1789
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1790 @param port name of the serial port device to be used
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1791 @type str
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 from .EspDialogs.EspFirmwareSelectionDialog import EspFirmwareSelectionDialog
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1794
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1795 dlg = EspFirmwareSelectionDialog()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1796 if dlg.exec() == QDialog.DialogCode.Accepted:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1797 chip, firmware, baudRate, flashMode, flashAddress = dlg.getData()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1798 flashArgs = [
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1799 "-u",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1800 "-m",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1801 "esptool",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1802 "--chip",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1803 chip,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1804 "--port",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1805 port,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1806 ]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1807 if baudRate != "115200":
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1808 flashArgs += ["--baud", baudRate]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1809 flashArgs.append("write_flash")
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1810 if flashMode:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1811 flashArgs += ["--flash_mode", flashMode]
9848
3d750b2e012c Corrected flashing of ESP 8266 devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
1812 if chip == "esp8266":
3d750b2e012c Corrected flashing of ESP 8266 devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
1813 # 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
1814 flashArgs += ["--flash_size", "detect"]
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1815 flashArgs += [
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1816 flashAddress,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1817 firmware,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1818 ]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1819 dlg = EricProcessDialog(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1820 QCoreApplication.translate("EspDevice", "'esptool write_flash' Output"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1821 QCoreApplication.translate("EspDevice", "Flash µPy/CPy Firmware"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1822 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
1823 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
1824 encoding=Preferences.getSystem("IOEncoding"),
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1825 )
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1826 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), flashArgs)
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1827 if res:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1828 dlg.exec()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1829
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1830
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1831 @pyqtSlot()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1832 def flashAddonFirmware(port):
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1833 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1834 Slot to flash some additional firmware images.
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1835
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1836 @param port name of the serial port device to be used
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1837 @type str
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1838 """
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1839 from .EspDialogs.EspFirmwareSelectionDialog import EspFirmwareSelectionDialog
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 dlg = EspFirmwareSelectionDialog(addon=True)
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1842 if dlg.exec() == QDialog.DialogCode.Accepted:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1843 chip, firmware, baudRate, flashMode, flashAddress = dlg.getData()
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1844 flashArgs = [
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1845 "-u",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1846 "-m",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1847 "esptool",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1848 "--chip",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1849 chip,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1850 "--port",
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1851 port,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1852 ]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1853 if baudRate != "115200":
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1854 flashArgs += ["--baud", baudRate]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1855 flashArgs.append("write_flash")
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1856 if flashMode:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1857 flashArgs += ["--flash_mode", flashMode]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1858 flashArgs += [
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1859 flashAddress.lower(),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1860 firmware,
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1861 ]
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1862 dlg = EricProcessDialog(
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1863 QCoreApplication.translate("EspDevice", "'esptool write_flash' Output"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1864 QCoreApplication.translate("EspDevice", "Flash Additional Firmware"),
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1865 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
1866 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
1867 encoding=Preferences.getSystem("IOEncoding"),
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1868 )
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1869 res = dlg.startProcess(PythonUtilities.getPythonExecutable(), flashArgs)
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1870 if res:
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9808
diff changeset
1871 dlg.exec()

eric ide

mercurial