8000 esp32: Updated Pypytes scripts · pycom/pycom-micropython-sigfox@c16daf9 · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Sep 16, 2024. It is now read-only.

Commit c16daf9

Browse files
author
iwahdan88
committed
esp32: Updated Pypytes scripts
1 parent a7a2e9e commit c16daf9

File tree

9 files changed

+124
-158
lines changed

9 files changed

+124
-158
lines changed

esp32/frozen/Pybytes/_flash_control_OTA.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,29 @@
11
import os
2+
try:
3+
from pybytes_debug import print_debug
4+
except:
5+
from _pybytes_debug import print_debug
26

37
class FCOTA:
48
def __init__(self):
59
pass
610

711
def update_file_content(self, path, newContent):
8-
print('Updating file [{}]'.format(path))
12+
print_debug(2, 'Updating file [{}]'.format(path))
913

1014
if '.' in path:
1115
f = open(path, 'w')
1216
f.write(newContent)
1317
f.close()
14-
print('File updated')
18+
print_debug(2, 'File updated')
1519
return True
1620
else:
17-
print('Cannot write into a folder')
21+
print_debug(2, 'Cannot write into a folder')
1822

1923
return False
2024

2125
def delete_file(self, path):
22-
print('FCOTA deleting file [{}]'.format(path))
26+
print_debug(2, 'FCOTA deleting file [{}]'.format(path))
2327
try:
2428
if ('.' in path):
2529
os.remove(path)
@@ -42,10 +46,10 @@ def delete_file(self, path):
4246
os.rmdir(elem)
4347
maxDepth -= 1
4448
else:
45-
print('targetedFiles empty, no file to delete')
49+
print_debug(2, 'targetedFiles empty, no file to delete')
4650
return True
4751
except Exception as ex:
48-
print('FCOTA file deletion failed: {}'.format(ex))
52+
print_debug(2, 'FCOTA file deletion failed: {}'.format(ex))
4953
return False
5054

5155
def convert_bytes(self, num):
@@ -55,15 +59,15 @@ def convert_bytes(self, num):
5559
num /= 1024.0
5660

5761
def get_file_size(self, path):
58-
print('FCOTA getting file infos [{}]'.format(path))
62+
print_debug(2, 'FCOTA getting file infos [{}]'.format(path))
5963
if '.' in path:
6064
fileInfo = os.stat(path)
61-
print (fileInfo)
65+
print_debug(2, 'printing fileInfo tupple: ' + str(fileInfo))
6266
return self.convert_bytes(fileInfo[6])
6367
return 'Unknown'
6468

6569
def get_file_content(self, path):
66-
print('FCOTA reading file [{}]'.format(path))
70+
print_debug(2, 'FCOTA reading file [{}]'.format(path))
6771

6872
if '.' in path:
6973
f = open(path, 'r')
@@ -72,8 +76,8 @@ def get_file_content(self, path):
7276
else:
7377
content = 'folder: {}'.format(path)
7478

75-
# print('encoding content')
76-
# print(hexlify(content))
79+
# print_debug(2, 'encoding content')
80+
# print_debug(2, hexlify(content))
7781
# content = hexlify(content)
7882

7983
return content

esp32/frozen/Pybytes/_main.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
# SEND VIRTUAL VALUE
7171
# You can currently send Strings, Int32, Float32 and Tuples to pybytes using this method.
7272
# Soon you will be able to send Coordinates, Longs, Unsigned numerical types, and more.
73-
# pybytes.send_virtual_pin_value(False, pin, value)
73+
# pybytes.send_signal(pin, value)
7474

