Initial commit
This commit is contained in:
47
include/control.py
Normal file
47
include/control.py
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import socket
|
||||
|
||||
class nec_control:
|
||||
def __init__(self, address, id, port=7142):
|
||||
self.__id = (id + int("40", 16)).to_bytes(1, "big")
|
||||
self.__socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
self.__socket.connect((address, port))
|
||||
|
||||
def __genmsg(self, msgbody, msglength):
|
||||
# Header
|
||||
message = b""
|
||||
message += b"\x01\x30" # SOH (Start Of Header)
|
||||
message += self.__id # Destination (Monitor ID)
|
||||
message += b"\x30" # Source (for controller - always 0x30h (ASCII '0'))
|
||||
message += b"\x41" # Message type
|
||||
message += msglength # Message length in hex (example: 0x3Ah must be encoded as ASCII characters '3' and 'A')
|
||||
|
||||
# Message
|
||||
message += b"\x02" # STX (Start of Message)
|
||||
message += msgbody
|
||||
message += b"\x03" # ETX (End of message)
|
||||
|
||||
# Check code
|
||||
xor = message[1]
|
||||
for i in range (2, len(message)):
|
||||
xor = xor ^ message[i]
|
||||
message += bytes([xor])
|
||||
|
||||
# Delimiter
|
||||
message += b"\x0d" # CR (carriage return)
|
||||
|
||||
return(message)
|
||||
|
||||
def powerOn(self):
|
||||
msgbody = b"\x43\x32\x30\x33\x44\x36\x30\x30\x30\x31"
|
||||
msglength = b"0C"
|
||||
message = self.__genmsg(msgbody, msglength)
|
||||
self.__socket.send(message)
|
||||
|
||||
def powerOff(self):
|
||||
msgbody = b"\x43\x32\x30\x33\x44\x36\x30\x30\x30\x34"
|
||||
msglength = b"0C"
|
||||
message = self.__genmsg(msgbody, msglength)
|
||||
self.__socket.send(message)
|
||||
|
||||
Reference in New Issue
Block a user