• Vítejte na XBMC-Kodi.cz
  • Česko-slovenská komunita fanoušků XBMC/Kodi
Zdravím hosta! Přihlášení Registrace


Hodnocení tématu:
  • 0 Hlas(ů) - 0 Průměr
  • 1
  • 2
  • 3
  • 4
  • 5
Informace o videu
#1
Ahoj dá se nějak vyparsovat v openelec informace o přehrávaném videu (název, čas apod.) ideálně do souboru? Chtěl bych to použít na display u mého HTPi.
[Obrázek: DnVp.jpg]
 
Citovat
#2
Neco takoveho?
> [Only registered and activated users can see links Click here to register]
2x Raspberry Pi 2B - OpenELEC v6.0.3 (KODI 15.2) & 32 GB SD card
Asus EEE Box EB1501U - Atom N330 (1.6 GHz), 4GB RAM, nVidia ION, W10 Pro + Kodi 16
iPhone 7 128 GB v10.1.1 nonJB CZ & Apple Watch v3.1
iPad Air 2 128 GB v9.0.2 JB CZ (KODI 15.2)
 
Citovat
#3
Bohužel ne, tohle je kompilace openelecu a přidání driveru pro LCD, kde si pak výpis řídí openelec. Mě by spíš šlo o to si informace vyparsovat do souboru, kde bych si vybral co se mi hodí a vypsal si info jen když chci. Např. po stisku tlačítka na Do apod.
 
Citovat
#4
Tohle asi bude oříšek, tak mě napadá odkud si asi tahá info aplikace Kore. Při spuštěném filmu mi zobrazuje název i čas přehrávání .....
RPi 2 - BerryBoot - LibreELEC 7.0.2 + Retropie 4.0.2 + Raspbian PIXEL + LibreELEC Krypton 7.90.006
 
Citovat
#5
Z toho právě vycházím, že aplikace si informace zobrazí. Tak jsem si myslel, že to je běžná věc, jen já špatně hledal. Proto jsem se odhodlal k položení otázky, jak ale vidím je to složitější, než jsem předpokládal. Nicméně je to jen kosmetika a funkci to vliv nemá.
 
Citovat
#6
No nic zatím to dám k ledu, třeba někoho něco napadne. Mezitím dám do kupy knihovny, aby se dalo HTPi už plnohodnotně užívat. Tahá si filmy ze sítě z 11TB úložiště, postaveném na raspbianu. Tady je pár fotek ze stavby HTPi a RasNas
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register]
[Only registered and activated users can see links Click here to register] 
HTPi je plně ovládáno DO od TV včetně zapnutí/vypnutí. Při vypnutém stavu má nulovou spotřebu. To byla hlavní priorita. Obdobn je to i u RasNas, kde pokud není potřeba, tak se silově vypnou externí disky a běží pouze Raspberry. Pro komunikaci s Nas je napsaný kompletně program založený na backend/frontend komunikaci. Frontendy jsem napsal dva, jeden pro plně automatické připojení celého uložiště pro HTPi a druhý pro ostatní PC s GUI, kde si uživatel vybere jaké disky chce mít k dispozici. Vše jsem se snažil napsat tak, aby bylo ovládání co nejjednodušší i pro lajka, takže plně automatické stačí jen stisknout tlačítko na DO. Toho jsem docílil prokombinováním Raspberry s Arduinem, které se stará o spouštění HTPi.
 
Citovat
#7
Mohl by jsi podrobněji rozepsat jak máš pořešeno zapínání/vypínání přes DO (použité součástky, nastavení v OS....) ? dík 4
RPi 2 - BerryBoot - LibreELEC 7.0.2 + Retropie 4.0.2 + Raspbian PIXEL + LibreELEC Krypton 7.90.006
 
Citovat
#8
@cuore
Kua to je mazec , smekám pane  Klaním se Thumbup
3x RPi2B → LibreELEC  arm-7.0.2 \ 1x RPi3B → LibreELEC arm-7.0.2 \ HTPC → LibreELEC Generic x86_64-7.0.2 \ NAS Synology 212J → DSM 6.0.2


 
Citovat
#9
   
(29.9.2016, 14:21)Petrvald Napsal(a): Mohl by jsi podrobněji rozepsat jak máš pořešeno zapínání/vypínání přes DO (použité součástky, nastavení v OS....) ? dík 4

Uvnitř HTPi je zdroj, který je silově spínaný pomocí SSR relé ovládané Arduinem. To je napájeno z USB TV, takže pokud je vypnuta TV spotřeba je 0W. Na arduinu je IR dioda pomocí které odchytím tlačítko na DO TV (zvolil jsem si zelené pro teletext). Po odchycení sepnu relé a probíhá boot raspberry. Po naběhnutí si raspičko sepne pomocí SSR samodrž pro napájení a dá echo Arduinu, že může vypnout relé. Dokud má Arduino signál od raspička, tak ignoruje tlačítka DO. Po vypnutí raspička mu odpadne samodrž a je bez napětí, zároveň nemá Arduino signál od raspberry a je opět připraveno odchytávat tlačítko na DO.
Program Arduino:
Kód:
#include <IRremote.h>
#define PRODLEVA   50
bool  MinulyStav = 0;               // priznak predchoziho stavu tlacitka (1 .. stisknuto)
unsigned long CasZmeny;             // promenna pro ulozeni casu zmeny stavu tlacitka
int zelena;                         // Zelene tlacitko na ovladaci TV Sony Bravia
int RECV_PIN = 3;                   // vstup od IRLED
int poc;                            // promenna na pocitani cycklu
int jas;                            // jas diody
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();              // Zacatek cteni pinu v seriovem monitoru
pinMode(3, INPUT_PULLUP);         // vstup od IRLED
pinMode(4, OUTPUT);               // R
pinMode(5, OUTPUT);               // G
pinMode(6, OUTPUT);               // B
pinMode(7, INPUT_PULLUP);         // zpetna vazba od RasPi
pinMode(12, OUTPUT);              // napajeni pro RasPi
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(12, LOW);
}
void loop() {
   // **OVLADANI RGB LED**                                              
   if (digitalRead(7) == 0 && digitalRead(12) == 1)         // RasPi si seplo samodrzny kontakt vypnu napajeni
   {
    analogWrite(5, 150);                                    // zelena LED = 1
    analogWrite(4, 255);                                    // cervena LED = 0    
    analogWrite(6, 255);                                    // modra LED = 0
    delay (5000);                                           // cekej 5s
    digitalWrite(12, LOW);                                  // vypnu napajeni pro RasPi
   }
    else if (digitalRead(7) == 1 && digitalRead(12) == 1)   // pokud RasPi jeste nenabehlo
   {
   analogWrite(4, 254);                                    // cervena LED = 1
   analogWrite(5, 254);                                    // zelena LED = 1
   analogWrite(6, 255);                                    // modra LED = 0
   }  
   else if (digitalRead(7) == 0 && digitalRead(12) == 0)   // RasPi bezi a drzi si napajeni
   {
   analogWrite(6, 254);                                    // modra LED = 1
   analogWrite(5, 255);                                    // zelena LED = 0
   analogWrite(4, 255);                                    // cervena LED = 0  
   }
   else if (digitalRead(7) == 1 && digitalRead(12) == 0)  // arduino v pohotovosti
   {
   analogWrite(4, 254);                                   // cervena LED = 1
   analogWrite(5, 255);                                   // zelena LED = 0
   analogWrite(6, 255);                                   // modra LED = 0
   }  
 // **ODCHYT TLACITKA Z DALKOVEHO OVLADACE**
 if (irrecv.decode(&results)) {
  int zelena = results.value;
     if ((zelena == 13033) && ((digitalRead(7) == 1) && (digitalRead(12) == 0)))     // pokud je stisknuto pozadovane tlacitko a zatim neprobehla akce spusteni RasPi
     {
     digitalWrite(12, HIGH);                                                         // sepni napajeni pro RasPi
     analogWrite(5, 255);                                                            // zelena LED = 0
     analogWrite(6, 255);                                                            // modra LED = 0
     jas = 256;                                                                      // zacatek bliknuti s cervenou LED
     for(poc=0;poc<256;poc++){
     jas = jas - 1;
     analogWrite(4, jas);
     delay(10);          
     }
     for(poc=0;poc<256;poc++){
     analogWrite(4, poc);
     delay(10);    
     }                                                                            // konec bliknuti s cervenou LED
     }                                                      
  Serial.println(zelena, HEX);                                                   // prepis HEX na seriovy monitor
  irrecv.resume();                                                               // Cti dalsi hodnotu
}
 if (digitalRead(3) == 0)                                                        // je-li tlacitko stisknuto
 {                                                  
   if (MinulyStav == 0 && millis() - CasZmeny > PRODLEVA)                       // neni-li nastaven priznak        
   {                                                                            // tlacitko stisknuto a uplynul-li vetsi cas od zmeny stavu tlacitka nez je mez (50ms)            
     MinulyStav = 1;                                                            // nastav priznak tlacitko stisknuto
   }
 }
 else                                                                          // neni-li stisknuto tlacitko
 {
   CasZmeny = millis();                                                        // zapamatuj si posledni cas, kdy bylo nestisknuto
   MinulyStav = 0;                                                             // nuluj priznak, tlacitko stisknuto
 }
    }
Na HTPi běží komunikace s Arduinem:
Kód:
#!/bin/bash
# 2016 Cuore <r.nemcansky@seznam.cz>
# verze 0.0.1
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#----------------------------------------------------------------------------------------------------------------------------------
# Konfigurace GPIO
#----------------------------------------------------------------------------------------------------------------------------------
echo "spouštím script pro HTPi"
echo "17" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction
echo "18" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio18/direction
#----------------------------------------------------------------------------------------------------------------------------------
# Samodrž pro napájení
#----------------------------------------------------------------------------------------------------------------------------------
cnt=0
until [ "$cnt" = "1" ]; do

echo "nahazuji samodrž";
echo "1" > /sys/class/gpio/gpio17/value;

out=$(cat /sys/class/gpio/gpio17/value);

if [ "$out" -eq "1" ]; then
echo "samodrž nahozena, informuji Arduino";
echo "1" > /sys/class/gpio/gpio18/value;
cnt=1;

else

echo "opět nahazuji samodrž";
cnt=0;

fi
unset out
done
exit 0
a frontend pro připojení disků:
Kód:
#!/bin/bash
# 2016 Cuore <r.nemcansky@seznam.cz>
# verze 0.0.4
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#----------------------------------------------------------------------------------------------------------------------------------
# FRONTEND pro NAS server Raspberry
#----------------------------------------------------------------------------------------------------------------------------------
echo 'přihlašuji se:' `date`
#----------------------------------------------------------------------------------------------------------------------------------
# Konfigurační hlavička
#----------------------------------------------------------------------------------------------------------------------------------
                    uzivatel=$(whoami)
                    pc=$(uname -n)
                    cesta="/storage/komunikace"
                    cesta_disk1="/storage/toshiba"
                    cesta_disk2="/storage/mybook"
                    cesta_disk3="/storage/seagate"
                    kom="Komunikace.txt"
                    user="Prihlaseni.txt"
                    ip=$(cat ~/.cache/connman/ethernet_b827ebb63149_cable/settings | grep "IPv4.DHCP.LastAddress" | cut -d '=' -f2)
                    backend="raspberry"
#----------------------------------------------------------------------------------------------------------------------------------
# Přihlášení se k backendu
#----------------------------------------------------------------------------------------------------------------------------------
sed -i "/^$pc/d" $cesta/$user;
echo `uname -n` $ip `date` >> $cesta/$user
#----------------------------------------------------------------------------------------------------------------------------------
# Vyčtení stavu disků a NAS
#----------------------------------------------------------------------------------------------------------------------------------
          disk1="< $cesta/$kom | grep diskA | cut -c 7-"
          disk1=$(cat $cesta/$kom | grep diskA | cut -c 7-)
          disk2="< $cesta/$kom | grep diskB | cut -c 7-"
          disk2=$(cat $cesta/$kom | grep diskB | cut -c 7-)
          disk3="< $cesta/$kom | grep diskC | cut -c 7-"
          disk3=$(cat $cesta/$kom | grep diskC | cut -c 7-)
          restart="< $cesta/$kom | grep Restart | cut -c 9-"
          restart=$(cat $cesta/$kom | grep Restart | cut -c 9-)
#----------------------------------------------------------------------------------------------------------------------------------
# Prohledání kdo je přihlášený a jestli je mezi nimy backend, pokud ano a jsou disky už připojené
# od jiného frontendu, požádám o připojení disků
#----------------------------------------------------------------------------------------------------------------------------------
echo "požadavek pro disk $cesta_disk1 je" $disk1
echo "požadavek pro disk $cesta_disk2 je" $disk2
echo "požadavek pro disk $cesta_disk3 je" $disk3

          kontrola=$(grep -v $pc $cesta/$user | wc -l)

echo "pokud se někdo přihlásil mám > 0 - počet přihlášených:"$kontrola
echo "hledám NAS"

          nas=$(grep $backend $cesta/$user | cut -d ' ' -f1 )
  if [ -n $nas ] 2>/dev/null; then
echo "nalezeno" $nas
    if [ "$disk1" -eq "2" -a "$kontrola" -ne "0" -a "$restart" -eq "2" ] 2>/dev/null; then
   echo "připojuji $cesta_disk1";
  mount -t cifs -o user=pi,password=raspberry,rw //192.168.4.9/Filmy $cesta_disk1;
    fi
     if [ "$disk2" -eq "2" -a "$kontrola" -ne "0" -a "$restart" -eq "2" ] 2>/dev/null; then
    echo "připojuji $cesta_disk2";
   mount -t cifs -o user=pi,password=raspberry,rw //192.168.4.9/Serialy $cesta_disk2;
     fi
     if [ "$disk3" -eq "2" -a "$kontrola" -ne "0" -a "$restart" -eq "2" ] 2>/dev/null; then
    echo "připojuji $cesta_disk3";
   mount -t cifs -o user=pi,password=raspberry,rw //192.168.4.9/FilmyA3d $cesta_disk3;
     fi
  fi
#-----------------------------------------------------------------------------------------------------------------------------------
# Vyčtení stavu disků a NAS ve smyčce
#-----------------------------------------------------------------------------------------------------------------------------------    
           cnt=0
      while [ 1 ]; do
           cnt=$[cnt+1]

          disk1="< $cesta/$kom | grep diskA | cut -c 7-"
          disk1=$(cat $cesta/$kom | grep diskA | cut -c 7-)
          disk2="< $cesta/$kom | grep diskB | cut -c 7-"
          disk2=$(cat $cesta/$kom | grep diskB | cut -c 7-)
          disk3="< $cesta/$kom | grep diskC | cut -c 7-"
          disk3=$(cat $cesta/$kom | grep diskC | cut -c 7-)
          restart="< $cesta/$kom | grep Restart | cut -c 9-"
          restart=$(cat $cesta/$kom | grep Restart | cut -c 9-)
#----------------------------------------------------------------------------------------------------------------------------------
# Prohledání ve smyčce kdo je přihlášený a jestli je mezi nimy backend
#----------------------------------------------------------------------------------------------------------------------------------
echo "požadavek pro disk $cesta_disk1 je" $disk1
echo "požadavek pro disk $cesta_disk2 je" $disk2
echo "požadavek pro disk $cesta_disk3 je" $disk3

          kontrola=$(grep -v $pc $cesta/$user | wc -l)