7575
# SEND SENSOR DATA THROUGH VIRTUAL PINS
7676
# # If you use a Pysense, some libraries are necessary to access its sensors
@@ -90,9 +90,9 @@
9090
# # Define your thread's behaviour, here it's a loop sending sensors data every 10 seconds
9191
# def send_env_data():
9292
# while (pybytes):
93-
# pybytes.send_virtual_pin_value(False, 1, si.humidity())
94-
# pybytes.send_virtual_pin_value(False, 2, si.temperature())
95-
# pybytes.send_virtual_pin_value(False, 3, ltr.light());
93+
# pybytes.send_signal(1, si.humidity())
94+
# pybytes.send_signal(2, si.temperature())
95+
# pybytes.send_signal(3, ltr.light());
9696
# sleep(10)
9797
#
9898
# # Start your thread

esp32/frozen/Pybytes/_pybytes.py

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ class __PERIODICAL_PIN:
2121
TYPE_VIRTUAL = 2
2222

2323
def __init__(self, persistent, pin_number, message_type, message, pin_type):
24-
self.persistent = persistent
2524
self.pin_number = pin_number
2625
self.message_type = message_type
2726
self.message = message
@@ -72,13 +71,13 @@ def connect_lora_otta(self, timeout=15, nanogateway=False):
7271
return self.__pybytes_connection.connect_lora_otta(timeout, nanogateway)
7372

7473
def connect_sigfox(self):
75-
self.__pybytes_connection.connect_sigfox()
74+
return self.__pybytes_connection.connect_sigfox()
7675

7776
def disconnect(self):
7877
self.__pybytes_connection.disconnect()
7978

8079
def send_custom_message(self, persistent, message_type, message):
81-
self.__pybytes_connection.__pybytes_protocol.send_user_message(persistent, message_type, message)
80+
self.__pybytes_connection.__pybytes_protocol.send_user_message(message_type, message)
8281

8382
def set_custom_message_callback(self, callback):
8483
self.__custom_message_callback = callback
@@ -93,24 +92,33 @@ def send_scan_info_message(self):
9392
self.__pybytes_connection.__pybytes_protocol.send_scan_info_message(None)
9493

9594
def send_digital_pin_value(self, persistent, pin_number, pull_mode):
96-
self.__pybytes_connection.__pybytes_protocol.send_pybytes_digital_value(persistent, pin_number, pull_mode)
95+
self.__pybytes_connection.__pybytes_protocol.send_pybytes_digital_value(pin_number, pull_mode)
9796

9897
def send_analog_pin_value(self, persistent, pin):
99-
self.__pybytes_connection.__pybytes_protocol.send_pybytes_analog_value(persistent, pin)
98+
self.__pybytes_connection.__pybytes_protocol.send_pybytes_analog_value(pin)
99+
100+
def send_signal(self, pin, value):
101+
self.__pybytes_connection.__pybytes_protocol.send_pybytes_custom_method_values(pin, [value])
100102

101103
def send_virtual_pin_value(self, persistent, pin, value):
102-
self.__pybytes_connection.__pybytes_protocol.send_pybytes_custom_method_values(persistent, pin, [value])
104+
print("This function is deprecated and will be removed in the future. Use send_signal(signalNumber, value)")
105+
self.send_signal(pin, [value])
106+
107+
def __periodical_pin_callback(self, periodical_pin):
108+
if (periodical_pin.pin_type == __PERIODICAL_PIN.TYPE_DIGITAL):
109+
self.send_digital_pin_value(periodical_pin.persistent, periodical_pin.pin_number, None)
110+
elif (periodical_pin.pin_type == __PERIODICAL_PIN.TYPE_ANALOG):
111+
self.send_analog_pin_value(periodical_pin.persistent, periodical_pin.pin_number)
103112

