Onion Omega - AquariumV2
Zur Navigation springen
Zur Suche springen
OpenWrt aufsetzen
- [1] herunterladen (die letzte version wo man mittels 1-wire die temperatur sensoren auslesen kann, neuere brauchen device-tree Einträge)
- Usb-Stick mit Fat32 formatieren
- Datei aus Usb-Stick kopieren und als omega2.bin ablegen
- Usb-Stick an Omega2 anschliessen
- Omega via serial Konsole an einem Rechner anschliessen
- Omega flashen: Reset Tast drücken und an machen, nach ein paar Sekunden dann 2+Enter
- nach flashen via Konsole den wifi-AP aktivieren
vi /etc/config/wireless- a drücken und 1 durch 0 ersetzen in der Zeile
option disabled '0' - CTRL+C drücken und x: zum Beenden
- Passwort ändern mit
passwd - Rechner neustarten
reboot
LuCI einrichten
- mit Wlan OpenWrt verbinden
- Seite http://192.168.1.1 aufrufen und als root anmelden
- Network | WLAN => (MediaTek MT76x8 802.11bgn) Wlan einrichten
- System | Software
- Update lists...
- Folgende Programme installieren
- bc
- curl
- htop
- kmod-w1-gpio-custom
- kmod-w1-master-gpio
- kmod-w1-slave-therm
- luci-i18n-base-de
- nano
- php7-cli
- sispmctl
- Port 80 und 22 eventuell noch forwarden in der Firewall
Openssh einrichten (optional)
- dropbear auf einen anderen Port legen
uci set dropbear.@dropbear[0].Port=2222 uci commit dropbear /etc/init.d/dropbear restart
- openssh-server installieren
- root-anmeldung aktivieren mit
PermitRootLogin yesin /etc/ssh/sshd_config - ssh server starten und aktivieren das er nach neustart wieder mit gestartet wird
- dropbear deaktivieren wenn openssh funktioniert
Dateien
/root/aquarium.sh
#!/bin/sh
allStatus=/tmp/sispmctl.status
sis=/usr/bin/sispmctl
MinTemp=19
MaxTemp=23
sunInfo=/tmp/sun.info
if [ ! -f $sunInfo ] ; then
/root/createSunInfo.sh
fi
SunCommand=`cat $sunInfo`
if [ ! -f $allStatus ] ; then
/usr/bin/sispmctl -g all > $allStatus
fi
# aktuelles Datum einlesen
Date=`/bin/date +"%d.%m.%Y %H:%M"`
CurrentHour=`echo $Date | cut -f1 -d":" | cut -f2 -d" "`
CurrentMinute=`echo $Date | cut -f2 -d":"`
AufgangStunde=`echo $SunCommand | cut -f1 -d";" | cut -f2 -d"=" | cut -f1 -d":" | sed -e 's/^0*//'`
AufgangMinute=`echo $SunCommand | cut -f1 -d";" | cut -f2 -d"=" | cut -f2 -d":" | sed -e 's/^0*//'`
UntergangStunde=`echo $SunCommand | cut -f2 -d";" | cut -f2 -d"=" | cut -f1 -d":" | sed -e 's/^0*//'`
UntergangMinute=`echo $SunCommand | cut -f2 -d";" | cut -f2 -d"=" | cut -f2 -d":" | sed -e 's/^0*//'`
###########################################################################################
# bestimmen ob Nacht ist
###########################################################################################
#echo "CH:$CurrentHour,CM:$CurrentMinute,US:$UntergangStunde,UM:$UntergangMinute,AS:$AufgangStunde,AM:$AufgangMinute"
if ( ( [ $CurrentHour -gt $UntergangStunde ] || ( [ $CurrentHour -eq $UntergangStunde ] && [ $CurrentMinute -gt $UntergangMinute ] ) ) || ( [ $CurrentHour -lt $AufgangStunde ] || ( [ $CurrentHour -eq $AufgangStunde ] && [ $CurrentMinute -lt $AufgangMinute ] ) ) ) ; then
Nacht=true
else
Nacht=false
fi
PowerFilter=`cat $allStatus | grep "outlet 1" | awk '{print $5}'`
PowerHeizung=`cat $allStatus | grep "outlet 2" | awk '{print $5}'`
PowerLight=`cat $allStatus | grep "outlet 3" | awk '{print $5}'`
PowerLed=`cat $allStatus | grep "outlet 4" | awk '{print $5}'`
###########################################################################################
# Heizung aktivieren:
# - wenn Temperatur < sollTemp
# und ( Nacht aus oder temperatur < MinTemp )
# und tempRaum < MaxTemp
# und tempBalkon < 18
# Heizung deaktivieren:
# - wenn keine Nacht
# und Temperatur > $MaxTemp Grad ist
# oder
# - wenn Nacht an und Temperatur > $MinTemp Grad ist
# - wenn tempRaum grosser als temp ist
# - wenn $tempBalkon > 20 Grad ist
###########################################################################################
# aktuelle Temperatur einlesen
tempAquarium=`cat /sys/devices/w1_bus_master1/10-00080224de58/w1_slave | grep t= | cut -f2 -d=`
temp=`expr $tempAquarium / 1000`
tempRaum=`cat /sys/devices/w1_bus_master1/10-0008028a9d94/w1_slave | grep t= | cut -f2 -d=`
tempRaum=`expr $tempRaum / 1000`
tempBalkon=`cat /sys/devices/w1_bus_master1/10-000802ab2561/w1_slave | grep t= | cut -f2 -d=`
tempBalkon=`expr $tempBalkon / 1000`
RAD=$(echo "scale=10; a(1)/45" | bc -l)
Winkel=`echo "($CurrentHour*60+$CurrentMinute)*0.125" | bc -l`
sollTemp=`echo "($MinTemp+(($MaxTemp-$MinTemp)*s($Winkel*$RAD)))*1000" | bc -l | cut -f1 -d"."`
#echo "Winkel=$Winkel sollTemp=$sollTemp tempAquarium=$tempAquarium"
if [ $tempAquarium -gt 0 ] ; then
# echo "1"
if [ "$PowerHeizung" = "off" ] && ( [ $tempAquarium -lt $sollTemp ] && ( ( [ "$Nacht" = "false" ] && [ $CurrentHour -gt 6 ] ) || [ $temp -lt $MinTemp ] ) ) && [ $tempRaum -lt $MaxTemp ] && [ $tempBalkon -lt 18 ] ; then
$sis -q -o 2
PowerHeizung=on
# echo "1.1"
else
# echo "1.2"
if [ "$PowerHeizung" = "on" ] && ( ( [ "$Nacht" = "false" ] && [ $tempAquarium -gt $sollTemp ] ) || ( [ "$Nacht" = "true" ] && [ $temp -gt $MinTemp ] ) || ( [ $tempRaum -gt $MaxTemp ] && [ $temp -lt $tempRaum ] ) || [ $tempBalkon -gt 18 ] ) ; then
$sis -q -f 2
PowerHeizung=off
# echo "1.2.1"
fi
fi
fi
##########################################################################################
# Filter aktivieren:
# - wenn Heizung an und ( Nacht an oder vor 7 uhr )
# oder
# - wenn Nacht aus und sp?ter als 7Uhr
# oder
# - wenn frueher als 22Uhr
# Filter deaktivieren:
# - wenn Heisung aus und Nacht an
# oder
# - wenn Nacht aus und spaeter als 22Uhr und fueher als 7Uhr
##########################################################################################
if [ "$PowerFilter" = "off" ] && ( ( [ "$PowerHeizung" = "on" ] && ( [ "$Nacht" = "true" ] || [ $CurrentHour -lt 7 ] ) ) || ( [ "$Nacht" = "false" ] && [ $CurrentHour -gt 6 ] ) || ( [ "$Nacht" = "true" ] && [ $CurrentHour -gt 6 ] && [ $CurrentHour -lt 22 ] ) ) ; then
$sis -q -o 1
else
if [ "$PowerFilter" = "on" ] && ( ( [ "$PowerHeizung" = "off" ] && [ "$Nacht" = "true" ] && ( [ $CurrentHour -gt 21 ] || [ $CurrentHour -lt 7 ] ) ) || ( [ "$Nacht" = "false" ] && [ "$PowerHeizung" = "off" ] && ( [ $CurrentHour -gt 21 ] || [ $CurrentHour -lt 7 ] ) ) ) ; then
$sis -q -f 1
fi
fi
#########################################################################################
# Licht zwischen 10 und 14 uhr aktivieren
#########################################################################################
#if [ "$PowerLight" = "off" ] && [ $CurrentHour -gt 9 ] && [ $CurrentHour -lt 14 ] ; then
# $sis -q -o 3
#else
# if [ "$PowerLight" = "on" ] && ( [ $CurrentHour -lt 10 ] || [ $CurrentHour -gt 13 ] ) ; then
# $sis -q -f 3
# fi
#fi
########################################################################################
# aktuellen status der Stromanschluesse ablegen
########################################################################################
/usr/bin/sispmctl -g all > $allStatus
#debug=true
if [ $debug ]; then
echo "Datum: $Date"
echo "Stunde: $CurrentHour"
echo "Minute: $CurrentMinute"
echo "AufStunde: $AufgangStunde"
echo "AufMinute: $AufgangMinute"
echo "UnStunde: $UntergangStunde"
echo "UnMinute: $UntergangMinute"
echo "tempAquarium: $tempAquarium"
echo "temp: $temp"
echo "tempRaum: $tempRaum"
echo "tempBalkon: $tempBalkon"
echo "RAD: $RAD"
echo "Winkel: $Winkel"
echo "sollTemp: $sollTemp"
echo "Filter: $PowerFilter"
echo "Heizung: $PowerHeizung"
echo "Licht: $PowerLight"
echo "LED: $PowerLed"
echo "Nach: $Nacht"
fi
/root/createSunInfo.sh
/usr/bin/php-cli sun.php > /tmp/sun.info
/root/sendSensorData.sh
#!/bin/sh
Uuid="AquariumV2"
FreeSwap=`grep SwapFree: /proc/meminfo|tr -s [:blank:]|cut -f15 -d" "`
FreeMem=`grep MemFree: /proc/meminfo|tr -s [:blank:]|cut -f12 -d" "`
Load10m=`echo $(awk '{print $2}' < /proc/loadavg)`
Load15m=`echo $(awk '{print $3}' < /proc/loadavg)`
Load1m=`echo $(awk '{print $1}' < /proc/loadavg)`
Processes=`ps |wc -l`
Wlan0In=`ifconfig wlan0 | grep "RX bytes" | cut -d" " -f12 | cut -d":" -f2`
Wlan0Out=`ifconfig wlan0 | grep "TX bytes" | cut -d" " -f17 | cut -d":" -f2`
#Json...={\"value_type\":\""..."\",\"value\":\"$...\"}
JsonFreeSwap={\"value_type\":\""free swap"\",\"value\":\"$FreeSwap\"}
JsonFreeMem={\"value_type\":\""free mem"\",\"value\":\"$FreeMem\"}
JsonLoad10m={\"value_type\":\""load 10 min"\",\"value\":\"$Load10m\"}
JsonLoad15m={\"value_type\":\""load 15 min"\",\"value\":\"$Load15m\"}
JsonLoad1m={\"value_type\":\""load 1 min"\",\"value\":\"$Load1m\"}
JsonProcesses={\"value_type\":\""Processes"\",\"value\":\"$Processes\"}
JsonWlan0In={\"value_type\":\""wlan0 in"\",\"value\":\"$Wlan0In\"}
JsonWlan0Out={\"value_type\":\""wlan0 out"\",\"value\":\"$Wlan0Out\"}
getJsonPower()
{
Power=`cat /tmp/sispmctl.status | grep "outlet $1" | awk '{print $5}'`
# echo $1 $Power
if [ "$Power" == "on" ]; then
Json={\"value_type\":\""power $1"\",\"value\":\"1\"}
else
Json={\"value_type\":\""power $1"\",\"value\":\"0\"}
fi
}
allStatus=/tmp/sispmctl.status
if [ ! -f $allStatus ]; then
/usr/bin/sispmctl -g all > $allStatus
fi
getJsonPower 1
JsonPower1=$Json
getJsonPower 2
JsonPower2=$Json
getJsonPower 3
JsonPower3=$Json
getJsonPower 4
JsonPower4=$Json
#calc(){ awk "BEGIN { print "$*" }"; }
# aktuelle Temperatur einlesen
tempAquarium=`cat /sys/devices/w1_bus_master1/10-00080224de58/w1_slave | grep t= | cut -f2 -d=`
tempAquarium=`awk "BEGIN { print "$tempAquarium/1000" }"`
JsonTempAquarium={\"value_type\":\""temperature_Aquarium"\",\"value\":\"$tempAquarium\"}
tempRaum=`cat /sys/devices/w1_bus_master1/10-0008028a9d94/w1_slave | grep t= | cut -f2 -d=`
tempRaum=`awk "BEGIN { print "$tempRaum/1000" }"`
JsonTempRaum={\"value_type\":\""temperature_schlafzimmer"\",\"value\":\"$tempRaum\"}
tempBalkon=`cat /sys/devices/w1_bus_master1/10-000802ab2561/w1_slave | grep t= | cut -f2 -d=`
tempBalkon=`awk "BEGIN { print "$tempBalkon/1000" }"`
JsonTempBalkon={\"value_type\":\""temperature_balkon"\",\"value\":\"$tempBalkon\"}
Json={\"software_version\":\"1\",\"uuid\":\"$Uuid\",\"sensordatavalues\":[$JsonFreeSwap,$JsonFreeMem,$JsonLoad1m,$JsonLoad10m,$JsonLoad15m,$JsonProcesses,$JsonTempAquarium,$JsonTempRaum,$JsonTempBalkon,$JsonWlan0In,$JsonWlan0Out,$JsonPower1,$JsonPower2,$JsonPower3,$JsonPower4]}
#echo $Json
curl --silent -H "Content-Type: application/json" -X POST -d "$Json" -u <user>:<password> https://<url>/data.php
/root/sun.php
<?php
date_default_timezone_set('UTC');
$now = time();
$gmt_offset = 1; // Unterschied von GMT zur eigenen Zeitzone in Stunden.
$zenith = 90+50/60;
$sunset = date_sunset($now, SUNFUNCS_RET_TIMESTAMP, 51.345131, 12.381670, $zenith, $gmt_offset);
$sunrise = date_sunrise($now, SUNFUNCS_RET_TIMESTAMP, 51.345131, 12.381670, $zenith, $gmt_offset);
echo "sunrise=".date("H:i",$sunrise).";";
echo "sunset=".date("H:i",$sunset);
?>
/etc/crontabs/root
*/2 * * * * /root/sendSensorData.sh 1 1 * * * /root/createSunInfo.sh */1 * * * * /root/aquarium.sh
/etc/modules.d/55-w1-gpio-custom
w1-gpio-custom bus0=0,0,0