A computer implemented method for controlling a device on a software defined network, SDN, in response to environmental data; the method comprising: receiving environmental data; providing a master SDN controller for controlling the SDN network; generating control data by the master SDN controller in response to the environmental data; generating a co-controller by a master SDN controller containing the control data; dispatching the co-controller to the device by master SDN controller for residing thereon; controlling the device in response to the control data; generating configuration data based on input received from users via one or more client portals configured for facilitating users controlling networked devices; the master SDN controller being operable to generate routing data for the networked devices; generating by the master SDN controller a plurality of discrete co-controllers each associated with a particular end user; each SDN co-controller including configuration data and routing data for an associated networked device; dispatching the SDN co-controller by the master SDN controller to the networked devices associated with the respective end users for controlling thereof; installing the SDN co-controllers on the networked devices; and registering the installed SDN co-controllers with the master SDN controller for controlling the routing of data from the networked devices and for controlling the configuration of the networked devices. receiving environmental data; providing a master SDN controller for controlling the SDN network; generating control data by the master SDN controller in response to the environmental data; generating a co-controller by a master SDN controller containing the control data; dispatching the co-controller to the device by master SDN controller for residing thereon; controlling the device in response to the control data; generating configuration data based on input received from users via one or more client portals configured for facilitating users controlling networked devices; the master SDN controller being operable to generate routing data for the networked devices; generating by the master SDN controller a plurality of discrete co-controllers each associated with a particular end user; each SDN co-controller including configuration data and routing data for an associated networked device; dispatching the SDN co-controller by the master SDN controller to the networked devices associated with the respective end users for controlling thereof; installing the SDN co-controllers on the networked devices; and registering the installed SDN co-controllers with the master SDN controller for controlling the routing of data from the networked devices and for controlling the configuration of the networked devices. generating configuration data based on input received from users via one or more client portals configured for facilitating users controlling networked devices; the master SDN controller being operable to generate routing data for the networked devices; generating by the master SDN controller a plurality of discrete co-controllers each associated with a particular end user; each SDN co-controller including configuration data and routing data for an associated networked device; dispatching the SDN co-controller by the master SDN controller to the networked devices associated with the respective end users for controlling thereof; installing the SDN co-controllers on the networked devices; and registering the installed SDN co-controllers with the master SDN controller for controlling the routing of data from the networked devices and for controlling the configuration of the networked devices.