echo "pokud se někdo přihlásil mám > 0 - počet přihlášených:"$kontrola
echo "hledám NAS"

          nas=$(grep $backend $cesta/$user | cut -d ' ' -f1 )
  if [ -n $nas ] 2>/dev/null; then
echo "nalezeno" $nas
#----------------------------------------------------------------------------------------------------------------------------------
# Pokud ano, požádám o připojení disků
#----------------------------------------------------------------------------------------------------------------------------------
   if [ "$disk1" -eq "3" -a "$kontrola" -ne "0" -a "$restart" -eq "2" ] 2>/dev/null; then
  echo "připojuji $cesta_disk1";
sed -i '/diskA/s/3/1/' $cesta/$kom;
   fi
    if [ "$disk2" -eq "3" -a "$kontrola" -ne "0" -a "$restart" -eq "2" ] 2>/dev/null; then
  echo "připojuji $cesta_disk2";
sed -i '/diskB/s/3/1/' $cesta/$kom;
    fi
     if [ "$disk3" -eq "3" -a "$kontrola" -ne "0" -a "$restart" -eq "2" ] 2>/dev/null; then
  echo "připojuji $cesta_disk3";
sed -i '/diskC/s/3/1/' $cesta/$kom;
     fi
      if [ "$disk1" -eq "1" -a "$kontrola" -ne "0" -a "$restart" -eq "2" ] 2>/dev/null; then
   echo "připojuji $cesta_disk1";
          disk1="< $cesta/$kom | grep diskA | cut -c 7-"
          disk1=$(cat $cesta/$kom | grep diskA | cut -c 7-)
      until [ "$disk1" -eq "2" ]; do
         for x in / - \\ \|; do
         echo -ne "čekám na backend... $x \r";
         sleep 1;
         done
          disk1="< $cesta/$kom | grep diskA | cut -c 7-"
          disk1=$(cat $cesta/$kom | grep diskA | cut -c 7-)
      done
mount -t cifs -o user=pi,password=raspberry,rw //192.168.4.9/Filmy $cesta_disk1;
      fi
       if [ "$disk2" -eq "1" -a "$kontrola" -ne "0" -a "$restart" -eq "2" ] 2>/dev/null; then
   echo "připojuji $cesta_disk2";
          disk2="< $cesta/$kom | grep diskB | cut -c 7-"
          disk2=$(cat $cesta/$kom | grep diskB | cut -c 7-)
      until [ "$disk2" -eq "2" ]; do
         for x in / - \\ \|; do
         echo -ne "čekám na backend... $x \r";
         sleep 1;
         done
          disk2="< $cesta/$kom | grep diskB | cut -c 7-"
          disk2=$(cat $cesta/$kom | grep diskB | cut -c 7-)
      done
  mount -t cifs -o user=pi,password=raspberry,rw //192.168.4.9/Serialy $cesta_disk2;
       fi
        if [ "$disk3" -eq "1" -a "$kontrola" -ne "0" -a "$restart" -eq "2" ] 2>/dev/null; then
   echo "připojuji $cesta_disk3";
          disk3="< $cesta/$kom | grep diskC | cut -c 7-"
          disk3=$(cat $cesta/$kom | grep diskC | cut -c 7-)
      until [ "$disk3" -eq "2" ]; do
         for x in / - \\ \|; do
         echo -ne "čekám na backend... $x \r";
         sleep 1;
         done
          disk3="< $cesta/$kom | grep diskC | cut -c 7-"
          disk3=$(cat $cesta/$kom | grep diskC | cut -c 7-)
      done
  mount -t cifs -o user=pi,password=raspberry,rw //192.168.4.9/FilmyA3d $cesta_disk3;
        fi
#----------------------------------------------------------------------------------------------------------------------------------
# Pokud je disk disk1 již v backendu připojen, nebo je požadavek na jeho připojení a backend se odhlásí, odpojím disk1
#----------------------------------------------------------------------------------------------------------------------------------
     if [ "$kontrola" -eq "0" -a \( "$disk1" -eq "2" -o "$disk1" -eq "1" \) ] 2>/dev/null; then
    echo "odpojuji $cesta_disk1";
   sed -i '/diskA/s/1/0/' $cesta/$kom;
   sed -i '/diskA/s/2/0/' $cesta/$kom;
   umount  $cesta_disk1;
     fi
#----------------------------------------------------------------------------------------------------------------------------------
# Pokud je disk disk2 již v backendu připojen, nebo je požadavek na jeho připojení a backend se odhlásí, odpojím disk2
#----------------------------------------------------------------------------------------------------------------------------------
      if [ "$kontrola" -eq "0" -a \( "$disk2" -eq "2" -o "$disk2" -eq "1" \) ] 2>/dev/null; then
     echo "odpojuji $cesta_disk2";
    sed -i '/diskB/s/1/0/' $cesta/$kom;
    sed -i '/diskB/s/2/0/' $cesta/$kom;
    umount  $cesta_disk2;
      fi
#----------------------------------------------------------------------------------------------------------------------------------
# Pokud je disk disk3 již v backendu připojen, nebo je požadavek na jeho připojení a backend se odhlásí, odpojím disk3
#----------------------------------------------------------------------------------------------------------------------------------
      if [ "$kontrola" -eq "0" -a \( "$disk3" -eq "2" -o "$disk3" -eq "1" \) ] 2>/dev/null; then
     echo "odpojuji $cesta_disk3";
    sed -i '/diskC/s/1/0/' $cesta/$kom;
    sed -i '/diskC/s/2/0/' $cesta/$kom;
    umount  $cesta_disk3;
      fi
  fi
#----------------------------------------------------------------------------------------------------------------------------------
# Kontrola požadavku na restart NAS, popř. reakce na tuto událost
#----------------------------------------------------------------------------------------------------------------------------------
echo "požadavek na restart NAS:" $restart
sleep     45;
#----------------------------------------------------------------------------------------------------------------------------------
# Kontrola jestli je připojen disk, pokud ne pokusím se o nové připojení
#----------------------------------------------------------------------------------------------------------------------------------
  if [ -n "$(ls -A $cesta_disk1)" ] 2>/dev/null; then
echo "složka $cesta_disk1 neni prázdná";
  else
echo "složka $cesta_disk1 je prázdná";
umount  $cesta_disk1;
sleep 2;
mount -t cifs -o user=pi,password=raspberry,rw //192.168.4.9/Filmy $cesta_disk1;
  fi
#----------------------------------------------------------------------------------------------------------------------------------
# Kontrola jestli je připojen disk, pokud ne pokusím se o nové připojení
#----------------------------------------------------------------------------------------------------------------------------------
   if [ -n "$(ls -A $cesta_disk2)" ] 2>/dev/null; then
  echo "složka $cesta_disk2 neni prázdná";
   else
  echo "složka $cesta_disk2 je prázdná";
umount  $cesta_disk2;
sleep 2;
mount -t cifs -o user=pi,password=raspberry,rw //192.168.4.9/Serialy $cesta_disk2;
   fi
#----------------------------------------------------------------------------------------------------------------------------------
# Kontrola jestli je připojen disk, pokud ne pokusím se o nové připojení
#----------------------------------------------------------------------------------------------------------------------------------
   if [ -n "$(ls -A $cesta_disk3)" ] 2>/dev/null; then
  echo "složka $cesta_disk3 neni prázdná";
   else
  echo "složka $cesta_disk3 je prázdná";
umount  $cesta_disk3;
sleep 2;
mount -t cifs -o user=pi,password=raspberry,rw //192.168.4.9/FilmyA3d $cesta_disk3;
   fi
           cnt=0
#----------------------------------------------------------------------------------------------------------------------------------
# Kontrola jestli mě backend nesmazal, pokud ano opět se přihlásím
#----------------------------------------------------------------------------------------------------------------------------------
grep -iq $pc $cesta/$user && echo "jsem stále online" || echo `uname -n` $ip `date` >> $cesta/$user
      done

exit 0
dále ovládání displaye kde jsem si upravil už funkční jen předělal pro své účely:
Kód:
#!/usr/bin/python
#--------------------------------------
#    ___  ___  _ ____
#   / _ \/ _ \(_) __/__  __ __
#  / , _/ ___/ /\ \/ _ \/ // /
# /_/|_/_/  /_/___/ .__/\_, /
#                /_/   /___/
#
#  lcd_16x2.py
#  16x2 LCD Test Script
#
# Author : Matt Hawkins
# Date   : 06/04/2015
#
# http://www.raspberrypi-spy.co.uk/
#
# Copyright 2015 Matt Hawkins
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
#--------------------------------------

# The wiring for the LCD is as follows:
# 1 : GND
# 2 : 5V
# 3 : Contrast (0-5V)*
# 4 : RS (Register Select)
# 5 : R/W (Read Write)       - GROUND THIS PIN
# 6 : Enable or Strobe
# 7 : Data Bit 0             - NOT USED
# 8 : Data Bit 1             - NOT USED
# 9 : Data Bit 2             - NOT USED
# 10: Data Bit 3             - NOT USED
# 11: Data Bit 4
# 12: Data Bit 5
# 13: Data Bit 6
# 14: Data Bit 7
# 15: LCD Backlight +5V**
# 16: LCD Backlight GND

#import
import sys
sys.path.append('/storage/.kodi/addons/python.RPi.GPIO/lib')
import RPi.GPIO as GPIO
import datetime
import time

# Define GPIO to LCD mapping
LCD_RS = 25
LCD_E  = 4
LCD_D4 = 5
LCD_D5 = 6
LCD_D6 = 12
LCD_D7 = 13


# Define some device constants
LCD_WIDTH = 16    # Maximum characters per line
LCD_CHR = True
LCD_CMD = False

LCD_LINE_1 = 0x80 # LCD RAM address for the 1st line
LCD_LINE_2 = 0xC0 # LCD RAM address for the 2nd line

# Timing constants
E_PULSE = 0.0005
E_DELAY = 0.0005


localtime = time.asctime( time.localtime(time.time()) )

def main():
 # Main program block
 GPIO.setwarnings(False)
 GPIO.setmode(GPIO.BCM)       # Use BCM GPIO numbers
 GPIO.setup(LCD_E, GPIO.OUT)  # E
 GPIO.setup(LCD_RS, GPIO.OUT) # RS
 GPIO.setup(LCD_D4, GPIO.OUT) # DB4
 GPIO.setup(LCD_D5, GPIO.OUT) # DB5
 GPIO.setup(LCD_D6, GPIO.OUT) # DB6
 GPIO.setup(LCD_D7, GPIO.OUT) # DB7

 # Initialise display
 lcd_init()

 while True:

   prvniradka=sys.argv[1]
   druharadka=sys.argv[2]

   # Send some test
   lcd_string((prvniradka),LCD_LINE_1)
   lcd_string((druharadka),LCD_LINE_2)

   time.sleep(3) # 3 second delay
 
def lcd_init():
 # Initialise display
 lcd_byte(0x33,LCD_CMD) # 110011 Initialise
 lcd_byte(0x32,LCD_CMD) # 110010 Initialise
 lcd_byte(0x06,LCD_CMD) # 000110 Cursor move direction
 lcd_byte(0x0C,LCD_CMD) # 001100 Display On,Cursor Off, Blink Off
 lcd_byte(0x28,LCD_CMD) # 101000 Data length, number of lines, font size
 lcd_byte(0x01,LCD_CMD) # 000001 Clear display
 time.sleep(E_DELAY)

def lcd_byte(bits, mode):
 # Send byte to data pins
 # bits = data
 # mode = True  for character
 #        False for command

 GPIO.output(LCD_RS, mode) # RS

 # High bits
 GPIO.output(LCD_D4, False)
 GPIO.output(LCD_D5, False)
 GPIO.output(LCD_D6, False)
 GPIO.output(LCD_D7, False)
 if bits&0x10==0x10:
   GPIO.output(LCD_D4, True)
 if bits&0x20==0x20:
   GPIO.output(LCD_D5, True)
 if bits&0x40==0x40:
   GPIO.output(LCD_D6, True)
 if bits&0x80==0x80:
   GPIO.output(LCD_D7, True)

 # Toggle 'Enable' pin
 lcd_toggle_enable()

 # Low bits
 GPIO.output(LCD_D4, False)
 GPIO.output(LCD_D5, False)
 GPIO.output(LCD_D6, False)
 GPIO.output(LCD_D7, False)
 if bits&0x01==0x01:
   GPIO.output(LCD_D4, True)
 if bits&0x02==0x02:
   GPIO.output(LCD_D5, True)
 if bits&0x04==0x04:
   GPIO.output(LCD_D6, True)
 if bits&0x08==0x08:
   GPIO.output(LCD_D7, True)

 # Toggle 'Enable' pin
 lcd_toggle_enable()

def lcd_toggle_enable():
 # Toggle enable
 time.sleep(E_DELAY)
 GPIO.output(LCD_E, True)
 time.sleep(E_PULSE)
 GPIO.output(LCD_E, False)
 time.sleep(E_DELAY)

def lcd_string(message,line):
 # Send string to display

 message = message.ljust(LCD_WIDTH," ")

 lcd_byte(line, LCD_CMD)

 i=0
 while i < len(message):
   if message[i] == "|" :
     hexadec = message[i+1:i+3]
     desit = int(hexadec, 16)
     lcd_byte(desit,LCD_CHR)
     i=i+2
   else:
     lcd_byte(ord(message[i]),LCD_CHR)
   i = i + 1

if __name__ == '__main__':

 try:
   main()
 except KeyboardInterrupt:
   pass
 finally:
   lcd_byte(0x01, LCD_CMD)
   lcd_string("Cekam",LCD_LINE_1)
   lcd_string("na data",LCD_LINE_2)
   GPIO.cleanup()

a výpis na display
Kód:
#!/bin/bash
# 2016 Cuore <r.nemcansky@seznam.cz>
# verze 0.0.1
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#---------------------------------------------------------------------------------------------------------------------------------
# Inicializace GPIO
#---------------------------------------------------------------------------------------------------------------------------------
echo "22" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio22/direction
echo "23" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio23/direction
echo "24" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio24/direction
echo "27" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio27/direction
#---------------------------------------------------------------------------------------------------------------------------------
# Zacatek smycky
#---------------------------------------------------------------------------------------------------------------------------------
cnt=0
     while [ 1 ]; do
#---------------------------------------------------------------------------------------------------------------------------------
# Konfiguracni hlavicka
#---------------------------------------------------------------------------------------------------------------------------------
         uzivatel=$(whoami)
         pc=$(uname -n)
         cpu=$(cputemp | tr -d 'C')
         gpu=$(gputemp | tr -d 'C')
         cesta="/storage/komunikace"
         cesta_disk1="toshiba"
         cesta_disk2="mybook"
         cesta_disk3="seagate"
         kom="Komunikace.txt"
         user="Prihlaseni.txt"
         ip=$(cat ~/.cache/connman/ethernet_b827ebb63149_cable/settings | grep "IPv4.DHCP.LastAddress" | cut -d '=' -f2)
         backend="raspberry"
         disk1="< $cesta/$kom | grep diskA | cut -c 7-"
         disk1=$(cat $cesta/$kom | grep diskA | cut -c 7-)
         disk2="< $cesta/$kom | grep diskB | cut -c 7-"
         disk2=$(cat $cesta/$kom | grep diskB | cut -c 7-)
         disk3="< $cesta/$kom | grep diskC | cut -c 7-"
         disk3=$(cat $cesta/$kom | grep diskC | cut -c 7-)
         restart="< $cesta/$kom | grep Restart | cut -c 9-"
         restart=$(cat $cesta/$kom | grep Restart | cut -c 9-)
         kontrola=$(grep -v $pc $cesta/$user | wc -l)