104113
def register_periodical_digital_pin_publish(self, persistent, pin_number, pull_mode, period):
105-
self.send_digital_pin_value(persistent, pin_number, pull_mode)
106-
periodical_pin = __PERIODICAL_PIN(persistent, pin_number, None, None,
114+
self.send_digital_pin_value(pin_number, pull_mode)
115+
periodical_pin = __PERIODICAL_PIN(pin_number, None, None,
107116
__PERIODICAL_PIN.TYPE_DIGITAL)
108117
Timer.Alarm(self.__periodical_pin_callback, period, arg=periodical_pin, periodic=True)
109118

110-
def register_periodical_analog_pin_publish(self, persistent, pin_number, period):
111-
self.send_analog_pin_value(persistent, pin_number)
112-
periodical_pin = __PERIODICAL_PIN(persistent, pin_number, None, None,
113-
__PERIODICAL_PIN.TYPE_ANALOG)
119+
def register_periodical_analog_pin_publish(self, pin_number, period):
120+
self.send_analog_pin_value(pin_number)
121+
periodical_pin = __PERIODICAL_PIN(pin_number, None, None, __PERIODICAL_PIN.TYPE_ANALOG)
114122
Timer.Alarm(self.__periodical_pin_callback, period, arg=periodical_pin, periodic=True)
115123

116124
def add_custom_method(self, method_id, method):
@@ -126,12 +134,6 @@ def send_battery_level(self, battery_level):
126134
def send_custom_location(self, pin, x, y):
127135
self.__pybytes_connection.__pybytes_protocol.send_custom_location(pin, x, y)
128136

129-
def __periodical_pin_callback(self, periodical_pin):
130-
if (periodical_pin.pin_type == __PERIODICAL_PIN.TYPE_DIGITAL):
131-
self.send_digital_pin_value(periodical_pin.persistent, periodical_pin.pin_number, None)
132-
elif (periodical_pin.pin_type == __PERIODICAL_PIN.TYPE_ANALOG):
133-
self.send_analog_pin_value(periodical_pin.persistent, periodical_pin.pin_number)
134-
135137
def __recv_message(self, message):
136138
if self.__custom_message_callback is not None:
137139
self.__custom_message_callback(message)

esp32/frozen/Pybytes/_pybytes_ca.py

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,4 @@
11
PYBYTES_CA = """-----BEGIN CERTIFICATE-----
2-
MIIGnTCCBYWgAwIBAgISA3b4lLk2NubwPvU+nkbtPlWpMA0GCSqGSIb3DQEBCwUA
3-
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
4-
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODA1MDcxNTA0MDhaFw0x
5-
ODA4MDUxNTA0MDhaMCMxITAfBgNVBAMTGHB5Ynl0ZXMtc3RhZ2luZy5weWNvbS5p
6-
bzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMCDieKlQiREjtCCSfix
7-
41Jt5sSRDLkueZuV7Z4Hq1dqp+bU6ZMQdNkWoteHO2ZTt9LmsiWbE+FRIt9PsOcM
8-
M4v4biauJ4chTg3SBcaAA6VdX6pY3ETUCH/Sz7CXlBenVjnVGHUsyVdJF185I95i
9-
In+96WwePLXr+tcaI0lxkff9WFUXl0kMQ1G/xwiL7bjjYsBPDm/kJtvSEOd6AlTQ
10-
iTuHeK5V9QHs31gOPQxhxEBTUJE5Jm8w7u10WxAvTQzgliZJDDsOYvjg4hyoy4yK
11-
ZDEK8LJ8rgb6wIY1TdqQip2bNgv6DLhSNz5i33DgjhXRYEXiQkvtJbtYF1umx581
12-
JckCAwEAAaOCA6IwggOeMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEF
13-
BQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUmpYy+thsOVlN
14-
H5LbIaHCiJ445MIwHwYDVR0jBBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEwbwYI
15-
KwYBBQUHAQEEYzBhMC4GCCsGAQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDMubGV0
16-
c2VuY3J5cHQub3JnMC8GCCsGAQUFBzAChiNodHRwOi8vY2VydC5pbnQteDMubGV0
17-
c2VuY3J5cHQub3JnLzCBpAYDVR0RBIGcMIGZghxhcGkucHlieXRlcy1zdGFnaW5n
18-
LnB5Y29tLmlvgh1tcXR0LnB5Ynl0ZXMtc3RhZ2luZy5weWNvbS5pb4IfcHlhdXRo
19-
LnB5Ynl0ZXMtc3RhZ2luZy5weWNvbS5pb4IfcHliaWxsLnB5Ynl0ZXMtc3RhZ2lu
20-
Zy5weWNvbS5pb4IYcHlieXRlcy1zdGFnaW5nLnB5Y29tLmlvMIH+BgNVHSAEgfYw
21-
gfMwCAYGZ4EMAQIBMIHmBgsrBgEEAYLfEwEBATCB1jAmBggrBgEFBQcCARYaaHR0
22-
cDovL2Nwcy5sZXRzZW5jcnlwdC5vcmcwgasGCCsGAQUFBwICMIGeDIGbVGhpcyBD
23-
ZXJ0aWZpY2F0ZSBtYXkgb25seSBiZSByZWxpZWQgdXBvbiBieSBSZWx5aW5nIFBh
24-
cnRpZXMgYW5kIG9ubHkgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBDZXJ0aWZpY2F0
25-
ZSBQb2xpY3kgZm91bmQgYXQgaHR0cHM6Ly9sZXRzZW5jcnlwdC5vcmcvcmVwb3Np
26-
dG9yeS8wggEEBgorBgEEAdZ5AgQCBIH1BIHyAPAAdgDbdK/uyynssf7KPnFtLOW5
27-
qrs294Rxg8ddnU83th+/ZAAAAWM7WIwtAAAEAwBHMEUCIFO9bdPIus2/A+bhyCYJ
28-
cff90BleBnbnAnfKejQRzw1hAiEAnRdZTFldte+TyLHOYElw4gFpAyPub4AO23S2
29-
HL3y3TMAdgApPFGWVMg5ZbqqUPxYB9S3b79Yeily3KTDDPTlRUf0eAAAAWM7WIw6
30-
AAAEAwBHMEUCIQDvU06t24rrMpfoIF/xCSG5rApExjlsuMA8kAmM2RFsfAIgKckY
31-
46YiHt15bWJc5SBiwLLXsuffSgQTJrCbGggekFEwDQYJKoZIhvcNAQELBQADggEB
32-
ABgGRT2VTT2KuyCEn8T0MpBKlpDoSvzneMPjxevAfRvqVUIteyc3u/0yXhmnuWJo
33-
SKFic6r9wX1tGlN6aGNGx4qp7Dtgc0NPQ84w6h/oVZPUyVS0bOu5/xHm3zLYWWHZ
34-
3N0cVos2ga1f4lyTr6kaOTsrI9bx0HUP9KWFPgl1 1241 vV8HrdTljT/IKkvY3s4X60vS
35-
0Tf5MyJOvAxuwEoJkNWke2GgVEpA17p/ZClQMMH3Vxy9NX/7m6L6rPqRSqe8ewmB
36-
nXny+jHmL2ii8xcPfU14Gn59FtFxngc1+mPjlHHqRdUFgZ9T40kKMMIBrvGohAtp
37-
PV/QhEH4ec1uPntPUgfZz7E=
38-
-----END CERTIFICATE-----
39-
-----BEGIN CERTIFICATE-----
402
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
413
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
424
DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
@@ -83,4 +45,5 @@
8345
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
8446
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
8547
-----END CERTIFICATE-----
48+
8649
"""

esp32/frozen/Pybytes/_pybytes_connection.py

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -275,25 +275,27 @@ def connect_sigfox(self):
275275
except:
276276
print("This device does not support Sigfox connections")
277277
return
278-
sigfox_config = self.__conf.get('sigfox')
279-
if sigfox_config is not None and sigfox_config.get('RCZ') is not None:
280-
try:
281-
sf_rcz = int(sigfox_config.get('RCZ',0)) - 1
282-
if sf_rcz >= 1 and sf_rcz <= 4:
283-
sigfox = Sigfox(mode=Sigfox.SIGFOX, rcz=sf_rcz)
284-
self.__sigfox_socket = socket.socket(socket.AF_SIGFOX, socket.SOCK_RAW)
285-
self.__sigfox_socket.setblocking(True)
286-
self.__sigfox_socket.setsockopt(socket.SOL_SIGFOX, socket.SO_RX, False)
287-
self.__pybytes_library.set_network_type(constants.__NETWORK_TYPE_SIGFOX)
288-
self.__network_type = constants.__NETWORK_TYPE_SIGFOX
289-
self.__connection_status = constants.__CONNECTION_STATUS_CONNECTED_SIGFOX
290-
print("Connected using Sigfox. Only upload stream is supported")
291-
else:
292-
print('Invalid Sigfox RCZ specified in config!')
293-
except Exception as e:
294-
print('Exception in connect_sigfox: {}'.format(e))
295-
else:
296-
print('Invalid Sigfox RCZ specified in config!')
278+
sigfox_config = self.__conf.get('sigfox', {})
279+
if sigfox_config is None or sigfox_config.get('RCZ') is None:
280+
print(constants.__SIGFOX_WARNING)
281+
try:
282+
sf_rcz = int(sigfox_config.get('RCZ', 1)) - 1
283+
if sf_rcz >= 0 and sf_rcz <= 3:
284+
sigfox = Sigfox(mode=Sigfox.SIGFOX, rcz=sf_rcz)
285+
self.__sigfox_socket = socket.socket(socket.AF_SIGFOX, socket.SOCK_RAW)
286+
self.__sigfox_socket.setblocking(True)
287+
self.__sigfox_socket.setsockopt(socket.SOL_SIGFOX, socket.SO_RX, False)
288+
self.__network_type = constants.__NETWORK_TYPE_SIGFOX
289+
self.__connection_status = constants.__CONNECTION_STATUS_CONNECTED_SIGFOX
290+
self.__pybytes_protocol.start_Sigfox(self)
291+
print("Connected using Sigfox. Only upload stream is supported")
292+
return True
293+
else:
294+
print('Invalid Sigfox RCZ specified in config!')
295+
return False
296+
except Exception as e:
297+
print('Exception in connect_sigfox: {}'.format(e))
298+
return False
297299

298300
# COMMON
299301
def disconnect(self):

esp32/frozen/Pybytes/_pybytes_constants.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ class constants:
55
__NETWORK_TYPE_SIGFOX = 2
66
__NETWORK_TYPE_LTE = 3
77

8+
__INTEGER = 0
9+
__FLOAT = 1
10+
__TUPLE = 2
11+
__STRING = 3
12+
813
__CONNECTION_STATUS_DISCONNECTED = 0
914
__CONNECTION_STATUS_CONNECTED_MQTT_WIFI = 1
1015
__CONNECTION_STATUS_CONNECTED_MQTT_LTE = 2
@@ -53,7 +58,10 @@ class constants:
5358

5459
__WIFI_NETWORK_FORMAT = ">6sBb" # {"ssid":"%s", "mac_addr":"%s", "channel":"%s", "power":"%s"}
5560

56-
__USER_SYSTEM_MASK = 0x80
57-
__PERSISTENT_MASK = 0x40
61+
# __USER_SYSTEM_MASK = 0x80
5862
__NETWORK_TYPE_MASK = 0x30
5963
__TYPE_MASK = 0xF
64+
65+
__SIGFOX_WARNING = """WARNING! Your sigfox radio configuration (RC) is currently using the default (1)
66+
You can set your RC with command (ex: RC 3): pybytes.set_config('sigfox', {'RCZ': 3})
67+
See all available zone options for RC at https://support.sigfox.com/docs/radio-configuration """

0 commit comments

Comments
 (0)
0