<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://levelkro.xyz/wiki//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LevelKro</id>
	<title>Wiki levelKro - Contributions de l’utilisateur [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://levelkro.xyz/wiki//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LevelKro"/>
	<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki/Sp%C3%A9cial:Contributions/LevelKro"/>
	<updated>2026-05-01T22:52:32Z</updated>
	<subtitle>Contributions de l’utilisateur</subtitle>
	<generator>MediaWiki 1.32.0</generator>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Programmation&amp;diff=512</id>
		<title>Catégorie:Programmation</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Programmation&amp;diff=512"/>
		<updated>2025-07-26T23:37:02Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Codes, guides et astuces de programmation.&lt;br /&gt;
== Guides ==&lt;br /&gt;
* [[Class PHP Steam|(PHP) Class pour l'univers de Steam]] (manque les codes du store)&lt;br /&gt;
* [[RPi-piDeskboard|(Python/PHP) Panneau d'informations avec piDeskboard]] (Raspberry Pi)&lt;br /&gt;
* [[RPi-Buttons|(Python) Ajouter des Boutons]] (Raspberry Pi)&lt;br /&gt;
* [[PHP_Console_Monitor|(PHP) Moniteur réseau avec un affichage sur écran en mode console]]&lt;br /&gt;
* [[Injection_de_code_(PHP)|Ajouter un code dans des pages appelé sur un serveur Web Apache]]&lt;br /&gt;
* [[Source_SDK_2013|Guide sur le Source SDK et quelques astuces]]&lt;br /&gt;
* [[MultiWebcams|Affichage multi-caméras]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Raspberry_Pi&amp;diff=511</id>
		<title>Catégorie:Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Raspberry_Pi&amp;diff=511"/>
		<updated>2025-07-26T23:36:36Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Raspberry-turn.gif|droite]]&lt;br /&gt;
== Forums ==&lt;br /&gt;
* Raspberry Pi Officiel - Forums Français : https://www.raspberrypi.org/forums/viewforum.php?f=65&lt;br /&gt;
* Raspberry Pi France - Forums : https://forum.raspberry-pi.fr/&lt;br /&gt;
* Framboise 314 - Forums : https://forums.framboise314.fr/&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
* [[RPi-Bluetooth Audio|Audio par Bluetooth]]&lt;br /&gt;
* [[RPi-BootScreen|Changer l'écran de démarrage]]&lt;br /&gt;
* [[RPi-Chromium_Kiosk_Mode|Transformer Raspbian en mode Kiosk]]&lt;br /&gt;
* [[RPi-eSpeak|Faire parler avec eSpeak]]&lt;br /&gt;
* [[RPi-USB OTG|Utiliser le Raspberry Pi Zero comme clé USB]]&lt;br /&gt;
* [[RPi-QL|Contrôler une imprimante Brother série QL; interface GUI, CLI et Web API]]&lt;br /&gt;
* [[RPi-PiRadio|Monter un émetteur radio]]&lt;br /&gt;
* [[RPi-RealTime_Clock|Garder l'heure avec un module RTC]]&lt;br /&gt;
* [[RPi-DS18B20|Obtenir la température avec le module DS18B20]]&lt;br /&gt;
* [[RPi-piDeskboard|Panneau d'informations avec piDeskboard]]&lt;br /&gt;
* [[RPi-Buttons|Ajouter des Boutons]]&lt;br /&gt;
* [[RPi-piCAM|Monter une caméra multi-fonction]]&lt;br /&gt;
* [[RPi_OLED_0.91_i2c|Utiliser une affichage OLED 0.91&amp;quot; I2C]]&lt;br /&gt;
* [[MultiWebcams|Affichage multi-caméras]]&lt;br /&gt;
* Autres à venir...&lt;br /&gt;
&lt;br /&gt;
== Boutiques ==&lt;br /&gt;
* https://buyapi.ca&lt;br /&gt;
* https://waveshare.com&lt;br /&gt;
* https://www.canakit.com/&lt;br /&gt;
* https://www.amazon.ca/raspberry-pi/s?k=raspberry+pi&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=MultiWebcams&amp;diff=510</id>
		<title>MultiWebcams</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=MultiWebcams&amp;diff=510"/>
		<updated>2025-07-26T23:35:54Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Guide pour créer un affichage multiple de caméra depuis un serveur de partage, comme FFServer.&lt;br /&gt;
&lt;br /&gt;
cam.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import cv2&lt;br /&gt;
import pygame&lt;br /&gt;
import threading&lt;br /&gt;
import time&lt;br /&gt;
import json&lt;br /&gt;
import sys&lt;br /&gt;
from datetime import datetime&lt;br /&gt;
&lt;br /&gt;
# Chargement de la configuration&lt;br /&gt;
def load_config():&lt;br /&gt;
    try:&lt;br /&gt;
        with open(&amp;quot;config.json&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
            return json.load(f)&lt;br /&gt;
    except FileNotFoundError:&lt;br /&gt;
        return {&amp;quot;streams&amp;quot;: [False,False,False,False,False,False,False,False]}&lt;br /&gt;
&lt;br /&gt;
config = load_config()&lt;br /&gt;
STREAM_URLS = [f&amp;quot;{config['url']}{i}&amp;quot; for i in range(1, 9)]&lt;br /&gt;
active_streams = config.get(&amp;quot;streams&amp;quot;, [True] * 8)&lt;br /&gt;
&lt;br /&gt;
debug_mode = &amp;quot;--debug&amp;quot; in sys.argv&lt;br /&gt;
&lt;br /&gt;
def debug_log(message):&lt;br /&gt;
    if debug_mode:&lt;br /&gt;
        print(message)&lt;br /&gt;
&lt;br /&gt;
class VideoStreamApp:&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        pygame.init()&lt;br /&gt;
        info = pygame.display.Info()&lt;br /&gt;
        self.screen_width, self.screen_height = info.current_w, info.current_h&lt;br /&gt;
        debug_log(f&amp;quot;Résolution détectée : {self.screen_width}x{self.screen_height}&amp;quot;)&lt;br /&gt;
        self.screen = pygame.display.set_mode((self.screen_width, self.screen_height), pygame.NOFRAME)&lt;br /&gt;
        pygame.display.set_caption(&amp;quot;Surveillance Grid&amp;quot;)&lt;br /&gt;
        self.running = True&lt;br /&gt;
        self.frames = [None] * 8&lt;br /&gt;
        self.status = [&amp;quot;Démarrage&amp;quot; for _ in range(8)]&lt;br /&gt;
        self.threads = []&lt;br /&gt;
        self.start_streams()&lt;br /&gt;
    &lt;br /&gt;
    def start_streams(self):&lt;br /&gt;
        for idx, active in enumerate(active_streams):&lt;br /&gt;
            if active:&lt;br /&gt;
                self.status[idx] = f&amp;quot;Connexion à la caméra {idx+1}...&amp;quot;&lt;br /&gt;
                debug_log(f&amp;quot;Démarrage du thread pour la caméra {idx+1}&amp;quot;)&lt;br /&gt;
                thread = threading.Thread(target=self.stream_video, args=(idx,))&lt;br /&gt;
                thread.daemon = True&lt;br /&gt;
                thread.start()&lt;br /&gt;
                self.threads.append(thread)&lt;br /&gt;
            else:&lt;br /&gt;
                self.status[idx] = f&amp;quot;Caméra {idx+1} désactivé&amp;quot;  # Afficher &amp;quot;Désactivé&amp;quot; pour les caméras désactivées&lt;br /&gt;
    &lt;br /&gt;
    def stream_video(self, index):&lt;br /&gt;
        url = STREAM_URLS[index]&lt;br /&gt;
        cap = None&lt;br /&gt;
        retry_interval = int(config['retry'])  # Intervalle de reconnexion en secondes&lt;br /&gt;
        previously_connected = False  # Variable pour suivre l'état de la connexion&lt;br /&gt;
&lt;br /&gt;
        while self.running:&lt;br /&gt;
            if not active_streams[index]:  # Si la caméra est désactivée, ne tente pas de se connecter&lt;br /&gt;
                time.sleep(1)&lt;br /&gt;
                continue&lt;br /&gt;
            &lt;br /&gt;
            if cap is None or not cap.isOpened():&lt;br /&gt;
                self.status[index] = f&amp;quot;Connexion à la caméra {index+1}...&amp;quot;&lt;br /&gt;
                debug_log(f&amp;quot;[Camera {index+1}] Tentative de connexion à {url}&amp;quot;)&lt;br /&gt;
                cap = cv2.VideoCapture(url)&lt;br /&gt;
                cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) &lt;br /&gt;
                time.sleep(int(config['timeout']))&lt;br /&gt;
&lt;br /&gt;
            if not cap.isOpened():&lt;br /&gt;
                debug_log(f&amp;quot;[Camera {index+1}] Impossible d'ouvrir le flux, reconnexion dans {retry_interval}s&amp;quot;)&lt;br /&gt;
                self.status[index] = f&amp;quot;Attente de reconnexion à la caméra {index+1}...&amp;quot;&lt;br /&gt;
                self.frames[index] = None  # Retirer l'image pour laisser place au message de statut&lt;br /&gt;
                cap.release()  # Libération de l'objet cap&lt;br /&gt;
                cap = None  # Réinitialisation de cap&lt;br /&gt;
                previously_connected = False  # Variable pour suivre l'état de la connexion&lt;br /&gt;
                time.sleep(retry_interval)  # Reconnexion après l'intervalle&lt;br /&gt;
&lt;br /&gt;
            else:&lt;br /&gt;
                #ret, frame = cap.read()&lt;br /&gt;
                for _ in range(1):  # Lire et ignorer les 5 dernières images pour vider le buffer&lt;br /&gt;
                    cap.grab()&lt;br /&gt;
                ret, frame = cap.read()  # Lire seulement la dernière frame après vidage du buffer&lt;br /&gt;
&lt;br /&gt;
                if ret:&lt;br /&gt;
                    # Connexion réussie, on affiche uniquement une fois&lt;br /&gt;
                    if not previously_connected:&lt;br /&gt;
                        self.status[index] = f&amp;quot;Connecté à la caméra {index+1}&amp;quot;&lt;br /&gt;
                        debug_log(f&amp;quot;[Camera {index+1}] Connexion au flux réussie&amp;quot;)&lt;br /&gt;
                        previously_connected = True&lt;br /&gt;
&lt;br /&gt;
                    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)&lt;br /&gt;
                    frame = cv2.resize(frame, (self.screen_width // 3, self.screen_height // 3))&lt;br /&gt;
                    frame = pygame.surfarray.make_surface(frame.swapaxes(0, 1))&lt;br /&gt;
                    self.frames[index] = frame&lt;br /&gt;
                    self.status[index] = &amp;quot;&amp;quot;&lt;br /&gt;
                else:&lt;br /&gt;
                    debug_log(f&amp;quot;[Camera {index+1}] Échec de réception du flux, reconnexion dans {retry_interval}s&amp;quot;)&lt;br /&gt;
                    self.status[index] = f&amp;quot;Attente de reconnexion à la caméra {index+1}...&amp;quot;&lt;br /&gt;
                    self.frames[index] = None  # Retirer l'image pour laisser place au message de statut&lt;br /&gt;
                    cap.release()  # Libération de l'objet cap en cas d'erreur&lt;br /&gt;
                    cap = None  # Réinitialisation de cap&lt;br /&gt;
                    previously_connected = False  # Variable pour suivre l'état de la connexion&lt;br /&gt;
                    time.sleep(retry_interval)  # Reconnexion après l'intervalle&lt;br /&gt;
        &lt;br /&gt;
        if cap:&lt;br /&gt;
            cap.release()&lt;br /&gt;
    &lt;br /&gt;
    def run(self):&lt;br /&gt;
        debug_log(&amp;quot;Boucle principale en cours&amp;quot;)&lt;br /&gt;
        font = pygame.font.SysFont('Courier', int(config['font_camera']))  # Police monospace (compatible Win/Linux)&lt;br /&gt;
        font_time = pygame.font.SysFont('Courier', int(config['font_time']))  # Police plus grande pour l'heure et la date&lt;br /&gt;
        font_date = pygame.font.SysFont('Courier', int(config['font_date']))  # Police plus grande pour l'heure et la date&lt;br /&gt;
        cell_width = self.screen_width // 3&lt;br /&gt;
        cell_height = self.screen_height // 3&lt;br /&gt;
        &lt;br /&gt;
        while self.running:&lt;br /&gt;
            self.screen.fill((0, 0, 0))&lt;br /&gt;
            for event in pygame.event.get():&lt;br /&gt;
                if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key in [pygame.K_ESCAPE, pygame.K_q]):&lt;br /&gt;
                    self.running = False&lt;br /&gt;
            # Affichage des caméras&lt;br /&gt;
            for idx in range(8):&lt;br /&gt;
                x, y = (idx % 3) * cell_width, (idx // 3) * cell_height&lt;br /&gt;
                if self.frames[idx]:&lt;br /&gt;
                    self.screen.blit(self.frames[idx], (x, y))&lt;br /&gt;
                else:&lt;br /&gt;
                    # Centrage du texte&lt;br /&gt;
                    text_surface = font.render(self.status[idx], True, (255, 255, 255))&lt;br /&gt;
                    text_rect = text_surface.get_rect(center=(x + cell_width // 2, y + cell_height // 2))&lt;br /&gt;
                    self.screen.blit(text_surface, text_rect)&lt;br /&gt;
            &lt;br /&gt;
            # Affichage de l'heure et de la date dans la 9e case (dernière case)&lt;br /&gt;
            x, y = (8 % 3) * cell_width, (8 // 3) * cell_height  # Calcul des coordonnées de la 9e case&lt;br /&gt;
            current_time = datetime.now().strftime(&amp;quot;%H:%M:%S&amp;quot;)&lt;br /&gt;
            current_date = datetime.now().strftime(&amp;quot;%d/%m/%Y&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
            # Affichage de l'heure (plus grand)&lt;br /&gt;
            time_surface = font_time.render(current_time, True, (255, 255, 255))&lt;br /&gt;
            time_rect = time_surface.get_rect(center=(x + cell_width // 2, y + cell_height // 3))&lt;br /&gt;
            self.screen.blit(time_surface, time_rect)&lt;br /&gt;
            &lt;br /&gt;
            # Affichage de la date (plus grand)&lt;br /&gt;
            date_surface = font_date.render(current_date, True, (255, 255, 255))&lt;br /&gt;
            date_rect = date_surface.get_rect(center=(x + cell_width // 2, y + 2 * cell_height // 3))&lt;br /&gt;
            self.screen.blit(date_surface, date_rect)&lt;br /&gt;
            &lt;br /&gt;
            pygame.display.flip()&lt;br /&gt;
            &lt;br /&gt;
            for event in pygame.event.get():&lt;br /&gt;
                if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key in [pygame.K_ESCAPE, pygame.K_q]):&lt;br /&gt;
                    self.running = False&lt;br /&gt;
        &lt;br /&gt;
        pygame.quit()&lt;br /&gt;
        debug_log(&amp;quot;Application fermée.&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    debug_log(&amp;quot;Démarrage de l'application&amp;quot;)&lt;br /&gt;
    app = VideoStreamApp()&lt;br /&gt;
    app.run()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
config.json&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;streams&amp;quot;: [true, true, true, true, true, true, false, true],&lt;br /&gt;
	&amp;quot;url&amp;quot;: &amp;quot;http://192.168.0.255:8090/camera&amp;quot;,&lt;br /&gt;
	&amp;quot;timeout&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
	&amp;quot;retry&amp;quot;: &amp;quot;5&amp;quot;,&lt;br /&gt;
	&amp;quot;font_camera&amp;quot;: &amp;quot;16&amp;quot;,&lt;br /&gt;
	&amp;quot;font_time&amp;quot;: &amp;quot;90&amp;quot;,&lt;br /&gt;
	&amp;quot;font_date&amp;quot;: &amp;quot;70&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;br /&gt;
[[Catégorie:Programmation]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=MultiWebcams&amp;diff=509</id>
		<title>MultiWebcams</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=MultiWebcams&amp;diff=509"/>
		<updated>2025-07-26T23:35:32Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : Page créée avec « Guide pour créer un affichage multiple de caméra depuis un serveur de partage, comme FFServer.  cam.py &amp;lt;pre&amp;gt; import cv2 import pygame import threading import time import... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Guide pour créer un affichage multiple de caméra depuis un serveur de partage, comme FFServer.&lt;br /&gt;
&lt;br /&gt;
cam.py&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import cv2&lt;br /&gt;
import pygame&lt;br /&gt;
import threading&lt;br /&gt;
import time&lt;br /&gt;
import json&lt;br /&gt;
import sys&lt;br /&gt;
from datetime import datetime&lt;br /&gt;
&lt;br /&gt;
# Chargement de la configuration&lt;br /&gt;
def load_config():&lt;br /&gt;
    try:&lt;br /&gt;
        with open(&amp;quot;config.json&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
            return json.load(f)&lt;br /&gt;
    except FileNotFoundError:&lt;br /&gt;
        return {&amp;quot;streams&amp;quot;: [False,False,False,False,False,False,False,False]}&lt;br /&gt;
&lt;br /&gt;
config = load_config()&lt;br /&gt;
STREAM_URLS = [f&amp;quot;{config['url']}{i}&amp;quot; for i in range(1, 9)]&lt;br /&gt;
active_streams = config.get(&amp;quot;streams&amp;quot;, [True] * 8)&lt;br /&gt;
&lt;br /&gt;
debug_mode = &amp;quot;--debug&amp;quot; in sys.argv&lt;br /&gt;
&lt;br /&gt;
def debug_log(message):&lt;br /&gt;
    if debug_mode:&lt;br /&gt;
        print(message)&lt;br /&gt;
&lt;br /&gt;
class VideoStreamApp:&lt;br /&gt;
    def __init__(self):&lt;br /&gt;
        pygame.init()&lt;br /&gt;
        info = pygame.display.Info()&lt;br /&gt;
        self.screen_width, self.screen_height = info.current_w, info.current_h&lt;br /&gt;
        debug_log(f&amp;quot;Résolution détectée : {self.screen_width}x{self.screen_height}&amp;quot;)&lt;br /&gt;
        self.screen = pygame.display.set_mode((self.screen_width, self.screen_height), pygame.NOFRAME)&lt;br /&gt;
        pygame.display.set_caption(&amp;quot;Surveillance Grid&amp;quot;)&lt;br /&gt;
        self.running = True&lt;br /&gt;
        self.frames = [None] * 8&lt;br /&gt;
        self.status = [&amp;quot;Démarrage&amp;quot; for _ in range(8)]&lt;br /&gt;
        self.threads = []&lt;br /&gt;
        self.start_streams()&lt;br /&gt;
    &lt;br /&gt;
    def start_streams(self):&lt;br /&gt;
        for idx, active in enumerate(active_streams):&lt;br /&gt;
            if active:&lt;br /&gt;
                self.status[idx] = f&amp;quot;Connexion à la caméra {idx+1}...&amp;quot;&lt;br /&gt;
                debug_log(f&amp;quot;Démarrage du thread pour la caméra {idx+1}&amp;quot;)&lt;br /&gt;
                thread = threading.Thread(target=self.stream_video, args=(idx,))&lt;br /&gt;
                thread.daemon = True&lt;br /&gt;
                thread.start()&lt;br /&gt;
                self.threads.append(thread)&lt;br /&gt;
            else:&lt;br /&gt;
                self.status[idx] = f&amp;quot;Caméra {idx+1} désactivé&amp;quot;  # Afficher &amp;quot;Désactivé&amp;quot; pour les caméras désactivées&lt;br /&gt;
    &lt;br /&gt;
    def stream_video(self, index):&lt;br /&gt;
        url = STREAM_URLS[index]&lt;br /&gt;
        cap = None&lt;br /&gt;
        retry_interval = int(config['retry'])  # Intervalle de reconnexion en secondes&lt;br /&gt;
        previously_connected = False  # Variable pour suivre l'état de la connexion&lt;br /&gt;
&lt;br /&gt;
        while self.running:&lt;br /&gt;
            if not active_streams[index]:  # Si la caméra est désactivée, ne tente pas de se connecter&lt;br /&gt;
                time.sleep(1)&lt;br /&gt;
                continue&lt;br /&gt;
            &lt;br /&gt;
            if cap is None or not cap.isOpened():&lt;br /&gt;
                self.status[index] = f&amp;quot;Connexion à la caméra {index+1}...&amp;quot;&lt;br /&gt;
                debug_log(f&amp;quot;[Camera {index+1}] Tentative de connexion à {url}&amp;quot;)&lt;br /&gt;
                cap = cv2.VideoCapture(url)&lt;br /&gt;
                cap.set(cv2.CAP_PROP_BUFFERSIZE, 1) &lt;br /&gt;
                time.sleep(int(config['timeout']))&lt;br /&gt;
&lt;br /&gt;
            if not cap.isOpened():&lt;br /&gt;
                debug_log(f&amp;quot;[Camera {index+1}] Impossible d'ouvrir le flux, reconnexion dans {retry_interval}s&amp;quot;)&lt;br /&gt;
                self.status[index] = f&amp;quot;Attente de reconnexion à la caméra {index+1}...&amp;quot;&lt;br /&gt;
                self.frames[index] = None  # Retirer l'image pour laisser place au message de statut&lt;br /&gt;
                cap.release()  # Libération de l'objet cap&lt;br /&gt;
                cap = None  # Réinitialisation de cap&lt;br /&gt;
                previously_connected = False  # Variable pour suivre l'état de la connexion&lt;br /&gt;
                time.sleep(retry_interval)  # Reconnexion après l'intervalle&lt;br /&gt;
&lt;br /&gt;
            else:&lt;br /&gt;
                #ret, frame = cap.read()&lt;br /&gt;
                for _ in range(1):  # Lire et ignorer les 5 dernières images pour vider le buffer&lt;br /&gt;
                    cap.grab()&lt;br /&gt;
                ret, frame = cap.read()  # Lire seulement la dernière frame après vidage du buffer&lt;br /&gt;
&lt;br /&gt;
                if ret:&lt;br /&gt;
                    # Connexion réussie, on affiche uniquement une fois&lt;br /&gt;
                    if not previously_connected:&lt;br /&gt;
                        self.status[index] = f&amp;quot;Connecté à la caméra {index+1}&amp;quot;&lt;br /&gt;
                        debug_log(f&amp;quot;[Camera {index+1}] Connexion au flux réussie&amp;quot;)&lt;br /&gt;
                        previously_connected = True&lt;br /&gt;
&lt;br /&gt;
                    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)&lt;br /&gt;
                    frame = cv2.resize(frame, (self.screen_width // 3, self.screen_height // 3))&lt;br /&gt;
                    frame = pygame.surfarray.make_surface(frame.swapaxes(0, 1))&lt;br /&gt;
                    self.frames[index] = frame&lt;br /&gt;
                    self.status[index] = &amp;quot;&amp;quot;&lt;br /&gt;
                else:&lt;br /&gt;
                    debug_log(f&amp;quot;[Camera {index+1}] Échec de réception du flux, reconnexion dans {retry_interval}s&amp;quot;)&lt;br /&gt;
                    self.status[index] = f&amp;quot;Attente de reconnexion à la caméra {index+1}...&amp;quot;&lt;br /&gt;
                    self.frames[index] = None  # Retirer l'image pour laisser place au message de statut&lt;br /&gt;
                    cap.release()  # Libération de l'objet cap en cas d'erreur&lt;br /&gt;
                    cap = None  # Réinitialisation de cap&lt;br /&gt;
                    previously_connected = False  # Variable pour suivre l'état de la connexion&lt;br /&gt;
                    time.sleep(retry_interval)  # Reconnexion après l'intervalle&lt;br /&gt;
        &lt;br /&gt;
        if cap:&lt;br /&gt;
            cap.release()&lt;br /&gt;
    &lt;br /&gt;
    def run(self):&lt;br /&gt;
        debug_log(&amp;quot;Boucle principale en cours&amp;quot;)&lt;br /&gt;
        font = pygame.font.SysFont('Courier', int(config['font_camera']))  # Police monospace (compatible Win/Linux)&lt;br /&gt;
        font_time = pygame.font.SysFont('Courier', int(config['font_time']))  # Police plus grande pour l'heure et la date&lt;br /&gt;
        font_date = pygame.font.SysFont('Courier', int(config['font_date']))  # Police plus grande pour l'heure et la date&lt;br /&gt;
        cell_width = self.screen_width // 3&lt;br /&gt;
        cell_height = self.screen_height // 3&lt;br /&gt;
        &lt;br /&gt;
        while self.running:&lt;br /&gt;
            self.screen.fill((0, 0, 0))&lt;br /&gt;
            for event in pygame.event.get():&lt;br /&gt;
                if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key in [pygame.K_ESCAPE, pygame.K_q]):&lt;br /&gt;
                    self.running = False&lt;br /&gt;
            # Affichage des caméras&lt;br /&gt;
            for idx in range(8):&lt;br /&gt;
                x, y = (idx % 3) * cell_width, (idx // 3) * cell_height&lt;br /&gt;
                if self.frames[idx]:&lt;br /&gt;
                    self.screen.blit(self.frames[idx], (x, y))&lt;br /&gt;
                else:&lt;br /&gt;
                    # Centrage du texte&lt;br /&gt;
                    text_surface = font.render(self.status[idx], True, (255, 255, 255))&lt;br /&gt;
                    text_rect = text_surface.get_rect(center=(x + cell_width // 2, y + cell_height // 2))&lt;br /&gt;
                    self.screen.blit(text_surface, text_rect)&lt;br /&gt;
            &lt;br /&gt;
            # Affichage de l'heure et de la date dans la 9e case (dernière case)&lt;br /&gt;
            x, y = (8 % 3) * cell_width, (8 // 3) * cell_height  # Calcul des coordonnées de la 9e case&lt;br /&gt;
            current_time = datetime.now().strftime(&amp;quot;%H:%M:%S&amp;quot;)&lt;br /&gt;
            current_date = datetime.now().strftime(&amp;quot;%d/%m/%Y&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
            # Affichage de l'heure (plus grand)&lt;br /&gt;
            time_surface = font_time.render(current_time, True, (255, 255, 255))&lt;br /&gt;
            time_rect = time_surface.get_rect(center=(x + cell_width // 2, y + cell_height // 3))&lt;br /&gt;
            self.screen.blit(time_surface, time_rect)&lt;br /&gt;
            &lt;br /&gt;
            # Affichage de la date (plus grand)&lt;br /&gt;
            date_surface = font_date.render(current_date, True, (255, 255, 255))&lt;br /&gt;
            date_rect = date_surface.get_rect(center=(x + cell_width // 2, y + 2 * cell_height // 3))&lt;br /&gt;
            self.screen.blit(date_surface, date_rect)&lt;br /&gt;
            &lt;br /&gt;
            pygame.display.flip()&lt;br /&gt;
            &lt;br /&gt;
            for event in pygame.event.get():&lt;br /&gt;
                if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key in [pygame.K_ESCAPE, pygame.K_q]):&lt;br /&gt;
                    self.running = False&lt;br /&gt;
        &lt;br /&gt;
        pygame.quit()&lt;br /&gt;
        debug_log(&amp;quot;Application fermée.&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    debug_log(&amp;quot;Démarrage de l'application&amp;quot;)&lt;br /&gt;
    app = VideoStreamApp()&lt;br /&gt;
    app.run()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
config.json&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;streams&amp;quot;: [true, true, true, true, true, true, false, true],&lt;br /&gt;
	&amp;quot;url&amp;quot;: &amp;quot;http://192.168.0.255:8090/camera&amp;quot;,&lt;br /&gt;
	&amp;quot;timeout&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
	&amp;quot;retry&amp;quot;: &amp;quot;5&amp;quot;,&lt;br /&gt;
	&amp;quot;font_camera&amp;quot;: &amp;quot;16&amp;quot;,&lt;br /&gt;
	&amp;quot;font_time&amp;quot;: &amp;quot;90&amp;quot;,&lt;br /&gt;
	&amp;quot;font_date&amp;quot;: &amp;quot;70&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;br /&gt;
[[:Catégorie:Programmation]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Ordinateurs&amp;diff=508</id>
		<title>Catégorie:Ordinateurs</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Ordinateurs&amp;diff=508"/>
		<updated>2025-07-13T01:08:30Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentations au sujet des Ordinateurs, Portable, Notebook, Barebone, Mini PC, Apple Mac, Power PC et les systèmes d'exploitations; Windows, Mac OS, Distributions Linux....&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Logiciels&amp;diff=507</id>
		<title>Catégorie:Logiciels</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Logiciels&amp;diff=507"/>
		<updated>2025-07-13T01:08:07Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Guides, trucs et astuces avec les logiciels. Systèmes d'exploitations et programmes y seront parlé.&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Installation_de_Virtualmin&amp;diff=506</id>
		<title>Installation de Virtualmin</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Installation_de_Virtualmin&amp;diff=506"/>
		<updated>2025-07-13T01:00:16Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : Page créée avec «  == Pré-requis == Assurez-vous d'avoir &amp;quot;curl&amp;quot; avec; &amp;lt;pre&amp;gt; sudo apt update sudo apt install curl &amp;lt;/pre&amp;gt; Et ajuster le nom de l'ordinateur (hostname).  == Lancer le script... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Pré-requis ==&lt;br /&gt;
Assurez-vous d'avoir &amp;quot;curl&amp;quot; avec;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Et ajuster le nom de l'ordinateur (hostname).&lt;br /&gt;
&lt;br /&gt;
== Lancer le script ==&lt;br /&gt;
Lancer cette ligne de commande;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo sh -c &amp;quot;$(curl -fsSL https://software.virtualmin.com/gpl/scripts/virtualmin-install.sh)&amp;quot; -- --bundle LAMP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ou visiter le site officiel; https://www.virtualmin.com/download/&lt;br /&gt;
&lt;br /&gt;
== Note sur DNS ==&lt;br /&gt;
Par défaut, le serveur de nom de domaine &amp;quot;BIND&amp;quot; sera accessible qu'en local, ce qui bloque l'usage des noms de domaines. Il fauta juster une configuration dans BIND pour autoriser les connections extérieur.&lt;br /&gt;
&lt;br /&gt;
Ouvrez avec nano le fichier &amp;quot;/etc/bind/names/conf/options&amp;quot; et changer pour ces valeurs;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    listen-on { any; };&lt;br /&gt;
    allow-query { any; };&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Logiciels]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Multi_versions_PHP&amp;diff=505</id>
		<title>Multi versions PHP</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Multi_versions_PHP&amp;diff=505"/>
		<updated>2025-07-13T00:53:48Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : Page créée avec « Installer multiples version de PHP (5 à 8) pour un environnement d'hébergement Web.  == Script d'installation == Vous n,avez qu'a créer un fichier, comme &amp;quot;installphp.sh... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Installer multiples version de PHP (5 à 8) pour un environnement d'hébergement Web.&lt;br /&gt;
&lt;br /&gt;
== Script d'installation ==&lt;br /&gt;
Vous n,avez qu'a créer un fichier, comme &amp;quot;installphp.sh&amp;quot; et d'y inclure ce code;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
set -e&lt;br /&gt;
&lt;br /&gt;
# install base dependencies&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common wget gnupg curl&lt;br /&gt;
&lt;br /&gt;
# add Sury PHP repo&lt;br /&gt;
wget -qO - https://packages.sury.org/php/apt.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/php.gpg&lt;br /&gt;
echo &amp;quot;deb https://packages.sury.org/php/ $(lsb_release -sc) main&amp;quot; | sudo tee /etc/apt/sources.list.d/php.list&lt;br /&gt;
&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
# Versions à installer&lt;br /&gt;
VERSIONS=(5.6 7.0 7.1 7.2 7.3 7.4 8.0 8.1 8.2 8.3 8.4)&lt;br /&gt;
&lt;br /&gt;
# Modules PHP principaux (ajuster selon besoins)&lt;br /&gt;
MODULES=(&lt;br /&gt;
  fpm cli common bcmath bz2 cgi curl dba dev enchant gd gmp imap&lt;br /&gt;
  intl ldap mbstring memcached mysql opcache pgsql phpdbg&lt;br /&gt;
  readline redis snmp soap sqlite3 tidy xml xmlrpc xsl zip&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
for ver in &amp;quot;${VERSIONS[@]}&amp;quot;; do&lt;br /&gt;
  echo &amp;quot;Installation de PHP $ver ...&amp;quot;&lt;br /&gt;
  sudo apt install -y php$ver&lt;br /&gt;
  for mod in &amp;quot;${MODULES[@]}&amp;quot;; do&lt;br /&gt;
    sudo apt install -y php$ver-$mod || true&lt;br /&gt;
  done&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# Configuration update-alternatives&lt;br /&gt;
for ver in &amp;quot;${VERSIONS[@]}&amp;quot;; do&lt;br /&gt;
  if [ -x &amp;quot;/usr/bin/php$ver&amp;quot; ]; then&lt;br /&gt;
    sudo update-alternatives --install /usr/bin/php php /usr/bin/php$ver 100&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Installation terminée. Utilise 'sudo update-alternatives --config php' pour changer la version active.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par la suite, changer le droit du fichier pour l'exécuter;&lt;br /&gt;
&amp;lt;pre&amp;gt;chmod +x install.php.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et Lancer par la suite le script, qui installera les versions de PHP et les modules.&lt;br /&gt;
&amp;lt;pre&amp;gt;./installphp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Logiciels]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Upgrade_Debian_10_%C3%A0_12&amp;diff=504</id>
		<title>Upgrade Debian 10 à 12</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Upgrade_Debian_10_%C3%A0_12&amp;diff=504"/>
		<updated>2025-07-13T00:48:25Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : Page créée avec « Guide pour passer de Debian 10 à 11 et de 11 à 12. Ceci depuis une version &amp;quot;clean&amp;quot;.  == Attention : Accès Root et Sudo == Vu que c'est un processus d'installation de mi... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Guide pour passer de Debian 10 à 11 et de 11 à 12. Ceci depuis une version &amp;quot;clean&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Attention : Accès Root et Sudo ==&lt;br /&gt;
Vu que c'est un processus d'installation de mise à jours, il faudra redémarrer le système et les fichiers de &amp;quot;sudo&amp;quot; seront remis à zéro.&lt;br /&gt;
Si vous êtes en physique avec le système, utilisé le compte &amp;quot;root&amp;quot; si possible, sinon, via SSH il faudra utiliser SUDO' et effectuer la reconfiguration avec l'utilisateur &amp;quot;root&amp;quot; pour ajuster la configuration de &amp;quot;sudo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
1. Sous le compte utilisateur, accéder au compte &amp;quot;root&amp;quot; avec &amp;quot;su root&amp;quot;, vous devez connaitre le mot de passe du compte &amp;quot;root&amp;quot;.&lt;br /&gt;
2. Commencé par créer la configuration de sudo ou de prendre en note la configuration actuel.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
nano /etc/sudoers&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Si aucune ligne n'existe pour votre compte utilisateur, ajouter cette ligne, en remplaçant avec votre nom utilisateur.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
utilisateur ALL=(ALL) NOPASSWD: ALL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
3. Vous devrez recommencer et/ou vérifier après chaque fois que vous aller effectuer un &amp;quot;full-upgrade&amp;quot; et/ou avant le reboot.&lt;br /&gt;
&lt;br /&gt;
== Debian 10 à 11 ==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Actualiser le système actuel avec les derniers packages.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
sudo apt autoremove&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Vérifier que vous êtes en version 10 de Debian avec la commande &amp;lt;pre&amp;gt;lsb_release -a&amp;lt;/pre&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Il faut modifier la liste des sources, remplacer le contenu de source.list avec cette commande;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo nano /etc/apt/sources.list&amp;lt;/pre&amp;gt;&lt;br /&gt;
Par cette liste;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://deb.debian.org/debian bullseye main&lt;br /&gt;
deb-src http://deb.debian.org/debian bullseye main&lt;br /&gt;
&lt;br /&gt;
deb http://security.debian.org/ bullseye-security main&lt;br /&gt;
deb-src http://security.debian.org/ bullseye-security main&lt;br /&gt;
&lt;br /&gt;
deb http://deb.debian.org/debian bullseye-updates main&lt;br /&gt;
deb-src http://deb.debian.org/debian bullseye-updates main&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lancer la mise à jours des packages via ces commandes;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade --without-new-pkgs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Attention au sudo, voir la note''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lancer la mise à jours du système avec;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt full-upgrade &amp;lt;/pre&amp;gt;&lt;br /&gt;
''Attention au sudo, voir la note''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Une fois terminé, redémarrer avec ;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo reboot&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Note: Durant le processus, il peut y avoir des documents à lire qui s'afficheront, il suffi d'appuyer sur &amp;quot;Q&amp;quot; pour continuer. Il il aura aussi parfois la vérification si ont modifie la mise à jours de programme, dont celui de &amp;quot;sudo&amp;quot;. Accepter avec &amp;quot;Y&amp;quot;, si justement &amp;quot;sudo&amp;quot; est l'un de ces confirmations, alors n'oublier pas de changer la configuration de &amp;quot;sudo&amp;quot; avant de continuer.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Debian 11 à 12 ==&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Actualiser le système actuel avec les derniers packages.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade&lt;br /&gt;
sudo apt full-upgrade&lt;br /&gt;
sudo apt autoremove&lt;br /&gt;
sudo apt clean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Vérifier que vous êtes en version 11 de Debian avec la commande &amp;lt;pre&amp;gt;lsb_release -a&amp;lt;/pre&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Il faut modifier la liste des sources, remplacer le contenu de source.list avec cette commande;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo nano /etc/apt/sources.list&amp;lt;/pre&amp;gt;&lt;br /&gt;
Par cette liste;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list &amp;amp;&amp;amp; sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lancer la mise à jours des packages via ces commandes;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt upgrade --without-new-pkgs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Attention au sudo, voir la note''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lancer la mise à jours du système avec;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt full-upgrade &amp;lt;/pre&amp;gt;&lt;br /&gt;
''Attention au sudo, voir la note''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Une fois terminé, redémarrer avec ;&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo reboot&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Note: Durant le processus, il peut y avoir des documents à lire qui s'afficheront, il suffi d'appuyer sur &amp;quot;Q&amp;quot; pour continuer. Il il aura aussi parfois la vérification si ont modifie la mise à jours de programme, dont celui de &amp;quot;sudo&amp;quot;. Accepter avec &amp;quot;Y&amp;quot;, si justement &amp;quot;sudo&amp;quot; est l'un de ces confirmations, alors n'oublier pas de changer la configuration de &amp;quot;sudo&amp;quot; avant de continuer.''&lt;br /&gt;
&lt;br /&gt;
== Finalisation ==&lt;br /&gt;
Un petit nettoyage avec;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt autoremove&lt;br /&gt;
sudo apt clean&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Logiciels]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=/RPI_PIMOX&amp;diff=503</id>
		<title>/RPI PIMOX</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=/RPI_PIMOX&amp;diff=503"/>
		<updated>2024-01-13T22:06:45Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : Page créée avec « == Transformer le Raspberry Pi 3/4 et plus en serveur de machine virtuel. == Ce guide permet d'installer Pimox,, une variante pour Raspberry Pi de Poxmox. Le code est actu... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Transformer le Raspberry Pi 3/4 et plus en serveur de machine virtuel. ==&lt;br /&gt;
Ce guide permet d'installer Pimox,, une variante pour Raspberry Pi de Poxmox. Le code est actuellement destiné à un Raspberry Pi 4 et mieux, mais il est compatible avec les Raspberry Pi 3 64 Bits.&lt;br /&gt;
&lt;br /&gt;
=== Prérequis ===&lt;br /&gt;
* Raspberry Pi 3, 4, 5 avec processeur ARM 64bits&lt;br /&gt;
* Raspbian OS Lite 10 ou plus récent&lt;br /&gt;
* Carte SD de 32GB minimum ou démarrage via disque dur&lt;br /&gt;
* Connexion réseau avec adresse fixe et accès à internet (pour l'installation et MaJ)&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
Lancer ces commandes pour télécharger le script d'installation et le lancer. Soyez avec l'utilisateur &amp;quot;sudo&amp;quot;, ou le &amp;quot;root&amp;quot;. Si c'est le &amp;quot;root&amp;quot;, ignorer la commande &amp;quot;sudo -s&amp;quot;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo -s&lt;br /&gt;
curl https://raw.githubusercontent.com/pimox/pimox7/master/RPiOS64-IA-Install.sh &amp;gt; RPiOS64-IA-Install.sh&lt;br /&gt;
chmod +x RPiOS64-IA-Install.sh&lt;br /&gt;
./RPiOS64-IA-Install.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Avec un Raspberry Pi 3, il faut éditer le fichier pour commenter la ligne &amp;quot;exit&amp;quot; dans le &amp;quot;if&amp;quot; du model Raspberry Pi 3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=RPi-Guide-de-depannage&amp;diff=502</id>
		<title>RPi-Guide-de-depannage</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=RPi-Guide-de-depannage&amp;diff=502"/>
		<updated>2023-12-24T02:44:57Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : Page créée avec « Ce guide est basé sur mon expérience et de la documentation trouvé sur Internet avec l'aide de Google. Les informations concerne plus les modèles de Raspberry Pi 1 ,2... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ce guide est basé sur mon expérience et de la documentation trouvé sur Internet avec l'aide de Google. Les informations concerne plus les modèles de Raspberry Pi 1 ,2 ,3 ainsi que Zero version 1 et 2. Les réponses ce base, quand concerné, à Raspbian Version Lite.&lt;br /&gt;
À savoir&lt;br /&gt;
* L'usage de carte SD signifie la carte SD du Raspberry Pi 1 et également la micro SD des autres modèles.&lt;br /&gt;
&lt;br /&gt;
== Problèmes est solutions ==&lt;br /&gt;
=== Pas de démarrage ou problème d'affichage===&lt;br /&gt;
==== Sans lumière (LED) ====&lt;br /&gt;
* La carte SD est absente,&lt;br /&gt;
* La carte SD ne contient pas une image système valide ou la copie c'est mal passé,&lt;br /&gt;
* La carte SD est incompatible,&lt;br /&gt;
* L'alimentation est insuffisante ou défaillante,&lt;br /&gt;
* La version du système d'exploitation n'est pas compatible avec le CPU (32 ou 64 bit)&lt;br /&gt;
&lt;br /&gt;
==== Avec lumière (LED) ====&lt;br /&gt;
* Câble HDMI problématique (mauvaise version, mauvaise qualité),&lt;br /&gt;
* Mauvaise configuration dans `/boot/config.txt` pour la vidéo,&lt;br /&gt;
* Problème de support HDMI, tenter une configuration 720p,&lt;br /&gt;
* Le téléviseur est incompatible (ne prend pas en charge le signal type &amp;quot;DVI&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
==== Avec &amp;quot;L'arc-en-ciel&amp;quot; sur l'écran====&lt;br /&gt;
* La version du système d'exploitation n'est pas compatible avec le CPU (32 ou 64 bit),&lt;br /&gt;
* Mauvaise configuration dans `/boot/config.txt` pour la vidéo,&lt;br /&gt;
* Problème de support HDMI, tenter une configuration 720p,&lt;br /&gt;
* Le téléviseur est incompatible (ne prend pas en charge le signal type &amp;quot;DVI&amp;quot;),&lt;br /&gt;
* Problème de lecture sur le carte SD,&lt;br /&gt;
* Installation du système corrompu&lt;br /&gt;
&lt;br /&gt;
=== Éclaire dans le coin de l'écran===&lt;br /&gt;
Ce problème est un signe que l'alimentation est en dehors des limites. Ceci est causé par soit;&lt;br /&gt;
* Un mauvais chargeur, qui est soit usé, de mauvaise qualité ou endommagé,&lt;br /&gt;
* L'utilisation d'un câble USB ne pouvant pas fournir l'ampérage requis,&lt;br /&gt;
* La connexion de l'alimentation au Raspberry n'est pas optimal,&lt;br /&gt;
* Trop d'ajout au Raspberry (hats, USB),&lt;br /&gt;
* Appareil USB utilisant trop d'alimentation,&lt;br /&gt;
* Trop d'appareil USB sont connectés,&lt;br /&gt;
* Surcharge du CPU&lt;br /&gt;
&lt;br /&gt;
=== Lenteur du système ===&lt;br /&gt;
Ce problème est un signe que l'alimentation est en dehors des limites. Ceci est causé par soit;&lt;br /&gt;
* Un mauvais chargeur, qui est soit usé, de mauvaise qualité ou endommagé,&lt;br /&gt;
* L'utilisation d'un câble USB ne pouvant pas fournir l'ampérage requis,&lt;br /&gt;
* La connexion de l'alimentation au Raspberry n'est pas optimal,&lt;br /&gt;
* Trop d'ajout au Raspberry (hats, USB),&lt;br /&gt;
* Appareil USB utilisant trop d'alimentation,&lt;br /&gt;
* Trop d'appareil USB sont connectés,&lt;br /&gt;
* Surcharge du CPU,&lt;br /&gt;
* Surcharge du Wifi/BT (si disponible),&lt;br /&gt;
* Surcharge vidéo causé par la résolution de la sortie HDMI,&lt;br /&gt;
* Programme utilisant trop de mémoire ou trop de temps processeur&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=RPi-eSpeak&amp;diff=501</id>
		<title>RPi-eSpeak</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=RPi-eSpeak&amp;diff=501"/>
		<updated>2023-08-09T22:15:28Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ce guide vous permet de faire parler votre Pi ou tout autres ordinateur.&lt;br /&gt;
&lt;br /&gt;
== Pré-requis ==&lt;br /&gt;
* Mise à jour du système Raspbian OS;&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get upgrade&lt;br /&gt;
 sudo apt-get autoremove&lt;br /&gt;
 sudo reboot&lt;br /&gt;
* Installation de eSpeak; &amp;lt;pre&amp;gt;sudo apt-get install espeak&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Installation de MBrola; &lt;br /&gt;
 wget https://raspberry-pi.fr/download/espeak/mbrola3.0.1h_armhf.deb -O mbrola.deb&lt;br /&gt;
 sudo dpkg -i mbrola.deb&lt;br /&gt;
* Installation des packs français pour MBrola; &amp;lt;pre&amp;gt;sudo apt-get install mbrola-fr*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Utilisation ==&lt;br /&gt;
 espeak -v mbrola-fr1 &amp;quot;Ton texte à lire&amp;quot;&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=VR-Tek&amp;diff=500</id>
		<title>VR-Tek</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=VR-Tek&amp;diff=500"/>
		<updated>2023-05-05T06:33:28Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox device&lt;br /&gt;
 | title = VR-Tek&lt;br /&gt;
 | image = Vrtek-wvr1.jpg&lt;br /&gt;
 | name = VR-Tek&lt;br /&gt;
 | model = WVR1 / WVR2&lt;br /&gt;
 | dev = Direkt-Tek&lt;br /&gt;
 | type = Casque VR mobile&lt;br /&gt;
 | version = WVR1 et WVR2&lt;br /&gt;
 | os = Windows 7+, Max OS X, Linux&lt;br /&gt;
 | website = http://direkt-tek.com/#_vr&lt;br /&gt;
}}&lt;br /&gt;
== Spécifications technique ==&lt;br /&gt;
* Affichage: Deux écrans 1920 x 1080 (WVR1) / 2560 x 1440 (WVR2) LCD&lt;br /&gt;
* Entrée vidéo: Connexion en HDMI 1.2&lt;br /&gt;
* Entrée donnée: Connexion en USB 2.0&lt;br /&gt;
* Câble: 1,5 mètre&lt;br /&gt;
* Senseur: 3 DoF (casque)&lt;br /&gt;
* Options: Sortie audio 3.5 mm, détecteur de présence du joueur, manette sans-fils Xbox 360 compatible fournis&lt;br /&gt;
&lt;br /&gt;
== Capacités ==&lt;br /&gt;
* Compatible avec tout les jeux VR supportant clavier/souris et/ou manette&lt;br /&gt;
* Casque ajustable sur 4 points (2 axes)&lt;br /&gt;
* Qualité graphique des écrans 8/10&lt;br /&gt;
* Prise en charge SteamVR sous Windows seulement&lt;br /&gt;
&lt;br /&gt;
== Disponibilités ==&lt;br /&gt;
* Walmart America (US)&lt;br /&gt;
* EBay (US/World)&lt;br /&gt;
&lt;br /&gt;
== Téléchargement ==&lt;br /&gt;
* Pilote [https://download.levelkro.com/download/windows/vrtek/HoloViewSetup_1.8.0.0_en.exe HoloView 1.8.0.0]&lt;br /&gt;
* [https://download.levelkro.com/download/windows/vrtek/Direkt_Tek_-_VR-TEK_WVRx_User_Manual.pdf Manuel d'utilisation] et [https://download.levelkro.com/download/windows/vrtek/Direkt_Tek_-_VR-TEK_WVRx_Quick_Start.pdf Guide de démarrage]&lt;br /&gt;
[[Catégorie:Matériels]]&lt;br /&gt;
[[Catégorie:Réalité_virtuel]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=RPi-GPIO_Audio&amp;diff=499</id>
		<title>RPi-GPIO Audio</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=RPi-GPIO_Audio&amp;diff=499"/>
		<updated>2023-03-14T00:29:38Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : Page créée avec « Ce guide est pour créer une sortie audio Analog via les pins du GPIO.  == Pré-requis == * Raspberry Pi (Zero) * Raspbian OS * COmposants électronique  === Composants é... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ce guide est pour créer une sortie audio Analog via les pins du GPIO.&lt;br /&gt;
&lt;br /&gt;
== Pré-requis ==&lt;br /&gt;
* Raspberry Pi (Zero)&lt;br /&gt;
* Raspbian OS&lt;br /&gt;
* COmposants électronique&lt;br /&gt;
&lt;br /&gt;
=== Composants électronique ===&lt;br /&gt;
* Sortie audio Mono ou Stéréo selon votre besoin (3.5mm,Composite,...) ou des haut-parleurs selon l'amplification créé&lt;br /&gt;
* Câble de connexion&lt;br /&gt;
* Chapeau de connexion, connecteur de &amp;quot;prototypage&amp;quot; ou un doigté pour la position des câble avec une laco&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Il est possible de choisir des sortie sur certaines pins seulement, par défaut les pins (fournir valeurs) sont utilisé, mais sont hors du connecteur.&lt;br /&gt;
&lt;br /&gt;
Pin 12 / GPIO 18 (alt5)&lt;br /&gt;
Pin 32 / GPIO 12 (alt0)&lt;br /&gt;
Pin 33 / GPIO 13 (alt0)&lt;br /&gt;
Pin 35 / GPIO 19 (alt5)&lt;br /&gt;
&lt;br /&gt;
Dans le fichier &amp;quot;/boot/config.txt&amp;quot; ajouter la ligne selon les sorties désiré;&lt;br /&gt;
 dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Raspberry_Pi&amp;diff=498</id>
		<title>Catégorie:Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Raspberry_Pi&amp;diff=498"/>
		<updated>2022-11-26T21:20:26Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Raspberry-turn.gif|droite]]&lt;br /&gt;
== Forums ==&lt;br /&gt;
* Raspberry Pi Officiel - Forums Français : https://www.raspberrypi.org/forums/viewforum.php?f=65&lt;br /&gt;
* Raspberry Pi France - Forums : https://forum.raspberry-pi.fr/&lt;br /&gt;
* Framboise 314 - Forums : https://forums.framboise314.fr/&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
* [[RPi-Bluetooth Audio|Audio par Bluetooth]]&lt;br /&gt;
* [[RPi-BootScreen|Changer l'écran de démarrage]]&lt;br /&gt;
* [[RPi-Chromium_Kiosk_Mode|Transformer Raspbian en mode Kiosk]]&lt;br /&gt;
* [[RPi-eSpeak|Faire parler avec eSpeak]]&lt;br /&gt;
* [[RPi-USB OTG|Utiliser le Raspberry Pi Zero comme clé USB]]&lt;br /&gt;
* [[RPi-QL|Contrôler une imprimante Brother série QL; interface GUI, CLI et Web API]]&lt;br /&gt;
* [[RPi-PiRadio|Monter un émetteur radio]]&lt;br /&gt;
* [[RPi-RealTime_Clock|Garder l'heure avec un module RTC]]&lt;br /&gt;
* [[RPi-DS18B20|Obtenir la température avec le module DS18B20]]&lt;br /&gt;
* [[RPi-piDeskboard|Panneau d'informations avec piDeskboard]]&lt;br /&gt;
* [[RPi-Buttons|Ajouter des Boutons]]&lt;br /&gt;
* [[RPi-piCAM|Monter une caméra multi-fonction]]&lt;br /&gt;
* [[RPi_OLED_0.91_i2c|Utiliser une affichage OLED 0.91&amp;quot; I2C]]&lt;br /&gt;
* Autres à venir...&lt;br /&gt;
&lt;br /&gt;
== Boutiques ==&lt;br /&gt;
* https://buyapi.ca&lt;br /&gt;
* https://waveshare.com&lt;br /&gt;
* https://www.canakit.com/&lt;br /&gt;
* https://www.amazon.ca/raspberry-pi/s?k=raspberry+pi&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=RPi_OLED_0.91_i2c&amp;diff=497</id>
		<title>RPi OLED 0.91 i2c</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=RPi_OLED_0.91_i2c&amp;diff=497"/>
		<updated>2022-11-26T21:19:03Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : Page créée avec « Ce guide va vous permettre d'installer l'écran OLED et de l'utiliser avec du code Python.  == Prérequis ==  * Raspberry Pi avec GPIO 3.3v, Ground, I2C SDA1 et I2C SCL1 *... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ce guide va vous permettre d'installer l'écran OLED et de l'utiliser avec du code Python.&lt;br /&gt;
&lt;br /&gt;
== Prérequis ==&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi avec GPIO 3.3v, Ground, I2C SDA1 et I2C SCL1&lt;br /&gt;
* Module compatible OLED 0.91&amp;quot; par I2C/SPI 128x32 (BCM2835)&lt;br /&gt;
* Raspbian OS Lite (ou mieux/compatible)&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
1. Installer la librairie BCM2835&lt;br /&gt;
 wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz&lt;br /&gt;
 tar zxvf bcm2835-1.71.tar.gz  &lt;br /&gt;
 cd bcm2835-1.71/&lt;br /&gt;
 sudo ./configure &amp;amp;&amp;amp; sudo make &amp;amp;&amp;amp; sudo make check &amp;amp;&amp;amp; sudo make install&lt;br /&gt;
2. Installer les librairies WiringPi&lt;br /&gt;
 git clone https://github.com/WiringPi/WiringPi&lt;br /&gt;
 cd WiringPi&lt;br /&gt;
 ./build&lt;br /&gt;
3. Installer les prérequis d'utilisation avec Python&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install python3-pip&lt;br /&gt;
 sudo apt-get install python3-pil&lt;br /&gt;
 sudo apt-get install python3-numpy&lt;br /&gt;
 sudo pip3 install RPi.GPIO&lt;br /&gt;
 sudo pip3 install spidev&lt;br /&gt;
 sudo pip3 install smbus&lt;br /&gt;
4. Install the modified Waveshare Module for use with I2C.&lt;br /&gt;
 git clone https://github.com/levelKro/Waveshare-OLED&lt;br /&gt;
 cd Waveshare-OLED&lt;br /&gt;
 sudo python3 setup.py install&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Example of a script to used it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
# -*- coding:utf-8 -*-&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import os&lt;br /&gt;
import logging    &lt;br /&gt;
import time&lt;br /&gt;
import traceback&lt;br /&gt;
import getopt&lt;br /&gt;
from waveshare_OLED import OLED_0in91&lt;br /&gt;
from PIL import Image,ImageDraw,ImageFont&lt;br /&gt;
#logging.basicConfig(level=logging.DEBUG)&lt;br /&gt;
&lt;br /&gt;
import socket   &lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)&lt;br /&gt;
s.connect((&amp;quot;8.8.8.8&amp;quot;, 80))&lt;br /&gt;
IPAddr=s.getsockname()[0]&lt;br /&gt;
path=os.path.dirname(os.path.realpath(__file__))&lt;br /&gt;
&lt;br /&gt;
argv = sys.argv[1:]&lt;br /&gt;
&lt;br /&gt;
opts, args = getopt.getopt(argv,&amp;quot;h:t:i:n:x:&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
out_title=&amp;quot;RPi-QL&amp;quot;&lt;br /&gt;
out_info=&amp;quot;&amp;quot;&lt;br /&gt;
out_xtra=&amp;quot;&amp;quot;&lt;br /&gt;
out_noimg=False&lt;br /&gt;
&lt;br /&gt;
for opt, arg in opts:&lt;br /&gt;
    if opt == '-h':&lt;br /&gt;
        print(&amp;quot;*** Help of OLED 0.91 Display&amp;quot;)&lt;br /&gt;
        print('Syntax: oled.py -t &amp;quot;title text&amp;quot; -i &amp;quot;info text&amp;quot; -n &amp;quot;extra info text&amp;quot;')&lt;br /&gt;
        &lt;br /&gt;
        sys.exit()&lt;br /&gt;
    elif opt in (&amp;quot;-t&amp;quot;):&lt;br /&gt;
        out_title = arg&lt;br /&gt;
    elif opt in (&amp;quot;-i&amp;quot;):&lt;br /&gt;
        out_info = arg.replace(&amp;quot;:ipaddr:&amp;quot;,IPAddr)&lt;br /&gt;
    elif opt in (&amp;quot;-n&amp;quot;):&lt;br /&gt;
        out_xtra = arg.replace(&amp;quot;:ipaddr:&amp;quot;,IPAddr)&lt;br /&gt;
    elif opt in (&amp;quot;-x&amp;quot;):&lt;br /&gt;
        out_noimg = True&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Found: &amp;quot;+str(opt))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
disp = OLED_0in91.OLED_0in91()&lt;br /&gt;
# Initialize library.&lt;br /&gt;
disp.Init()&lt;br /&gt;
&lt;br /&gt;
# Clear display.&lt;br /&gt;
disp.clear()&lt;br /&gt;
&lt;br /&gt;
# Create blank image for drawing.&lt;br /&gt;
image1 = Image.new('1', (disp.width, disp.height), &amp;quot;WHITE&amp;quot;)&lt;br /&gt;
draw = ImageDraw.Draw(image1)&lt;br /&gt;
font1 = ImageFont.truetype(&amp;quot;DejaVuSansMono.ttf&amp;quot;, 12)&lt;br /&gt;
font2 = ImageFont.truetype(&amp;quot;DejaVuSansMono.ttf&amp;quot;, 11)&lt;br /&gt;
font3 = ImageFont.truetype(&amp;quot;DejaVuSansMono.ttf&amp;quot;, 9)&lt;br /&gt;
&lt;br /&gt;
if(out_noimg):&lt;br /&gt;
    draw.text((0,0), out_title, font = font1, fill = 0)&lt;br /&gt;
    draw.text((2,12), out_info, font = font2, fill = 0)&lt;br /&gt;
    draw.text((2,23), out_xtra, font = font3, fill = 0)&lt;br /&gt;
else:&lt;br /&gt;
    img = Image.open(path+&amp;quot;/logo.jpg&amp;quot;)&lt;br /&gt;
    image1.paste(img, (0,0))&lt;br /&gt;
    draw.text((32,0), out_title, font = font1, fill = 0)&lt;br /&gt;
    draw.text((33,12), out_info, font = font2, fill = 0)&lt;br /&gt;
    draw.text((33,23), out_xtra, font = font3, fill = 0)&lt;br /&gt;
    image1=image1.rotate(0) &lt;br /&gt;
&lt;br /&gt;
disp.ShowImage(disp.getbuffer(image1))&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:USB&amp;diff=496</id>
		<title>Catégorie:USB</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:USB&amp;diff=496"/>
		<updated>2022-11-07T07:36:58Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Matériels axé sur l'utilisation depuis un port USB.&lt;br /&gt;
&lt;br /&gt;
à faire...&lt;br /&gt;
* GPS USB&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Ordinateurs&amp;diff=495</id>
		<title>Catégorie:Ordinateurs</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Ordinateurs&amp;diff=495"/>
		<updated>2022-11-07T07:36:22Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Documentations au sujet des Ordinateurs, Portable, Notebook, Barebone, Mini PC, Apple Mac, Power PC et les systèmes d'exploitations; Windows, Mac OS, Distributions Linux....&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A faire....&lt;br /&gt;
&lt;br /&gt;
* ASUS C300M - Guide vers Linux&lt;br /&gt;
* RPi PC Stats&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Raspberry_Pi&amp;diff=494</id>
		<title>Catégorie:Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Raspberry_Pi&amp;diff=494"/>
		<updated>2022-11-07T07:33:58Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : /* Guides */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Raspberry-turn.gif|droite]]&lt;br /&gt;
== Forums ==&lt;br /&gt;
* Raspberry Pi Officiel - Forums Français : https://www.raspberrypi.org/forums/viewforum.php?f=65&lt;br /&gt;
* Raspberry Pi France - Forums : https://forum.raspberry-pi.fr/&lt;br /&gt;
* Framboise 314 - Forums : https://forums.framboise314.fr/&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
* [[RPi-Bluetooth Audio|Audio par Bluetooth]]&lt;br /&gt;
* [[RPi-BootScreen|Changer l'écran de démarrage]]&lt;br /&gt;
* [[RPi-Chromium_Kiosk_Mode|Transformer Raspbian en mode Kiosk]]&lt;br /&gt;
* [[RPi-eSpeak|Faire parler avec eSpeak]]&lt;br /&gt;
* [[RPi-USB OTG|Utiliser le Raspberry Pi Zero comme clé USB]]&lt;br /&gt;
* [[RPi-QL|Contrôler une imprimante Brother série QL; interface GUI, CLI et Web API]]&lt;br /&gt;
* [[RPi-PiRadio|Monter un émetteur radio]]&lt;br /&gt;
* [[RPi-RealTime_Clock|Garder l'heure avec un module RTC]]&lt;br /&gt;
* [[RPi-DS18B20|Obtenir la température avec le module DS18B20]]&lt;br /&gt;
* [[RPi-piDeskboard|Panneau d'informations avec piDeskboard]]&lt;br /&gt;
* [[RPi-Buttons|Ajouter des Boutons]]&lt;br /&gt;
* [[RPi-piCAM|Monter une caméra multi-fonction]]&lt;br /&gt;
* Autres à venir...&lt;br /&gt;
&lt;br /&gt;
== Boutiques ==&lt;br /&gt;
* https://buyapi.ca&lt;br /&gt;
* https://waveshare.com&lt;br /&gt;
* https://www.canakit.com/&lt;br /&gt;
* https://www.amazon.ca/raspberry-pi/s?k=raspberry+pi&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Raspberry_Pi&amp;diff=493</id>
		<title>Catégorie:Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Cat%C3%A9gorie:Raspberry_Pi&amp;diff=493"/>
		<updated>2022-11-07T07:33:49Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : /* Guides */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Raspberry-turn.gif|droite]]&lt;br /&gt;
== Forums ==&lt;br /&gt;
* Raspberry Pi Officiel - Forums Français : https://www.raspberrypi.org/forums/viewforum.php?f=65&lt;br /&gt;
* Raspberry Pi France - Forums : https://forum.raspberry-pi.fr/&lt;br /&gt;
* Framboise 314 - Forums : https://forums.framboise314.fr/&lt;br /&gt;
&lt;br /&gt;
== Guides ==&lt;br /&gt;
* [[RPi-Bluetooth Audio|Audio par Bluetooth]]&lt;br /&gt;
* [[RPi-BootScreen|Changer l'écran de démarrage]]&lt;br /&gt;
* [[RPi-Chromium_Kiosk_Mode|Transformer Raspbian en mode Kiosk]]&lt;br /&gt;
* [[RPi-eSpeak|Faire parler avec eSpeak]]&lt;br /&gt;
* [[RPi-USB OTG|Utiliser le Raspberry Pi Zero comme clé USB]]&lt;br /&gt;
* [[RPi-QL|COntrôler une imprimante Brother série QL; interface GUI, CLI et Web API]]&lt;br /&gt;
* [[RPi-PiRadio|Monter un émetteur radio]]&lt;br /&gt;
* [[RPi-RealTime_Clock|Garder l'heure avec un module RTC]]&lt;br /&gt;
* [[RPi-DS18B20|Obtenir la température avec le module DS18B20]]&lt;br /&gt;
* [[RPi-piDeskboard|Panneau d'informations avec piDeskboard]]&lt;br /&gt;
* [[RPi-Buttons|Ajouter des Boutons]]&lt;br /&gt;
* [[RPi-piCAM|Monter une caméra multi-fonction]]&lt;br /&gt;
* Autres à venir...&lt;br /&gt;
&lt;br /&gt;
== Boutiques ==&lt;br /&gt;
* https://buyapi.ca&lt;br /&gt;
* https://waveshare.com&lt;br /&gt;
* https://www.canakit.com/&lt;br /&gt;
* https://www.amazon.ca/raspberry-pi/s?k=raspberry+pi&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=RPi-QL&amp;diff=492</id>
		<title>RPi-QL</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=RPi-QL&amp;diff=492"/>
		<updated>2022-11-07T07:32:39Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ce projet consiste à un module de création et d'impression d'étiquette sous un Raspberry Pi sur une imprimante Brother de la série QL. Ce module est associé à un serveur Web avec un API et une application compatible Linux et Windows. Le tous est programmé en Python (3.9).&lt;br /&gt;
&lt;br /&gt;
== Composants ==&lt;br /&gt;
=== core.py ===&lt;br /&gt;
Ce fichier est la pièce essentiel. Il permet de créer et d'imprimer des étiquettes directement en ligne de commande. Plusieurs types d'étiquettes sont supportés; texte, texte large (banderole), texte avec une image, texte double pour nommer un câble, code à barre, archive avec code à barre, dates d'emballage et d'expiration et adresse. Ces étiquettes sont paramétrables pour accommoder plusieurs types de configuration et d'usage.&lt;br /&gt;
&lt;br /&gt;
=== web.py ===&lt;br /&gt;
Serveur Web permettant une interface Web aux options d'impression. Offre un API utilisable pour toutes les types d'étiquettes, en plus de contrôler les action de fermeture, redémarrage et de mise à jours du Raspberry Pi. Il est essentiel pour l'utilisation de l'application sous Windows.&lt;br /&gt;
&lt;br /&gt;
=== main.py ===&lt;br /&gt;
Application en GUI pour imprimer des étiquettes. Sous Linux, il commandera directement `core.py` pour générer et imprimer des étiquettes. Si il est utilisé sous Windows, l'adresse IP du Raspberry Pi doit être inclus dans le fichier de configuration pour communiquer les demandes d'impression. Il offre les mêmes possibilité que la version Linux.&lt;br /&gt;
&lt;br /&gt;
=== config.ini ===&lt;br /&gt;
Fichier de configuration utilisé par tous les composants. Il permet de personnaliser certaines options et d'enregistrer des paramètres et informations fréquemment utilisés. &lt;br /&gt;
&lt;br /&gt;
=== Autres fichiers ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prérequis ==&lt;br /&gt;
&lt;br /&gt;
* Python 3.7+ (testé sous 3.9)&lt;br /&gt;
* Modules pythons; wxpython, brother-ql, pillow, treepoem&lt;br /&gt;
* Imprimante Brother de la série QL (compatible selon la liste du module brother-ql)&lt;br /&gt;
* Papier 62mm &amp;quot;sans fin&amp;quot;&lt;br /&gt;
* Réseau local (pour utiliser la fonction d'interface Web et l'API)&lt;br /&gt;
* Raspberry OS (Raspbian) Lite avec interface graphique minimal (Xorg)&lt;br /&gt;
&lt;br /&gt;
== Exemples de créations ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:RPI-QL - Exemple Adresse Complet.jpg|vignette]] || [[Fichier:Ex barcode down.jpg|vignette]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex address noname.jpg|vignette]] || [[Fichier:Ex barcode down sub.jpg|vignette]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex cable.jpg|vignette]] || [[Fichier:Ex barcode up.jpg|vignette]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex text.jpg|vignette]]  || [[Fichier:Ex barcode up sub.jpg|vignette]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex archives.jpg|vignette]] || [[Fichier:Ex textimage left.jpg|vignette]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex archives owner.jpg|vignette]] || [[Fichier:Ex textimage right.jpg|vignette]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex expire expire.jpg|vignette]] || [[Fichier:Ex expire packaged.jpg|vignette]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex expire text expire.jpg|vignette]] || [[Fichier:Ex expire text packaged.jpg|vignette]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex expire packaged expire.jpg|vignette]] || [[Fichier:Ex expire text expire packaged.jpg|vignette]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Ex textlarge.jpg|vignette|centré]]&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=RPi-QL&amp;diff=491</id>
		<title>RPi-QL</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=RPi-QL&amp;diff=491"/>
		<updated>2022-11-07T07:32:14Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : Projet de contrôle d'imprimante Brother-QL sous Raspberry Pi&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ce projet consiste à un module de création et d'impression d'étiquette sous un Raspberry Pi sur une imprimante Brother de la série QL. Ce module est associé à un serveur Web avec un API et une application compatible Linux et Windows. Le tous est programmé en Python (3.9).&lt;br /&gt;
&lt;br /&gt;
== Composants ==&lt;br /&gt;
=== core.py ===&lt;br /&gt;
Ce fichier est la pièce essentiel. Il permet de créer et d'imprimer des étiquettes directement en ligne de commande. Plusieurs types d'étiquettes sont supportés; texte, texte large (banderole), texte avec une image, texte double pour nommer un câble, code à barre, archive avec code à barre, dates d'emballage et d'expiration et adresse. Ces étiquettes sont paramétrables pour accommoder plusieurs types de configuration et d'usage.&lt;br /&gt;
&lt;br /&gt;
=== web.py ===&lt;br /&gt;
Serveur Web permettant une interface Web aux options d'impression. Offre un API utilisable pour toutes les types d'étiquettes, en plus de contrôler les action de fermeture, redémarrage et de mise à jours du Raspberry Pi. Il est essentiel pour l'utilisation de l'application sous Windows.&lt;br /&gt;
&lt;br /&gt;
=== main.py ===&lt;br /&gt;
Application en GUI pour imprimer des étiquettes. Sous Linux, il commandera directement `core.py` pour générer et imprimer des étiquettes. Si il est utilisé sous Windows, l'adresse IP du Raspberry Pi doit être inclus dans le fichier de configuration pour communiquer les demandes d'impression. Il offre les mêmes possibilité que la version Linux.&lt;br /&gt;
&lt;br /&gt;
=== config.ini ===&lt;br /&gt;
Fichier de configuration utilisé par tous les composants. Il permet de personnaliser certaines options et d'enregistrer des paramètres et informations fréquemment utilisés. &lt;br /&gt;
&lt;br /&gt;
=== Autres fichiers ===&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prérequis ==&lt;br /&gt;
&lt;br /&gt;
* Python 3.7+ (testé sous 3.9)&lt;br /&gt;
* Modules pythons; wxpython, brother-ql, pillow, treepoem&lt;br /&gt;
* Imprimante Brother de la série QL (compatible selon la liste du module brother-ql)&lt;br /&gt;
* Papier 62mm &amp;quot;sans fin&amp;quot;&lt;br /&gt;
* Réseau local (pour utiliser la fonction d'interface Web et l'API)&lt;br /&gt;
* Raspberry OS (Raspbian) Lite avec interface graphique minimal (Xorg)&lt;br /&gt;
&lt;br /&gt;
== Exemples de créations ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:RPI-QL - Exemple Adresse Complet.jpg|vignette]] || [[Fichier:Ex barcode down.jpg|vignette]] &lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex address noname.jpg|vignette]] || [[Fichier:Ex barcode down sub.jpg|vignette]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex cable.jpg|vignette]] || [[Fichier:Ex barcode up.jpg|vignette]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex text.jpg|vignette]]  || [[Fichier:Ex barcode up sub.jpg|vignette]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex archives.jpg|vignette]] || [[Fichier:Ex textimage left.jpg|vignette]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex archives owner.jpg|vignette]] || [[Fichier:Ex textimage right.jpg|vignette]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex expire expire.jpg|vignette]] || [[Fichier:Ex expire packaged.jpg|vignette]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex expire text expire.jpg|vignette]] || [[Fichier:Ex expire text packaged.jpg|vignette]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Fichier:Ex expire packaged expire.jpg|vignette]] || [[Fichier:Ex expire text expire packaged.jpg|vignette]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Ex textlarge.jpg|vignette|centré]]&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
...&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_expire_text_expire_packaged.jpg&amp;diff=490</id>
		<title>Fichier:Ex expire text expire packaged.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_expire_text_expire_packaged.jpg&amp;diff=490"/>
		<updated>2022-11-07T07:20:52Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de date d'emballage et d'expiration de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_expire_text_packaged.jpg&amp;diff=489</id>
		<title>Fichier:Ex expire text packaged.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_expire_text_packaged.jpg&amp;diff=489"/>
		<updated>2022-11-07T07:20:32Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de date d'emballage et d'expiration de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_expire_text_expire.jpg&amp;diff=488</id>
		<title>Fichier:Ex expire text expire.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_expire_text_expire.jpg&amp;diff=488"/>
		<updated>2022-11-07T07:20:11Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de date d'emballage et d'expiration de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_expire_packaged_expire.jpg&amp;diff=487</id>
		<title>Fichier:Ex expire packaged expire.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_expire_packaged_expire.jpg&amp;diff=487"/>
		<updated>2022-11-07T07:19:50Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de date d'emballage et d'expiration de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_expire_packaged.jpg&amp;diff=486</id>
		<title>Fichier:Ex expire packaged.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_expire_packaged.jpg&amp;diff=486"/>
		<updated>2022-11-07T07:19:18Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de date d'emballage et d'expiration de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_expire_expire.jpg&amp;diff=485</id>
		<title>Fichier:Ex expire expire.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_expire_expire.jpg&amp;diff=485"/>
		<updated>2022-11-07T07:18:59Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de date d'emballage et d'expiration de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_textlarge.jpg&amp;diff=484</id>
		<title>Fichier:Ex textlarge.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_textlarge.jpg&amp;diff=484"/>
		<updated>2022-11-07T07:18:18Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de texte large (banderole) de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_textimage_right.jpg&amp;diff=483</id>
		<title>Fichier:Ex textimage right.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_textimage_right.jpg&amp;diff=483"/>
		<updated>2022-11-07T07:17:30Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de texte avec une image de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_textimage_left.jpg&amp;diff=482</id>
		<title>Fichier:Ex textimage left.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_textimage_left.jpg&amp;diff=482"/>
		<updated>2022-11-07T07:17:13Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de texte avec une image de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_text.jpg&amp;diff=481</id>
		<title>Fichier:Ex text.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_text.jpg&amp;diff=481"/>
		<updated>2022-11-07T07:16:48Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de texte de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_cable.jpg&amp;diff=480</id>
		<title>Fichier:Ex cable.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_cable.jpg&amp;diff=480"/>
		<updated>2022-11-07T07:16:19Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de nommage de câble de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_barcode_up_sub.jpg&amp;diff=479</id>
		<title>Fichier:Ex barcode up sub.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_barcode_up_sub.jpg&amp;diff=479"/>
		<updated>2022-11-07T07:15:51Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de code à barre de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_barcode_up.jpg&amp;diff=478</id>
		<title>Fichier:Ex barcode up.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_barcode_up.jpg&amp;diff=478"/>
		<updated>2022-11-07T07:15:32Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de code à barre de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_barcode_down_sub.jpg&amp;diff=477</id>
		<title>Fichier:Ex barcode down sub.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_barcode_down_sub.jpg&amp;diff=477"/>
		<updated>2022-11-07T07:15:08Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de code à barre de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_barcode_down.jpg&amp;diff=476</id>
		<title>Fichier:Ex barcode down.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_barcode_down.jpg&amp;diff=476"/>
		<updated>2022-11-07T07:14:48Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple de code à barre de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_archives_owner.jpg&amp;diff=475</id>
		<title>Fichier:Ex archives owner.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_archives_owner.jpg&amp;diff=475"/>
		<updated>2022-11-07T07:13:53Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple d'archive complet de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_archives.jpg&amp;diff=474</id>
		<title>Fichier:Ex archives.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_archives.jpg&amp;diff=474"/>
		<updated>2022-11-07T07:13:25Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple d'archive sans propriétaire de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_address_noname.jpg&amp;diff=473</id>
		<title>Fichier:Ex address noname.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:Ex_address_noname.jpg&amp;diff=473"/>
		<updated>2022-11-07T07:12:44Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple d'adresse sans nom de RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Fichier:RPI-QL_-_Exemple_Adresse_Complet.jpg&amp;diff=472</id>
		<title>Fichier:RPI-QL - Exemple Adresse Complet.jpg</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Fichier:RPI-QL_-_Exemple_Adresse_Complet.jpg&amp;diff=472"/>
		<updated>2022-11-07T07:11:47Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Exemple Adresse Complet de la RPI-QL&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=RPi-Bluetooth_Audio&amp;diff=471</id>
		<title>RPi-Bluetooth Audio</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=RPi-Bluetooth_Audio&amp;diff=471"/>
		<updated>2021-12-04T18:27:43Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ce guide à pour but d'installer comme sortie audio unique le Bluetooth en mode de ligne de commande.&lt;br /&gt;
&lt;br /&gt;
== Pré-requis ==&lt;br /&gt;
* Mise à jour du système Raspbian OS;&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get upgrade&lt;br /&gt;
 sudo apt-get autoremove&lt;br /&gt;
 sudo reboot&lt;br /&gt;
* Installation de PulseAudio;&lt;br /&gt;
 sudo apt-get install pulseaudio pulseaudio-module-bluetooth&lt;br /&gt;
 dpkg -l pulseaudio pulseaudio-module-bluetooth&lt;br /&gt;
* Désactivation de l'audio par défaut (HDMI/Jack);&lt;br /&gt;
** Ouvrez le fichier de configuration dans Nano;&amp;lt;pre&amp;gt;sudo nano /boot/config.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Il faut commenter (#) les lignes suivantes; &amp;lt;pre&amp;gt;dtparam=audio=on&amp;lt;/pre&amp;gt;&amp;lt;pre&amp;gt;hdmi_force_hotplug=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Exécutez le server PulseAudio;&amp;lt;pre&amp;gt;pulseaudio --start&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Active le module Bluetooth du Kernel &amp;lt;pre&amp;gt;sudo modprobe btusb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Ont prépare le Bluetooth à supporter l'audio&lt;br /&gt;
** Ouvrez le fichier dans l'éditeur; &amp;lt;pre&amp;gt;sudo nano /etc/bluetooth/main.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Ajouter dans &amp;quot;[General]&amp;quot; cette ligne; &amp;lt;pre&amp;gt;Enable=Source,Sink,Media,Socket&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Ajoute le service Bluetooth et l'active;&lt;br /&gt;
 sudo systemctl enable bluetooth&lt;br /&gt;
 sudo systemctl start bluetooth&lt;br /&gt;
* Ajouter vous dans le groupe &amp;quot;bluetooth&amp;quot; avec &amp;lt;pre&amp;gt;sudo usermod -a -G bluetooth pi&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Redémarrez avec &amp;lt;pre&amp;gt;sudo reboot&amp;lt;/pre&amp;gt;&lt;br /&gt;
* La détection initial de votre appareil Bluetooth compatible A2DP;&lt;br /&gt;
 bluetoothctl&lt;br /&gt;
* Une fois dans l'interface;&lt;br /&gt;
 power on&lt;br /&gt;
 agent on&lt;br /&gt;
 default-agent&lt;br /&gt;
 scan on&lt;br /&gt;
Attendez quelques instant, les informations des appareils Bluetooth vont tranquillement s'afficher, cherchez votre appareil et repérez l'adresse MAC sous la forme XX:XX:XX:XX:XX:XX.&lt;br /&gt;
 pair XX:XX:XX:XX:XX:XX&lt;br /&gt;
 trust XX:XX:XX:XX:XX:XX&lt;br /&gt;
 connect XX:XX:XX:XX:XX:XX&lt;br /&gt;
Sortez de l'interface Bluetooth avec;&lt;br /&gt;
 quit&lt;br /&gt;
* Trouvez le nom de votre profil avec&lt;br /&gt;
 pacmd list-cards&lt;br /&gt;
* Définissez le profile A2DP comme actif;&lt;br /&gt;
 pacmd set-card-profile bluez_card.xx_xx_xx_xx_xx_xx a2dp_sink&lt;br /&gt;
 pacmd set-default-sink bluez_sink.xx_xx_xx_xx_xx_xx.a2dp_sink&lt;br /&gt;
* Testez avec eSpeak;&lt;br /&gt;
 espeak &amp;quot;Hello World&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Activation du Bluetooth au démarrage ==&lt;br /&gt;
* Créez un script Bash pour simplifier vos commandes dans le dossier de Pi;&amp;lt;pre&amp;gt;nano /home/pi/btspkr.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Dans le document, vous allez inscrire les commandes suivantes; &lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/bash&lt;br /&gt;
echo &amp;quot;BTSPK Connection process&amp;quot;&lt;br /&gt;
echo &amp;quot;Restart Bluetooth&amp;quot;&lt;br /&gt;
sudo systemctl stop bluetooth&lt;br /&gt;
sudo systemctl start bluetooth&lt;br /&gt;
echo &amp;quot;Restart PulseAudio server&amp;quot;&lt;br /&gt;
pulseaudio -k&lt;br /&gt;
pulseaudio -D&lt;br /&gt;
echo &amp;quot;Reload Bluetooth PulseAudio policy&amp;quot;&lt;br /&gt;
pactl unload-module module-bluetooth-policy&lt;br /&gt;
pactl load-module module-bluetooth-policy&lt;br /&gt;
echo &amp;quot;Trying to connect the Bluetooth speaker&amp;quot;&lt;br /&gt;
while read x ; do sleep 2s ; echo $x ; done &amp;lt;&amp;lt;eof | bluetoothctl&lt;br /&gt;
power on&lt;br /&gt;
agent on&lt;br /&gt;
default-agent&lt;br /&gt;
connect XX:XX:XX:XX:XX:XX&lt;br /&gt;
quit&lt;br /&gt;
eof&lt;br /&gt;
echo &amp;quot;Done BTSPK Connection process&amp;quot;&lt;br /&gt;
startx -- -nocursor -quiet&amp;lt;/pre&amp;gt; &lt;br /&gt;
* Sauvegardez le fichier et rendez-le exécutable;&amp;lt;pre&amp;gt;chmod +x /home/pi/btspkr.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Correction de PulseAudio ===&lt;br /&gt;
* Pour corriger la désactivation en &amp;quot;idle&amp;quot;, ouvres &amp;lt;pre&amp;gt;sudo nano /etc/pulse/default.pa&amp;lt;/pre&amp;gt; et commenter la ligne &amp;lt;pre&amp;gt;load-module module-suspend-on-idle&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ''Ceci est l'une des méthodes utilisable pour effectuer la mise en route.'' ==== &lt;br /&gt;
''ATTENTION: Dans cette version du script &amp;quot;btspkr.sh&amp;quot;, la dernière ligne fait référence au démarrage de l'interface graphique (GUI). Ce GUI est celui pour un démarrage de Chromium en mode kiosk. Assurez-vous de remplacer cette ligne par la commande qui démarre votre GUI, si c'est le cas, par celle de votre système, ou de la retirer si vous n'avez pas de GUI. Il existe d'autres moyens de démarrer ce script, à vous de le faire marcher selon votre projet. Il doit cependant être exécuté APRÈS le chargement du système de base et du Hardware et ne dois pas être exécuté par le ROOT (ni via SUDO).''&lt;br /&gt;
* Ouvrez le fichier de lancement local de votre session &amp;quot;pi&amp;quot;;&amp;lt;pre&amp;gt;sudo nano /home/pi/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Remplacer ou ajouter à la fin du document;&amp;lt;pre&amp;gt;[[ -z $DISPLAY &amp;amp;&amp;amp; $XDG_VTNR -eq 1 ]] &amp;amp;&amp;amp; /home/pi/btspkr.sh&amp;lt;/pre&amp;gt; &lt;br /&gt;
* Sauvegardez le fichier modifié et redémarrez;&amp;lt;pre&amp;gt;sudo reboot&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=RPi-Bluetooth_Audio&amp;diff=470</id>
		<title>RPi-Bluetooth Audio</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=RPi-Bluetooth_Audio&amp;diff=470"/>
		<updated>2021-12-02T01:06:01Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ce guide à pour but d'installer comme sortie audio unique le Bluetooth en mode de ligne de commande.&lt;br /&gt;
&lt;br /&gt;
== Pré-requis ==&lt;br /&gt;
* Mise à jour du système Raspbian OS;&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get upgrade&lt;br /&gt;
 sudo apt-get autoremove&lt;br /&gt;
 sudo reboot&lt;br /&gt;
* Installation de PulseAudio;&lt;br /&gt;
 sudo apt-get install pulseaudio pulseaudio-module-bluetooth&lt;br /&gt;
 dpkg -l pulseaudio pulseaudio-module-bluetooth&lt;br /&gt;
* Désactivation de l'audio par défaut (HDMI/Jack);&lt;br /&gt;
** Ouvrez le fichier de configuration dans Nano;&amp;lt;pre&amp;gt;sudo nano /boot/config.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Il faut commenter (#) les lignes suivantes; &amp;lt;pre&amp;gt;dtparam=audio=on&amp;lt;/pre&amp;gt;&amp;lt;pre&amp;gt;hdmi_force_hotplug=1&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Exécutez le server PulseAudio;&amp;lt;pre&amp;gt;pulseaudio --start&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Active le module Bluetooth du Kernel &amp;lt;pre&amp;gt;sudo modprobe btusb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Ajoute le service Bluetooth et l'active;&lt;br /&gt;
 sudo systemctl enable bluetooth&lt;br /&gt;
 sudo systemctl start bluetooth&lt;br /&gt;
* Ajouter vous dans le groupe &amp;quot;bluetooth&amp;quot; avec &amp;lt;pre&amp;gt;sudo usermod -a -G bluetooth pi&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Redémarrez avec &amp;lt;pre&amp;gt;sudo reboot&amp;lt;/pre&amp;gt;&lt;br /&gt;
* La détection initial de votre appareil Bluetooth compatible A2DP;&lt;br /&gt;
 bluetoothctl&lt;br /&gt;
* Une fois dans l'interface;&lt;br /&gt;
 power on&lt;br /&gt;
 agent on&lt;br /&gt;
 default-agent&lt;br /&gt;
 scan on&lt;br /&gt;
Attendez quelques instant, les informations des appareils Bluetooth vont tranquillement s'afficher, cherchez votre appareil et repérez l'adresse MAC sous la forme XX:XX:XX:XX:XX:XX.&lt;br /&gt;
 pair XX:XX:XX:XX:XX:XX&lt;br /&gt;
 trust XX:XX:XX:XX:XX:XX&lt;br /&gt;
 connect XX:XX:XX:XX:XX:XX&lt;br /&gt;
Sortez de l'interface Bluetooth avec;&lt;br /&gt;
 quit&lt;br /&gt;
* Trouvez le nom de votre profil avec&lt;br /&gt;
 pacmd list-cards&lt;br /&gt;
* Définissez le profile A2DP comme actif;&lt;br /&gt;
 pacmd set-card-profile bluez_card.xx_xx_xx_xx_xx_xx a2dp_sink&lt;br /&gt;
 pacmd set-default-sink bluez_sink.xx_xx_xx_xx_xx_xx.a2dp_sink&lt;br /&gt;
* Testez avec eSpeak;&lt;br /&gt;
 espeak &amp;quot;Hello World&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Activation du Bluetooth au démarrage ==&lt;br /&gt;
* Créez un script Bash pour simplifier vos commandes dans le dossier de Pi;&amp;lt;pre&amp;gt;nano /home/pi/btspkr.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Dans le document, vous allez inscrire les commandes suivantes; &lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/bash&lt;br /&gt;
echo &amp;quot;BTSPK Connection process&amp;quot;&lt;br /&gt;
echo &amp;quot;Restart Bluetooth&amp;quot;&lt;br /&gt;
sudo systemctl stop bluetooth&lt;br /&gt;
sudo systemctl start bluetooth&lt;br /&gt;
echo &amp;quot;Restart PulseAudio server&amp;quot;&lt;br /&gt;
pulseaudio -k&lt;br /&gt;
pulseaudio -D&lt;br /&gt;
echo &amp;quot;Reload Bluetooth PulseAudio policy&amp;quot;&lt;br /&gt;
pactl unload-module module-bluetooth-policy&lt;br /&gt;
pactl load-module module-bluetooth-policy&lt;br /&gt;
echo &amp;quot;Trying to connect the Bluetooth speaker&amp;quot;&lt;br /&gt;
while read x ; do sleep 2s ; echo $x ; done &amp;lt;&amp;lt;eof | bluetoothctl&lt;br /&gt;
power on&lt;br /&gt;
agent on&lt;br /&gt;
default-agent&lt;br /&gt;
connect XX:XX:XX:XX:XX:XX&lt;br /&gt;
quit&lt;br /&gt;
eof&lt;br /&gt;
echo &amp;quot;Done BTSPK Connection process&amp;quot;&lt;br /&gt;
startx -- -nocursor -quiet&amp;lt;/pre&amp;gt; &lt;br /&gt;
* Sauvegardez le fichier et rendez-le exécutable;&amp;lt;pre&amp;gt;chmod +x /home/pi/btspkr.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Correction de PulseAudio ===&lt;br /&gt;
* Pour corriger la désactivation en &amp;quot;idle&amp;quot;, ouvres &amp;lt;pre&amp;gt;sudo nano /etc/pulse/default.pa&amp;lt;/pre&amp;gt; et commenter la ligne &amp;lt;pre&amp;gt;load-module module-suspend-on-idle&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ''Ceci est l'une des méthodes utilisable pour effectuer la mise en route.'' ==== &lt;br /&gt;
''ATTENTION: Dans cette version du script &amp;quot;btspkr.sh&amp;quot;, la dernière ligne fait référence au démarrage de l'interface graphique (GUI). Ce GUI est celui pour un démarrage de Chromium en mode kiosk. Assurez-vous de remplacer cette ligne par la commande qui démarre votre GUI, si c'est le cas, par celle de votre système, ou de la retirer si vous n'avez pas de GUI. Il existe d'autres moyens de démarrer ce script, à vous de le faire marcher selon votre projet. Il doit cependant être exécuté APRÈS le chargement du système de base et du Hardware et ne dois pas être exécuté par le ROOT (ni via SUDO).''&lt;br /&gt;
* Ouvrez le fichier de lancement local de votre session &amp;quot;pi&amp;quot;;&amp;lt;pre&amp;gt;sudo nano /home/pi/.profile&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Remplacer ou ajouter à la fin du document;&amp;lt;pre&amp;gt;[[ -z $DISPLAY &amp;amp;&amp;amp; $XDG_VTNR -eq 1 ]] &amp;amp;&amp;amp; /home/pi/btspkr.sh&amp;lt;/pre&amp;gt; &lt;br /&gt;
* Sauvegardez le fichier modifié et redémarrez;&amp;lt;pre&amp;gt;sudo reboot&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=RPi-piDeskboard&amp;diff=469</id>
		<title>RPi-piDeskboard</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=RPi-piDeskboard&amp;diff=469"/>
		<updated>2021-11-30T02:35:42Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : /* Note: Écran Raspberry Pi 3.5&amp;quot;, 5&amp;quot;, 7&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le '''piDeskboard''' est un petit ensemble de scripts PHP et python pour transformer un Raspberry PI en panneau d'affichage utile sur le bureau (ou ailleurs ou vous en avez besoin).&lt;br /&gt;
&lt;br /&gt;
L'ensemble des fichiers est constitué de scripts en PHP (maincore+ui), en Python (ui) et en Bash Script (cli)&lt;br /&gt;
&lt;br /&gt;
== Pré-requis ==&lt;br /&gt;
&lt;br /&gt;
* Raspbian OS Lite (décembre 2020 est une bonne version)&lt;br /&gt;
* Fichier système étendu (&amp;quot;first run&amp;quot; fait)&lt;br /&gt;
* Accès internet et Hostname configuré&lt;br /&gt;
* Accès SSH&lt;br /&gt;
&lt;br /&gt;
Toutes les actions doivent ce passer en mode SSH car le Pi sera transformé en panneau d'affichage, alors habituez-vous dès maintenant en y connectant que l'essentiel.&lt;br /&gt;
&lt;br /&gt;
== Installation Automatique ==&lt;br /&gt;
Vous pouvez installer depuis le script du package; &lt;br /&gt;
 wget https://raw.githubusercontent.com/levelKro/pideskboard/main/__install/install.sh&lt;br /&gt;
 chmod +x ./install.sh&lt;br /&gt;
 ./install.sh&lt;br /&gt;
&lt;br /&gt;
== Installation Manuelle ==&lt;br /&gt;
Suivez les étapes avec précautions &lt;br /&gt;
&lt;br /&gt;
=== Téléchargements de sources externes ===&lt;br /&gt;
 cd /home/pi&lt;br /&gt;
 wget https://raspberry-pi.fr/download/espeak/mbrola3.0.1h_armhf.deb -O mbrola.deb&lt;br /&gt;
 git clone --depth=1 https://gitlab.com/DarkElvenAngel/initramfs-splash.git&lt;br /&gt;
 git clone https://github.com/levelKro/pideskboard.git&lt;br /&gt;
&lt;br /&gt;
=== Copies des fichiers de piDeskboard ===&lt;br /&gt;
 sudo cp -r /home/pi/pideskboard/__install/_fonts /home/pi/.fonts&lt;br /&gt;
 sudo cp /home/pi/initramfs-splash/boot/initramfs.img /boot/initramfs.img&lt;br /&gt;
 sudo cp /home/pi/pideskboard/splash.png /boot/splash.png&lt;br /&gt;
 sudo cp /home/pi/pideskboard/__install/boot/splash.txt /boot/splash.txt&lt;br /&gt;
 sudo cp /home/pi/pideskboard/__install/systemd/piwebctrl.service /etc/systemd/system/piwebctrl.service&lt;br /&gt;
 sudo chmod +x /home/pi/pideskboard/sh/*.sh&lt;br /&gt;
 sudo systemctl enable piwebctrl&lt;br /&gt;
 cd /home/pi/pideskboard&lt;br /&gt;
 git remote add upstream https://github.com/levelKro/pideskboard.git&lt;br /&gt;
 git pull upstream main&lt;br /&gt;
&lt;br /&gt;
=== Configuration du piDeskboard ===&lt;br /&gt;
vous devez configurer les fichiers suivant et dans certains cas les renommer sans le &amp;quot;.dist&amp;quot; à la fin.&lt;br /&gt;
Vous pouvez le faire durant la prochaine étape des installation des packages.&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/config.php&amp;quot; (ne pas toucher)&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/db/mail.ini.dist&amp;quot;&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/db/weather.ini.dist&amp;quot; (require un code API de OpenWeather)&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/db/radio.ini&amp;quot;&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/config.ini&amp;quot; (toutes les configs)&lt;br /&gt;
&lt;br /&gt;
=== Installation des packages ===&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
 sudo apt install -y python3-dev python3-pip yasm wget git samba espeak&lt;br /&gt;
 sudo apt install -y php php-cli php-imap php-curl php-xml php-xmlrpc&lt;br /&gt;
 sudo apt install -y python3-gi python3-gi-cairo libgirepository1.0-dev gir1.2-gtk-3.0 python3-gst-1.0 gir1.2-gstreamer-1.0 gstreamer1.0-tools gstreamer1.0-gtk3 python3-opencv python3-numpy&lt;br /&gt;
 sudo apt install -y gir1.2-gst-plugins-base-1.0 gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly-amr vlc python3-vlc&lt;br /&gt;
 sudo apt-get install --no-install-recommends xserver-xorg x11-xserver-utils xinit openbox -y&lt;br /&gt;
 sudo dpkg -i mbrola.deb&lt;br /&gt;
 sudo apt install -y mbrola-fr*&lt;br /&gt;
 sudo pip3 install opencv-contrib-python numpy python-vlc psutil gpiozero&lt;br /&gt;
&lt;br /&gt;
=== Configuration du système ===&lt;br /&gt;
&lt;br /&gt;
====Samba : Partage des fichiers configurables ====&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /etc/samba/smb.conf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [home$]&lt;br /&gt;
   path = /home/pi&lt;br /&gt;
   guest ok = yes&lt;br /&gt;
   force user = pi&lt;br /&gt;
   force group = pi&lt;br /&gt;
   browseable = yes&lt;br /&gt;
   writable = yes&lt;br /&gt;
   read only = no&lt;br /&gt;
 [configs]&lt;br /&gt;
   path = /home/pi/pideskboard/configs&lt;br /&gt;
   guest ok = yes&lt;br /&gt;
   force user = pi&lt;br /&gt;
   force group = pi&lt;br /&gt;
   browseable = yes&lt;br /&gt;
   writable = yes&lt;br /&gt;
   read only = no&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
====X11 : Interface UI python et lancement des services ====&lt;br /&gt;
Lancement du piDeskboard local&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /home/pi/.profile &amp;lt;&amp;lt; EOF&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[[ -z $DISPLAY &amp;amp;&amp;amp; $XDG_VTNR -eq 1 ]]&amp;lt;/nowiki&amp;gt; &amp;amp;&amp;amp; /home/pi/pideskboard/sh/dm_start.sh&lt;br /&gt;
 EOF&lt;br /&gt;
Paramètres de lancement de X11&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /etc/xdg/openbox/autostart &amp;lt;&amp;lt; EOF&lt;br /&gt;
 xset s off&lt;br /&gt;
 xset s noblank&lt;br /&gt;
 xset -dpms&lt;br /&gt;
 setxkbmap -option terminate:ctrl_alt_bksp&lt;br /&gt;
 DISPLAY=:0 nohup /home/pi/pideskboard/sh/cli_deskboard.sh &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
====Le &amp;quot;config.txt&amp;quot;====&lt;br /&gt;
* Ouvrez le &amp;quot;config.txt&amp;quot; avec &amp;lt;pre&amp;gt;sudo nano /boot/config.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Ajouter en début de document &amp;lt;pre&amp;gt;initramfs initramfs.img&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Le &amp;quot;cmdline.txt&amp;quot;====&lt;br /&gt;
* Ouvrez le &amp;quot;cmdline.txt&amp;quot; avec &amp;lt;pre&amp;gt;sudo nano /boot/cmdline.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Ajouter/remplacer  en fin de ligne, après &amp;quot;rootwait&amp;quot; &amp;lt;pre&amp;gt; logo.nologo loglevel=0 splash silent quiet&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Avant de redémarré===&lt;br /&gt;
Vous devez configurer quelques paramètre dans le fichier &amp;quot;config.ini&amp;quot; de l'interface, qui récupère également les donnés affichés. Vous pouvez le faire via le partage Windows ou par ligne de commande.&lt;br /&gt;
====Par ligne de commande====&lt;br /&gt;
* Ouvrez l'éditeur sur le fichier avec cette commande; &amp;lt;pre&amp;gt;nano /home/pi/pideskboard/configs/config.ini&amp;lt;/pre&amp;gt; et éditer le.&lt;br /&gt;
&lt;br /&gt;
====Par partage Windows====&lt;br /&gt;
''Si ont vous demande un nom d'utilisateur et mot de passe, utilisez celui de votre Raspberry Pi.''&lt;br /&gt;
* Ouvrez l'explorateur Windows de votre ordinateur,&lt;br /&gt;
* Aller dans &amp;quot;Réseau&amp;quot; et attendez quelques instant, vous devriez voir le nom de votre appareil s'afficher, si vous n'avez pas changé le &amp;quot;hostname&amp;quot; de Raspbian par défaut, vous attendez de voir un &amp;quot;RASPBERRYPI&amp;quot;, sinon c'est le nom que vous lui avez donné.&lt;br /&gt;
* Ouvrez votre partage, et entrer également dans le dossier &amp;quot;configs&amp;quot;&lt;br /&gt;
* Ouvrez le fichier &amp;quot;config.ini&amp;quot; avec l'éditeur de texte de votre choix, si vous ne savez pas lequel, utiliser le Bloc-Note (Notepad).&lt;br /&gt;
&lt;br /&gt;
==Utilisation==&lt;br /&gt;
===Accès au partage===&lt;br /&gt;
Le Raspberry Pi sera totalement ouvert aux accès sans restriction, vous pouvez accéder via le partage de Windows à l'adresse &amp;lt;pre&amp;gt;\\&amp;lt;ip-ou-hostname-du-pi&amp;gt;\&amp;lt;/pre&amp;gt; et les deux partages suivants sont possibles;&lt;br /&gt;
* '''\Configs''' : Accessible par tous, il possède des fichiers pour configurer les données du piDeskboard&lt;br /&gt;
* '''\home$''' : (À entrer manuellement) Un partage caché, pour accéder facilement à tout les fichiers disponible dans &amp;quot;/home/pi&amp;quot; du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
===Lancement===&lt;br /&gt;
Une fois tout installé, lancer un redémarrage avec ; &amp;lt;pre&amp;gt;sudo reboot&amp;lt;/pre&amp;gt;. Si tous est correctement installé, vous devriez voir après quelques minutes l'interface.&lt;br /&gt;
&lt;br /&gt;
===Contrôle à distance===&lt;br /&gt;
Le piDeskboard vient avec le module piWebCtrl. vous pouvez y accéder via le &amp;lt;pre&amp;gt;http://&amp;lt;ip-du-pi&amp;gt;:9000/&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Utiliser ailleurs===&lt;br /&gt;
L'interface Web a été retiré pour gagner en performances. &lt;br /&gt;
&lt;br /&gt;
==Structures ==&lt;br /&gt;
Voici la structures des fichiers (principaux)&lt;br /&gt;
&lt;br /&gt;
* '''piDeskboard''' (dans /home/pi)&lt;br /&gt;
** '''sh''' : Scripts Bash&lt;br /&gt;
** '''py''' : Fichiers Python&lt;br /&gt;
*** '''ui''' : Interface principal local&lt;br /&gt;
*** '''ctrl''' : Dossiers di piWebCtrl&lt;br /&gt;
** '''php''' : Fichiers de collecte et traitement des données&lt;br /&gt;
*** '''sys''' : Fichiers système&lt;br /&gt;
** '''configs''' : Fichiers configurables&lt;br /&gt;
** '''__install''' : Fichiers à copier pour l'installation&lt;br /&gt;
&lt;br /&gt;
==Support==&lt;br /&gt;
===Quelques commandes à savoir===&lt;br /&gt;
Pour vous aider avec les commandes, vous pouvez créer un lien symbolique pour un lie facile; &amp;lt;pre&amp;gt;sudo ln -ds /home/pi/pideskboard /pidesk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Connexion du Bluetooth (à éditer également, voir guide sur utilisation du Bluetooth en CLI) &amp;lt;pre&amp;gt;/pidesk/sh/cli_bt.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si vous avez l'option de &amp;quot;pngview&amp;quot; de la suite &amp;quot;raspidmx&amp;quot; &amp;lt;pre&amp;gt;/pidesk/sh/cli_icon.sh &amp;lt;time in ms&amp;gt; &amp;lt;iconname&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Pour faire parler votre Raspberry, utilise eSpeak &amp;lt;pre&amp;gt;/pidesk/sh/cli_talk.sh &amp;lt;packlang&amp;gt; &amp;lt;text&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lancer l'application sur l'écran principal &amp;lt;pre&amp;gt;/pidesk/sh/cli_deskboard.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lancer le piWebCtrl &amp;lt;pre&amp;gt;/pidesk/sh/cli_webctrl.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Affiche une image d'attente (fullscreen) &amp;lt;pre&amp;gt;/pidesk/sh/cli_splash.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Vérifie si le script PHP CLI correspondant est lancé &amp;lt;pre&amp;gt;/pidesk/sh/cli_checkScript.sh &amp;lt;espeak|cron&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Vérifie si l'interface est active &amp;lt;pre&amp;gt;/pidesk/sh/cli_checkApp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si l'interface est active, il la tue et le redémarre à nouveau &amp;lt;pre&amp;gt;/pidesk/sh/cli_restartApp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Tuer l'interface &amp;lt;pre&amp;gt;/pidesk/sh/cli_killApp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si le piWebCtrl est actif, il le tue et le redémarre à nouveau &amp;lt;pre&amp;gt;/pidesk/sh/cli_restartCtrl.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Tuer piWebCtrl &amp;lt;pre&amp;gt;/pidesk/sh/cli_killCtrl.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Fermer le système avec &amp;lt;pre&amp;gt;/pidesk/sh/cli_poweroff.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Redémarrer le système avec &amp;lt;pre&amp;gt;/pidesk/sh/cli_reboot.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lance les moniteurs &amp;lt;pre&amp;gt;/pidesk/sh/dm_monitor.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lance le piDeskboard en autologin &amp;lt;pre&amp;gt;/pidesk/sh/dm_start.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modifier l'écran de démarrage ===&lt;br /&gt;
Consulter la page [[RPi-BootScreen]] pour les détails.&lt;br /&gt;
&lt;br /&gt;
=== Personnaliser le design ===&lt;br /&gt;
''à venir''&lt;br /&gt;
=== Problèmes connus ===&lt;br /&gt;
* L'installation n'a pas été testé un nombre de fois pour en assurer la fiabilité et la stabilité, merci de rapporter vos commentaires à ce sujet à levelkro@yahoo.ca.&lt;br /&gt;
* Pour les autres problèmes, référez-vous à https://github.com/levelKro/pideskboard/issues&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mise à jours ==&lt;br /&gt;
Pour actualiser les codes du PiDeskabord;&lt;br /&gt;
 cd /home/pi/pideskboard&lt;br /&gt;
 git pull upstream main&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
== Note: Écran Raspberry Pi 3.5&amp;quot;, 5&amp;quot;, 7&amp;quot; ==&lt;br /&gt;
Si vous utilisez un écran LCD spécial pour Raspberry Pi; qui ce connect via le GPIO ou autres, et qui fait partie de la librairie &amp;quot;LCD-show&amp;quot;, vous devez ABSOLUMENT appliquer ce correctif, sinon vous risquez d'avoir un erreur lors du démarrage du serveur X sous Raspbian Lite. Remplacer &amp;quot;&amp;lt;LCDXX-show&amp;gt;&amp;quot; par l'exécutable requis pour votre matériel, par exemple; LCD35-show, ou MHS35-show.&lt;br /&gt;
 sudo sed -i 's|sudo reboot|echo &amp;quot;...&amp;quot;|g' /home/pi/LCD-show/LCDXX-show&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /home/pi/LCD-show/LCDXX-show &amp;lt;&amp;lt; EOF&lt;br /&gt;
 sudo sed -i 's|fbturbo|fbdev|g' /usr/share/X11/xorg.conf.d/99-fbturbo.conf&lt;br /&gt;
 sudo mv /usr/share/X11/xorg.conf.d/99-fbturbo.conf /usr/share/X11/xorg.conf.d/99-fbdev.conf&lt;br /&gt;
 sudo reboot&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Programmation]]&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=RPi-piDeskboard&amp;diff=468</id>
		<title>RPi-piDeskboard</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=RPi-piDeskboard&amp;diff=468"/>
		<updated>2021-11-29T23:39:19Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : /* Installation des packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le '''piDeskboard''' est un petit ensemble de scripts PHP et python pour transformer un Raspberry PI en panneau d'affichage utile sur le bureau (ou ailleurs ou vous en avez besoin).&lt;br /&gt;
&lt;br /&gt;
L'ensemble des fichiers est constitué de scripts en PHP (maincore+ui), en Python (ui) et en Bash Script (cli)&lt;br /&gt;
&lt;br /&gt;
== Pré-requis ==&lt;br /&gt;
&lt;br /&gt;
* Raspbian OS Lite (décembre 2020 est une bonne version)&lt;br /&gt;
* Fichier système étendu (&amp;quot;first run&amp;quot; fait)&lt;br /&gt;
* Accès internet et Hostname configuré&lt;br /&gt;
* Accès SSH&lt;br /&gt;
&lt;br /&gt;
Toutes les actions doivent ce passer en mode SSH car le Pi sera transformé en panneau d'affichage, alors habituez-vous dès maintenant en y connectant que l'essentiel.&lt;br /&gt;
&lt;br /&gt;
== Installation Automatique ==&lt;br /&gt;
Vous pouvez installer depuis le script du package; &lt;br /&gt;
 wget https://raw.githubusercontent.com/levelKro/pideskboard/main/__install/install.sh&lt;br /&gt;
 chmod +x ./install.sh&lt;br /&gt;
 ./install.sh&lt;br /&gt;
&lt;br /&gt;
== Installation Manuelle ==&lt;br /&gt;
Suivez les étapes avec précautions &lt;br /&gt;
&lt;br /&gt;
=== Téléchargements de sources externes ===&lt;br /&gt;
 cd /home/pi&lt;br /&gt;
 wget https://raspberry-pi.fr/download/espeak/mbrola3.0.1h_armhf.deb -O mbrola.deb&lt;br /&gt;
 git clone --depth=1 https://gitlab.com/DarkElvenAngel/initramfs-splash.git&lt;br /&gt;
 git clone https://github.com/levelKro/pideskboard.git&lt;br /&gt;
&lt;br /&gt;
=== Copies des fichiers de piDeskboard ===&lt;br /&gt;
 sudo cp -r /home/pi/pideskboard/__install/_fonts /home/pi/.fonts&lt;br /&gt;
 sudo cp /home/pi/initramfs-splash/boot/initramfs.img /boot/initramfs.img&lt;br /&gt;
 sudo cp /home/pi/pideskboard/splash.png /boot/splash.png&lt;br /&gt;
 sudo cp /home/pi/pideskboard/__install/boot/splash.txt /boot/splash.txt&lt;br /&gt;
 sudo cp /home/pi/pideskboard/__install/systemd/piwebctrl.service /etc/systemd/system/piwebctrl.service&lt;br /&gt;
 sudo chmod +x /home/pi/pideskboard/sh/*.sh&lt;br /&gt;
 sudo systemctl enable piwebctrl&lt;br /&gt;
 cd /home/pi/pideskboard&lt;br /&gt;
 git remote add upstream https://github.com/levelKro/pideskboard.git&lt;br /&gt;
 git pull upstream main&lt;br /&gt;
&lt;br /&gt;
=== Configuration du piDeskboard ===&lt;br /&gt;
vous devez configurer les fichiers suivant et dans certains cas les renommer sans le &amp;quot;.dist&amp;quot; à la fin.&lt;br /&gt;
Vous pouvez le faire durant la prochaine étape des installation des packages.&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/config.php&amp;quot; (ne pas toucher)&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/db/mail.ini.dist&amp;quot;&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/db/weather.ini.dist&amp;quot; (require un code API de OpenWeather)&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/db/radio.ini&amp;quot;&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/config.ini&amp;quot; (toutes les configs)&lt;br /&gt;
&lt;br /&gt;
=== Installation des packages ===&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
 sudo apt install -y python3-dev python3-pip yasm wget git samba espeak&lt;br /&gt;
 sudo apt install -y php php-cli php-imap php-curl php-xml php-xmlrpc&lt;br /&gt;
 sudo apt install -y python3-gi python3-gi-cairo libgirepository1.0-dev gir1.2-gtk-3.0 python3-gst-1.0 gir1.2-gstreamer-1.0 gstreamer1.0-tools gstreamer1.0-gtk3 python3-opencv python3-numpy&lt;br /&gt;
 sudo apt install -y gir1.2-gst-plugins-base-1.0 gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly-amr vlc python3-vlc&lt;br /&gt;
 sudo apt-get install --no-install-recommends xserver-xorg x11-xserver-utils xinit openbox -y&lt;br /&gt;
 sudo dpkg -i mbrola.deb&lt;br /&gt;
 sudo apt install -y mbrola-fr*&lt;br /&gt;
 sudo pip3 install opencv-contrib-python numpy python-vlc psutil gpiozero&lt;br /&gt;
&lt;br /&gt;
=== Configuration du système ===&lt;br /&gt;
&lt;br /&gt;
====Samba : Partage des fichiers configurables ====&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /etc/samba/smb.conf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [home$]&lt;br /&gt;
   path = /home/pi&lt;br /&gt;
   guest ok = yes&lt;br /&gt;
   force user = pi&lt;br /&gt;
   force group = pi&lt;br /&gt;
   browseable = yes&lt;br /&gt;
   writable = yes&lt;br /&gt;
   read only = no&lt;br /&gt;
 [configs]&lt;br /&gt;
   path = /home/pi/pideskboard/configs&lt;br /&gt;
   guest ok = yes&lt;br /&gt;
   force user = pi&lt;br /&gt;
   force group = pi&lt;br /&gt;
   browseable = yes&lt;br /&gt;
   writable = yes&lt;br /&gt;
   read only = no&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
====X11 : Interface UI python et lancement des services ====&lt;br /&gt;
Lancement du piDeskboard local&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /home/pi/.profile &amp;lt;&amp;lt; EOF&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[[ -z $DISPLAY &amp;amp;&amp;amp; $XDG_VTNR -eq 1 ]]&amp;lt;/nowiki&amp;gt; &amp;amp;&amp;amp; /home/pi/pideskboard/sh/dm_start.sh&lt;br /&gt;
 EOF&lt;br /&gt;
Paramètres de lancement de X11&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /etc/xdg/openbox/autostart &amp;lt;&amp;lt; EOF&lt;br /&gt;
 xset s off&lt;br /&gt;
 xset s noblank&lt;br /&gt;
 xset -dpms&lt;br /&gt;
 setxkbmap -option terminate:ctrl_alt_bksp&lt;br /&gt;
 DISPLAY=:0 nohup /home/pi/pideskboard/sh/cli_deskboard.sh &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
====Le &amp;quot;config.txt&amp;quot;====&lt;br /&gt;
* Ouvrez le &amp;quot;config.txt&amp;quot; avec &amp;lt;pre&amp;gt;sudo nano /boot/config.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Ajouter en début de document &amp;lt;pre&amp;gt;initramfs initramfs.img&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Le &amp;quot;cmdline.txt&amp;quot;====&lt;br /&gt;
* Ouvrez le &amp;quot;cmdline.txt&amp;quot; avec &amp;lt;pre&amp;gt;sudo nano /boot/cmdline.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Ajouter/remplacer  en fin de ligne, après &amp;quot;rootwait&amp;quot; &amp;lt;pre&amp;gt; logo.nologo loglevel=0 splash silent quiet&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Avant de redémarré===&lt;br /&gt;
Vous devez configurer quelques paramètre dans le fichier &amp;quot;config.ini&amp;quot; de l'interface, qui récupère également les donnés affichés. Vous pouvez le faire via le partage Windows ou par ligne de commande.&lt;br /&gt;
====Par ligne de commande====&lt;br /&gt;
* Ouvrez l'éditeur sur le fichier avec cette commande; &amp;lt;pre&amp;gt;nano /home/pi/pideskboard/configs/config.ini&amp;lt;/pre&amp;gt; et éditer le.&lt;br /&gt;
&lt;br /&gt;
====Par partage Windows====&lt;br /&gt;
''Si ont vous demande un nom d'utilisateur et mot de passe, utilisez celui de votre Raspberry Pi.''&lt;br /&gt;
* Ouvrez l'explorateur Windows de votre ordinateur,&lt;br /&gt;
* Aller dans &amp;quot;Réseau&amp;quot; et attendez quelques instant, vous devriez voir le nom de votre appareil s'afficher, si vous n'avez pas changé le &amp;quot;hostname&amp;quot; de Raspbian par défaut, vous attendez de voir un &amp;quot;RASPBERRYPI&amp;quot;, sinon c'est le nom que vous lui avez donné.&lt;br /&gt;
* Ouvrez votre partage, et entrer également dans le dossier &amp;quot;configs&amp;quot;&lt;br /&gt;
* Ouvrez le fichier &amp;quot;config.ini&amp;quot; avec l'éditeur de texte de votre choix, si vous ne savez pas lequel, utiliser le Bloc-Note (Notepad).&lt;br /&gt;
&lt;br /&gt;
==Utilisation==&lt;br /&gt;
===Accès au partage===&lt;br /&gt;
Le Raspberry Pi sera totalement ouvert aux accès sans restriction, vous pouvez accéder via le partage de Windows à l'adresse &amp;lt;pre&amp;gt;\\&amp;lt;ip-ou-hostname-du-pi&amp;gt;\&amp;lt;/pre&amp;gt; et les deux partages suivants sont possibles;&lt;br /&gt;
* '''\Configs''' : Accessible par tous, il possède des fichiers pour configurer les données du piDeskboard&lt;br /&gt;
* '''\home$''' : (À entrer manuellement) Un partage caché, pour accéder facilement à tout les fichiers disponible dans &amp;quot;/home/pi&amp;quot; du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
===Lancement===&lt;br /&gt;
Une fois tout installé, lancer un redémarrage avec ; &amp;lt;pre&amp;gt;sudo reboot&amp;lt;/pre&amp;gt;. Si tous est correctement installé, vous devriez voir après quelques minutes l'interface.&lt;br /&gt;
&lt;br /&gt;
===Contrôle à distance===&lt;br /&gt;
Le piDeskboard vient avec le module piWebCtrl. vous pouvez y accéder via le &amp;lt;pre&amp;gt;http://&amp;lt;ip-du-pi&amp;gt;:9000/&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Utiliser ailleurs===&lt;br /&gt;
L'interface Web a été retiré pour gagner en performances. &lt;br /&gt;
&lt;br /&gt;
==Structures ==&lt;br /&gt;
Voici la structures des fichiers (principaux)&lt;br /&gt;
&lt;br /&gt;
* '''piDeskboard''' (dans /home/pi)&lt;br /&gt;
** '''sh''' : Scripts Bash&lt;br /&gt;
** '''py''' : Fichiers Python&lt;br /&gt;
*** '''ui''' : Interface principal local&lt;br /&gt;
*** '''ctrl''' : Dossiers di piWebCtrl&lt;br /&gt;
** '''php''' : Fichiers de collecte et traitement des données&lt;br /&gt;
*** '''sys''' : Fichiers système&lt;br /&gt;
** '''configs''' : Fichiers configurables&lt;br /&gt;
** '''__install''' : Fichiers à copier pour l'installation&lt;br /&gt;
&lt;br /&gt;
==Support==&lt;br /&gt;
===Quelques commandes à savoir===&lt;br /&gt;
Pour vous aider avec les commandes, vous pouvez créer un lien symbolique pour un lie facile; &amp;lt;pre&amp;gt;sudo ln -ds /home/pi/pideskboard /pidesk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Connexion du Bluetooth (à éditer également, voir guide sur utilisation du Bluetooth en CLI) &amp;lt;pre&amp;gt;/pidesk/sh/cli_bt.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si vous avez l'option de &amp;quot;pngview&amp;quot; de la suite &amp;quot;raspidmx&amp;quot; &amp;lt;pre&amp;gt;/pidesk/sh/cli_icon.sh &amp;lt;time in ms&amp;gt; &amp;lt;iconname&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Pour faire parler votre Raspberry, utilise eSpeak &amp;lt;pre&amp;gt;/pidesk/sh/cli_talk.sh &amp;lt;packlang&amp;gt; &amp;lt;text&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lancer l'application sur l'écran principal &amp;lt;pre&amp;gt;/pidesk/sh/cli_deskboard.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lancer le piWebCtrl &amp;lt;pre&amp;gt;/pidesk/sh/cli_webctrl.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Affiche une image d'attente (fullscreen) &amp;lt;pre&amp;gt;/pidesk/sh/cli_splash.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Vérifie si le script PHP CLI correspondant est lancé &amp;lt;pre&amp;gt;/pidesk/sh/cli_checkScript.sh &amp;lt;espeak|cron&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Vérifie si l'interface est active &amp;lt;pre&amp;gt;/pidesk/sh/cli_checkApp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si l'interface est active, il la tue et le redémarre à nouveau &amp;lt;pre&amp;gt;/pidesk/sh/cli_restartApp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Tuer l'interface &amp;lt;pre&amp;gt;/pidesk/sh/cli_killApp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si le piWebCtrl est actif, il le tue et le redémarre à nouveau &amp;lt;pre&amp;gt;/pidesk/sh/cli_restartCtrl.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Tuer piWebCtrl &amp;lt;pre&amp;gt;/pidesk/sh/cli_killCtrl.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Fermer le système avec &amp;lt;pre&amp;gt;/pidesk/sh/cli_poweroff.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Redémarrer le système avec &amp;lt;pre&amp;gt;/pidesk/sh/cli_reboot.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lance les moniteurs &amp;lt;pre&amp;gt;/pidesk/sh/dm_monitor.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lance le piDeskboard en autologin &amp;lt;pre&amp;gt;/pidesk/sh/dm_start.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modifier l'écran de démarrage ===&lt;br /&gt;
Consulter la page [[RPi-BootScreen]] pour les détails.&lt;br /&gt;
&lt;br /&gt;
=== Personnaliser le design ===&lt;br /&gt;
''à venir''&lt;br /&gt;
=== Problèmes connus ===&lt;br /&gt;
* L'installation n'a pas été testé un nombre de fois pour en assurer la fiabilité et la stabilité, merci de rapporter vos commentaires à ce sujet à levelkro@yahoo.ca.&lt;br /&gt;
* Pour les autres problèmes, référez-vous à https://github.com/levelKro/pideskboard/issues&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mise à jours ==&lt;br /&gt;
Pour actualiser les codes du PiDeskabord;&lt;br /&gt;
 cd /home/pi/pideskboard&lt;br /&gt;
 git pull upstream main&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
== Note: Écran Raspberry Pi 3.5&amp;quot;, 5&amp;quot;, 7&amp;quot; ==&lt;br /&gt;
Si vous utilisez un écran LCD spécial pour Raspberry Pi; qui ce connect via le GPIO ou autres, et qui fait partie de la librairie &amp;quot;LCD-show&amp;quot;, vous devez ABSOLUMENT appliquer ce correctif, sinon vous risquez d'avoir un erreur lors du démarrage du serveur X sous Raspbian Lite. Remplacer &amp;quot;&amp;lt;LCDXX-show&amp;gt;&amp;quot; par l'exécutable requis pour votre matériel, par exemple; LCD35-show, ou MHS35-show.&lt;br /&gt;
 sudo sed -i 's|sudo reboot|echo &amp;quot;... but wait, before, I need to add my how fix ...&amp;quot;|g' /home/pi/LCD-show/LCDXX-show&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /home/pi/LCD-show/LCDXX-show &amp;lt;&amp;lt; EOF&lt;br /&gt;
 sudo sed -i 's|fbturbo|fbdev|g' /usr/share/X11/xorg.conf.d/99-fbturbo.conf&lt;br /&gt;
 sudo mv /usr/share/X11/xorg.conf.d/99-fbturbo.conf /usr/share/X11/xorg.conf.d/99-fbdev.conf&lt;br /&gt;
 echo &amp;quot;... ok, all is fine, NOW you can reboot&amp;quot;&lt;br /&gt;
 sudo reboot&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Programmation]]&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=RPi-piDeskboard&amp;diff=467</id>
		<title>RPi-piDeskboard</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=RPi-piDeskboard&amp;diff=467"/>
		<updated>2021-11-29T23:33:13Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : /* Installation des packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le '''piDeskboard''' est un petit ensemble de scripts PHP et python pour transformer un Raspberry PI en panneau d'affichage utile sur le bureau (ou ailleurs ou vous en avez besoin).&lt;br /&gt;
&lt;br /&gt;
L'ensemble des fichiers est constitué de scripts en PHP (maincore+ui), en Python (ui) et en Bash Script (cli)&lt;br /&gt;
&lt;br /&gt;
== Pré-requis ==&lt;br /&gt;
&lt;br /&gt;
* Raspbian OS Lite (décembre 2020 est une bonne version)&lt;br /&gt;
* Fichier système étendu (&amp;quot;first run&amp;quot; fait)&lt;br /&gt;
* Accès internet et Hostname configuré&lt;br /&gt;
* Accès SSH&lt;br /&gt;
&lt;br /&gt;
Toutes les actions doivent ce passer en mode SSH car le Pi sera transformé en panneau d'affichage, alors habituez-vous dès maintenant en y connectant que l'essentiel.&lt;br /&gt;
&lt;br /&gt;
== Installation Automatique ==&lt;br /&gt;
Vous pouvez installer depuis le script du package; &lt;br /&gt;
 wget https://raw.githubusercontent.com/levelKro/pideskboard/main/__install/install.sh&lt;br /&gt;
 chmod +x ./install.sh&lt;br /&gt;
 ./install.sh&lt;br /&gt;
&lt;br /&gt;
== Installation Manuelle ==&lt;br /&gt;
Suivez les étapes avec précautions &lt;br /&gt;
&lt;br /&gt;
=== Téléchargements de sources externes ===&lt;br /&gt;
 cd /home/pi&lt;br /&gt;
 wget https://raspberry-pi.fr/download/espeak/mbrola3.0.1h_armhf.deb -O mbrola.deb&lt;br /&gt;
 git clone --depth=1 https://gitlab.com/DarkElvenAngel/initramfs-splash.git&lt;br /&gt;
 git clone https://github.com/levelKro/pideskboard.git&lt;br /&gt;
&lt;br /&gt;
=== Copies des fichiers de piDeskboard ===&lt;br /&gt;
 sudo cp -r /home/pi/pideskboard/__install/_fonts /home/pi/.fonts&lt;br /&gt;
 sudo cp /home/pi/initramfs-splash/boot/initramfs.img /boot/initramfs.img&lt;br /&gt;
 sudo cp /home/pi/pideskboard/splash.png /boot/splash.png&lt;br /&gt;
 sudo cp /home/pi/pideskboard/__install/boot/splash.txt /boot/splash.txt&lt;br /&gt;
 sudo cp /home/pi/pideskboard/__install/systemd/piwebctrl.service /etc/systemd/system/piwebctrl.service&lt;br /&gt;
 sudo chmod +x /home/pi/pideskboard/sh/*.sh&lt;br /&gt;
 sudo systemctl enable piwebctrl&lt;br /&gt;
 cd /home/pi/pideskboard&lt;br /&gt;
 git remote add upstream https://github.com/levelKro/pideskboard.git&lt;br /&gt;
 git pull upstream main&lt;br /&gt;
&lt;br /&gt;
=== Configuration du piDeskboard ===&lt;br /&gt;
vous devez configurer les fichiers suivant et dans certains cas les renommer sans le &amp;quot;.dist&amp;quot; à la fin.&lt;br /&gt;
Vous pouvez le faire durant la prochaine étape des installation des packages.&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/config.php&amp;quot; (ne pas toucher)&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/db/mail.ini.dist&amp;quot;&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/db/weather.ini.dist&amp;quot; (require un code API de OpenWeather)&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/db/radio.ini&amp;quot;&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/config.ini&amp;quot; (toutes les configs)&lt;br /&gt;
&lt;br /&gt;
=== Installation des packages ===&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
 sudo apt install -y python3-dev python3-pip yasm wget git samba espeak&lt;br /&gt;
 sudo apt install -y php php-cli php-imap php-curl php-xml php-xmlrpc&lt;br /&gt;
 sudo apt install -y python3-gi python3-gi-cairo libgirepository1.0-dev gir1.2-gtk-3.0 python3-gst-1.0 gir1.2-gstreamer-1.0 gstreamer1.0-tools gstreamer1.0-gtk3 python3-opencv python3-numpy&lt;br /&gt;
 sudo apt install -y gir1.2-gst-plugins-base-1.0 gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly-amr vlc python3-vlc&lt;br /&gt;
  sudo apt-get install --no-install-recommends xserver-xorg  xinit&lt;br /&gt;
 sudo dpkg -i mbrola.deb&lt;br /&gt;
 sudo apt install -y mbrola-fr*&lt;br /&gt;
 sudo pip3 install opencv-contrib-python numpy python-vlc psutil gpiozero&lt;br /&gt;
&lt;br /&gt;
=== Configuration du système ===&lt;br /&gt;
&lt;br /&gt;
====Samba : Partage des fichiers configurables ====&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /etc/samba/smb.conf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [home$]&lt;br /&gt;
   path = /home/pi&lt;br /&gt;
   guest ok = yes&lt;br /&gt;
   force user = pi&lt;br /&gt;
   force group = pi&lt;br /&gt;
   browseable = yes&lt;br /&gt;
   writable = yes&lt;br /&gt;
   read only = no&lt;br /&gt;
 [configs]&lt;br /&gt;
   path = /home/pi/pideskboard/configs&lt;br /&gt;
   guest ok = yes&lt;br /&gt;
   force user = pi&lt;br /&gt;
   force group = pi&lt;br /&gt;
   browseable = yes&lt;br /&gt;
   writable = yes&lt;br /&gt;
   read only = no&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
====X11 : Interface UI python et lancement des services ====&lt;br /&gt;
Lancement du piDeskboard local&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /home/pi/.profile &amp;lt;&amp;lt; EOF&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[[ -z $DISPLAY &amp;amp;&amp;amp; $XDG_VTNR -eq 1 ]]&amp;lt;/nowiki&amp;gt; &amp;amp;&amp;amp; /home/pi/pideskboard/sh/dm_start.sh&lt;br /&gt;
 EOF&lt;br /&gt;
Paramètres de lancement de X11&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /etc/xdg/openbox/autostart &amp;lt;&amp;lt; EOF&lt;br /&gt;
 xset s off&lt;br /&gt;
 xset s noblank&lt;br /&gt;
 xset -dpms&lt;br /&gt;
 setxkbmap -option terminate:ctrl_alt_bksp&lt;br /&gt;
 DISPLAY=:0 nohup /home/pi/pideskboard/sh/cli_deskboard.sh &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
====Le &amp;quot;config.txt&amp;quot;====&lt;br /&gt;
* Ouvrez le &amp;quot;config.txt&amp;quot; avec &amp;lt;pre&amp;gt;sudo nano /boot/config.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Ajouter en début de document &amp;lt;pre&amp;gt;initramfs initramfs.img&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Le &amp;quot;cmdline.txt&amp;quot;====&lt;br /&gt;
* Ouvrez le &amp;quot;cmdline.txt&amp;quot; avec &amp;lt;pre&amp;gt;sudo nano /boot/cmdline.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Ajouter/remplacer  en fin de ligne, après &amp;quot;rootwait&amp;quot; &amp;lt;pre&amp;gt; logo.nologo loglevel=0 splash silent quiet&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Avant de redémarré===&lt;br /&gt;
Vous devez configurer quelques paramètre dans le fichier &amp;quot;config.ini&amp;quot; de l'interface, qui récupère également les donnés affichés. Vous pouvez le faire via le partage Windows ou par ligne de commande.&lt;br /&gt;
====Par ligne de commande====&lt;br /&gt;
* Ouvrez l'éditeur sur le fichier avec cette commande; &amp;lt;pre&amp;gt;nano /home/pi/pideskboard/configs/config.ini&amp;lt;/pre&amp;gt; et éditer le.&lt;br /&gt;
&lt;br /&gt;
====Par partage Windows====&lt;br /&gt;
''Si ont vous demande un nom d'utilisateur et mot de passe, utilisez celui de votre Raspberry Pi.''&lt;br /&gt;
* Ouvrez l'explorateur Windows de votre ordinateur,&lt;br /&gt;
* Aller dans &amp;quot;Réseau&amp;quot; et attendez quelques instant, vous devriez voir le nom de votre appareil s'afficher, si vous n'avez pas changé le &amp;quot;hostname&amp;quot; de Raspbian par défaut, vous attendez de voir un &amp;quot;RASPBERRYPI&amp;quot;, sinon c'est le nom que vous lui avez donné.&lt;br /&gt;
* Ouvrez votre partage, et entrer également dans le dossier &amp;quot;configs&amp;quot;&lt;br /&gt;
* Ouvrez le fichier &amp;quot;config.ini&amp;quot; avec l'éditeur de texte de votre choix, si vous ne savez pas lequel, utiliser le Bloc-Note (Notepad).&lt;br /&gt;
&lt;br /&gt;
==Utilisation==&lt;br /&gt;
===Accès au partage===&lt;br /&gt;
Le Raspberry Pi sera totalement ouvert aux accès sans restriction, vous pouvez accéder via le partage de Windows à l'adresse &amp;lt;pre&amp;gt;\\&amp;lt;ip-ou-hostname-du-pi&amp;gt;\&amp;lt;/pre&amp;gt; et les deux partages suivants sont possibles;&lt;br /&gt;
* '''\Configs''' : Accessible par tous, il possède des fichiers pour configurer les données du piDeskboard&lt;br /&gt;
* '''\home$''' : (À entrer manuellement) Un partage caché, pour accéder facilement à tout les fichiers disponible dans &amp;quot;/home/pi&amp;quot; du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
===Lancement===&lt;br /&gt;
Une fois tout installé, lancer un redémarrage avec ; &amp;lt;pre&amp;gt;sudo reboot&amp;lt;/pre&amp;gt;. Si tous est correctement installé, vous devriez voir après quelques minutes l'interface.&lt;br /&gt;
&lt;br /&gt;
===Contrôle à distance===&lt;br /&gt;
Le piDeskboard vient avec le module piWebCtrl. vous pouvez y accéder via le &amp;lt;pre&amp;gt;http://&amp;lt;ip-du-pi&amp;gt;:9000/&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Utiliser ailleurs===&lt;br /&gt;
L'interface Web a été retiré pour gagner en performances. &lt;br /&gt;
&lt;br /&gt;
==Structures ==&lt;br /&gt;
Voici la structures des fichiers (principaux)&lt;br /&gt;
&lt;br /&gt;
* '''piDeskboard''' (dans /home/pi)&lt;br /&gt;
** '''sh''' : Scripts Bash&lt;br /&gt;
** '''py''' : Fichiers Python&lt;br /&gt;
*** '''ui''' : Interface principal local&lt;br /&gt;
*** '''ctrl''' : Dossiers di piWebCtrl&lt;br /&gt;
** '''php''' : Fichiers de collecte et traitement des données&lt;br /&gt;
*** '''sys''' : Fichiers système&lt;br /&gt;
** '''configs''' : Fichiers configurables&lt;br /&gt;
** '''__install''' : Fichiers à copier pour l'installation&lt;br /&gt;
&lt;br /&gt;
==Support==&lt;br /&gt;
===Quelques commandes à savoir===&lt;br /&gt;
Pour vous aider avec les commandes, vous pouvez créer un lien symbolique pour un lie facile; &amp;lt;pre&amp;gt;sudo ln -ds /home/pi/pideskboard /pidesk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Connexion du Bluetooth (à éditer également, voir guide sur utilisation du Bluetooth en CLI) &amp;lt;pre&amp;gt;/pidesk/sh/cli_bt.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si vous avez l'option de &amp;quot;pngview&amp;quot; de la suite &amp;quot;raspidmx&amp;quot; &amp;lt;pre&amp;gt;/pidesk/sh/cli_icon.sh &amp;lt;time in ms&amp;gt; &amp;lt;iconname&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Pour faire parler votre Raspberry, utilise eSpeak &amp;lt;pre&amp;gt;/pidesk/sh/cli_talk.sh &amp;lt;packlang&amp;gt; &amp;lt;text&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lancer l'application sur l'écran principal &amp;lt;pre&amp;gt;/pidesk/sh/cli_deskboard.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lancer le piWebCtrl &amp;lt;pre&amp;gt;/pidesk/sh/cli_webctrl.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Affiche une image d'attente (fullscreen) &amp;lt;pre&amp;gt;/pidesk/sh/cli_splash.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Vérifie si le script PHP CLI correspondant est lancé &amp;lt;pre&amp;gt;/pidesk/sh/cli_checkScript.sh &amp;lt;espeak|cron&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Vérifie si l'interface est active &amp;lt;pre&amp;gt;/pidesk/sh/cli_checkApp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si l'interface est active, il la tue et le redémarre à nouveau &amp;lt;pre&amp;gt;/pidesk/sh/cli_restartApp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Tuer l'interface &amp;lt;pre&amp;gt;/pidesk/sh/cli_killApp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si le piWebCtrl est actif, il le tue et le redémarre à nouveau &amp;lt;pre&amp;gt;/pidesk/sh/cli_restartCtrl.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Tuer piWebCtrl &amp;lt;pre&amp;gt;/pidesk/sh/cli_killCtrl.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Fermer le système avec &amp;lt;pre&amp;gt;/pidesk/sh/cli_poweroff.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Redémarrer le système avec &amp;lt;pre&amp;gt;/pidesk/sh/cli_reboot.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lance les moniteurs &amp;lt;pre&amp;gt;/pidesk/sh/dm_monitor.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lance le piDeskboard en autologin &amp;lt;pre&amp;gt;/pidesk/sh/dm_start.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modifier l'écran de démarrage ===&lt;br /&gt;
Consulter la page [[RPi-BootScreen]] pour les détails.&lt;br /&gt;
&lt;br /&gt;
=== Personnaliser le design ===&lt;br /&gt;
''à venir''&lt;br /&gt;
=== Problèmes connus ===&lt;br /&gt;
* L'installation n'a pas été testé un nombre de fois pour en assurer la fiabilité et la stabilité, merci de rapporter vos commentaires à ce sujet à levelkro@yahoo.ca.&lt;br /&gt;
* Pour les autres problèmes, référez-vous à https://github.com/levelKro/pideskboard/issues&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mise à jours ==&lt;br /&gt;
Pour actualiser les codes du PiDeskabord;&lt;br /&gt;
 cd /home/pi/pideskboard&lt;br /&gt;
 git pull upstream main&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
== Note: Écran Raspberry Pi 3.5&amp;quot;, 5&amp;quot;, 7&amp;quot; ==&lt;br /&gt;
Si vous utilisez un écran LCD spécial pour Raspberry Pi; qui ce connect via le GPIO ou autres, et qui fait partie de la librairie &amp;quot;LCD-show&amp;quot;, vous devez ABSOLUMENT appliquer ce correctif, sinon vous risquez d'avoir un erreur lors du démarrage du serveur X sous Raspbian Lite. Remplacer &amp;quot;&amp;lt;LCDXX-show&amp;gt;&amp;quot; par l'exécutable requis pour votre matériel, par exemple; LCD35-show, ou MHS35-show.&lt;br /&gt;
 sudo sed -i 's|sudo reboot|echo &amp;quot;... but wait, before, I need to add my how fix ...&amp;quot;|g' /home/pi/LCD-show/LCDXX-show&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /home/pi/LCD-show/LCDXX-show &amp;lt;&amp;lt; EOF&lt;br /&gt;
 sudo sed -i 's|fbturbo|fbdev|g' /usr/share/X11/xorg.conf.d/99-fbturbo.conf&lt;br /&gt;
 sudo mv /usr/share/X11/xorg.conf.d/99-fbturbo.conf /usr/share/X11/xorg.conf.d/99-fbdev.conf&lt;br /&gt;
 echo &amp;quot;... ok, all is fine, NOW you can reboot&amp;quot;&lt;br /&gt;
 sudo reboot&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Programmation]]&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=RPi-piDeskboard&amp;diff=466</id>
		<title>RPi-piDeskboard</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=RPi-piDeskboard&amp;diff=466"/>
		<updated>2021-11-29T22:28:40Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : /* Copies des fichiers de piDeskboard */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le '''piDeskboard''' est un petit ensemble de scripts PHP et python pour transformer un Raspberry PI en panneau d'affichage utile sur le bureau (ou ailleurs ou vous en avez besoin).&lt;br /&gt;
&lt;br /&gt;
L'ensemble des fichiers est constitué de scripts en PHP (maincore+ui), en Python (ui) et en Bash Script (cli)&lt;br /&gt;
&lt;br /&gt;
== Pré-requis ==&lt;br /&gt;
&lt;br /&gt;
* Raspbian OS Lite (décembre 2020 est une bonne version)&lt;br /&gt;
* Fichier système étendu (&amp;quot;first run&amp;quot; fait)&lt;br /&gt;
* Accès internet et Hostname configuré&lt;br /&gt;
* Accès SSH&lt;br /&gt;
&lt;br /&gt;
Toutes les actions doivent ce passer en mode SSH car le Pi sera transformé en panneau d'affichage, alors habituez-vous dès maintenant en y connectant que l'essentiel.&lt;br /&gt;
&lt;br /&gt;
== Installation Automatique ==&lt;br /&gt;
Vous pouvez installer depuis le script du package; &lt;br /&gt;
 wget https://raw.githubusercontent.com/levelKro/pideskboard/main/__install/install.sh&lt;br /&gt;
 chmod +x ./install.sh&lt;br /&gt;
 ./install.sh&lt;br /&gt;
&lt;br /&gt;
== Installation Manuelle ==&lt;br /&gt;
Suivez les étapes avec précautions &lt;br /&gt;
&lt;br /&gt;
=== Téléchargements de sources externes ===&lt;br /&gt;
 cd /home/pi&lt;br /&gt;
 wget https://raspberry-pi.fr/download/espeak/mbrola3.0.1h_armhf.deb -O mbrola.deb&lt;br /&gt;
 git clone --depth=1 https://gitlab.com/DarkElvenAngel/initramfs-splash.git&lt;br /&gt;
 git clone https://github.com/levelKro/pideskboard.git&lt;br /&gt;
&lt;br /&gt;
=== Copies des fichiers de piDeskboard ===&lt;br /&gt;
 sudo cp -r /home/pi/pideskboard/__install/_fonts /home/pi/.fonts&lt;br /&gt;
 sudo cp /home/pi/initramfs-splash/boot/initramfs.img /boot/initramfs.img&lt;br /&gt;
 sudo cp /home/pi/pideskboard/splash.png /boot/splash.png&lt;br /&gt;
 sudo cp /home/pi/pideskboard/__install/boot/splash.txt /boot/splash.txt&lt;br /&gt;
 sudo cp /home/pi/pideskboard/__install/systemd/piwebctrl.service /etc/systemd/system/piwebctrl.service&lt;br /&gt;
 sudo chmod +x /home/pi/pideskboard/sh/*.sh&lt;br /&gt;
 sudo systemctl enable piwebctrl&lt;br /&gt;
 cd /home/pi/pideskboard&lt;br /&gt;
 git remote add upstream https://github.com/levelKro/pideskboard.git&lt;br /&gt;
 git pull upstream main&lt;br /&gt;
&lt;br /&gt;
=== Configuration du piDeskboard ===&lt;br /&gt;
vous devez configurer les fichiers suivant et dans certains cas les renommer sans le &amp;quot;.dist&amp;quot; à la fin.&lt;br /&gt;
Vous pouvez le faire durant la prochaine étape des installation des packages.&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/config.php&amp;quot; (ne pas toucher)&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/db/mail.ini.dist&amp;quot;&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/db/weather.ini.dist&amp;quot; (require un code API de OpenWeather)&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/db/radio.ini&amp;quot;&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/config.ini&amp;quot; (toutes les configs)&lt;br /&gt;
&lt;br /&gt;
=== Installation des packages ===&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
 sudo apt install -y python3-dev python3-pip yasm wget git samba espeak&lt;br /&gt;
 sudo apt install -y php php-cli php-imap php-curl php-xml php-xmlrpc&lt;br /&gt;
 sudo apt install -y python3-gi python3-gi-cairo libgirepository1.0-dev gir1.2-gtk-3.0 python3-gst-1.0 gir1.2-gstreamer-1.0 gstreamer1.0-tools gstreamer1.0-gtk3 python3-opencv python3-numpy&lt;br /&gt;
 sudo apt install -y gir1.2-gst-plugins-base-1.0 gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly-amr vlc python3-vlc&lt;br /&gt;
 sudo dpkg -i mbrola.deb&lt;br /&gt;
 sudo apt install -y mbrola-fr*&lt;br /&gt;
 sudo pip3 install opencv-contrib-python numpy python-vlc psutil gpiozero&lt;br /&gt;
&lt;br /&gt;
=== Configuration du système ===&lt;br /&gt;
&lt;br /&gt;
====Samba : Partage des fichiers configurables ====&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /etc/samba/smb.conf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [home$]&lt;br /&gt;
   path = /home/pi&lt;br /&gt;
   guest ok = yes&lt;br /&gt;
   force user = pi&lt;br /&gt;
   force group = pi&lt;br /&gt;
   browseable = yes&lt;br /&gt;
   writable = yes&lt;br /&gt;
   read only = no&lt;br /&gt;
 [configs]&lt;br /&gt;
   path = /home/pi/pideskboard/configs&lt;br /&gt;
   guest ok = yes&lt;br /&gt;
   force user = pi&lt;br /&gt;
   force group = pi&lt;br /&gt;
   browseable = yes&lt;br /&gt;
   writable = yes&lt;br /&gt;
   read only = no&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
====X11 : Interface UI python et lancement des services ====&lt;br /&gt;
Lancement du piDeskboard local&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /home/pi/.profile &amp;lt;&amp;lt; EOF&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[[ -z $DISPLAY &amp;amp;&amp;amp; $XDG_VTNR -eq 1 ]]&amp;lt;/nowiki&amp;gt; &amp;amp;&amp;amp; /home/pi/pideskboard/sh/dm_start.sh&lt;br /&gt;
 EOF&lt;br /&gt;
Paramètres de lancement de X11&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /etc/xdg/openbox/autostart &amp;lt;&amp;lt; EOF&lt;br /&gt;
 xset s off&lt;br /&gt;
 xset s noblank&lt;br /&gt;
 xset -dpms&lt;br /&gt;
 setxkbmap -option terminate:ctrl_alt_bksp&lt;br /&gt;
 DISPLAY=:0 nohup /home/pi/pideskboard/sh/cli_deskboard.sh &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
====Le &amp;quot;config.txt&amp;quot;====&lt;br /&gt;
* Ouvrez le &amp;quot;config.txt&amp;quot; avec &amp;lt;pre&amp;gt;sudo nano /boot/config.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Ajouter en début de document &amp;lt;pre&amp;gt;initramfs initramfs.img&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Le &amp;quot;cmdline.txt&amp;quot;====&lt;br /&gt;
* Ouvrez le &amp;quot;cmdline.txt&amp;quot; avec &amp;lt;pre&amp;gt;sudo nano /boot/cmdline.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Ajouter/remplacer  en fin de ligne, après &amp;quot;rootwait&amp;quot; &amp;lt;pre&amp;gt; logo.nologo loglevel=0 splash silent quiet&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Avant de redémarré===&lt;br /&gt;
Vous devez configurer quelques paramètre dans le fichier &amp;quot;config.ini&amp;quot; de l'interface, qui récupère également les donnés affichés. Vous pouvez le faire via le partage Windows ou par ligne de commande.&lt;br /&gt;
====Par ligne de commande====&lt;br /&gt;
* Ouvrez l'éditeur sur le fichier avec cette commande; &amp;lt;pre&amp;gt;nano /home/pi/pideskboard/configs/config.ini&amp;lt;/pre&amp;gt; et éditer le.&lt;br /&gt;
&lt;br /&gt;
====Par partage Windows====&lt;br /&gt;
''Si ont vous demande un nom d'utilisateur et mot de passe, utilisez celui de votre Raspberry Pi.''&lt;br /&gt;
* Ouvrez l'explorateur Windows de votre ordinateur,&lt;br /&gt;
* Aller dans &amp;quot;Réseau&amp;quot; et attendez quelques instant, vous devriez voir le nom de votre appareil s'afficher, si vous n'avez pas changé le &amp;quot;hostname&amp;quot; de Raspbian par défaut, vous attendez de voir un &amp;quot;RASPBERRYPI&amp;quot;, sinon c'est le nom que vous lui avez donné.&lt;br /&gt;
* Ouvrez votre partage, et entrer également dans le dossier &amp;quot;configs&amp;quot;&lt;br /&gt;
* Ouvrez le fichier &amp;quot;config.ini&amp;quot; avec l'éditeur de texte de votre choix, si vous ne savez pas lequel, utiliser le Bloc-Note (Notepad).&lt;br /&gt;
&lt;br /&gt;
==Utilisation==&lt;br /&gt;
===Accès au partage===&lt;br /&gt;
Le Raspberry Pi sera totalement ouvert aux accès sans restriction, vous pouvez accéder via le partage de Windows à l'adresse &amp;lt;pre&amp;gt;\\&amp;lt;ip-ou-hostname-du-pi&amp;gt;\&amp;lt;/pre&amp;gt; et les deux partages suivants sont possibles;&lt;br /&gt;
* '''\Configs''' : Accessible par tous, il possède des fichiers pour configurer les données du piDeskboard&lt;br /&gt;
* '''\home$''' : (À entrer manuellement) Un partage caché, pour accéder facilement à tout les fichiers disponible dans &amp;quot;/home/pi&amp;quot; du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
===Lancement===&lt;br /&gt;
Une fois tout installé, lancer un redémarrage avec ; &amp;lt;pre&amp;gt;sudo reboot&amp;lt;/pre&amp;gt;. Si tous est correctement installé, vous devriez voir après quelques minutes l'interface.&lt;br /&gt;
&lt;br /&gt;
===Contrôle à distance===&lt;br /&gt;
Le piDeskboard vient avec le module piWebCtrl. vous pouvez y accéder via le &amp;lt;pre&amp;gt;http://&amp;lt;ip-du-pi&amp;gt;:9000/&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Utiliser ailleurs===&lt;br /&gt;
L'interface Web a été retiré pour gagner en performances. &lt;br /&gt;
&lt;br /&gt;
==Structures ==&lt;br /&gt;
Voici la structures des fichiers (principaux)&lt;br /&gt;
&lt;br /&gt;
* '''piDeskboard''' (dans /home/pi)&lt;br /&gt;
** '''sh''' : Scripts Bash&lt;br /&gt;
** '''py''' : Fichiers Python&lt;br /&gt;
*** '''ui''' : Interface principal local&lt;br /&gt;
*** '''ctrl''' : Dossiers di piWebCtrl&lt;br /&gt;
** '''php''' : Fichiers de collecte et traitement des données&lt;br /&gt;
*** '''sys''' : Fichiers système&lt;br /&gt;
** '''configs''' : Fichiers configurables&lt;br /&gt;
** '''__install''' : Fichiers à copier pour l'installation&lt;br /&gt;
&lt;br /&gt;
==Support==&lt;br /&gt;
===Quelques commandes à savoir===&lt;br /&gt;
Pour vous aider avec les commandes, vous pouvez créer un lien symbolique pour un lie facile; &amp;lt;pre&amp;gt;sudo ln -ds /home/pi/pideskboard /pidesk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Connexion du Bluetooth (à éditer également, voir guide sur utilisation du Bluetooth en CLI) &amp;lt;pre&amp;gt;/pidesk/sh/cli_bt.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si vous avez l'option de &amp;quot;pngview&amp;quot; de la suite &amp;quot;raspidmx&amp;quot; &amp;lt;pre&amp;gt;/pidesk/sh/cli_icon.sh &amp;lt;time in ms&amp;gt; &amp;lt;iconname&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Pour faire parler votre Raspberry, utilise eSpeak &amp;lt;pre&amp;gt;/pidesk/sh/cli_talk.sh &amp;lt;packlang&amp;gt; &amp;lt;text&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lancer l'application sur l'écran principal &amp;lt;pre&amp;gt;/pidesk/sh/cli_deskboard.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lancer le piWebCtrl &amp;lt;pre&amp;gt;/pidesk/sh/cli_webctrl.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Affiche une image d'attente (fullscreen) &amp;lt;pre&amp;gt;/pidesk/sh/cli_splash.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Vérifie si le script PHP CLI correspondant est lancé &amp;lt;pre&amp;gt;/pidesk/sh/cli_checkScript.sh &amp;lt;espeak|cron&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Vérifie si l'interface est active &amp;lt;pre&amp;gt;/pidesk/sh/cli_checkApp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si l'interface est active, il la tue et le redémarre à nouveau &amp;lt;pre&amp;gt;/pidesk/sh/cli_restartApp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Tuer l'interface &amp;lt;pre&amp;gt;/pidesk/sh/cli_killApp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si le piWebCtrl est actif, il le tue et le redémarre à nouveau &amp;lt;pre&amp;gt;/pidesk/sh/cli_restartCtrl.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Tuer piWebCtrl &amp;lt;pre&amp;gt;/pidesk/sh/cli_killCtrl.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Fermer le système avec &amp;lt;pre&amp;gt;/pidesk/sh/cli_poweroff.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Redémarrer le système avec &amp;lt;pre&amp;gt;/pidesk/sh/cli_reboot.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lance les moniteurs &amp;lt;pre&amp;gt;/pidesk/sh/dm_monitor.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lance le piDeskboard en autologin &amp;lt;pre&amp;gt;/pidesk/sh/dm_start.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modifier l'écran de démarrage ===&lt;br /&gt;
Consulter la page [[RPi-BootScreen]] pour les détails.&lt;br /&gt;
&lt;br /&gt;
=== Personnaliser le design ===&lt;br /&gt;
''à venir''&lt;br /&gt;
=== Problèmes connus ===&lt;br /&gt;
* L'installation n'a pas été testé un nombre de fois pour en assurer la fiabilité et la stabilité, merci de rapporter vos commentaires à ce sujet à levelkro@yahoo.ca.&lt;br /&gt;
* Pour les autres problèmes, référez-vous à https://github.com/levelKro/pideskboard/issues&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mise à jours ==&lt;br /&gt;
Pour actualiser les codes du PiDeskabord;&lt;br /&gt;
 cd /home/pi/pideskboard&lt;br /&gt;
 git pull upstream main&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
== Note: Écran Raspberry Pi 3.5&amp;quot;, 5&amp;quot;, 7&amp;quot; ==&lt;br /&gt;
Si vous utilisez un écran LCD spécial pour Raspberry Pi; qui ce connect via le GPIO ou autres, et qui fait partie de la librairie &amp;quot;LCD-show&amp;quot;, vous devez ABSOLUMENT appliquer ce correctif, sinon vous risquez d'avoir un erreur lors du démarrage du serveur X sous Raspbian Lite. Remplacer &amp;quot;&amp;lt;LCDXX-show&amp;gt;&amp;quot; par l'exécutable requis pour votre matériel, par exemple; LCD35-show, ou MHS35-show.&lt;br /&gt;
 sudo sed -i 's|sudo reboot|echo &amp;quot;... but wait, before, I need to add my how fix ...&amp;quot;|g' /home/pi/LCD-show/LCDXX-show&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /home/pi/LCD-show/LCDXX-show &amp;lt;&amp;lt; EOF&lt;br /&gt;
 sudo sed -i 's|fbturbo|fbdev|g' /usr/share/X11/xorg.conf.d/99-fbturbo.conf&lt;br /&gt;
 sudo mv /usr/share/X11/xorg.conf.d/99-fbturbo.conf /usr/share/X11/xorg.conf.d/99-fbdev.conf&lt;br /&gt;
 echo &amp;quot;... ok, all is fine, NOW you can reboot&amp;quot;&lt;br /&gt;
 sudo reboot&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Programmation]]&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=RPi-piDeskboard&amp;diff=465</id>
		<title>RPi-piDeskboard</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=RPi-piDeskboard&amp;diff=465"/>
		<updated>2021-11-29T03:58:10Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le '''piDeskboard''' est un petit ensemble de scripts PHP et python pour transformer un Raspberry PI en panneau d'affichage utile sur le bureau (ou ailleurs ou vous en avez besoin).&lt;br /&gt;
&lt;br /&gt;
L'ensemble des fichiers est constitué de scripts en PHP (maincore+ui), en Python (ui) et en Bash Script (cli)&lt;br /&gt;
&lt;br /&gt;
== Pré-requis ==&lt;br /&gt;
&lt;br /&gt;
* Raspbian OS Lite (décembre 2020 est une bonne version)&lt;br /&gt;
* Fichier système étendu (&amp;quot;first run&amp;quot; fait)&lt;br /&gt;
* Accès internet et Hostname configuré&lt;br /&gt;
* Accès SSH&lt;br /&gt;
&lt;br /&gt;
Toutes les actions doivent ce passer en mode SSH car le Pi sera transformé en panneau d'affichage, alors habituez-vous dès maintenant en y connectant que l'essentiel.&lt;br /&gt;
&lt;br /&gt;
== Installation Automatique ==&lt;br /&gt;
Vous pouvez installer depuis le script du package; &lt;br /&gt;
 wget https://raw.githubusercontent.com/levelKro/pideskboard/main/__install/install.sh&lt;br /&gt;
 chmod +x ./install.sh&lt;br /&gt;
 ./install.sh&lt;br /&gt;
&lt;br /&gt;
== Installation Manuelle ==&lt;br /&gt;
Suivez les étapes avec précautions &lt;br /&gt;
&lt;br /&gt;
=== Téléchargements de sources externes ===&lt;br /&gt;
 cd /home/pi&lt;br /&gt;
 wget https://raspberry-pi.fr/download/espeak/mbrola3.0.1h_armhf.deb -O mbrola.deb&lt;br /&gt;
 git clone --depth=1 https://gitlab.com/DarkElvenAngel/initramfs-splash.git&lt;br /&gt;
 git clone https://github.com/levelKro/pideskboard.git&lt;br /&gt;
&lt;br /&gt;
=== Copies des fichiers de piDeskboard ===&lt;br /&gt;
 sudo cp /home/pi/pideskboard/__install/home/_fonts /home/pi/.fonts&lt;br /&gt;
 sudo cp /home/pi/initramfs-splash/boot/initramfs.img /boot/initramfs.img&lt;br /&gt;
 sudo cp /home/pi/pideskboard/splash.png /boot/splash.png&lt;br /&gt;
 sudo cp /home/pi/pideskboard/__install/boot/splash.txt /boot/splash.txt&lt;br /&gt;
 sudo cp /home/pi/pideskboard/__install/systemd/piwebctrl.service /etc/systemd/system/piwebctrl.service&lt;br /&gt;
 sudo chmod +x /home/pi/pideskboard/sh/*.sh&lt;br /&gt;
 sudo systemctl enable piwebctrl&lt;br /&gt;
 cd /home/pi/pideskboard&lt;br /&gt;
 git remote add upstream https://github.com/levelKro/pideskboard.git&lt;br /&gt;
 git pull upstream main&lt;br /&gt;
&lt;br /&gt;
=== Configuration du piDeskboard ===&lt;br /&gt;
vous devez configurer les fichiers suivant et dans certains cas les renommer sans le &amp;quot;.dist&amp;quot; à la fin.&lt;br /&gt;
Vous pouvez le faire durant la prochaine étape des installation des packages.&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/config.php&amp;quot; (ne pas toucher)&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/db/mail.ini.dist&amp;quot;&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/db/weather.ini.dist&amp;quot; (require un code API de OpenWeather)&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/db/radio.ini&amp;quot;&lt;br /&gt;
* &amp;quot;/home/pi/pideskboard/configs/config.ini&amp;quot; (toutes les configs)&lt;br /&gt;
&lt;br /&gt;
=== Installation des packages ===&lt;br /&gt;
 sudo apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;br /&gt;
 sudo apt install -y python3-dev python3-pip yasm wget git samba espeak&lt;br /&gt;
 sudo apt install -y php php-cli php-imap php-curl php-xml php-xmlrpc&lt;br /&gt;
 sudo apt install -y python3-gi python3-gi-cairo libgirepository1.0-dev gir1.2-gtk-3.0 python3-gst-1.0 gir1.2-gstreamer-1.0 gstreamer1.0-tools gstreamer1.0-gtk3 python3-opencv python3-numpy&lt;br /&gt;
 sudo apt install -y gir1.2-gst-plugins-base-1.0 gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly-amr vlc python3-vlc&lt;br /&gt;
 sudo dpkg -i mbrola.deb&lt;br /&gt;
 sudo apt install -y mbrola-fr*&lt;br /&gt;
 sudo pip3 install opencv-contrib-python numpy python-vlc psutil gpiozero&lt;br /&gt;
&lt;br /&gt;
=== Configuration du système ===&lt;br /&gt;
&lt;br /&gt;
====Samba : Partage des fichiers configurables ====&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /etc/samba/smb.conf &amp;lt;&amp;lt; EOF&lt;br /&gt;
 [home$]&lt;br /&gt;
   path = /home/pi&lt;br /&gt;
   guest ok = yes&lt;br /&gt;
   force user = pi&lt;br /&gt;
   force group = pi&lt;br /&gt;
   browseable = yes&lt;br /&gt;
   writable = yes&lt;br /&gt;
   read only = no&lt;br /&gt;
 [configs]&lt;br /&gt;
   path = /home/pi/pideskboard/configs&lt;br /&gt;
   guest ok = yes&lt;br /&gt;
   force user = pi&lt;br /&gt;
   force group = pi&lt;br /&gt;
   browseable = yes&lt;br /&gt;
   writable = yes&lt;br /&gt;
   read only = no&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
====X11 : Interface UI python et lancement des services ====&lt;br /&gt;
Lancement du piDeskboard local&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /home/pi/.profile &amp;lt;&amp;lt; EOF&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;[[ -z $DISPLAY &amp;amp;&amp;amp; $XDG_VTNR -eq 1 ]]&amp;lt;/nowiki&amp;gt; &amp;amp;&amp;amp; /home/pi/pideskboard/sh/dm_start.sh&lt;br /&gt;
 EOF&lt;br /&gt;
Paramètres de lancement de X11&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /etc/xdg/openbox/autostart &amp;lt;&amp;lt; EOF&lt;br /&gt;
 xset s off&lt;br /&gt;
 xset s noblank&lt;br /&gt;
 xset -dpms&lt;br /&gt;
 setxkbmap -option terminate:ctrl_alt_bksp&lt;br /&gt;
 DISPLAY=:0 nohup /home/pi/pideskboard/sh/cli_deskboard.sh &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
====Le &amp;quot;config.txt&amp;quot;====&lt;br /&gt;
* Ouvrez le &amp;quot;config.txt&amp;quot; avec &amp;lt;pre&amp;gt;sudo nano /boot/config.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Ajouter en début de document &amp;lt;pre&amp;gt;initramfs initramfs.img&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Le &amp;quot;cmdline.txt&amp;quot;====&lt;br /&gt;
* Ouvrez le &amp;quot;cmdline.txt&amp;quot; avec &amp;lt;pre&amp;gt;sudo nano /boot/cmdline.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Ajouter/remplacer  en fin de ligne, après &amp;quot;rootwait&amp;quot; &amp;lt;pre&amp;gt; logo.nologo loglevel=0 splash silent quiet&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Avant de redémarré===&lt;br /&gt;
Vous devez configurer quelques paramètre dans le fichier &amp;quot;config.ini&amp;quot; de l'interface, qui récupère également les donnés affichés. Vous pouvez le faire via le partage Windows ou par ligne de commande.&lt;br /&gt;
====Par ligne de commande====&lt;br /&gt;
* Ouvrez l'éditeur sur le fichier avec cette commande; &amp;lt;pre&amp;gt;nano /home/pi/pideskboard/configs/config.ini&amp;lt;/pre&amp;gt; et éditer le.&lt;br /&gt;
&lt;br /&gt;
====Par partage Windows====&lt;br /&gt;
''Si ont vous demande un nom d'utilisateur et mot de passe, utilisez celui de votre Raspberry Pi.''&lt;br /&gt;
* Ouvrez l'explorateur Windows de votre ordinateur,&lt;br /&gt;
* Aller dans &amp;quot;Réseau&amp;quot; et attendez quelques instant, vous devriez voir le nom de votre appareil s'afficher, si vous n'avez pas changé le &amp;quot;hostname&amp;quot; de Raspbian par défaut, vous attendez de voir un &amp;quot;RASPBERRYPI&amp;quot;, sinon c'est le nom que vous lui avez donné.&lt;br /&gt;
* Ouvrez votre partage, et entrer également dans le dossier &amp;quot;configs&amp;quot;&lt;br /&gt;
* Ouvrez le fichier &amp;quot;config.ini&amp;quot; avec l'éditeur de texte de votre choix, si vous ne savez pas lequel, utiliser le Bloc-Note (Notepad).&lt;br /&gt;
&lt;br /&gt;
==Utilisation==&lt;br /&gt;
===Accès au partage===&lt;br /&gt;
Le Raspberry Pi sera totalement ouvert aux accès sans restriction, vous pouvez accéder via le partage de Windows à l'adresse &amp;lt;pre&amp;gt;\\&amp;lt;ip-ou-hostname-du-pi&amp;gt;\&amp;lt;/pre&amp;gt; et les deux partages suivants sont possibles;&lt;br /&gt;
* '''\Configs''' : Accessible par tous, il possède des fichiers pour configurer les données du piDeskboard&lt;br /&gt;
* '''\home$''' : (À entrer manuellement) Un partage caché, pour accéder facilement à tout les fichiers disponible dans &amp;quot;/home/pi&amp;quot; du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
===Lancement===&lt;br /&gt;
Une fois tout installé, lancer un redémarrage avec ; &amp;lt;pre&amp;gt;sudo reboot&amp;lt;/pre&amp;gt;. Si tous est correctement installé, vous devriez voir après quelques minutes l'interface.&lt;br /&gt;
&lt;br /&gt;
===Contrôle à distance===&lt;br /&gt;
Le piDeskboard vient avec le module piWebCtrl. vous pouvez y accéder via le &amp;lt;pre&amp;gt;http://&amp;lt;ip-du-pi&amp;gt;:9000/&amp;lt;/pre&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Utiliser ailleurs===&lt;br /&gt;
L'interface Web a été retiré pour gagner en performances. &lt;br /&gt;
&lt;br /&gt;
==Structures ==&lt;br /&gt;
Voici la structures des fichiers (principaux)&lt;br /&gt;
&lt;br /&gt;
* '''piDeskboard''' (dans /home/pi)&lt;br /&gt;
** '''sh''' : Scripts Bash&lt;br /&gt;
** '''py''' : Fichiers Python&lt;br /&gt;
*** '''ui''' : Interface principal local&lt;br /&gt;
*** '''ctrl''' : Dossiers di piWebCtrl&lt;br /&gt;
** '''php''' : Fichiers de collecte et traitement des données&lt;br /&gt;
*** '''sys''' : Fichiers système&lt;br /&gt;
** '''configs''' : Fichiers configurables&lt;br /&gt;
** '''__install''' : Fichiers à copier pour l'installation&lt;br /&gt;
&lt;br /&gt;
==Support==&lt;br /&gt;
===Quelques commandes à savoir===&lt;br /&gt;
Pour vous aider avec les commandes, vous pouvez créer un lien symbolique pour un lie facile; &amp;lt;pre&amp;gt;sudo ln -ds /home/pi/pideskboard /pidesk&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Connexion du Bluetooth (à éditer également, voir guide sur utilisation du Bluetooth en CLI) &amp;lt;pre&amp;gt;/pidesk/sh/cli_bt.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si vous avez l'option de &amp;quot;pngview&amp;quot; de la suite &amp;quot;raspidmx&amp;quot; &amp;lt;pre&amp;gt;/pidesk/sh/cli_icon.sh &amp;lt;time in ms&amp;gt; &amp;lt;iconname&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Pour faire parler votre Raspberry, utilise eSpeak &amp;lt;pre&amp;gt;/pidesk/sh/cli_talk.sh &amp;lt;packlang&amp;gt; &amp;lt;text&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lancer l'application sur l'écran principal &amp;lt;pre&amp;gt;/pidesk/sh/cli_deskboard.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lancer le piWebCtrl &amp;lt;pre&amp;gt;/pidesk/sh/cli_webctrl.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Affiche une image d'attente (fullscreen) &amp;lt;pre&amp;gt;/pidesk/sh/cli_splash.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Vérifie si le script PHP CLI correspondant est lancé &amp;lt;pre&amp;gt;/pidesk/sh/cli_checkScript.sh &amp;lt;espeak|cron&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Vérifie si l'interface est active &amp;lt;pre&amp;gt;/pidesk/sh/cli_checkApp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si l'interface est active, il la tue et le redémarre à nouveau &amp;lt;pre&amp;gt;/pidesk/sh/cli_restartApp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Tuer l'interface &amp;lt;pre&amp;gt;/pidesk/sh/cli_killApp.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Si le piWebCtrl est actif, il le tue et le redémarre à nouveau &amp;lt;pre&amp;gt;/pidesk/sh/cli_restartCtrl.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Tuer piWebCtrl &amp;lt;pre&amp;gt;/pidesk/sh/cli_killCtrl.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Fermer le système avec &amp;lt;pre&amp;gt;/pidesk/sh/cli_poweroff.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Redémarrer le système avec &amp;lt;pre&amp;gt;/pidesk/sh/cli_reboot.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lance les moniteurs &amp;lt;pre&amp;gt;/pidesk/sh/dm_monitor.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Lance le piDeskboard en autologin &amp;lt;pre&amp;gt;/pidesk/sh/dm_start.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Modifier l'écran de démarrage ===&lt;br /&gt;
Consulter la page [[RPi-BootScreen]] pour les détails.&lt;br /&gt;
&lt;br /&gt;
=== Personnaliser le design ===&lt;br /&gt;
''à venir''&lt;br /&gt;
=== Problèmes connus ===&lt;br /&gt;
* L'installation n'a pas été testé un nombre de fois pour en assurer la fiabilité et la stabilité, merci de rapporter vos commentaires à ce sujet à levelkro@yahoo.ca.&lt;br /&gt;
* Pour les autres problèmes, référez-vous à https://github.com/levelKro/pideskboard/issues&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mise à jours ==&lt;br /&gt;
Pour actualiser les codes du PiDeskabord;&lt;br /&gt;
 cd /home/pi/pideskboard&lt;br /&gt;
 git pull upstream main&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&lt;br /&gt;
== Note: Écran Raspberry Pi 3.5&amp;quot;, 5&amp;quot;, 7&amp;quot; ==&lt;br /&gt;
Si vous utilisez un écran LCD spécial pour Raspberry Pi; qui ce connect via le GPIO ou autres, et qui fait partie de la librairie &amp;quot;LCD-show&amp;quot;, vous devez ABSOLUMENT appliquer ce correctif, sinon vous risquez d'avoir un erreur lors du démarrage du serveur X sous Raspbian Lite. Remplacer &amp;quot;&amp;lt;LCDXX-show&amp;gt;&amp;quot; par l'exécutable requis pour votre matériel, par exemple; LCD35-show, ou MHS35-show.&lt;br /&gt;
 sudo sed -i 's|sudo reboot|echo &amp;quot;... but wait, before, I need to add my how fix ...&amp;quot;|g' /home/pi/LCD-show/LCDXX-show&lt;br /&gt;
 sudo -s cat &amp;gt;&amp;gt; /home/pi/LCD-show/LCDXX-show &amp;lt;&amp;lt; EOF&lt;br /&gt;
 sudo sed -i 's|fbturbo|fbdev|g' /usr/share/X11/xorg.conf.d/99-fbturbo.conf&lt;br /&gt;
 sudo mv /usr/share/X11/xorg.conf.d/99-fbturbo.conf /usr/share/X11/xorg.conf.d/99-fbdev.conf&lt;br /&gt;
 echo &amp;quot;... ok, all is fine, NOW you can reboot&amp;quot;&lt;br /&gt;
 sudo reboot&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Programmation]]&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=RPi-RealTime_Clock&amp;diff=464</id>
		<title>RPi-RealTime Clock</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=RPi-RealTime_Clock&amp;diff=464"/>
		<updated>2021-11-14T23:27:15Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le Module RTC (Real Time Clock) permet de garder l'heure du système en mémoire lorsque ce dernier est éteint, évite de devoir synchroniser via le réseau/internet.&lt;br /&gt;
&lt;br /&gt;
== Matériel ==&lt;br /&gt;
Ce guide s'applique aux modules basé sur les modèles de DS 1307, PCF 8523 et DS 3231 qui communique via i2c.&lt;br /&gt;
&lt;br /&gt;
=== Pré-requis ===&lt;br /&gt;
* Système à jour avec &amp;lt;pre&amp;gt;sudo apt update&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Activer le i2c via le &amp;lt;pre&amp;gt;sudo raspi-config&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Installer les outils i2c avec &amp;lt;pre&amp;gt;sudo apt install -y i2c-tools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;pre&amp;gt;sudo nano /boot/config.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Ajouter le &amp;quot;overlay&amp;quot; requis, selon votre module;&lt;br /&gt;
** DS 1307 : &amp;lt;pre&amp;gt;dtoverlay=i2c-rtc,ds1307&amp;lt;/pre&amp;gt;&lt;br /&gt;
** PCF 8523 : &amp;lt;pre&amp;gt;dtoverlay=i2c-rtc,pcf8523&amp;lt;/pre&amp;gt;&lt;br /&gt;
** DS 3231 : &amp;lt;pre&amp;gt;dtoverlay=i2c-rtc,ds3231&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Sauvegarder le fichier modifié.&lt;br /&gt;
* Redémarrer le Raspberry&lt;br /&gt;
* Vérifier que vous avez le module de charger avec &amp;lt;pre&amp;gt;i2cdetect -y 1&amp;lt;/pre&amp;gt;, le module seras avec &amp;quot;UU&amp;quot; si il est correctement chargé, sinon seulement son numéro sera visible, dans ce cas, consulter un guide associer au module pour correctement l'installer.&lt;br /&gt;
* Désactiver la fausse horloge;&lt;br /&gt;
*# &amp;lt;pre&amp;gt;sudo systemctl disable fake-hwclock&amp;lt;/pre&amp;gt;&lt;br /&gt;
*# &amp;lt;pre&amp;gt;sudo update-rc.d -f fake-hwclock remove&amp;lt;/pre&amp;gt;&lt;br /&gt;
*# &amp;lt;pre&amp;gt;sudo apt-get -y remove fake-hwclock&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &amp;lt;pre&amp;gt;sudo nano /lib/udev/hwclock-set&amp;lt;/pre&amp;gt; et commenter les lignes suivantes;&lt;br /&gt;
&amp;lt;pre&amp;gt;#if [ -e /run/systemd/system ] ; then&lt;br /&gt;
#exit 0&lt;br /&gt;
#fi&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;#/sbin/hwclock --rtc=$dev --systz --badyear&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;#/sbin/hwclock --rtc=$dev --systz&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Assurez-vous d'avoir la bonne heure sur le Raspbbery, sinon ajuster la maintenant.&lt;br /&gt;
* Pour vérifier que l'heure actuel est la bonne, faites; &amp;lt;pre&amp;gt;sudo hwclock -r&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Pour enregistrer la date actuel dans le module RTC, faites &amp;lt;pre&amp;gt;sudo hwclock -w&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Pour appliquer l'heure du module RTC au système, faites; &amp;lt;pre&amp;gt;sudo hwclock -s&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Catégorie:Raspberry Pi]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
	<entry>
		<id>https://levelkro.xyz/wiki//index.php?title=Astuces_r%C3%A9seau&amp;diff=463</id>
		<title>Astuces réseau</title>
		<link rel="alternate" type="text/html" href="https://levelkro.xyz/wiki//index.php?title=Astuces_r%C3%A9seau&amp;diff=463"/>
		<updated>2021-09-30T21:07:22Z</updated>

		<summary type="html">&lt;p&gt;LevelKro : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Réinitialisation du matériel réseau (Windows) ==&lt;br /&gt;
Si vous avez des problèmes de connexions avec vos appareil réseau, ou que votre connexion semble affecté, vous pouvez effectuer quelques commandes simples pour résoudre rapidement le problème.&lt;br /&gt;
=== Solution rapide ===&lt;br /&gt;
La solution la plus simple consiste à redémarrer l'ordinateur. Si cela ne marche pas, essayer l'option suivante.&lt;br /&gt;
=== Solution direct ===&lt;br /&gt;
Dans certains cas, la méthode rapide ne marche pas, ont doit forcer la remise à zéro des paramètres dynamiques du matériel. (Adresse IP, passerelle, NAT, etc...)&lt;br /&gt;
==== Windows XP/Vista/7 ====&lt;br /&gt;
* Aller dans; ''Menu démarrer'' &amp;gt; ''Tout les programmes'' &amp;gt; ''Accessoires''&lt;br /&gt;
* Un application nommé ''Invite de commande (Administrateur)'' devrais s'y trouver, sinon&lt;br /&gt;
** Maintenez la touche {{Flash|txt=Shift}} et faites un clique de droit sur l'application ''Invite de commande''&lt;br /&gt;
** Sélectionner ''Démarrer en administrateur''&lt;br /&gt;
==== Windows 8/8.1/10 ====&lt;br /&gt;
* Faites un clique de droit sur le ''Menu démarrer''&lt;br /&gt;
* Sélectionner ''Invite de commande (admin)'' ou ''Invite PowerShell (admin)''&lt;br /&gt;
==== ... suite ====&lt;br /&gt;
* Dans l'invite de commande, entrez; &amp;lt;pre&amp;gt;ipconfig /release *&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Après 15 à 30 secondes minimum, faites la commande; &amp;lt;pre&amp;gt;ipconfig /renew *&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Après quelques secondes, la commande est complété, les problèmes réseau devrait être disparu.&lt;br /&gt;
Si le problème persiste, consulter un technicien.&lt;br /&gt;
== Configuration réseau domestique statique ==&lt;br /&gt;
Utiliser des adresses IP statique (fixe) permet de simplifier la connexion entre les appareils et leur reconnaissance.&lt;br /&gt;
=== Préparation ===&lt;br /&gt;
Il faut définir le nom que l'appareil utiliseras, quand c'est possible, pour faciliter l'utilisation des configurations.&lt;br /&gt;
* Sous Linux, entrer la commande suivante; &amp;lt;pre&amp;gt;hostname &amp;lt;nomdelamachine&amp;gt;&amp;lt;/pre&amp;gt; et redémarrer l'appareil.&lt;br /&gt;
* Sous Windows 9X/NT/XP/Vista/7; &lt;br /&gt;
** Ouvrez le menu démarrer et sélectionner &amp;quot;Exécuter&amp;quot;. &lt;br /&gt;
** Entrer: &amp;lt;pre&amp;gt;sysdm.cpl&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Cliquer sur le bouton &amp;quot;Modifier&amp;quot;,&lt;br /&gt;
** Entrer le nouveau nom, et sauvegarder,&lt;br /&gt;
** Redémarrer l'odinateur&lt;br /&gt;
* Sous Windows 8/10; &lt;br /&gt;
** Faites un clique de droit sur le menu démarrer et sélectionner &amp;quot;Exécuter&amp;quot;. &lt;br /&gt;
** Entrer: &amp;lt;pre&amp;gt;sysdm.cpl&amp;lt;/pre&amp;gt;&lt;br /&gt;
** Cliquer sur le bouton &amp;quot;Modifier&amp;quot;,&lt;br /&gt;
** Entrer le nouveau nom, et sauvegarder,&lt;br /&gt;
** Redémarrer l'odinateur&lt;br /&gt;
&lt;br /&gt;
Établissez également l'inventaire de vos appareils et comment vous voulez les repérer, l'un des meilleur moyen est d'utiliser la fin des adresses IP. Si votre réseau commence par &amp;quot;192.168.0.&amp;quot; par exemple, vous pouvez choisir tout les valeur entre &amp;quot;2&amp;quot; et &amp;quot;254&amp;quot;. La centaine &amp;quot;1&amp;quot; serait un bon départ, après vous définissez la décimale par catégorie, par exemple 10x seront les appareils services (routeurs secondaires, imprimantes, etc...), les 11x pour les ordinateurs, les 12x pour les portables, etc... Ceci n'a pas d'importance, sauf pour vous aider à déterminer à quoi fait référence l'adresse, sans nécessairement connaitre le &amp;quot;hostname&amp;quot; ou &amp;quot;nom&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
* Rejoignez l'interface de configuration de votre routeur, par exemple; http://192.168.0.1/ &lt;br /&gt;
* Chercher la section de gestion du réseau, l'ou vous pouvez décider si il prend le contrôle du DHCP,&lt;br /&gt;
* Dans cette section, cherchez l'emplacement de la configuration de vos paramètres d'adressage statique, ou votre table DHCP réservé,&lt;br /&gt;
* Si vous avez la bonne section, vous pourrez définir l'adresse MAC, le Nom (Hostname) et l'adresse IP réservé pour plusieurs appareils&lt;br /&gt;
* Ajouter les appareils, si l'adresse IP qui lui est actuellement alloué est différente de celle que vous désirez, tout comme pour le nom utilisé, changez le, ce qui est vraiment important est l'adresse MAC (qui est unique et non modifiable).&lt;br /&gt;
* Sauvegardez vos changements, pour aider à les appliqués, effectuer une redémarrage du routeur, et des appareil du réseau (dans cet ordre)&lt;br /&gt;
&lt;br /&gt;
== Configuration NAT routeur (High ID) ==&lt;br /&gt;
&lt;br /&gt;
== Interdire la connexion Internet partagé et utiliser une connexion direct (PPPoe xDSL) (High ID) ==&lt;br /&gt;
=== Windows XP/Vista/7/8/8.1 ===&lt;br /&gt;
=== Windows 10 ===&lt;br /&gt;
[[Catégorie:Logiciels]]&lt;br /&gt;
[[Catégorie:Réseaux]]&lt;/div&gt;</summary>
		<author><name>LevelKro</name></author>
		
	</entry>
</feed>