#---------------------------------------------------------------------------------------------------------------------------------
# Vypis textu
#---------------------------------------------------------------------------------------------------------------------------------

 if [ "$disk1" -eq "2" -a "$disk2" -eq "2" -a "$disk3" -eq "2" ] 2>/dev/null; then  
echo "0" > /sys/class/gpio/gpio27/value;
 else
echo "1" > /sys/class/gpio/gpio27/value;
 fi

 if [ "$cpu" -le "65" ] 2>/dev/null; then  
echo "1" > /sys/class/gpio/gpio22/value;
 else
echo "0" > /sys/class/gpio/gpio22/value;
 fi
 if [ "$cpu" -ge "65" -a "$cpu" -le "75" ] 2>/dev/null; then  
echo "1" > /sys/class/gpio/gpio23/value;
 else
echo "0" > /sys/class/gpio/gpio23/value;
 fi
 if [ "$cpu" -ge "75" -a "$cpu" -le "90" ] 2>/dev/null; then  
echo "1" > /sys/class/gpio/gpio24/value;
 else
echo "0" > /sys/class/gpio/gpio24/value;
 fi
sleep 3;
$(dirname $0)/lcd_16x2.py `(date +%a)`'   '`(date +%d.%m.%Y)` '    '`(date +%H:%M:%S)` &
pid=$!
sleep 3;
kill -9 $pid
unset pid
$(dirname $0)/lcd_16x2.py `uname -n` $ip &
pid=$!
sleep 3;
kill -9 $pid
unset pid
$(dirname $0)/lcd_16x2.py "Teplota procesor" "CPU: $cpu"'|B2C' &
pid=$!
sleep 3;
kill -9 $pid
unset pid
$(dirname $0)/lcd_16x2.py "Teplota grafika" "GPU: $gpu"'|B2C' &
pid=$!
sleep 3;
kill -9 $pid
unset pid
$(dirname $0)/lcd_16x2.py "pozadavek pro" "$cesta_disk1" &
pid=$!
sleep 3;
kill -9 $pid
unset pid
$(dirname $0)/lcd_16x2.py "2=prip.3=odpoj." "je $disk1" &
pid=$!
sleep 3;
kill -9 $pid
unset pid
$(dirname $0)/lcd_16x2.py "pozadavek pro" "$cesta_disk2" &
pid=$!
sleep 3;
kill -9 $pid
unset pid
$(dirname $0)/lcd_16x2.py "2=prip.3=odpoj." "je $disk2" &
pid=$!
sleep 3;
kill -9 $pid
unset pid
$(dirname $0)/lcd_16x2.py "pozadavek pro" "$cesta_disk3" &
pid=$!
sleep 3;
kill -9 $pid
unset pid
$(dirname $0)/lcd_16x2.py "2=prip.3=odpoj." "je $disk3" &
pid=$!
sleep 3;
kill -9 $pid
unset pid
$(dirname $0)/lcd_16x2.py "pozadavek na" "restart NAS"  &
pid=$!
sleep 3;
kill -9 $pid
unset pid
$(dirname $0)/lcd_16x2.py "0=ANO 2=NE" "je $restart" &
pid=$!
sleep 3;
kill -9 $pid
unset pid
$(dirname $0)/lcd_16x2.py "aktualni pocet" "prihlasenych:$kontrola" &
pid=$!
sleep 3;
kill -9 $pid
unset pid

 if [ -n "$(ls -A /storage/$cesta_disk1)" ] 2>/dev/null; then
$(dirname $0)/lcd_16x2.py "slozka $cesta_disk1" "neni prazdna" &
pid=$!
sleep 3;
kill -9 $pid
unset pid
 else
$(dirname $0)/lcd_16x2.py "slozka $cesta_disk1" "je prazdna" &
pid=$!
sleep 3;
kill -9 $pid
unset pid
 fi
 if [ -n "$(ls -A /storage/$cesta_disk2)" ] 2>/dev/null; then
$(dirname $0)/lcd_16x2.py "slozka $cesta_disk2" "neni prazdna" &
pid=$!
sleep 3;
kill -9 $pid
unset pid
 else
$(dirname $0)/lcd_16x2.py "slozka $cesta_disk2" "je prazdna" &
pid=$!
sleep 3;
kill -9 $pid
unset pid
 fi
 if [ -n "$(ls -A /storage/$cesta_disk3)" ] 2>/dev/null; then
$(dirname $0)/lcd_16x2.py "slozka $cesta_disk3" "neni prazdna" &
pid=$!
sleep 3;
kill -9 $pid
unset pid
 else
$(dirname $0)/lcd_16x2.py "slozka $cesta_disk3" "je prazdna" &
pid=$!
sleep 3;
kill -9 $pid
unset pid
 fi

     done
exit 0
na RasNas běží beckend který je složen ze zavaděče, který vytvoří RAMdisk a vše do nšj přesune, aby se neničila SDkarta:
Kód:
#!/bin/bash
# 2016 Cuore <r.nemcansky@seznam.cz>
# verze 0.0.3
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#----------------------------------------------------------------------------------------------------------------------------------
# BACKEND pro NAS server Raspberry
# konfigurační hlavička
#----------------------------------------------------------------------------------------------------------------------------------
                   pc=$(uname -n)
                   uzivatel=$(echo $USER)
                   cesta="$(dirname $0)"
                   velikost="100"
                   souborovysytem="ramfs"
                   nazev_slozky="RAMdisk"
                   pripojnybod="/home/$uzivatel/$nazev_slozky"
#----------------------------------------------------------------------------------------------------------------------------------
# příprava pro použití GPIO jako výstupy
#----------------------------------------------------------------------------------------------------------------------------------
raspi-gpio get 17 | grep -iq "OUTPUT" && echo "GPIO 0 je nakonfigurován, přeskakuji..." || echo "provádím konfiguraci GPIO 0"; raspi-gpio set 17 op dl  
raspi-gpio get 18 | grep -iq "OUTPUT" && echo "GPIO 1 je nakonfigurován, přeskakuji..." || echo "provádím konfiguraci GPIO 1"; raspi-gpio set 18 op dl
raspi-gpio get 27 | grep -iq "OUTPUT" && echo "GPIO 2 je nakonfigurován, přeskakuji..." || echo "provádím konfiguraci GPIO 2"; raspi-gpio set 27 op dl
raspi-gpio get 22 | grep -iq "OUTPUT" && echo "GPIO 3 je nakonfigurován, přeskakuji..." || echo "provádím konfiguraci GPIO 3"; raspi-gpio set 22 op dl
raspi-gpio get 23 | grep -iq "OUTPUT" && echo "GPIO 4 je nakonfigurován, přeskakuji..." || echo "provádím konfiguraci GPIO 4"; raspi-gpio set 23 op dl
raspi-gpio get 24 | grep -iq "OUTPUT" && echo "GPIO 5 je nakonfigurován, přeskakuji..." || echo "provádím konfiguraci GPIO 5"; raspi-gpio set 24 op dl
raspi-gpio get 25 | grep -iq "OUTPUT" && echo "GPIO 6 je nakonfigurován, přeskakuji..." || echo "provádím konfiguraci GPIO 6"; raspi-gpio set 25 op dl
raspi-gpio get 4 | grep -iq "OUTPUT" && echo "GPIO 7 je nakonfigurován, přeskakuji..." || echo "provádím konfiguraci GPIO 7"; raspi-gpio set 4 op dl
#----------------------------------------------------------------------------------------------------------------------------------
# kontrola jestli neběží předchozí proces, případné zabití
#----------------------------------------------------------------------------------------------------------------------------------
pid=$(ps -e | grep "runnas.sh" | sed 's/^ *//;s/ *$//' | grep -v $$ | cut -d' ' -f1)
echo "nalezen předchozí proces s PID:"$pid" zabíjím"
kill -9 $pid 2>/dev/null;
#----------------------------------------------------------------------------------------------------------------------------------
# kontrola RAMdisku, pokud není vytvořen, tak se vytvoří nový
#----------------------------------------------------------------------------------------------------------------------------------
echo "kontroluji RAMdisk"
mount | grep "RAMdisk" && echo "RAMdisk nalezen" || {
echo "Vytvářím RAMdisk v "$pripojnybod" o velikosti "$velikost"MB a typu "$souborovysytem".";
find $pripojnybod;
 if [ "$PIPESTATUS" -ne "0" ] 2>/dev/null; then
echo "vytvářím přípojný bod"
sudo mkdir $pripojnybod;
 fi
echo "přiděluji práva složky"
sudo mount -t $souborovysytem -o size=$velikost"M" $souborovysytem $pripojnybod;
sudo chown -R $uzivatel:$uzivatel $pripojnybod;
sudo chmod 777 $pripojnybod;
sudo /etc/init.d/samba restart;
echo "kopíruji se na RAMdisk";
cp $cesta/cekani.sh /home/$uzivatel/RAMdisk;
cp $cesta/pripojeni.sh /home/$uzivatel/RAMdisk;
cp $cesta/ping.sh /home/$uzivatel/RAMdisk;
cp $cesta/Komunikace.txt /home/$uzivatel/RAMdisk;
cp $cesta/Prihlaseni.txt /home/$uzivatel/RAMdisk;
}
#----------------------------------------------------------------------------------------------------------------------------------
# přenos programu na RAMdisk a jeho spuštění
#----------------------------------------------------------------------------------------------------------------------------------
echo "spouštím se z RAMdisku"
/home/$uzivatel/RAMdisk/cekani.sh &
PID=$!
sleep 5 &
pid=$PID
unset PID
  while [ $? -eq 0 ]; do
  for x in / - \\ \|; do
echo -ne "skenuji $x \r";
sleep 1;
  done
kill -0 $pid 2>/dev/null;
  done
#----------------------------------------------------------------------------------------------------------------------------------
# pokud se backend ukončil, restartuji NAS
#----------------------------------------------------------------------------------------------------------------------------------
echo "vypínám" $pc
echo "Odmountovávám RAMdisk..."
sudo rm -rv $pripojnybod;
sudo umount -l $pripojnybod;
sudo rmdir -v $pripojnybod;
sudo swapoff -a && sudo swapon -a;
out1=$(raspi-gpio get 17 | cut -d '=' -f2 | cut -d ' ' -f1);
out2=$(raspi-gpio get 18 | cut -d '=' -f2 | cut -d ' ' -f1);
out3=$(raspi-gpio get 27 | cut -d '=' -f2 | cut -d ' ' -f1);
echo "napájení pro diskA $out1"
echo "napájení pro diskB $out2"
echo "napájení pro diskC $out3"
     if [ "$out1" -eq "1" ]; then
        if [ "$out2" -eq "1" ]; then
           if [ "$out3" -eq "1" ]; then
sleep 18m;
raspi-gpio set 17 op dl;
raspi-gpio set 18 op dl;
raspi-gpio set 27 op dl;
echo "vypínám diskA, diskB a diskC";
     else
echo "diskC je bez napětí";
     fi
sleep 18m;
raspi-gpio set 17 op dl;
raspi-gpio set 18 op dl;
echo "vypínám diskA a diskB";
     else
echo "diskB je bez napětí";
     fi
sleep 15m;
raspi-gpio set 17 op dl;
echo "vypínám diskA";
     else
echo "diskA je bez napětí";
     fi
out2=$(raspi-gpio get 18 | cut -d '=' -f2 | cut -d ' ' -f1);
     if [ "$out2" -eq "1" ]; then
sleep 18m;
raspi-gpio set 18 op dl;
echo "vypínám diskB";
     else
echo "diskB je bez napětí";
     fi
out3=$(raspi-gpio get 27 | cut -d '=' -f2 | cut -d ' ' -f1);
     if [ "$out3" -eq "1" ]; then
sleep 18m;
raspi-gpio set 27 op dl;
echo "vypínám diskC";
     else
echo "diskC je bez napětí";
     fi
unset out1
unset out2
unset out3
unset nazev_slozky
unset uzivatel
unset velikost
unset souborovysytem
unset pripojnybod
unset cesta
unset pc

sleep 15;
sudo reboot

exit 0
pak smyčka, která číhá na frontendy:
Kód:
#!/bin/bash
# 2016 Cuore <r.nemcansky@seznam.cz>
# verze 0.0.3
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#----------------------------------------------------------------------------------------------------------------------------------
# BACKEND pro NAS server Raspberry
# kontrola běžícího procesu, pokud je nalezen předchozí proces, je zabit
#----------------------------------------------------------------------------------------------------------------------------------
echo 'spouštím hlídání účastníků je:' `date`
sleep 5;
pid=$(ps -e | grep "cekani.sh" | sed 's/^ *//;s/ *$//' | grep -v $$ | cut -d' ' -f1)
echo "nalezen předchozí proces s PID:"$pid" zabíjím"
kill -9 $pid 2>/dev/null;
#----------------------------------------------------------------------------------------------------------------------------------
# Konfigurační hlavička
#----------------------------------------------------------------------------------------------------------------------------------
                   uzivatel=$(echo $USER)
                   pc=$(uname -n)
                   cesta="$(dirname $0)"
                   kom="Komunikace.txt"
                   user="Prihlaseni.txt"
                   restart="< $cesta/$kom | grep Restart | cut -c 9-";
                   restart=$(cat $cesta/$kom | grep Restart | cut -c 9-);
#----------------------------------------------------------------------------------------------------------------------------------
# Kontrola jestli backend nebyl vzdáleně restartován, pokud ano přepíši zpět
#----------------------------------------------------------------------------------------------------------------------------------
 if [ "$restart" -eq "0" ] 2>/dev/null; then
sed -i '/Restart/s/0/2/' $cesta/$kom;
 fi
sed -i "/^$pc/d" $cesta/$user;
#----------------------------------------------------------------------------------------------------------------------------------
# Přihlášení se do síťe
#----------------------------------------------------------------------------------------------------------------------------------
echo `uname -n` `hostname -I | cut -d' ' -f1` `date` >> $cesta/$user
#----------------------------------------------------------------------------------------------------------------------------------
# Začátek smyčky
#----------------------------------------------------------------------------------------------------------------------------------
          cnt=0
     until [ "$cnt" = "2" ]; do
          cnt=$[cnt+1]
#----------------------------------------------------------------------------------------------------------------------------------
# Vyčtení stavu disků
#----------------------------------------------------------------------------------------------------------------------------------
         disk1="< $cesta/$kom | grep diskA | cut -c 7-"
         disk1=$(cat $cesta/$kom | grep diskA | cut -c 7-)
         disk2="< $cesta/$kom | grep diskB | cut -c 7-"
         disk2=$(cat $cesta/$kom | grep diskB | cut -c 7-)
         disk3="< $cesta/$kom | grep diskC | cut -c 7-"
         disk3=$(cat $cesta/$kom | grep diskC | cut -c 7-)
         restart="< $cesta/$kom | grep Restart | cut -c 9-"
         restart=$(cat $cesta/$kom | grep Restart | cut -c 9-)
#----------------------------------------------------------------------------------------------------------------------------------
# Prohledání, jestli je přihlášený nějaký frontend a spuštění scriptu pro připojení
#----------------------------------------------------------------------------------------------------------------------------------
echo "požadavek pro diskA je" $disk1
echo "požadavek pro diskB je" $disk2
echo "požadavek pro diskC je" $disk3
kontrola=$(grep -v $pc $cesta/$user | wc -l);
echo "pokud se někdo přihlásil mám > 0 - počet přihlášených:"$kontrola;
$cesta/pripojeni.sh $kontrola;
#----------------------------------------------------------------------------------------------------------------------------------
# Kontrola jestli neni požadavek na restart NAS
#----------------------------------------------------------------------------------------------------------------------------------
echo "požadavek na restart NAS:" $restart
 if [ "$cnt" -eq "$restart" ] 2>/dev/null; then
          cnt=0;
 fi
