Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- !/bin/bash
- base="/etc/openhab2"
- execs="$base/scripts/execs"
- api="http://localhost:8080/rest"
- ctype="Content-Type: text/plain"
- getlast () {
- from=$1
- col=$2
- jq=".results[].series[]|.name,.values[0][]"
- ret=($(curl -s -G "http://localhost:8086/query?db=openhab_db" \
- -u openhab:openhab \
- --data-urlencode "q=SELECT LAST(value) FROM $from" | jq "$jq"))
- echo "${ret[$col]}"
- }
- getmode () {
- mode=$(sqlite3 home.db "SELECT name FROM modes WHERE active = 'true'")
- echo $mode
- }
- roomactive () {
- room=$1
- sqlite3 home.db "SELECT name FROM items WHERE room = '$room'" | while read line
- do
- if [[ $line = Exec* ]]; then
- if [ $(/bin/sh $execs/$line.sh) = "true" ]; then echo "true" && break; fi
- fi
- if [[ $line = Licht* ]]; then
- poll=$(curl -s $api/items/$line$room/state)
- if [ $poll = "ON" ]; then echo "true" && break; fi
- if [ $poll = "NULL" ]; then
- curl -H "$ctype" -X POST -d "ON" $api/items/$line$room
- sleep 1
- poll=$(curl -s $api/items/$line$room/state)
- if [ $poll = "ON" ]; then echo "true" && break; fi
- fi
- fi
- done
- }
- dutycycle () {
- duty_cycle=$(getlast "maxCubeDutyCycle" 2)
- echo "duty cycle $duty_cycle"
- case $((
- ($duty_cycle >= 0 && $duty_cycle <= 33) * 1 +
- ($duty_cycle > 33 && $duty_cycle <= 84) * 2 +
- ($duty_cycle > 90 && $duty_cycle <= 100) * 3)) in
- (1) csleep="1";;
- (2) csleep="5";;
- (3) csleep="100";;
- esac
- echo $csleep
- }
- setroom () {
- room=$1
- ttemp=$2
- mode=$3
- cycle=$(dutycycle)
- if [ $cycle = "100" ]; then
- echo "cube komplett am gneischiessn abbruch"
- else
- curl -s -H "$ctype" -X POST -d "$ttemp" $api/items/maxSetTemp$line && echo "set maxSetTemp$line to $ttemp" && sleep 10
- curl -s -H "$ctype" -X POST -d "$mode" $api/items/maxMode$line && echo "set maxMode$line to $mode" && sleep 10
- fi
- }
- mode=$(getmode)
- dcycle=$(dutycycle)
- echo "DC $dcycle"
- echo "Mode $mode"
- sqlite3 home.db "SELECT name FROM rooms" | while read line
- do
- if roomactive $line | grep -q true
- then
- stemp=$(getlast maxSetTemp$line 2)
- if ! [[ $stemp == *"."* ]]; then stemp="$stemp.0"; fi
- ttemp=$(sqlite3 home.db "SELECT target FROM temps WHERE room = '$line' AND mode = '$mode' AND status = 'active'")
- echo "$line aktiv"
- echo $stemp
- echo $ttemp
- if [ $stemp != $ttemp ]; then
- echo "falsche temp gesetzt"
- setroom $line $ttemp MANUAL
- else
- echo "richtige temp gesetzt"
- fi
- else
- stemp=$(getlast maxSetTemp$line 2)
- if ! [[ $stemp == *"."* ]]; then stemp="$stemp.0"; fi
- ttemp=$(sqlite3 home.db "SELECT target FROM temps WHERE room = '$line' AND mode = '$mode' AND status = 'inactive'")
- echo "$line inaktiv"
- echo $stemp
- echo $ttemp
- if [ $stemp != $ttemp ]; then
- echo "falsche temp gesetzt"
- setroom $line $ttemp MANUAL
- else
- echo "richtige temp gesetzt"
- fi
- fi
- done
- exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement