Hirdetés

Új hozzászólás Aktív témák

  • Zolee897

    tag

    válasz Zolee897 #18162 üzenetére

    elrontotta az előbb az indenteket, ez lenne a kód



    from pymodbus.client.sync import ModbusTcpClient
    import time
    def to_I32(i):
        i = ((i[0] << 16) + i[1])
        i = i & 0xffffffff
        return (i ^ 0x80000000) - 0x80000000
    def read_holding(client, UnitID, i, nb):
        result = client.read_holding_registers(i, nb, unit=UnitID)
        ns = time.time()
        while (time.time() - ns < 1.5):
            try:
                j = result.registers[nb - 1]
                break
            except Exception as Error:
                if 'exception_code' in vars(result):
                    break
                time.sleep(0.1)
                continue
        return result
    def read_register_value(client, unitID, register):
        try:
            return to_I16(result.registers)
        except:
            result = read_holding(client, unitID, register, 2)
            if (25000 > result.registers[0] > 23000):
                return time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(to_I32(result.registers)))
            else:
                return to_I32(result.registers)
        
    client = ModbusTcpClient(host='192.168.200.1', port='502', unit_id=0)
    connection = client.connect()
    time.sleep(1)
    if client.connect():
        print("Eddigi összes termelés: " + str(read_register_value(client, 0, 32106)/100) + " kWh")
        print("Mai termelés: " + str(read_register_value(client, 0, 32114)/100) + " kWh")
    #    print("Aktuális belső hőmérséklet: " + str(read_register_value(client, 0, 32087)/100) + " °C")
    # a hőmérséklet ki van kommentezve, mert valamiért állandóan 30 fokot mutat és ráadásul a scale sem stimmel. Ezt még nem értem
    else:
        print("Connecting... FAILED")

    [ Szerkesztve ]

Új hozzászólás Aktív témák