sleep 5;
#----------------------------------------------------------------------------------------------------------------------------------
# Vypnutí napájení
#----------------------------------------------------------------------------------------------------------------------------------
out1=$(raspi-gpio get 17 | cut -d '=' -f2 | cut -d ' ' -f1);
out2=$(raspi-gpio get 18 | cut -d '=' -f2 | cut -d ' ' -f1);
out3=$(raspi-gpio get 27 | cut -d '=' -f2 | cut -d ' ' -f1);
     if [ "$out1" -eq "1" -a "$disk1" -eq "3" ]; then
offA=$[offA+1]
     else
offA=0
     fi
     if [ "$out2" -eq "1" -a "$disk2" -eq "3" ]; then
offB=$[offB+1]
     else
offB=0
     fi
     if [ "$out3" -eq "1" -a "$disk3" -eq "3" ]; then
offC=$[offC+1]
     else
offC=0
     fi
echo "vypnout diskA $offA"
echo "vypnout diskB $offB"
echo "vypnout diskC $offC"
unset out1
unset out2
unset out3
  if [ "$offA" -ge "180" ]; then
raspi-gpio set 17 op dl;
echo "vypínám diskA";
  fi
  if [ "$offB" -ge "210" ]; then
raspi-gpio set 18 op dl;
echo "vypínám diskB"
  fi
  if [ "$offC" -ge "210" ]; then
raspi-gpio set 27 op dl;
echo "vypínám diskC"
  fi
     done
#----------------------------------------------------------------------------------------------------------------------------------
# Konec smyčky a odhlášení se ze sítě
#----------------------------------------------------------------------------------------------------------------------------------
sed -i "/^$pc/d" $cesta/$user;

unset restart
unset cnt
unset pc
unset kontrola
unset cesta
unset kom
unset user
unset disk1
unset disk2
unset disk3

exit 0
připojování požadovaných disků:
Kód:
#!/bin/bash
# 2016 Cuore <r.nemcansky@seznam.cz>
# verze 0.0.3
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#----------------------------------------------------------------------------------------------------------------------------------
# BACKEND pro NAS server Raspberry
# script pro připojení disků do sítě
#----------------------------------------------------------------------------------------------------------------------------------
echo "spouštím script pro připojení"
#----------------------------------------------------------------------------------------------------------------------------------
# Konfigurační hlavička a vzčtení stavu disků
#----------------------------------------------------------------------------------------------------------------------------------
                   pc=$(uname -n)
                   cesta="$(dirname $0)"
                   kom="Komunikace.txt"
                   user="Prihlaseni.txt"
         disk1="< $cesta/$kom | grep diskA | cut -c 7-"
         disk1=$(cat $cesta/$kom | grep diskA | cut -c 7-)
         disk2="< $cesta/$kom | grep diskB | cut -c 7-"
         disk2=$(cat $cesta/$kom | grep diskB | cut -c 7-)
         disk3="< $cesta/$kom | grep diskC | cut -c 7-"
         disk3=$(cat $cesta/$kom | grep diskC | cut -c 7-)
#----------------------------------------------------------------------------------------------------------------------------------
# Vyčtení kdo je přihlášen a kontrola jestli je online
#----------------------------------------------------------------------------------------------------------------------------------
  if [ "$1" -ne "0" ] 2>/dev/null; then
echo "je přihlášen:"
while read radek; do
 echo $radek;
done < $cesta/$user;
$cesta/ping.sh $cesta/$user $pc;
 else
 echo "nikdo není přihlášen";
#----------------------------------------------------------------------------------------------------------------------------------
# Připojení disků, pokud je požadavek od Frontendu
#----------------------------------------------------------------------------------------------------------------------------------
    if [ "$disk1" -eq "1" -a "$1" -eq "0" ] 2>/dev/null; then
  sed -i '/diskA/s/1/3/' $cesta/$kom;
    fi
       if [ "$disk2" -eq "1" -a "$1" -eq "0" ] 2>/dev/null; then
  sed -i '/diskB/s/1/3/' $cesta/$kom;
       fi
          if [ "$disk3" -eq "1" -a "$1" -eq "0" ] 2>/dev/null; then
  sed -i '/diskC/s/1/3/' $cesta/$kom;
          fi
             if [ "$disk1" -eq "2" -a "$1" -eq "0" ] 2>/dev/null; then
  sed -i '/diskA/s/2/0/' $cesta/$kom;
             fi
                if [ "$disk2" -eq "2" -a "$1" -eq "0" ] 2>/dev/null; then
  sed -i '/diskB/s/2/0/' $cesta/$kom;
                fi
                   if [ "$disk3" -eq "2" -a "$1" -eq "0" ] 2>/dev/null; then
  sed -i '/diskC/s/2/0/' $cesta/$kom;
                   fi
    fi
 if [ "$disk1" -eq "1" -a "$1" -ne "0" ] 2>/dev/null; then
   echo "připojuji diskA";
out1=$(raspi-gpio get 17 | cut -d '=' -f2 | cut -d ' ' -f1);
     if [ "$out1" -eq "0" ]; then
raspi-gpio set 17 op dh;
echo "zapínám diskA";
echo "kontroluji jestli neni požadavek pro připojení diskuB";
out2=$(raspi-gpio get 18 | cut -d '=' -f2 | cut -d ' ' -f1);
        if [ "$disk2" -eq "1" -a "$out2" -eq "0" ] 2>/dev/null; then
raspi-gpio set 18 op dh;
echo "zapínám diskB";
        else
echo "diskB je pod napětím, nebo neni pozadavek pro pripojeni";
        fi
echo "kontroluji jestli neni požadavek pro připojení diskuC";
out3=$(raspi-gpio get 27 | cut -d '=' -f2 | cut -d ' ' -f1);
        if [ "$disk3" -eq "1" -a "$out3" -eq "0" ] 2>/dev/null; then
raspi-gpio set 27 op dh;
echo "zapínám diskC";
        else
echo "diskC je pod napětím, nebo neni pozadavek pro pripojeni";
        fi
     else
echo "diskA je pod napětím";
     fi
unset out1;
unset out2;
unset out3;
sudo mount -o uid=pi,gid=pi -L TOSHIBA /media/pi/TOSHIBA;
case $? in
   0)
       echo "připojeno"
  sed -i '/diskA/s/1/2/' $cesta/$kom
       ;;
   1)
       echo "chyba připojení, zařízení je již připojené, nebo nenalezeno"
sudo umount /media/pi/TOSHIBA
       ;;
   2)
       echo "systémová chyba"
       ;;
   4)
       echo "vnitřní chyba připojení"
       ;;
   8)
       echo "přerušení uživatelem"
       ;;
   32)
       echo "chyba připojení, zařízení je již připojené?"
sudo umount /media/pi/TOSHIBA
       ;;
   16)
       echo "potíže se zápisem nebo zamknutí /etc/mtab, zařízení je již připojené?"
sudo umount /media/pi/TOSHIBA
       ;;
   64)
       echo "něco se podařilo připojit"
  sed -i '/diskA/s/1/2/' $cesta/$kom
       ;;
  -1)
       echo "něco se podělalo"
    ;;
esac
 fi
 if [ "$disk1" -eq "0" ] 2>/dev/null; then
   echo "odpojuji diskA";
sudo umount /media/pi/TOSHIBA;
sed -i '/diskA/s/0/3/' $cesta/$kom;
 fi
 if [ "$disk2" -eq "1" -a "$1" -ne "0" ] 2>/dev/null; then
   echo "připojuji diskB";
out2=$(raspi-gpio get 18 | cut -d '=' -f2 | cut -d ' ' -f1);
     if [ "$out2" -eq "0" ]; then
