A machine learning and internet of things-based online fault diagnosis method for photovoltaic arrays