Advertisement
Guest User

Untitled

a guest
Dec 9th, 2018
631
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.88 KB | None | 0 0
  1. !/bin/bash
  2.  
  3. base="/etc/openhab2"
  4. execs="$base/scripts/execs"
  5. api="http://localhost:8080/rest"
  6. ctype="Content-Type: text/plain"
  7.  
  8. getlast () {
  9. from=$1
  10. col=$2
  11. jq=".results[].series[]|.name,.values[0][]"
  12.  
  13. ret=($(curl -s -G "http://localhost:8086/query?db=openhab_db" \
  14. -u openhab:openhab \
  15. --data-urlencode "q=SELECT LAST(value) FROM $from" | jq "$jq"))
  16.  
  17. echo "${ret[$col]}"
  18. }
  19.  
  20. getmode () {
  21. mode=$(sqlite3 home.db "SELECT name FROM modes WHERE active = 'true'")
  22. echo $mode
  23. }
  24.  
  25. roomactive () {
  26. room=$1
  27. sqlite3 home.db "SELECT name FROM items WHERE room = '$room'" | while read line
  28. do
  29. if [[ $line = Exec* ]]; then
  30.  
  31. if [ $(/bin/sh $execs/$line.sh) = "true" ]; then echo "true" && break; fi
  32.  
  33. fi
  34. if [[ $line = Licht* ]]; then
  35.  
  36. poll=$(curl -s $api/items/$line$room/state)
  37.  
  38. if [ $poll = "ON" ]; then echo "true" && break; fi
  39. if [ $poll = "NULL" ]; then
  40.  
  41. curl -H "$ctype" -X POST -d "ON" $api/items/$line$room
  42. sleep 1
  43. poll=$(curl -s $api/items/$line$room/state)
  44.  
  45. if [ $poll = "ON" ]; then echo "true" && break; fi
  46. fi
  47. fi
  48. done
  49. }
  50.  
  51. dutycycle () {
  52. duty_cycle=$(getlast "maxCubeDutyCycle" 2)
  53. echo "duty cycle $duty_cycle"
  54.  
  55. case $((
  56. ($duty_cycle >= 0 && $duty_cycle <= 33) * 1 +
  57. ($duty_cycle > 33 && $duty_cycle <= 84) * 2 +
  58. ($duty_cycle > 90 && $duty_cycle <= 100) * 3)) in
  59. (1) csleep="1";;
  60. (2) csleep="5";;
  61. (3) csleep="100";;
  62. esac
  63. echo $csleep
  64. }
  65.  
  66. setroom () {
  67. room=$1
  68. ttemp=$2
  69. mode=$3
  70. cycle=$(dutycycle)
  71.  
  72. if [ $cycle = "100" ]; then
  73. echo "cube komplett am gneischiessn abbruch"
  74. else
  75. curl -s -H "$ctype" -X POST -d "$ttemp" $api/items/maxSetTemp$line && echo "set maxSetTemp$line to $ttemp" && sleep 10
  76. curl -s -H "$ctype" -X POST -d "$mode" $api/items/maxMode$line && echo "set maxMode$line to $mode" && sleep 10
  77. fi
  78. }
  79.  
  80.  
  81. mode=$(getmode)
  82. dcycle=$(dutycycle)
  83. echo "DC $dcycle"
  84. echo "Mode $mode"
  85.  
  86. sqlite3 home.db "SELECT name FROM rooms" | while read line
  87. do
  88. if roomactive $line | grep -q true
  89. then
  90. stemp=$(getlast maxSetTemp$line 2)
  91. if ! [[ $stemp == *"."* ]]; then stemp="$stemp.0"; fi
  92. ttemp=$(sqlite3 home.db "SELECT target FROM temps WHERE room = '$line' AND mode = '$mode' AND status = 'active'")
  93.  
  94. echo "$line aktiv"
  95. echo $stemp
  96. echo $ttemp
  97.  
  98. if [ $stemp != $ttemp ]; then
  99. echo "falsche temp gesetzt"
  100. setroom $line $ttemp MANUAL
  101. else
  102. echo "richtige temp gesetzt"
  103. fi
  104.  
  105. else
  106. stemp=$(getlast maxSetTemp$line 2)
  107. if ! [[ $stemp == *"."* ]]; then stemp="$stemp.0"; fi
  108. ttemp=$(sqlite3 home.db "SELECT target FROM temps WHERE room = '$line' AND mode = '$mode' AND status = 'inactive'")
  109.  
  110. echo "$line inaktiv"
  111. echo $stemp
  112. echo $ttemp
  113.  
  114. if [ $stemp != $ttemp ]; then
  115. echo "falsche temp gesetzt"
  116. setroom $line $ttemp MANUAL
  117. else
  118. echo "richtige temp gesetzt"
  119. fi
  120. fi
  121. done
  122. exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement