1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import ipaddress
- import logging
- from core.NeuronModule import NeuronModule, MissingParameterException, InvalidParameterException
- from wakeonlan import wol
- logging.basicConfig()
- logger = logging.getLogger("kalliope")
- class Wake_on_lan(NeuronModule):
- def __init__(self, **kwargs):
- super(Wake_on_lan, self).__init__(**kwargs)
- self.mac_address = kwargs.get('mac_address', None)
- self.broadcast_address = kwargs.get('broadcast_address', '255.255.255.255')
- self.port = kwargs.get('port', 9)
-
- if self._is_parameters_ok():
-
- broadcast_address_unicode = self.broadcast_address.decode('utf-8')
-
- ipaddress.ip_address(broadcast_address_unicode)
- logger.debug("Call Wake_on_lan_neuron with parameters: mac_address: %s, broadcast_address: %s, port: %s"
- % (self.mac_address, self.broadcast_address, self.port))
-
- wol.send_magic_packet(self.mac_address, ip_address=self.broadcast_address, port=self.port)
- def _is_parameters_ok(self):
- """
- Check if received parameters are ok to perform operations in the neuron
- :return: true if parameters are ok, raise an exception otherwise
- .. raises:: InvalidParameterException, MissingParameterException
- """
-
- if self.mac_address is None:
- raise MissingParameterException("mac_address parameter required")
-
- if type(self.port) is not int:
- raise InvalidParameterException(
- "port argument must be an integer. Remove quotes in your configuration.")
- return True
|