#!/usr/bin/python import subprocess import smbus import socket import os from time import sleep, strftime from Adafruit_I2C import Adafruit_I2C from Adafruit_MCP230xx import Adafruit_MCP230XX from Adafruit_CharLCDPlate import Adafruit_CharLCDPlate from datetime import datetime from subprocess import * def run_cmd(cmd): p = Popen(cmd, shell=True, stdout=PIPE) output = p.communicate()[0] return output #Definera temperatur sensorerm otempid = "xx" itempid = "xx" # use busnum = 0 for raspi version 1 (256MB) and busnum = 1 for version 2 lcd = Adafruit_CharLCDPlate(busnum = 1) # clear display lcd.clear() rakna = 0 #Variabel for halla reda pa tiden for backlight mm huvudtid1 = 30 # =3 sekunder. Tiden hududmeny ska lysa och hur lange submenyerna ska visas. huvudtid2 = 60 # tiden till huvudmeny slacks hitta_ipadress_e = "ip addr show eth0 | grep inet | awk '{print $2}' | cut -d/ -f1" #kollar ipadressen ipadress_e = run_cmd(hitta_ipadress_e) #kollar ip hitta_ipadress_w = "ip addr show wlan0 | grep inet | awk '{print $2}' | cut -d/ -f1" #kollar ipadressen ipadress_w = run_cmd(hitta_ipadress_w) #kollar ip select_enabled = 0 # aktivera select valet for nexa menyn select_lista = [] select_list_val = 0 #funktion for att lasa in data till selectmenyn: def run_command(command): p = subprocess.Popen(command,stdout=subprocess.PIPE,stderr=subprocess.STDOUT) return iter(p.stdout.readline, b'') #kommando for att hamta listan fran tdtool command = 'tdtool --list' #kor en for-loop for att skapa en lista for line in run_command(command.split()): first = line.find('\t') + 1 #hitta forsta \t <- tab second = line.rfind('\t') #hitta andra \t <- tab #hoppa over allt som innehaller temperature if(line.find("temperature",first,second) > -1 ): continue #hoppa over allt som innehaller MODEL if(line.find("MODEL",first,second) > -1 ): continue if (first > 0): select_lista.append(line[first:second]) #spara endast namnet i en lista ##AVSLUT ##HITTA ETT OBJEKT I LISTAN print select_lista print len(select_lista) #SKRIV UT ETT NAMN UR LISTAN while 1: sleep(0.1) #tar den till top sidan och lange top sidan i vilolaget rakna = rakna + 1 if (rakna > huvudtid1 and rakna < huvudtid2): lcd.clear() lcd.message(datetime.now().strftime('%b %d %H:%M:%S\n')) if (rakna >= huvudtid2): #lcd.backlight(lcd.OFF) lcd.clear() lcd.backlight(lcd.OFF) lcd.message(datetime.now().strftime('%b %d %H:%M:%S\n')) # vanster knapp if (lcd.buttonPressed(lcd.LEFT)): lcd.clear() lcd.message("SELFIE INC!") command2 = "xx/sökväg/xxselfie.sh" #testa run_cmd istallet run_cmd(command2) #run_command(command2.split()) lcd.backlight(lcd.ON) rakna = 0 sleep(5) # uppat knapp if (lcd.buttonPressed(lcd.UP)): lcd.clear() lcd.message(datetime.now().strftime('%b %d %H:%M:%S\n')) lcd.backlight(lcd.ON) rakna = 0 # nerat knapp if (lcd.buttonPressed(lcd.DOWN)): lcd.clear() lcd.message("UPPDATERAR") indoor = "" #temperatur inne outdoor = "" #temperatur ute for line in run_command(command.split()): first = line.find('\t') + 1 #hitta forsta \t <- tab second = line.rfind('\t') #hitta andra \t <- tab #hoppa over allt som innehaller temperature if(line.find("temperaturehumidity",first,second) > -1 ): temp_variabel = line[first:second] first = temp_variabel.find('\t') + 1 #hitta forsta \t <- tab second = temp_variabel.rfind('\t') #hitta andra \t <- tab temp_variabel = temp_variabel[first:(second-2)] if(temp_variabel.find(itempid) > -1 ): first = temp_variabel.find('\t') + 1 indoor = temp_variabel[first:(len(temp_variabel))] elif(temp_variabel.find(otempid) > -1 ): first = temp_variabel.find('\t') + 1 outdoor = temp_variabel[first:(len(temp_variabel))] #continue #hoppa over allt som innehaller MODEL #if (first > 0): # select_lista.append(line[first:second]) #spara endast namnet i en lista ##AVSLUT lcd.clear() lcd.message("Indoor : " + indoor + "\noutdoor: " + outdoor) lcd.backlight(lcd.ON) rakna = 0 # hoger knapp if (lcd.buttonPressed(lcd.RIGHT)): lcd.clear() lcd.message('E' + ipadress_e + '\nW' + ipadress_w) lcd.backlight(lcd.ON) rakna = 0 if (lcd.buttonPressed(lcd.SELECT)): lcd.backlight(lcd.ON) select_enabled = 1 select_list_val = 0 sleep (0.5) lcd.clear() lcd.message("Enhet: %s\n V=on H=off" %(select_lista[select_list_val])) while select_enabled: if (lcd.buttonPressed(lcd.SELECT)): select_enabled = 0 lcd.clear() lcd.message("Lamnar nu Nexa\nmenyn") sleep(1) sleep(0.15) if (lcd.buttonPressed(lcd.UP)): #print select_list_val #for debug #print len(select_lista) #for debug lcd.clear() select_list_val = select_list_val - 1 #oka menyval med ett #om listan e slut borja om fran borjan. #print select_list_val if(select_list_val < 0 ): select_list_val = len(select_lista) - 1 #print "komhit" lcd.message("Enhet: %s\n V=on H=Off" %(select_lista[select_list_val])) #valj menyitem sleep(0.05) if (lcd.buttonPressed(lcd.DOWN)): print select_list_val #print select_list_val #for debug #print len(select_lista) #for debug lcd.clear() select_list_val = select_list_val + 1 #oka menyval med ett #om listan e slut borja om fran borjan. if(len(select_lista) < (select_list_val)+1): select_list_val = 0 #print "komhit" lcd.message("Enhet: %s\n V=on H=Off" %(select_lista[select_list_val])) #valj menyitem sleep(0.05) if (lcd.buttonPressed(lcd.RIGHT)): run_cmd("tdtool --off " + (select_lista[select_list_val]) ) if (lcd.buttonPressed(lcd.LEFT)): run_cmd("tdtool --on " + (select_lista[select_list_val]) ) rakna = 0