예제 #1
0
    def getStats(self):
        data = Stats()
        data.type = 1

        try:
            summary_data = self.getCommand("summary|")
            summary_response = summary_data.split(";")

            if len(summary_response) > 0:
                data.version = summary_response[1].split("=")[1]
                data.total_hashrate = summary_response[5].split("=")[1]
                data.accepted = summary_response[7].split('=')[1]
                data.rejected = summary_response[8].split('=')[1]
                data.uptime = summary_response[14].split('=')[1]
            """ GPU RESPONSE """
            gpu_data = self.getCommand("threads|")
            gpu_response = gpu_data.split("|")

            if len(gpu_response) > 0:
                for gpu in gpu_response:
                    gpu_data = gpu.split(";")

                    if len(gpu_data) == 12:
                        hashrate = 0
                        wattage = 0

                        if data.version == "2.0":
                            hashrate = gpu_data[11].split('=')[1]
                            wattage = (int(gpu_data[4].split('=')[1]) / 1000)
                        else:
                            hashrate = gpu_data[8].split('=')[1]
                            wattage = (int(gpu_data[4].split('=')[1]) / 1000)

                            data.hashrates.append(hashrate)
                            data.temps.append(gpu_data[3].split('=')[1])
                            data.power_usage.append(wattage)
                            data.fan_speeds.append(gpu_data[5].split('=')[1])

            data.online = self.connected
        except:
            print("Data parsing error")

        return data.toJSON()
예제 #2
0
    def getStats(self):
        data = Stats()
        data.type = 0
        try:
            summary_data = self.getData()
            result = json.loads(summary_data)

            summary_response = result["result"]
            miner_stats = summary_response[2].split(";")

            data.version = summary_response[0]
            data.uptime = summary_response[1]

            if len(miner_stats) > 0:
                data.total_hashrate = miner_stats[0]
                data.accepted = miner_stats[1]
                data.rejected = miner_stats[2]

            dual_stats = summary_response[4].split(";")
            if len(dual_stats) > 0:
                data.total_dual_hashrate = dual_stats[0]
                data.dual_accepted = dual_stats[1]
                data.dual_rejected = dual_stats[2]

            data.hashrates = summary_response[3].split(';')
            # ETH hashrates
            data.dcr_hashrates = summary_response[5].split(';')
            # DCR Hashrates

            data.power_usage = amdgpu_stats.read_watts(len(
                data.hashrates))  # Watts used by AMD / WIP

            # Temps and fan speeds
            temp = summary_response[6].split(';')
            i = 0
            while i < len(temp) - 1:
                data.temps.append(temp[i])
                data.fan_speeds.append(temp[i + 1])
                i += 2

            data.online = self.connected
        except Exception, e:
            print("Parsing error: " + str(e))