raspi-gpio set 18 op dh;
echo "zapínám diskB";
     else
echo "diskB je pod napětím";
     fi
unset out2;
sudo mount -o uid=pi,gid=pi -L 'My Book' '/media/pi/My Book';
case $? in
   0)
       echo "připojeno"
  sed -i '/diskB/s/1/2/' $cesta/$kom
       ;;
   1)
       echo "chyba připojení, zařízení je již připojené, nebo nenalezeno"
sudo umount '/media/pi/My Book'
       ;;
   2)
       echo "systémová chyba"
       ;;
   4)
       echo "vnitřní chyba připojení"
       ;;
   8)
       echo "přerušení uživatelem"
       ;;
   32)
       echo "chyba připojení, zařízení je již připojené?"
sudo umount '/media/pi/My Book'
       ;;
   16)
       echo "potíže se zápisem nebo zamknutí /etc/mtab, zařízení je již připojené?"
sudo umount '/media/pi/My Book'
       ;;
   64)
       echo "něco se podařilo připojit"
  sed -i '/diskB/s/1/2/' $cesta/$kom
       ;;
  -1)
       echo "něco se podělalo"
    ;;
esac
 fi
 if [ "$disk2" -eq "0" ] 2>/dev/null; then
   echo "odpojuji diskB";
sudo umount '/media/pi/My Book';
sed -i '/diskB/s/0/3/' $cesta/$kom;
 fi
 if [ "$disk3" -eq "1" -a "$1" -ne "0" ] 2>/dev/null; then
   echo "připojuji diskC";
out3=$(raspi-gpio get 27 | cut -d '=' -f2 | cut -d ' ' -f1);
     if [ "$out3" -eq "0" ]; then
raspi-gpio set 27 op dh;
echo "zapínám diskC";
     else
echo "diskC je pod napětím";
     fi
unset out3;
sudo mount -o uid=pi,gid=pi -L 'Seagate Expansion Drive' '/media/pi/Seagate Expansion Drive';
case $? in
   0)
       echo "připojeno"
  sed -i '/diskC/s/1/2/' $cesta/$kom
       ;;
   1)
       echo "chyba připojení, zařízení je již připojené, nebo nenalezeno"
sudo umount '/media/pi/Seagate Expansion Drive'
       ;;
   2)
       echo "systémová chyba"
       ;;
   4)
       echo "vnitřní chyba připojení"
       ;;
   8)
       echo "přerušení uživatelem"
       ;;
   32)
       echo "chyba připojení, zařízení je již připojené?"
sudo umount '/media/pi/Seagate Expansion Drive'
       ;;
   16)
       echo "potíže se zápisem nebo zamknutí /etc/mtab, zařízení je již připojené?"
sudo umount '/media/pi/Seagate Expansion Drive'
       ;;
   64)
       echo "něco se podařilo připojit"
  sed -i '/diskC/s/1/2/' $cesta/$kom
       ;;
  -1)
       echo "něco se podělalo"
    ;;
esac
 fi
 if [ "$disk3" -eq "0" ] 2>/dev/null; then
   echo "odpojuji diskC";
sudo umount '/media/pi/Seagate Expansion Drive';
sed -i '/diskC/s/0/3/' $cesta/$kom;
 fi
unset pc
unset kontrola
unset cesta
unset kom
unset user
unset disk1
unset disk2
unset diskC
echo "ukončuji script pro připojení"
exit 0
a ping pro kontrolu frontendů:
Kód:
#!/bin/bash
# 2016 Cuore <r.nemcansky@seznam.cz>
# verze 0.0.1
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#----------------------------------------------------------------------------------------------------------------------------------
# BACKEND pro NAS server Raspberry
# script pro ping frontendu
#----------------------------------------------------------------------------------------------------------------------------------
echo "spouštím script pro ping"
date
cat $1 | grep -v $2 | cut -d ' ' -f2 | while read output
do
   ping -c 10 "$output" > /dev/null
   if [ $? -eq 0 ]; then
echo "zařízení s IP $output odpovídá";
   else
smazat=$(cat $1 | grep $output | cut -d ' ' -f1);
echo "zařízení $smazat s IP $output neodpovídá";
sed -i "/^$smazat/d" $1;
   fi
done
echo "ukončuji script pro ping"
exit 0
a nakonec komunikační soubory pro kecání s frontendem, přihlášení uživatelé v síti:
Kód:
raspberrypi 192.168.4.9 St zář 7 13:21:07 CEST 2016
a požadavky na diky a restart NAS:
Kód:
Restart 2
diskA 3
diskB 3
diskC 3
Na běžném PC je manuální Frontend s GUI, kde se dá připojit každý disk zvlášť viz. foto Jestli chceš program dám ho sem taky.
Pokud bude zájem o použitý hardware dodám taky...
 
Citovat
#10
Dík za objasnění Thumbup jsem si říkal že v tom bude nějaká chytrá destičku 6 . Celkem by mě zajímalo jak dlouho trvalo sestavit to tvoje HTPi, určitě to nebude jednodenní záležitost ....
RPi 2 - BerryBoot - LibreELEC 7.0.2 + Retropie 4.0.2 + Raspbian PIXEL + LibreELEC Krypton 7.90.006
 
Citovat
#11
Pokud máš na mysli hardwarové sestavení, tak to zabralo jeden den a další den jsem si pohrál s vyřezáváním a vrtáním otvorů do víka.
 
Citovat
#12
Smile 
Tak už jsem tomu na stopě, ale když jsem našel tohle, je to moc pěkné, že uvažuji o předělávku na TFT
[Only registered and activated users can see links Click here to register]
 
Citovat
#13
To jsem zvědav, jestli se ti info na displej podaří rozchodit i pod Openelec.

Trochu jsem brouzdal po netu a našel jsem celkem zajímavý dotykáč, který je programovatelný pomocí dodávaného editoru: [Only registered and activated users can see links Click here to register]
RPi 2 - BerryBoot - LibreELEC 7.0.2 + Retropie 4.0.2 + Raspbian PIXEL + LibreELEC Krypton 7.90.006
 
Citovat
#14
Něco podobného jsem měl kdysi u STB Dreamboxu jako externí info panel, taková "blbůstka" na hraní, ale bylo to docela zajímavé a vypadalo to těžce "cool".
Nějak takto se to vše tvářilo - jen jsem používal větší 10 palcový rámeček SPF-107H, mimochodem ten jede jak z praku pořád a že je mu už drahně let 1 :



3x RPi2B → LibreELEC  arm-7.0.2 \ 1x RPi3B → LibreELEC arm-7.0.2 \ HTPC → LibreELEC Generic x86_64-7.0.2 \ NAS Synology 212J → DSM 6.0.2


 
Citovat
#15
Našel jsem poměrně pěkně sepsaný návod k zprovoznění posílání informací na displej (HD44780) z Openelec/Libreelec : [Only registered and activated users can see links Click here to register]

Je možné použít rozdílné nastavení při různých režimech přehrávání (video, music, pvr...), dále informace o stavu (teplota, frekvence, čas, volné místo na disku....) či navolit speciální znaky (ikony), velikost pisma atd.
Veškeré nastavení se konfiguruje v souboru LCD.xml :[Only registered and activated users can see links Click here to register]
a něco málo přes doplněk přímo v Kodi : [Only registered and activated users can see links Click here to register]

Informační popisky, které lze posílat na displej jsou vypsány zde: [Only registered and activated users can see links Click here to register]
RPi 2 - BerryBoot - LibreELEC 7.0.2 + Retropie 4.0.2 + Raspbian PIXEL + LibreELEC Krypton 7.90.006
 
Citovat
#16
To vypadá schůdně :-)
 
Citovat
#17
Tohle se mi taky líbí, kdo to udělá jako první?
 
Citovat
  


Přejít na fórum:


Prochází: 1 host(ů)