SIA-PYTHON/SIA-PLAIN.py

77 lines
2.4 KiB
Python
Executable File

import os
import sys
import socket
from time import sleep
from crccheck.crc import Crc16, CrcArc
# Signal Types
# Send with image: "SIA-DCS"0001L0#9998[9998|Nri1/BA01^Dette er sone 1^][Vhttps://granitebeltchristmasfarm.com.au/wp-content/uploads/2023/08/Grinch-1.jpg]
# PANIC: "SIA-DCS"0001L0#1234[1234|Nri1/PA001][X010E57.5698080][Y59N12.8358840]
# PANIC RESTORE: "SIA-DCS"0001L0#1234[1234|Nri1/PR001][X010E57.5698080][Y59N12.8358840]
# Set: "SIA-DCS"0001L0#1234[1234|Nri1/CL001]
# Unset: "SIA-DCS"0001L0#1234[1234|Nri1/OP001]
# Test Report: "SIA-DCS"0001L0#1234[1234|Nri1/RP0]
def sendSia(type, host, port):
#type = '"NULL"0000L0#107504[]'
data = type.encode()
crc = CrcArc.calc(data)
crcstr = str(hex(crc)).split('x')
crcstr = str(crcstr[1].upper())
if len(crcstr) == 2:
crcstr = '00' + crcstr
if len(crcstr) == 3:
crcstr = '0' + crcstr
length = str(hex(len(data))).split('x')
client_socket = socket.socket()
client_socket.connect((host, port))
client_socket.settimeout(10)
text = '\n' + crcstr + '00' + length[1].upper() + type + '\r'
print('Sent signal: ' + f'{text}')
message = bytes(text, 'ASCII')
client_socket.send(message)
data = client_socket.recv(64).decode()
print("Received from server: " + data)
client_socket.close()
def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')
host = ""
port = ""
def program():
print('### SIA-DCS TESTER v1.0 ###\n')
global host
global port
if not host:
host = input('Enter reciever IP: ')
port = int(input('Enter reciever port: '))
print('1. SIA-DCS(Auto Generated) | 2. SIA-DCS (Full String)')
inputType = input('Select signal type: ')
if inputType == '1':
id = input('Enter Client ID: ')
signalType = input('Enter signal type: ')
zone = input('Enter zone number: ')
if signalType == "BA":
image = input('Enter image URL: ')
else:
image = ""
type = '"SIA-DCS"0005L0#' + id + '[' + id + '|Nri1/' + signalType + zone + '][V' + image + ']'
if inputType == '2':
print('Example string: "SIA-DCS"0005L0#1234[1234|Nri1/RP0]')
type = input('Enter full SIA string: ')
while inputType not in ['1', '2']:
program()
sendSia(type, host, port)
check = input('\nSend new signal? y/n: ')
if check == 'y':
clear_screen()
program()
else:
clear_screen()
pass
program()