lpcmanager

492c8efe70c0
Dimmer and Buzzer module changed.
# Project name: SmartehIDE
# __init__.py.py: spacer widget module initialization
# 19. 01. 2017 12:24 Uporabnik
#
# Copyright (c) 2017 Smarteh d.o.o. <info@smarteh.si>
# THIS PROGRAM COMES WITH NO WARRANTY
from autobahn.twisted import wamp
from autobahn.twisted.websocket import WampWebSocketClientFactory, connectWS
from autobahn.wamp import types
from autobahn.wamp import auth
from autobahn.wamp.serializer import MsgPackSerializer
import connectors.WAMP as WAMP
from connectors.WAMP import WAMP_connector_factory, WampSession
from threading import _sleep
PASSWORDS = {
u'smarteh': u'smarteh'
}
USER = u'smarteh'
class MWWampSession(WampSession):
def onConnect(self):
self.join(u"Automation", [u"wampcra"], USER)
print "CRA checking init ..."
def onChallenge(self, challenge):
if challenge.method == u"wampcra":
key = PASSWORDS[USER].encode('utf8')
key = auth.derive_key(key, "salt123", 100, 16)
signature = auth.compute_wcs(key, challenge.extra['challenge'].encode('utf8'))
return signature.decode('ascii')
else:
raise Exception("don't know how to handle authmethod {}".format(challenge.method))
def onLeave(self, details):
global _WampSession, _WampSessionEvent
print details
self.disconnect()
_WampSessionEvent.clear()
_WampSession = None
print 'WAMP session left'
DefalutWAMP_connector_factory = WAMP_connector_factory
def MWRegisterWampClient(realm, ID, url, confnodesroot):
## start logging to console
# log.startLogging(sys.stdout)
# create a WAMP application session factory
component_config = types.ComponentConfig(
realm = unicode(realm),
extra = {"ID":ID})
session_factory = wamp.ApplicationSessionFactory(
config = component_config)
session_factory.session = MWWampSession
# create a WAMP-over-WebSocket transport client factory
transport_factory = WampWebSocketClientFactory(
session_factory,
url = url+"/beremiz",
serializers = [MsgPackSerializer()])
# settings autoPing in seconds
#transport_factory.autoPingInterval = 60
#transport_factory.autoPingTimeout = 20
# start the client from a Twisted endpoint
conn = connectWS(transport_factory)
confnodesroot.logger.write(_("WAMP connecting to URL : %s\n")%url)
return conn
def MWWAMP_connector_factory(uri, confnodesroot):
def CustomFunctionCall(self, funcname, args=None):
member = self.__dict__.get(funcname, None)
if member is None:
member = WampSessionProcMapper(funcname)
self.__dict__[funcname] = member
return member
WAMP.RegisterWampClient = MWRegisterWampClient
WAMP.WampSession = MWWampSession
wamp_connector = DefalutWAMP_connector_factory(uri, confnodesroot)
wamp_connector.CustomFunctionCall = CustomFunctionCall
_sleep(1)
return wamp_connector