Skip to content

Commit

Permalink
Updating codebase, arguments now fed through docker-compose
Browse files Browse the repository at this point in the history
  • Loading branch information
ScottGibb committed Nov 5, 2023
1 parent 81a7d08 commit 5ea2899
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 27 deletions.
6 changes: 2 additions & 4 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,15 @@

services:
socket-rf-transmitter:
container_name: smart-rf-transmitter
build:
context: ./src
args:
TSMT_PIN_NUMBER: 11

container_name: smart-rf-transmitter
# image: rf_transmitter:v1
stdin_open: true
tty: true
environment:
- TZ=Europe/London
- TSMT_PIN_NUMBER= 11
# devices:
# - "/dev/gpiomem:/dev/gpiomem"
ports:
Expand Down
14 changes: 9 additions & 5 deletions src/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,15 @@ FROM debian:latest
RUN apt-get update -y
RUN apt-get install -y build-essential
RUN apt-get install python3-pip -y
COPY requirements.txt /

WORKDIR /app

COPY requirements.txt .
RUN pip3 install -r requirements.txt --break-system-package

ARG TSMT_PIN_NUMBER=11
COPY *.py /
ENV TSMT_PIN_NUMBER=11
ENV PORT_NUMBER=60000
COPY *.py .

EXPOSE 60000
CMD ["/bin/sh", "-c","python3 socket_transmitter.py", "0.0.0.0", "60000", "${TSMT_PIN_NUMBER}"]
EXPOSE ${PORT_NUMBER}
CMD ["sh", "-c", "python3 socket_transmitter.py --port_number ${PORT_NUMBER} --pin_number ${TSMT_PIN_NUMBER}"]
2 changes: 1 addition & 1 deletion src/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
rpi.gpio
rpi.gpio~=0.7.1
38 changes: 21 additions & 17 deletions src/socket_transmitter.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""
Simple Radio Transmitter Script to control RF Plugs
"""
import argparse
import logging
import socket

Expand All @@ -10,32 +11,43 @@

from RPi import GPIO

IP_ADDRESS = "0.0.0.0"
PORT_NUM = 60000
DEFAULT_IP_ADDRESS = "0.0.0.0"
DEFAULT_PORT_NUM = 60000

# RF transmission Variables
NUM_ATTEMPTS = 10
TRANSMIT_PIN = 11
DEFAULT_TRANSMIT_PIN = 11
RETRY_TIME = 0.001 # s
log = logging.getLogger('Transmitter Logger')


def main(ip_addr: str = IP_ADDRESS, port_num:int = PORT_NUM, trsmit_pin:int = TRANSMIT_PIN)-> None:
parser = argparse.ArgumentParser(
prog="RF Transmitter",
description="TCP RF Transmitter program, that transmits the byte sent over tcp via RF",
epilog="This could be of more help"
)
parser.add_argument("-p", "--port_number",default=DEFAULT_PORT_NUM, type=int, required=False, help="Port number")
parser.add_argument("-ip", "--ip_address",default= DEFAULT_IP_ADDRESS,type=str, required=False, help="IP address")
parser.add_argument("-pin", "--pin_number",default=DEFAULT_TRANSMIT_PIN, type=int, required=False, help="TF Transmitter Pin number")
args = parser.parse_args()


def main(ip_addr: str = DEFAULT_IP_ADDRESS, port_num:int = DEFAULT_PORT_NUM, transmit_pin:int = DEFAULT_TRANSMIT_PIN)-> None:
"""
The main application of the program
"""
while True:
sock = None
try:
GPIO.setmode(GPIO.BOARD)
GPIO.setup(trsmit_pin, GPIO.OUT)
GPIO.setup(transmit_pin, GPIO.OUT)

while True:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((ip_addr, port_num))
sock.listen()
log.info("Listening on Port: {0} at {1}".format(port_num,ip_addr))
log.info("Transmitting on Pin: {0}".format(trsmit_pin))
log.info("Transmitting on Pin: {0}".format(transmit_pin))
conn, _ = sock.accept()
log.info("Accepted Connection")
sock_file = conn.makefile()
Expand All @@ -49,7 +61,7 @@ def main(ip_addr: str = IP_ADDRESS, port_num:int = PORT_NUM, trsmit_pin:int = TR
log.info("Decoding String")
log.info(message)
try:
transmit_rf_code(strings[0], float(strings[1]), float(strings[2]),trsmit_pin)
transmit_rf_code(strings[0], float(strings[1]), float(strings[2]),transmit_pin)
except IndexError:
logging.error("Received malformed data packet, abandoning socket")
sock.shutdown(1)
Expand Down Expand Up @@ -106,13 +118,5 @@ def setup_logging() -> None:
if __name__ == '__main__':
setup_logging()
log.info("RF Smart Transmitter Booting")
arguments = sys.argv
if len(arguments)>1:
log.info("Arguments provided during call of script")
ip_address = str(arguments[1])
port_num = int(arguments[2])
transmit_pin = int(arguments[3])
main(ip_address, port_num)
else:
log.info("No arguments provided, using defaults")
main()
log.info("Arguments Received:\n {0}".format(args))
main(args.ip_address, args.port_number, args.pin_number)

0 comments on commit 5ea2899

Please sign in to comment.