# Hysteresis

Process
Hysteresis
V
O

# 入力

ID略称名前デフォルト説明
valueVvalueNUMBER0

# 出力

ID略称名前デフォルト説明
outputOoutputBOOLEANfalse

# 設定

ID名前デフォルト単位説明
modemodeENUM0

詳細:

値: Midpoint + Hysteresis, Threshold (On/Off)
midpointmidpointNUMBER50.0

詳細:

表示条件mode = Midpoint + Hysteresis
hysteresishysteresisNUMBER5.0

詳細:

表示条件mode = Midpoint + Hysteresis
> 0
value_onvalue_onNUMBER55.0

詳細:

表示条件mode = Threshold (On/Off)
neq value_off
value_offvalue_offNUMBER45.0

詳細:

表示条件mode = Threshold (On/Off)
neq value_on

# ソースコード

Volang ソースを表示
value = input::get("value")
output = output::get("output")
mode = config::get("mode") // 0=midpoint+hysteresis, 1=threshold

new_output = false

if (mode == 0) { // Midpoint + Hysteresis
    midpoint = config::get("midpoint")
    hysteresis = config::get("hysteresis")
    
    threshold_on = midpoint + hysteresis
    threshold_off = midpoint - hysteresis
    
    if (value >= threshold_on) {
        new_output = true
    } else if (value <= threshold_off) {
        new_output = false
    } else {
        // In hysteresis range, maintain current state
        new_output = output
    }
} else if (mode == 1) { // Threshold (On/Off)
    value_on = config::get("value_on")
    value_off = config::get("value_off")
    
    if (value_on > value_off) {
        // Standard hysteresis: on when high, off when low
        if (value >= value_on) {
            new_output = true
        } else if (value <= value_off) {
            new_output = false
        } else {
            // In hysteresis range, maintain current state
            new_output = output
        }
    } else {
        // Inverted hysteresis: on when low, off when high (value_off > value_on)
        if (value <= value_on) {
            new_output = true
        } else if (value >= value_off) {
            new_output = false
        } else {
            // In hysteresis range, maintain current state
            new_output = output
        }
    }
}

output::set("output", new_output)

Voldeno スマートホーム自動化における Hysteresis Logic Block の動作、用途、設定方法を説明します。