logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Dane w Domoticzu przesyłane przez SDM 120 Modbus z Wemos d1

Slawek981 11 Maj 2019 23:01 2217 2
REKLAMA
  • #1 17955885
    Slawek981
    Poziom 7  
    Posty: 20
    Ocena: 9
    Witam
    Mam podpięty licznik SDM 120 Modbus do Wemosa d1 mini na oprogramowaniu ESPEasy które przesyła dane do domoticz-a. Zależy mi na monitorowaniu mocy i ilości wyprodukowanej energii (Instalacja PV). Jeżeli chodzi o moc instalacji to wykresy są ok, czyli mogę sobie podglądnąć całodzienna produkcję z dowolną dokładnością. Natomiast licznik kWh i statystyki w domoticzu podają dane w momencie przejścia pełnej kwh. Dzisiaj np. wyprodukowałem 2,97 kWh, a na wykresie i liczniku jest 2 kwh (stan licznika 2,97). Jutro z rana po wytworzeniu 0,03 kWh zaznaczy mi tą jedną kWh. Mam małą instalację 1,2 kWp i zależy mi na tym aby cały dzień był zakończony wynikiem z dokładnością do 2 miejsc po przecinku. Jak to można zmienić ??

    Dane w Domoticzu przesyłane przez SDM 120 Modbus z Wemos d1

    Dane w Domoticzu przesyłane przez SDM 120 Modbus z Wemos d1
  • REKLAMA
  • #2 17957418
    xury
    Specjalista automatyka domowa
    Posty: 7071
    Pomógł: 876
    Ocena: 1486
    To pewnie wynika z powodu sposobu parsowania danych z licznika. By coś więcej powiedzieć trzeba by znać mechanizmy przekazywania danych do API Domoticza, skrypty itp
    Raczej to nie wina samego Domoticza, ale właśnie sposobu dostarczania danych.
  • #3 17957503
    Slawek981
    Poziom 7  
    Posty: 20
    Ocena: 9
    To jest skrypt do licznika, ale za cienki jestem żeby coś zrozumieć ;)

    return {

    baseType = 'device',

    name = 'Counter device adapter',

    matches = function (device, adapterManager)
    local res = ( device.deviceSubType == 'RFXMeter counter'
    or device.deviceSubType == 'Counter Incremental'
    or device.deviceSubType == 'Managed Counter')

    if (not res) then
    adapterManager.addDummyMethod(device, 'updateCounter')
    end

    return res
    end,

    process = function (device, data, domoticz, utils, adapterManager)

    -- from data: counter, counterToday, valueQuantity, valueUnits

    local valueFormatted = device.counterToday or ''
    local info = adapterManager.parseFormatted(valueFormatted, domoticz['radixSeparator'])
    device['counterToday'] = info['value']

    valueFormatted = device.counter or ''
    info = adapterManager.parseFormatted(valueFormatted, domoticz['radixSeparator'])
    device['counter'] = info['value']

    if device.deviceSubType == 'Managed Counter' and ( device.valueUnits == nil or device.valueUnits == "" ) then
    device.valueUnits = string.match(device._data.data.counter, "%a+%d*") or ''
    end

    function device.updateCounter(value)
    if type(value) == "table" then
    domoticz.log('no updateCounter with value of type table allowed !! ', utils.LOG_ERROR)
    return nil
    else
    return device.update(0, value)
    end
    end

    end

    }
REKLAMA