Skip to content

Instantly share code, notes, and snippets.

@kloneets
Created February 18, 2016 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kloneets/68e382d2594386638899 to your computer and use it in GitHub Desktop.
Save kloneets/68e382d2594386638899 to your computer and use it in GitHub Desktop.
Termo regulācija caur wifiplug un usb releju.
import time
import datetime
import Adafruit_DHT
from relay import Relay
from subprocess import check_output
# te es definēju vēlamās temperatūras (DHT11 mēdz kļūdīties par +/- 1 grādu pēc Celsija)
maxTempNormal = 23
maxTempHollyday = 20
# te es norādu sava USB releja kanālu (jo man taču ir divi)
relayChannel = 1
relay = Relay()
# šī funkcija pārbauda vai mans wifi slēdzis ir ieslēgts. Vairāk https://github.com/kloneets/wifiplug-java-api
# neaizmirsti, ka tev jāievada savi wifi plug parametri
# šo, protams, palaiž caur konsoli un WifiPlug.jar jābūt kaut kur novietotam
def wifiPlugOn():
return str(check_output("java -jar ./WifiPlug.jar tavs@epasts.lv parole wifiplugID list", shell=True)).find('Currently ON') > -1
# Programma strādā visu laiku, kamēr nav kāds nospiedis ctrl + c
while True:
try:
# nosakam temperatūru un mitrumu no sava sensora un parādam to uz ekrāna
humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT11, 4)
print "Temperature: " + str(temperature)
# es visus grādus logoju, ja nu sagribās uztaisīt kādu grafiku vēlāk
f = open('log.txt', 'a+')
f.write(str(datetime.datetime.now().strftime("%d.%m.%Y %H:%M:%S")) + ';' + str(humidity) + ';' + str(
temperature) + '\n')
f.close()
# nosakam nedēļas dienu, lai zinātu vai ir brīvdiena vai darba diena
today = datetime.datetime.today().weekday()
# paskatamies, kura stunda ir pašlaik, lai zinātu vai ir darba laiks vai vairs nav
nowHour = int(datetime.datetime.now().strftime("%H"))
# ja ir darba diena
if today < 6:
# ja ir darba laiks
if nowHour > 5 and nowHour < 20:
# ja telpā ir pārāk maza temperatūra
if temperature < maxTempNormal:
# pārbaudam vai wifiplug ir izslēgts (switch on if off) un ieslēdzam, ja izslēgts
if not wifiPlugOn():
check_output("java -jar ./WifiPlug.jar tavs@epasts.lv parole wifiplugID on", shell=True)
#to pašu izdaram ar releju
if not relay.is_on(relayChannel):
relay.on(relayChannel)
# nav darba laiks, tāpēc temperatūras ir aukstuma režīmā
else:
if wifiPlugOn():
check_output("java -jar ./WifiPlug.jar tavs@epasts.lv parole wifiplugID off", shell=True)
#check if relay on (switch on if off)
if relay.is_on(relayChannel):
relay.off(relayChannel)
# vairs nav darba laiks un temperatūras nometam uz aukstuma režīmu
else:
if temperature < maxTempHollyday:
#check if wifiplug on (switch on if off)
if not wifiPlugOn():
check_output("java -jar ./WifiPlug.jar tavs@epasts.lv parole wifiplugID on", shell=True)
#check if relay on (switch on if off)
if not relay.is_on(relayChannel):
relay.on(relayChannel)
else:
if wifiPlugOn():
check_output("java -jar ./WifiPlug.jar tavs@epasts.lv parole wifiplugID off", shell=True)
#check if relay on (switch on if off)
if relay.is_on(relayChannel):
relay.off(relayChannel)
# ir brīvdiena un menedžējam kā pienākas brīvdienai
else:
if temperature < maxTempHollyday:
#check if wifiplug on (switch on if off)
if not wifiPlugOn():
check_output("java -jar ./WifiPlug.jar tavs@epasts.lv parole wifiplugID on", shell=True)
#check if relay on (switch on if off)
if not relay.is_on(relayChannel):
relay.on(relayChannel)
else:
if wifiPlugOn():
check_output("java -jar ./WifiPlug.jar tavs@epasts.lv parole wifiplugID off", shell=True)
#check if relay on (switch on if off)
if relay.is_on(relayChannel):
relay.off(relayChannel)
# pārbaudam temperatūru ik pa piecām minūtēm
time.sleep((60 * 5))
# ja lietotājs nospiež ctrl + c, tad beidzam darbu
except (KeyboardInterrupt, SystemExit):
print "\nInterrupted by user"
break
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment