# Registry_Test.py 21/05/2016 D.J.Whale # # Test harness for the Registry #TODO: need a way to separate device creation from device restoration #and the app needs to know what mode it is in. #creation is probably just a test feature, as a user would either #install the device, configure it, or learn it. import unittest from Registry import * import radio radio.DEBUG=True class TestRegistry(unittest.TestCase): def setUp(self): # seed the registry registry.add(Devices.MIHO005(device_id=0x68b), "tv") registry.add(Devices.ENER002(device_id=(0xC8C8C, 1)), "fan") # test the auto create mechanism registry.auto_create(self) def test_capabilities(self): print("tv switch:%s" % self.tv.has_switch()) print("tv send:%s" % self.tv.can_send()) print("tv receive:%s" % self.tv.can_receive()) print("fan switch:%s" % self.fan.has_switch()) print("fan send:%s" % self.fan.can_send()) print("fan receive:%s" % self.fan.can_receive()) def test_ook_tx(self): """Test the transmit pipeline""" self.fan.turn_on() self.fan.turn_off() def test_fsk_tx(self): """Test the transmit pipeline for MiHome FSK devices""" self.tv.turn_on() self.tv.turn_off() def test_fsk_rx(self): """Test the receive pipeline for FSK MiHome adaptor""" #synthesise receiving a report message #push it down the receive pipeline #radio.receive() # ->OpenThingsAirInterface.incoming # ->OpenThings.decrypt # ->OpenThings.decode # ->OpenThingsAirInterface->route # ->MIHO005.incoming_message() # #it should update voltage, power etc ## poor mans incoming synthetic message report = OpenThings.Message(Devices.MIHO005_REPORT) report.set(recs_VOLTAGE_value=240, recs_CURRENT_value=2, recs_FREQUENCY_value=50, recs_REAL_POWER_value=100, recs_REACTIVE_POWER_value=0, recs_APPARENT_POWER_value=100) self.tv.incoming_message(report) # get readings from device voltage = self.tv.get_voltage() frequency = self.tv.get_frequency() power = self.tv.get_real_power() switch = self.tv.is_on() print("voltage %f" % voltage) print("frequency %f" % frequency) print("real power %f" % power) print("switch %s" % switch) if __name__ == "__main__": import OpenThings OpenThings.init(Devices.CRYPT_PID) unittest.main() # END