39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
"""Hold common functions for CIP messaging."""
|
|
from datetime import datetime
|
|
|
|
|
|
def reverse_parameter_name(lower_underscore):
|
|
"""Reverse the parameter lookup process."""
|
|
lower_split = lower_underscore.split("_")
|
|
upper_split = [x[0].upper() + x[1:] for x in lower_split]
|
|
return " ".join(upper_split)
|
|
|
|
|
|
def bitfield(n):
|
|
"""Distribute integer into bits."""
|
|
binary_with_padding = "0"*32 + bin(int(n))[2:]
|
|
binary = binary_with_padding[-32:]
|
|
bin_array = [1 if digit == '1' else 0 for digit in binary]
|
|
bin_array.reverse()
|
|
return bin_array
|
|
|
|
|
|
class CIP_value(object):
|
|
"""Value of vfd parameter."""
|
|
|
|
def __init__(self, name, units):
|
|
"""Initialize VFD Parameter."""
|
|
self.name = name
|
|
self.value = None
|
|
self.timestamp = 0
|
|
self.units = units
|
|
|
|
def update(self, value):
|
|
"""Update the current value."""
|
|
self.value = value
|
|
self.timestamp = datetime.now()
|
|
|
|
def __str__(self):
|
|
"""Represent as a string."""
|
|
return "name: {}, value: {} {}, timestamp: {}".format(self.name, self.value, self.units, self.timestamp)
|