Bash IF

Generella Linux-frågor och frågor gällande Linuxmjukvara som saknar egen forumkategori skall postas i detta forum
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
Elva
Gillar hemautomation
Inlägg: 37
Blev medlem: 03 jan 2015, 22:51
Ort: Hammenhög

Bash IF

Inlägg 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
Elva
Gillar hemautomation
Inlägg: 37
Blev medlem: 03 jan 2015, 22:51
Ort: Hammenhög

Re: Bash IF

Inlägg 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
Skriv svar