def run(self, registry): import copy from liota.dccs.graphite import Graphite from liota.dcc_comms.socket_comms import SocketDccComms # Acquire resources from registry # Creating a copy of system object to keep original object "clean" edge_system = copy.copy(registry.get("edge_system")) # Get values from configuration file config_path = registry.get("package_conf") config = read_user_config(config_path + '/sampleProp.conf') # Initialize DCC object with transport self.graphite = Graphite( SocketDccComms(ip=config['GraphiteIP'], port=config['GraphitePort'])) # Register gateway system graphite_edge_system = self.graphite.register(edge_system) registry.register("graphite", self.graphite) registry.register("graphite_edge_system", graphite_edge_system)
# In this example, we demonstrate how data from a simulated device generating # random physical variables can be directed to graphite data center component # using Liota. if __name__ == '__main__': edge_system = Dell5KEdgeSystem(config['EdgeSystemName']) # initialize and run the physical model (simulated device) bike_model = BikeSimulated(name=config['DeviceName'], ureg=ureg) # Sending data to Graphite data center component # Socket is the underlying transport used to connect to the Graphite # instance graphite = Graphite( SocketDccComms(ip=config['GraphiteIP'], port=config['GraphitePort'])) graphite_reg_dev = graphite.register(bike_model) metric_name = "model.bike.speed" bike_speed = Metric(name=metric_name, unit=(ureg.m / ureg.sec), interval=5, sampling_function=get_bike_speed) reg_bike_speed = graphite.register(bike_speed) graphite.create_relationship(graphite_reg_dev, reg_bike_speed) reg_bike_speed.start_collecting() metric_name = "model.bike.power" bike_power = Metric(name=metric_name, unit=ureg.watt, interval=5,
return random.randint(10, 25) def get_vibration(): return round(random.uniform(0.480, 0.7), 3) # --------------------------------------------------------------------------------------- # In this example, we demonstrate how metrics collected from a SensorTag device over BLE # can be directed to graphite data center component using Liota. # The program illustrates the ease of use Liota brings to IoT application developers. if __name__ == '__main__': # create a data center object, graphite in this case, using websocket as a transport layer graphite = Graphite(SocketDccComms(ip=config['GraphiteIP'], port=8080)) try: # create a System object encapsulating the particulars of a IoT System # argument is the name of this IoT System edge_system = Dell5KEdgeSystem(config['EdgeSystemName']) # resister the IoT System with the graphite instance # this call creates a representation (a Resource) in graphite for this IoT System with the name given reg_edge_system = graphite.register(edge_system) tf_rpm_metric = Metric(name="windmill.RPM", unit=None, interval=1, aggregation_size=1, sampling_function=get_rpm)
import unittest from liota.core.offlineQueue import offlineQueue from liota.dcc_comms.socket_comms import SocketDccComms comms = SocketDccComms(ip="92.246.246.188", port=8080) size = 1 class TestofflineQueue(unittest.TestCase): def test_offlineQueue_fail_without_valid_size(self): #Fails if no argument passed with self.assertRaises(Exception): offlineQ = offlineQueue() assertNotIsInstance(offlineQ, offlineQueue) #Fails if not valid size and comms passed with self.assertRaises(Exception): offlineQ = offlineQueue(size="asd", comms=None) assertNotIsInstance(offlineQ, offlineQueue) def test_offlineQueue_takes_valid_size(self): offlineQ = offlineQueue(size=size, comms=comms) assert isinstance(offlineQ, offlineQueue) def test_offlineQueue_fail_with_invalidArg_drop_oldest(self): #Fails if bool not passed as drop_oldest with self.assertRaises(Exception): offlineQ = offlineQueue(size=size, comms=comms, drop_oldest=1) assertNotIsInstance(offlineQ, offlineQueue)
# random numbers can be directed to graphite data center component using Liota. # The program illustrates the ease of use Liota brings to IoT application # developers. def xmpp_subscribe(): xmpp_conn = XmppDeviceComms("[email protected]", "m1ndst1x", "127.0.0.1", "5222") xmpp_conn.subscribe("pubsub.127.0.0.1", "/vmware11", callback_openfire_data) if __name__ == '__main__': xmpp_subscribe() edge_system = SimulatedEdgeSystem('EdgeSystemName') # Sending data to Graphite data center component # Socket is the underlying transport used to connect to the Graphite # instance graphite = Graphite(SocketDccComms(ip='127.0.0.1', port=80)) graphite_reg_edge_system = graphite.register(edge_system) metric_name = 'OpenfireData' openfire_metric = Metric( name=metric_name, interval=0, sampling_function=lambda: get_value(openfire_data)) reg_openfire_metric = graphite.register(openfire_metric) graphite.create_relationship(graphite_reg_edge_system, reg_openfire_metric) reg_openfire_metric.start_collecting()