Skip to content

Commit

Permalink
Fix serial_comms example example.
Browse files Browse the repository at this point in the history
  • Loading branch information
James Boulton committed Apr 4, 2024
1 parent 13e7ff4 commit 7165406
Show file tree
Hide file tree
Showing 5 changed files with 108 additions and 67 deletions.
6 changes: 4 additions & 2 deletions Examples/serial_coms_module.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,10 @@ def selector_ctrl_handler(self, msg):

def _coms_reboot_msg(self, msg):
logging.debug("RBT: %s", msg)
self.serial_con.set_comms_module_passthough(msg[0])
self.serial_con.enable_comms_module_ble(msg[0], True)
msg = dashio.set_comms_module_passthough(msg[0])
self.serial_con.serial_com.write(msg.encode())
msg = dashio.enable_comms_module_ble(msg[0], True)
self.serial_con.serial_com.write(msg.encode())

def __init__(self):

Expand Down
24 changes: 24 additions & 0 deletions dashio/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,19 @@
from .serialconnection import SerialConnection
from .schedular import Schedular
from .load_config import decode_cfg64, encode_cfg64, load_all_controls_from_config, get_control_dict_from_config, get_control_from_config
from .comms_module import (
enable_comms_module_ble,
enable_comms_module_dash,
enable_comms_module_tcp,
set_comms_module_dash,
set_comms_module_name,
set_comms_module_normal,
set_comms_module_passthough,
set_comms_module_tcp_port,
set_comms_module_wifi,
get_comms_module_active_connections,
reguest_comms_module_device_id
)
# from .bleconnection import BLEConnection
from .iotcontrol.enums import (
Color,
Expand Down Expand Up @@ -98,6 +111,17 @@
'ConnectionState',
'SerialConnection',
'Schedular',
'enable_comms_module_ble',
'enable_comms_module_dash',
'enable_comms_module_tcp',
'set_comms_module_dash',
'set_comms_module_name',
'set_comms_module_normal',
'set_comms_module_passthough',
'set_comms_module_tcp_port',
'set_comms_module_wifi',
'get_comms_module_active_connections',
'reguest_comms_module_device_id',
'decode_cfg64',
'encode_cfg64',
'load_all_controls_from_config',
Expand Down
73 changes: 73 additions & 0 deletions dashio/comms_module.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
"""Useful comms module message functions"""


def set_comms_module_passthough(coms_device_id: str) -> str:
"""Set the comms module to passthrough."""
message = f"\t{coms_device_id}\tCTRL\tMODE\tPSTH\n"
return message


def set_comms_module_normal(coms_device_id: str) -> str:
"""Set the comms module to normal mode."""
message = f"\t{coms_device_id}\tCTRL\tMODE\tNML\n"
return message


def enable_comms_module_ble(coms_device_id: str, enable: bool) -> str:
"""Enable/disable comms module BLE."""
message = f"\t{coms_device_id}\tCTRL\tBLE"
if not enable:
message += "\tHLT"
return message + '\n'


def enable_comms_module_tcp(coms_device_id: str, enable: bool) -> str:
"""Enable/disable comms module TCP."""
message = f"\t{coms_device_id}\tCTRL\tTCP"
if not enable:
message += "\tHLT"
return message + '\n'


def enable_comms_module_dash(coms_device_id: str, enable: bool) -> str:
"""Enable/Disable comms module DASH."""
message = f"\t{coms_device_id}\tCTRL\tMQTT"
if not enable:
message += "\tHLT"
return message + '\n'


def set_comms_module_dash(coms_device_id: str, user_name: str, password: str) -> str:
"""Set username and password for comms module DASH connection."""
message = f"\t{coms_device_id}\tDASHIO\t{user_name}\t{password}\n"
return message


def set_comms_module_tcp_port(coms_device_id: str, port: int) -> str:
"""Set the comms module TCP port."""
message = f"\t{coms_device_id}\tTCP\t{port}\n"
return message


def set_comms_module_name(coms_device_id: str, name: str) -> str:
"""Set the comms module NAME."""
message = f"\t{coms_device_id}\tNAME\t{name}\n"
return message


def set_comms_module_wifi(coms_device_id: str, country_code: str, ssid: str, password: str) -> str:
"""Set the comms module wifi country code, ssid, and password."""
message = f"\t{coms_device_id}\tWIFI\t{country_code}\t{ssid}\t{password}\n"
return message


def get_comms_module_active_connections(coms_device_id: str) -> str:
"""Get the active connections from the comms module."""
message = f"\t{coms_device_id}\tCTRL\tCNCTN\n"
return message


def reguest_comms_module_device_id(self) -> str:
"""Request the comms module DeviceID."""
message = "\tCTRL\n"
return message
59 changes: 1 addition & 58 deletions dashio/serialconnection.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,63 +111,6 @@ def unset_crtl_connection_callback(self):
"""
self._crtl_cnctn_callback = None

def set_comms_module_passthough(self, coms_device_id: str) -> None:
message = f"\t{coms_device_id}\tCTRL\tMODE\tPSTH\n"
self.serial_com.write(message.encode())

def set_comms_module_normal(self, coms_device_id: str) -> None:
message = f"\t{coms_device_id}\tCTRL\tMODE\tNML\n"
self.serial_com.write(message.encode())

def enable_comms_module_ble(self, coms_device_id: str, enable: bool) -> None:
if enable:
message = f"\t{coms_device_id}\tCTRL\tBLE\n"
else:
message = f"\t{coms_device_id}\tCTRL\tBLE\tHLT\n"
self.serial_com.write(message.encode())

def enable_comms_module_tcp(self, coms_device_id: str, enable: bool) -> None:
if enable:
message = f"\t{coms_device_id}\tCTRL\tTCP\n"
else:
message = f"\t{coms_device_id}\tCTRL\tTCP\tHLT\n"
self.serial_com.write(message.encode())

def enable_comms_module_dash(self, coms_device_id: str, enable: bool) -> None:
if enable:
message = f"\t{coms_device_id}\tCTRL\tMQTT\n"
else:
message = f"\t{coms_device_id}\tCTRL\tMQTT\tHLT\n"
self.serial_com.write(message.encode())

def set_comms_module_dash(self, coms_device_id: str, user_name: str, password: str) -> None:
message = f"\t{coms_device_id}\tDASHIO\t{user_name}\t{password}\n"
self.serial_com.write(message.encode())

def set_comms_module_tcp_port(self, coms_device_id: str, port: int) -> None:
message = f"\t{coms_device_id}\tTCP\t{port}\n"
self.serial_com.write(message.encode())

def set_comms_module_name(self, coms_device_id: str, name: str) -> None:
message = f"\t{coms_device_id}\tNAME\t{name}\n"
self.serial_com.write(message.encode())

def set_comms_module_wifi(self, coms_device_id: str, country_code: str, ssid: str, password: str) -> None:
message = f"\t{coms_device_id}\tWIFI\t{country_code}\t{ssid}\t{password}\n"
self.serial_com.write(message.encode())

def get_comms_module_active_connections(self, coms_device_id: str) -> None:
message = f"\t{coms_device_id}\tCTRL\tCNCTN\n"
self.serial_com.write(message.encode())

"""
Like WHO and used to request the deviceID. Response from comms module is:
\t Device_ID \t CTRL \n
"""
def reguest_comms_module_device_id(self) -> None:
message = "\tCTRL\n"
self.serial_com.write(message.encode())

def _init_serial(self):
try:
self.serial_com = serial.Serial(self.serial_port, self.baud_rate, timeout=1.0)
Expand Down Expand Up @@ -264,7 +207,7 @@ def run(self):
logger.debug("SERIAL Rx:\n%s", message.rstrip().decode())
parts = message.strip().decode().split('\t')
if len(parts) == 2 and parts[1] == 'CTRL':
if self._crtl_device_id_callback:
if self._crtl_device_id_callback is not None:
self._crtl_device_id_callback(parts)
elif len(parts) > 2 and parts[1] == 'CTRL':
self.crtl_map[parts[2]](parts)
Expand Down
13 changes: 6 additions & 7 deletions dashio/sim767x.py
Original file line number Diff line number Diff line change
Expand Up @@ -320,12 +320,11 @@ def _process_at_commands(self):
self._char_buffer = ""
have_message = True
break
else:
self._char_buffer += chars_in
if self._char_buffer.startswith(">"):
data = ">"
self._char_buffer = ""
have_message = True
self._char_buffer += chars_in
if self._char_buffer.startswith(">"):
data = ">"
self._char_buffer = ""
have_message = True

data = data.replace('\r', '')

Expand Down Expand Up @@ -360,7 +359,7 @@ def _process_at_commands(self):
self._run_at_callbacks = False
self._lte_state = LteState.SIM_READY

elif data.startswith("+CREG:") or data.startswith("+CEREG:") or data.startswith("+CGREG:"): # Network Registration Status
elif data.startswith(("+CREG:", "+CEREG:", "+CGREG:")): # Network Registration Status
result_arr = result_str.split(',')
if len(result_arr) == 1: # Unsolicited response
status = int(result_arr[0])
Expand Down

0 comments on commit 7165406

Please sign in to comment.