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 . <EOS>