def write(self, text=None, line=1, cursor=0, truncate=True, center=False): """ Function to write text to the LCD Screen. Parameters ---------- text : str String to be written to the screen. line : int, optional Line number to write to (default: 1) cursor : int, optional The cursor position to start at (default: 0) truncate : bool, optional Boolean flag to indicate whether to truncate the line or not (default: True) center : bool, optional Boolean flag to indicate whether to center the line or not (default: False) """ # Force the text to be a string # [X] I couldn't find a way to test this variable without making it # a variable of the class, look into a way to not have to do # this as it's not necessary self.text = str(text) # If the truncate flag is set and the length of the text is # longer than 16 characters then cut it down to size if len(self.text) > 16 and truncate: self.text = self.text[:16] if center: self.text = self.text.center(16) lcd.set_cursor_position(cursor, line) lcd.write(self.text)
def temperatures(): #-------------------------------- #TEMPERATURE AMBIANTE lcd.clear() #Nettoyage de la Zone Affichable lcd.set_cursor_position(0,0) #Positionnement du Curseur à la colonne 0 et ligne 0 lcd.write("Temp Ambiante:") #Affichage du String entre guillemet lcd.set_cursor_position(0,1) #Positionnement du Curseur à la colonne 0 et ligne 1 lcd.write(str(climat_now)) #Affichage de la valeur convertis de FLOAT à STRING via une valeur retourné qui a stocker dans une variable #-------------------------------- time.sleep(5) #-------------------------------- #TEMPERATURE MIN & MAX lcd.clear() #Nettoyage de la Zone Affichable lcd.set_cursor_position(0,0) #Positionnement du Curseur à la colonne 0 et ligne 0 lcd.write("Temp MIN/MAX:") #Affichage du String entre guillemet lcd.set_cursor_position(0,1) #Positionnement du Curseur à la colonne 0 et ligne 1 lcd.write(str(climat_min)) #Affichage de la valeur convertis de FLOAT à STRING via une valeur retourné qui a stocker dans une variable lcd.set_cursor_position(0,2) #Positionnement du Curseur à la colonne 0 et ligne 1 lcd.write(str(climat_max)) #Affichage de la valeur convertis de FLOAT à STRING via une valeur retourné qui a stocker dans une variable
def showNodeMetrics(): # Get usage metrics from raw API call to /apis/metrics.k8s.io/v1beta1/nodes api_client = client.ApiClient() raw_resp = api_client.call_api('/apis/metrics.k8s.io/v1beta1/nodes/', 'GET', _preload_content=False) # Crazy conversion required, dunno why this is so hard response_metrics = json.loads(raw_resp[0].data.decode('utf-8')) # Call list Nodes nodes = v1.list_node() count = 0 for node in nodes.items: if count > 2: break # Get name and cpu/mem capacity name = node.metadata.name mem_capacity = utils.parse_quantity(node.status.allocatable["memory"]) cpu_capacity = utils.parse_quantity(node.status.allocatable["cpu"]) # Search node metrics we grabbed before keyed on node name node_metrics = next(n for n in response_metrics["items"] if n["metadata"]["name"] == name) mem_usage = utils.parse_quantity(node_metrics["usage"]["memory"]) cpu_usage = utils.parse_quantity(node_metrics["usage"]["cpu"]) cpu_perc = round((cpu_usage/cpu_capacity)*100) mem_perc = round((mem_usage/mem_capacity)*100) lcd.set_cursor_position(7, count) lcd.write(f"{cpu_perc: 3}%") lcd.set_cursor_position(12, count) lcd.write(f"{mem_perc: 3}%") count = count + 1
def showWelcomeMessage(): lcd.clear() lcd.set_cursor_position(0,0) lcd.write("Welcome!") lcd.set_cursor_position(0,1) lcd.write("FruityWiFi " + __FRUITYWIFI__) time.sleep(2)
def on_print_progress(self, storage, path, progress): lcd.clear() start = path.rfind('/') end = path.rfind('.') # Just want the file name, no path or extension. # The rfind gets us the deepest directory so we can truncate that off the string # It also gets us the index of the file extension # The code below will substring any directories off the path, and remove the extention if (start == -1): start = 0 if (end == -1): end = path.len() - 1 lcd.write(path[start:end]) backlight.set_graph(progress / 100.0) backlight.rgb(0, 0, 255) backlight.update() lcd.set_cursor_position(0, 1) lcd.write('Completed: ' + str(progress) + '%') if progress == 1: self.start_date = time.time() if progress > 10 and progress < 100: now = time.time() elapsed = now - self.start_date average = elapsed / (progress - 1) remaining = int((100 - progress) * average) remaining = str(datetime.timedelta(seconds=remaining)) lcd.set_cursor_position(0, 2) lcd.write('ETC: ') lcd.write(remaining) if progress == 100: self.JobIsDone(lcd)
def redraw(self, menu): lcd.clear() lcd.set_cursor_position(3,1) lcd.write("Bye (^_^)/") for x in reversed(range(127)): backlight.rgb(0, x * 2, 0) lcd.clear() sys.exit(0)
def lcdInfo(lcdMessage, line, rgb=""): lcd.set_cursor_position(0, line) lcd.write(lcdMessage) if rgb == "red": backlight.rgb(200, 0, 0) if rgb == "green": backlight.rgb(0, 200, 0)
def Vitesse_du_vent(): #Vitesse du Vent #-------------------------------- lcd.clear() #Nettoyage de la Zone Affichable lcd.set_cursor_position(0,0) #Positionnement du Curseur à la colonne 0 et ligne 0 lcd.write("Vitesse Vent m/s") #Affichage du String entre guillemet lcd.set_cursor_position(0,1) #Positionnement du Curseur à la colonne 0 et ligne 1 lcd.write(str(vitesse_du_vent)) #Affichage de la valeur convertis de FLOAT à STRING via une valeur retourné qui a stocker dans une variable
def redraw(self, menu): print "Bye ;)" lcd.clear() lcd.set_cursor_position(4, 1) lcd.write("Bye Bye!") time.sleep(2) lcd.clear() backlight.rgb(0, 0, 0) sys.exit()
def printNodes(): nodes = v1.list_node() count = 0 for node in nodes.items: if count > 2: break name = node.metadata.name lcd.set_cursor_position(0, count) lcd.write(name+":") count = count + 1
def redraw(self, menu): print "Bye ;)" lcd.clear() lcd.set_cursor_position(4,1) lcd.write("Bye Bye!") time.sleep(2) lcd.clear() backlight.rgb(0,0,0) sys.exit()
def Taux_Humidite(): #Taux d'Humidité présent dans l'Environnement actuel #-------------------------------- lcd.clear() #Nettoyage de la Zone Affichable lcd.set_cursor_position(0,0) #Positionnement du Curseur à la colonne 0 et ligne 0 lcd.write("Taux d'Humidite") #Affichage du String entre guillemet lcd.set_cursor_position(0,1) #Positionnement du Curseur à la colonne 0 et ligne 1 lcd.write(str(pourcentage_humidite)) #Affichage de la valeur convertis de FLOAT à STRING via une valeur retourné qui a stocker dans une variable
def Taux_de_Nuage(): #Taux de Nuages présent dans le ciel #-------------------------------- lcd.clear() #Nettoyage de la Zone Affichable lcd.set_cursor_position(0,0) #Positionnement du Curseur à la colonne 0 et ligne 0 lcd.write("Taux Nuage") #Affichage du String entre guillemet lcd.set_cursor_position(0,1) #Positionnement du Curseur à la colonne 0 et ligne 1 lcd.write(str(couverture_de_nuage)) #Affichage de la valeur convertis de FLOAT à STRING via une valeur retourné qui a stocker dans une variable
def redraw(self, menu): lcd.clear() menu.write_option(row=0, text="About this App") menu.write_option( row=1, text= "Site: https://github.com/Floppynator/FruityDisplay_DisplayOTron3000", scroll=True) lcd.set_cursor_position(0, 2) lcd.write("Twitter: @HA1pe")
def handle_down(pin): print("Down pressed!") global image_num global reset_initiated if reset_initiated == False: reset_initiated = True print("first time") else: lcd.set_cursor_position(0, 0) lcd.write("SHUTTING DOWN ") os.system("sudo shutdown now")
def handle_down(pin): print("Down pressed!") global image_num global reset_initiated if reset_initiated == False: reset_initiated = True print("first time") else: lcd.set_cursor_position(0, 0) lcd.write("SHUTTING DOWN ") os.system("sudo shutdown now");
def temps_systeme(): system_time = temps_actuel() #Affichage DOT3K lcd.clear() #Nettoyage de la Zone Affichable lcd.set_cursor_position( 0, 0) #Positionnement du Curseur à la colonne 0 et ligne 0 lcd.write("Temps/Time:") #Affichage du String entre guillemet lcd.set_cursor_position( 0, 1) #Positionnement du Curseur à la colonne 0 et ligne 1 lcd.write(system_time)
def affichage_numero(): #-------------------------------- #NUMEROS D'URGENCES INTERNATIONAUX lcd.clear() #Nettoyage de la Zone Affichable lcd.set_cursor_position( 0, 0) #Positionnement du Curseur à la colonne 0 et ligne 0 lcd.write("Numero Urgence:") #Affichage du String entre guillemet lcd.set_cursor_position( 0, 1) #Positionnement du Curseur à la colonne 0 et ligne 1 print(tel_urgence) lcd.write( str(tel_urgence) ) #Affichage de la valeur convertis de FLOAT à STRING via une valeur retourné qui a stocker dans une variable
def _message(code, credit_balance=None): message_lock.acquire() _message_output(code) lcd.clear() lcd.write(message_code[code]) if credit_balance is not None: lcd.set_cursor_position(0,2) lcd.write(" ") lcd.write(balance) credit_balance_string = locale.format('%.2f', credit_balance, monetary=True) lcd.set_cursor_position(lcd.COLS-len(credit_balance_string)-1,2) lcd.write(credit_balance_string) lcd.write(" ") time.sleep(2.5) message_lock.release()
def animate(self): self.get_messages() message_portion = self.message[self.message_position : self.message_position + self.display_width] message_portion = message_portion + " " * (self.display_width - len(message_portion)) lcd.set_cursor_position(0, self.line) lcd.write(message_portion) if self.progress: self.message_position = self.message_position + 1 self.progress = not self.progress if self.message_position >= len(self.message): self.message_position = 0
def loadingScreen(): lcd.clear() # set brigthness backlight.set_bar(0, 20) # write loading message to lcd lcd.set_cursor_position(3,1) lcd.write("Loading...") # fire up bargraph leds! Wohoo for i in range(100): backlight.set_graph(i / 70.0) time.sleep(0.005) # disable leds =( backlight.set_graph(0)
def handle_button(pin): print("Button pressed!") global image_num global reset_initiated global picture_waiting if picture_waiting!=True: picture_waiting = True image_num = image_num + 1 camera.capture('image' + format(image_num,'03') + '.jpg') print 'image file: image' + format(image_num,'03') + '.jpg' lcd.set_cursor_position(13, 2) lcd.write(format(image_num,'03')) reset_initiated = False picture_waiting = False else: print 'waiting on image to return'
def handle_button(pin): print("Button pressed!") global image_num global reset_initiated global picture_waiting if picture_waiting != True: picture_waiting = True image_num = image_num + 1 camera.capture('image' + format(image_num, '03') + '.jpg') print 'image file: image' + format(image_num, '03') + '.jpg' lcd.set_cursor_position(13, 2) lcd.write(format(image_num, '03')) reset_initiated = False picture_waiting = False else: print 'waiting on image to return'
def determination_dot3k(): recup_affichage( ) #Demarrage du fichier python Recuperation_Determination.py global ville #Déclaration de la variable GLOBAL 'ville' ville = determine_less( ) #L'information dtermine par un autre fichier python est stocker dans la variable pour être utiliser apès #Using the 'lcd.write' way lcd.clear() #Nettoyage de la Zone Affichable lcd.set_cursor_position( 0, 0) #Positionnement du Curseur à la colonne 0 et ligne 0 lcd.write("Nous sommes ici:") #Affichage du String entre guillemet lcd.set_cursor_position( 0, 1) #Positionnement du Curseur à la colonne 0 et ligne 1 lcd.write( ville ) #Affichage de la valeur convertis de FLOAT à STRING via une valeur retourné qui a stocker dans une variable
def right(self): # fire cmd self.last_update = 1 cmd = self.config.get('commands', self.cmds[self.selected_cmd]) time.sleep(1) cmd = cmd.split(",") lcd.clear() lcd.set_cursor_position(0,0) lcd.write("Execute CMD") lcd.set_cursor_position(0,1) lcd.write(cmd[0]) time.sleep(1) # EXECUTE THIS COMMAND out = str(self.execCommand(cmd[1])) print(out) lcd.clear() lcd.set_cursor_position(6,1) lcd.write("Done.") time.sleep(1) lcd.clear() self.last_update = 0 return True
def right(self): # fire cmd self.last_update = 1 cmd = self.config.get('commands', self.cmds[self.selected_cmd]) time.sleep(1) cmd = cmd.split(",") lcd.clear() lcd.set_cursor_position(0, 0) lcd.write("Execute CMD") lcd.set_cursor_position(0, 1) lcd.write(cmd[0]) time.sleep(1) # EXECUTE THIS COMMAND out = str(self.execCommand(cmd[1])) print(out) lcd.clear() lcd.set_cursor_position(6, 1) lcd.write("Done.") time.sleep(1) lcd.clear() self.last_update = 0 return True
def _idle(): while 1: if message_lock.locked() == False: lcd.clear() if terminal_enabled != True: backlight.value = (1, 0.125, 0.125) lcd.write(terminal_locked_message) lcd.set_cursor_position(0,2) lcd.write(unlock) else: backlight.on() lcd.write(terminal_message) lcd.set_cursor_position(0,2) lcd.write(chr(7)) if terminal_amount > 0: lcd.write(refill) else: lcd.write(amount) terminal_amount_string = locale.format('%.2f', abs(terminal_amount), True, True) lcd.set_cursor_position(lcd.COLS-len(terminal_amount_string)-1,2) lcd.write(terminal_amount_string) lcd.write(chr(7)) lcd.update_animations() time.sleep(1) else: time.sleep(0.25)
def init_animation(): hourglass = [ [0x1F,0x11,0x11,0x11,0x11,0x11,0x11,0x1F],[0x1F,0x1F,0x11,0x11,0x11,0x11,0x11,0x1F], [0x1F,0x1F,0x1F,0x11,0x11,0x11,0x11,0x1F],[0x1F,0x1F,0x1F,0x1F,0x11,0x11,0x11,0x1F], [0x1F,0x11,0x1F,0x1F,0x1F,0x11,0x11,0x1F],[0x1F,0x11,0x11,0x1F,0x1F,0x1F,0x11,0x1F], [0x1F,0x11,0x11,0x11,0x1F,0x1F,0x1F,0x1F],[0x1F,0x11,0x11,0x11,0x11,0x1F,0x1F,0x1F], [0x1F,0x11,0x11,0x11,0x11,0x11,0x1F,0x1F],[0x1F,0x11,0x11,0x11,0x11,0x11,0x11,0x1F] ] greetingtext = [ # "- - - - - - - - ", " Welcome ", " To ", " Yuki-Chan " ] dotc = 0 texti = 0 for x in range(127): backlight.rgb(x / 2, x * 2, x / 2) """ lcd.create_char(0, getAnimFrame(hourglass, 5)) lcd.clear() lcd.set_cursor_position(15,2) lcd.write(chr(0)) """ lcd.set_cursor_position(0,1) lcd.write(greetingtext[texti]) if dotc > 30: texti = (texti + 1) % len(greetingtext) dotc = 0 else: dotc += 1 lcd.set_cursor_position(6,2) for i in range(dotc / 10): lcd.write(".") lcd.clear()
def idle(): #if debug: print "Start idle function." backlight.off() lcd.set_cursor_position(0,0) lcd.write(txt_security) lcd.set_cursor_position(4,1) t = datetime.now().strftime("%H:%M:%S") lcd.write(t) lcd.set_cursor_position(0,2) lcd.write(txt_pressme) time.sleep(0.5)
def Volumes(): #Volume de Neige (en m² ?) #-------------------------------- lcd.clear() #Nettoyage de la Zone Affichable lcd.set_cursor_position(0,0) #Positionnement du Curseur à la colonne 0 et ligne 0 lcd.write("Volumes Neige/Pluie") #Affichage du String entre guillemet lcd.set_cursor_position(0,1) #Positionnement du Curseur à la colonne 0 et ligne 1 lcd.write(volume_de_neige) #Affichage de la valeur convertis de FLOAT à STRING via une valeur retourné qui a stocker dans une variable lcd.set_cursor_position(0,2) #Positionnement du Curseur à la colonne 0 et ligne 1 lcd.write(str(volume_de_pluie)) #Affichage de la valeur convertis de FLOAT à STRING via une valeur retourné qui a stocker dans une variable
def condition_climatique(): #Status de la Météo Actuel #-------------------------------- lcd.clear() #Nettoyage de la Zone Affichable lcd.set_cursor_position(0,0) #Positionnement du Curseur à la colonne 0 et ligne 0 lcd.write("Condition Meteo") #Affichage du String entre guillemet lcd.set_cursor_position(0,1) #Positionnement du Curseur à la colonne 0 et ligne 1 lcd.write("Actuel:") #Affichage de la valeur convertis de FLOAT à STRING via une valeur retourné qui a stocker dans une variable lcd.set_cursor_position(0,2) #Positionnement du Curseur à la colonne 0 et ligne 1 lcd.write(status_climat) #Affichage de la valeur convertis de FLOAT à STRING via une valeur retourné qui a stocker dans une variable
def redraw(self): volume = subprocess.check_output("mpc status | grep volume", shell=True, stderr=subprocess.STDOUT) volume = volume[7:volume.find("%")] lcd.clear() lcd.set_cursor_position(0, 0) lcd.write(self.channelName[self.selectedStation]) lcd.set_cursor_position(0, 1) lcd.write(time.strftime("%d.%m. %H:%M:%S")) lcd.set_cursor_position(0, 2) lcd.write('Volume:' + volume + ' %') cpu = psutil.cpu_percent() backlight.set_graph(float(cpu) / 100.0)
def showKubeDeploys(): global deploy_index, deploy_max all_deploys = v1Apps.list_deployment_for_all_namespaces() deploy_max = 0 deploys = [] for deploy in all_deploys.items: if deploy.metadata.namespace != "kube-system": deploys.append(deploy) deploy_max = len(deploys) lcd.set_cursor_position(0, 0) lcd.write(deploys[deploy_index].metadata.name[:16]) lcd.set_cursor_position(0, 1) lcd.write(deploys[deploy_index].spec.template.spec.containers[0].image[:16]) lcd.set_cursor_position(0, 2) lcd.write(f"replicas: {deploys[deploy_index].status.replicas}/{deploys[deploy_index].status.ready_replicas}")
def queries_thread(): """Print pihole stats to the lcd""" lcd.clear() t = threading.currentThread() while getattr(t, "running", True): pihole = ph.PiHole("192.168.1.32") lcd.set_cursor_position(0, 0) lcd.write('{} queries'.format(pihole.queries)) lcd.set_cursor_position(0, 1) lcd.write('{}% blocked'.format(pihole.ads_percentage)) lcd.set_cursor_position(0, 2) lcd.write('{} total'.format(pihole.blocked)) time.sleep(5)
def affichage_de_la_boussole_dot3k_2(): #-------------------------------- #BOUSSOLE 2/2 lcd.clear() #Nettoyage de la Zone Affichable lcd.set_cursor_position( 0, 0) #Positionnement du Curseur à la colonne 0 et ligne 0 lcd.write("BOUSSOLE 2/2") #Affichage du String entre guillemet lcd.set_cursor_position( 0, 1) #Positionnement du Curseur à la colonne 0 et ligne 1 lcd.write( str(round_retourne_longitude) ) #Affichage de la valeur convertis de FLOAT à STRING via une valeur retourné qui a stocker dans une variable lcd.set_cursor_position( 0, 2) #Positionnement du Curseur à la colonne 0 et ligne 2 lcd.write( dir_Longitude_Hemisphere ) #Affichage de la valeur convertis de FLOAT à STRING via une valeur retourné qui a stocker dans une variable
def neige_3h(): #Prochainement de la Neige ? #-------------------------------- lcd.clear() #Nettoyage de la Zone Affichable lcd.set_cursor_position( 0, 0) #Positionnement du Curseur à la colonne 0 et ligne 0 lcd.write("Neige dans 3H?") #Affichage du String entre guillemet if will_snow == True: #Si il y a de la pluie alors... lcd.set_cursor_position(0, 1) lcd.write("Neige prevue") #On affirme cela par un message elif will_snow == False: #Sinon... lcd.set_cursor_position( 0, 1) #Positionnement du Curseur à la colonne 0 et ligne 1 lcd.write( "Aucune Neige prevue" ) #Affichage de la valeur convertis de FLOAT à STRING via une valeur retourné qui a stocker dans une variable
def display(): forecast = darksky.Forecast(api_key, latitude, longitude, units=units) current = forecast.currently temp = current.temperature temp = str(temp) humidity = current.humidity * 100 humidity = str(humidity) rain = current.precipProbability * 100 rain = str(rain) uvIndex = current.uvIndex uv = str(uvIndex) if uvIndex <= 2.9: backlight.rgb(90, 148, 35) # Green (low) elif (uvIndex >= 3) and (uvIndex <= 5.9): backlight.rgb(241, 227, 54) # Yellow (moderate) elif (uvIndex >= 6) and (uvIndex <= 7.9): backlight.rgb(217, 90, 18) # Orange (high) elif (uvIndex >= 8) and (uvIndex <= 10.9): backlight.rgb(185, 2, 34) # Red (very high) else: backlight.rgb(99, 74, 195) # Violet (extreme) try: lcd.clear() lcd.set_cursor_position(0, 0) print("Temperture: " + temp + " C") lcd.write("Temp: " + temp + "\xf2C") lcd.set_cursor_position(0, 1) print("Humidity: " + humidity + "%") lcd.write("Humidity: " + humidity + "%") lcd.set_cursor_position(0, 2) print("Rain: " + rain + "%") lcd.write("Rain: " + rain + "%") print("UV Index: " + uv + "") except: lcd.write("Connection Error") # Press the button on the joystick to exit @nav.on(nav.BUTTON) def handle_button(pin): lcd.clear() backlight.rgb(0, 0, 0) backlight.set_graph(0) os._exit(1)
def update_weather(): payload = { 'id': CITY_ID, 'units': 'metric', 'appid': API_KEY } global temp try: r = requests.get(url=url, params=payload) location = r.json().get('name') temp = r.json().get('main').get('temp') humidity = r.json().get('main').get('humidity') lcd.set_cursor_position(0, 0) print("City: "+str(location)+" ") lcd.write("City: "+str(location)+" ") lcd.set_cursor_position(0, 1) print("Temperture: "+str(temp)+"°C") lcd.write("Temp: "+str(temp)+"\xf2C") lcd.set_cursor_position(0, 2) print("Humidity: "+str(humidity)+" %") lcd.write("Humidity: "+str(humidity)+" %") except: lcd.write("Connection Error")
def system_thread(): """Print system load, memory usage, and temperature to the lcd""" lcd.clear() t = threading.currentThread() while getattr(t, "running", True): pihole = ph.PiHole("192.168.1.32") one_minute, five_minute, fifteen_minute = [ x / psutil.cpu_count() * 100 for x in psutil.getloadavg() ] memory = psutil.virtual_memory() temp = psutil.sensors_temperatures(fahrenheit=True)['cpu-thermal'][0] lcd.set_cursor_position(0, 0) lcd.write('Load {}'.format(one_minute)) lcd.set_cursor_position(0, 1) lcd.write('Memory {}'.format(memory.percent)) lcd.set_cursor_position(0, 2) lcd.write('{} F'.format(temp.current)) time.sleep(5)
def redraw(self, menu): lcd.clear() menu.write_option(row=0, text="About this App") menu.write_option(row=1, text="Site: https://github.com/Floppynator/FruityDisplay_DisplayOTron3000", scroll=True) lcd.set_cursor_position(0,2) lcd.write("Twitter: @HA1pe")
def doorbell(): GPIO.remove_event_detect(gpio_bell) # Ignore multiple clicks if debug: print("Start of Doorbell function\n") # If pushover is enabled, run as thread and continue if push_enabled: t_push = threading.Thread(target=pushover, args=()) t_push.start() # If taking pictures is enabled, run as thread and continue if pictures_enabled: t_snap = threading.Thread(target=snapper, args=()) t_snap.start() # Log the event in the databse if debug: print "Doorbell rang at "+ts() log("Someone was at your door.") if debug: print "Event logged" # ####### # # Phase 1 # Ringing. # ####### # # Clear LCD and adjust information lcd.clear() backlight.rgb(0,0,255) lcd.set_cursor_position(0,0) lcd.write(txt_security) lcd.set_cursor_position(0,1) lcd.write(txt_ring) lcd.set_cursor_position(0,2) lcd.write(txt_ring2) if debug: print("Text changed, entering wait_loop*2") wait_loop(200) if debug: print("Wait loop done") if debug: print("<< Next Phase >>\n") backlight.set_graph(0) # ####### # # Phase 2 # Trying to contact them. # ####### # # Clear LCD and adjust information lcd.clear() backlight.rgb(255,153,0) lcd.set_cursor_position(0,0) lcd.write(txt_wait1) lcd.set_cursor_position(0,1) lcd.write(txt_wait2) lcd.set_cursor_position(0,2) lcd.write(txt_wait3) if debug: print("Text changed, entering wait_loop*2") wait_loop(100) if debug: print("Wait loop done") if debug: print("<< Next Phase >>\n") backlight.set_graph(0) # ####### # # Phase 3 # No one is there. # ####### # # Clear LCD and adjust information lcd.clear() backlight.rgb(255,0,0) lcd.set_cursor_position(0,0) lcd.write(txt_away1) lcd.set_cursor_position(0,1) lcd.write(txt_away2) lcd.set_cursor_position(0,2) lcd.write(txt_away3) if debug: print("Text changed, entering wait_loop") wait_loop(80) if debug: print("<< Next Phase >>\n") backlight.set_graph(0) # ####### # # Phase 4 # Delivery to the neighbors. # ####### # # Clear LCD and adjust information lcd.clear() backlight.rgb(0,255,0) lcd.set_cursor_position(0,0) lcd.write(txt_package1) lcd.set_cursor_position(0,1) lcd.write(txt_package2) lcd.set_cursor_position(0,2) lcd.write(txt_package3) if debug: print("Text changed, entering sleep") wait_loop(150) if debug: print("Wait loop done") if debug: print("<< End of last Phase >>\n") backlight.set_graph(0) lcd.clear() if debug: print("End of Doorbell function\n") GPIO.add_event_detect(gpio_bell,GPIO.FALLING)
def show(self): lcd.set_cursor_position(0, self.line) t = datetime.datetime.now().strftime(" %d/%m %H:%M:%S") lcd.write(chr(1) + t)
def get_ip_addr(): ipaddr_command = 'ip address list | grep inet | grep -v 127.0.0 | cut -d " " -f 6 | cut -d "/" -f 1' p = subprocess.Popen(ipaddr_command, shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE, stdin=subprocess.PIPE) return p.stdout.read() ip = get_ip_addr() print "ssh to ip: " + ip lcd.set_cursor_position(0, 0) lcd.write("IP:" + ip) lcd.set_cursor_position(0, 1) lcd.write("CPU: ") lcd.set_cursor_position(13, 1) lcd.write("IMG") cpu_sample_count = 200 cpu_samples = [0] * cpu_sample_count hue = 0.0 lcd.set_contrast(52)
time.sleep(3) neige_3h() #Affichage de l'estimation de Neige (Y/N) #----------TIMER---------- if __name__ == "__main__": try: #---!!!GESTION DES ERREURS!!!--- recuperation_3h_dot3k( ) #Fonction de Recuperation des données précedement obtenues via l'API Météo timer_affichage_3h( ) #Lancement des Affichages des informations avec un Timer définit pass #Si le tout fonctionne alors on continue except TypeError: #Si il y a eu une erreur de TYPE de variables alors... lcd.clear() lcd.set_cursor_position(0, 0) lcd.write("Signal GPS perdu") #On affiche un Message sur le DOT3K lcd.set_cursor_position(0, 1) lcd.write("TypeError") #On affiche le code erreur print("Le signal GPS est degradé , veuillez-vous deplacez!" ) #On affiche ce message dans la console print("Code Erreur: TypeError") #Affichage Code Erreur Correspondant except pyowm.exceptions.not_found_error.NotFoundError: #Si la recherche n'a donné aucun résultat alors lcd.clear() lcd.set_cursor_position(0, 0) lcd.write("Ville non-trouve") #On affiche un Message sur le DOT3K lcd.set_cursor_position(0, 2) lcd.write("not_found_error") #On affiche le code erreur confirme_erreur_ville() #On met un booléan a la valeur True print("La ville ou vous situez n'a pas ete trouver!"
#!/usr/bin/env python import dot3k.lcd as lcd import dot3k.backlight as backlight import time, datetime, copy, math, psutil import time from datetime import datetime, timedelta lcd.write(chr(0) + 'Yay LGBT Pride!')# + chr(0)) lcd.set_cursor_position(0,2) lcd.write(' Party hrs left ')# + chr(3) + chr(2) + chr(5)) eqlchar = [ [0x0,0x1f,0x1f,0x0,0x0,0x1f,0x1f,0x0], #= [0x0,0x0,0x1f,0x1f,0x0,0x0,0x1f,0x1f], #= move [0x0,0x1f,0x1f,0x0,0x0,0x1f,0x1f,0x0], #= move [0x1f,0x1f,0x0,0x0,0x1f,0x1f,0x0,0x0], #= move [0x1f,0x1f,0x1b,0x1b,0x1f,0x1f,0x18,0x18], #P [0x1f,0x1f,0x1b,0x1b,0x1f,0x1f,0x1a,0x19], #R [0x1f,0x1f,0xe,0xe,0xe,0xe,0x1f,0x1f], #I [0x1e,0x1f,0x1b,0x1b,0x1b,0x1b,0x1f,0x1e], #D [0x1f,0x1f,0x18,0x1e,0x1e,0x18,0x1f,0x1f] #E ] #WHADDOESTHATSPELL?? Pride! def getAnimFrame(char,fps): return char[ int(round(time.time()*fps) % len(char)) ] cpu_sample_count = 200 cpu_samples = [0] * cpu_sample_count hue = 0.0 while True:
lcd.clear() backlight.off() backlight.set_graph(0.0) sys.exit() elif command == 'reset': lcd.clear() backlight.off() backlight.set_graph(0.0) elif component == 'LCD': if command == 'clear': lcd.clear() elif command == 'setContrast': lcd.set_contrast(parameters['contrast']) elif command == 'setCursorPosition': lcd.set_cursor_position(parameters['column'], parameters['row']) elif command == 'write': lcd.write(parameters['value']) elif command == 'createCharacter': lcd.create_char(parameters['memoryPosition'], parameters['map']) elif command == 'writeCharacter': lcd.write(chr(parameters['memoryPosition'])) elif component == 'Backlight': if command == 'turnOff': backlight.off() elif command == 'useRBGMode': backlight.use_rbg() elif command == 'setBrightnessOfLed': backlight.set(parameters['ledIndex'], parameters['brightness']) elif command == 'setToHue': backlight.hue(parameters['hue'])
def shutdown_animation(): lcd.set_cursor_position(3,1) lcd.write("Bye (^_^)/") for x in reversed(range(127)): backlight.rgb(x, x * 2, x) lcd.clear()
import dot3k.lcd as lcd import dot3k.backlight as backlight import time from threading import Thread pirate = [ [0x00,0x1f,0x0b,0x03,0x00,0x04,0x11,0x1f], [0x00,0x1f,0x16,0x06,0x00,0x08,0x03,0x1e], [0x00,0x1f,0x0b,0x03,0x00,0x04,0x11,0x1f], [0x00,0x1f,0x05,0x01,0x00,0x02,0x08,0x07] ] def get_anim_frame(anim, fps): return anim[ int(round(time.time()*fps) % len(anim)) ] lcd.set_cursor_position(1,0) lcd.write('Display-o-tron') lcd.write(' ' + chr(0) + '3000 ') lcd.create_char(0,get_anim_frame(pirate,4)) while 1: backlight.rgb(255,0,0) time.sleep(1) backlight.rgb(0,255,0) time.sleep(1) backlight.rgb(0,0,255) time.sleep(1) backlight.rgb(255,255,255) time.sleep(1)