23-04-2016, 08:38:29
@dquantz:
Ich habe einen 5000 L Tank, daher ist der Wert MAXTEMP=5000. Dies bitte an deine Gegebenheiten anpassen.
Bis zur Variablen 6 sollte dann alles universell passen.
Die Variablen 7, 8 und 9 berechnen dann die Liter Zahl anhand der verbleibenden cm. Auch hier bitten an das Fasungsvermögen und die Abmessung deines Öltanks anpassen.
var6 = die Strecke vom Sensor bis zum ÖL in cm
var7 + var8 = Berechnung des Leerraumes des Öltanks anhand des Volumens deines Tanks in Liter
var9 = hier wird der Leerraum vom Gesamtvolumen des Tanks abgezogen -> Ergebnis vorhandes Heizöl in Liter
Da der Sensor regelmäßig seltsame Werte liefert wir im Anschluss noch geprüft ob der Wert zwischen 0 und 5000 liegt. Sollte der Wert ausserhalb des Rahmens liegen, wird der letzte logische Wert ausgegeben.
Das Ergebnis wir in die Datei /home/pi/heizoel.txt geschrieben und mit folgendem Eintrag in der Sitemap als Number-Item in Openhab übernommen:
Number Heizoel "Heizöl [%d Liter]" <chart> { exec="<[cat /home/pi/heizoel.txt:120000:REGEX((.*?))]"
und hier das script:
Viel Erfolg!!!
Gruß
Thomas
Ich habe einen 5000 L Tank, daher ist der Wert MAXTEMP=5000. Dies bitte an deine Gegebenheiten anpassen.
Bis zur Variablen 6 sollte dann alles universell passen.
Die Variablen 7, 8 und 9 berechnen dann die Liter Zahl anhand der verbleibenden cm. Auch hier bitten an das Fasungsvermögen und die Abmessung deines Öltanks anpassen.
var6 = die Strecke vom Sensor bis zum ÖL in cm
var7 + var8 = Berechnung des Leerraumes des Öltanks anhand des Volumens deines Tanks in Liter
var9 = hier wird der Leerraum vom Gesamtvolumen des Tanks abgezogen -> Ergebnis vorhandes Heizöl in Liter
Da der Sensor regelmäßig seltsame Werte liefert wir im Anschluss noch geprüft ob der Wert zwischen 0 und 5000 liegt. Sollte der Wert ausserhalb des Rahmens liegen, wird der letzte logische Wert ausgegeben.
Das Ergebnis wir in die Datei /home/pi/heizoel.txt geschrieben und mit folgendem Eintrag in der Sitemap als Number-Item in Openhab übernommen:
Number Heizoel "Heizöl [%d Liter]" <chart> { exec="<[cat /home/pi/heizoel.txt:120000:REGEX((.*?))]"
und hier das script:
Code:
#!/bin/bash
MINTEMP=0
MAXTEMP=5000
i2cset -y 1 0x70 0x00 0x51
var1=`i2cget -y 1 0x70 0x02`
var3=`printf "%d\n" $var1`
var2=`i2cget -y 1 0x70 0x03`
var4=`printf "%d\n" $var2`
if
[ "$var3" -ne "0" ]
then
var5=256
else
var5=0
fi
var6=`expr $var3 + $var4 + $var5`
var7=`expr $var6 \* 33333333`
var8=`expr $var7 \/ 1000000`
var9=`expr 5000 \- $var8`
if [ $(echo "if (${var9} > ${MAXTEMP}) 1 else 0" | bc) -eq 1 -o $(echo "if (${var9} < ${MINTEMP}) 1 else 0" | bc) -eq 1 ]; then
if [ -f /tmp/dht22vars/oel.txt ]; then
cat /tmp/dht22vars/oel.txt > /home/pi/heizoel.txt
fi
else
echo $var9 > /home/pi/heizoel.txt
echo $var9 > /tmp/dht22vars/oel.txt
fi
var1=
var2=
var3=
var4=
var5=
var6=
var7=
var8=
var9=
Viel Erfolg!!!
Gruß
Thomas