Sida 1 av 1

Bash IF

Postat: 08 feb 2015, 12:43
av Elva
Sitter och filar på en shuntstyrning skrivet i bash som körs på en RPi och har kört fast lite.

Har en kodsnutt som ser ut såhär

Kod: Markera allt

#Kör shunt
if (( $(bc <<< $UppeJustering">"3) ))
        then
                echo "Öppnar shunt"
                echo 1 > /mnt/exthd/1wire/bus.1/12.71E4A7000000/PIO.A
                sleep "$UppeJustering"
                echo 0 > /mnt/exthd/1wire/bus.1/12.71E4A7000000/PIO.A
elif (( $(bc <<< $UppeJustering"<"-3) ))
        then
                UppeJustering=$(echo "scale=2; $UppeJustering*(-1);" | bc)
                echo "Stänger shunt"
                echo 1 > /mnt/exthd/1wire/bus.1/12.71E4A7000000/PIO.B
                sleep "$UppeJustering"
                echo 0 > /mnt/exthd/1wire/bus.1/12.71E4A7000000/PIO.B
        else    echo "Rätt tempreatur"
fi
$UppeJustering är gångtiden för shunten framräknad av i stora drag utetemperatur, värmekurva samt rumstemperatur.

Det som jag behöver hjälp med är att om $Pump = 0 skall inte shunten köra.
Har på ett annat ställe lite kod som startar och stannar c-pumpen (och sätter $Pump till 1 eller 0) efter utetemperaturen.

/Lenny

Re: Bash IF

Postat: 15 feb 2015, 22:13
av Elva
Lägger in en lösning om någon annan söker efter IF sats

Är medveten om att 'scale=2' bara avrundar till 2 decimaler och behöver inte vara med. Men det fungerar så jag låter det vara.

Kod: Markera allt

#Kör shunt
if (( $(bc <<< $Pump">"0.9) ))
        then
        if (( $(bc <<< $UppeJustering"<"-0.5) ))
                then
                        UppeJustering=$(echo "scale=2; $UppeJustering*(-1);" | bc)
                        echo "Öppnar shunt"
                        echo 1 > /mnt/exthd/1wire/bus.1/12.71E4A7000000/PIO.A
                        sleep "$UppeJustering"
                        echo 0 > /mnt/exthd/1wire/bus.1/12.71E4A7000000/PIO.A
        elif (( $(bc <<< $UppeJustering">"0.5) ))
                then
                        echo "Stänger shunt"
                        echo 1 > /mnt/exthd/1wire/bus.1/12.71E4A7000000/PIO.B
                        sleep "$UppeJustering"
                        echo 0 > /mnt/exthd/1wire/bus.1/12.71E4A7000000/PIO.B
                else
                        echo "Rätt temperatur"
        fi
        else
                echo "C-Pump stopp"
fi
//Lenny