Portál AbcLinuxu, 4. května 2025 16:14

Dotaz: Skriptování v Libreelec

27.8.2024 13:05 ajne
Skriptování v Libreelec
Přečteno: 643×
Odpovědět | Admin
Zdravím,

rád bych poprosil zkušenější o radu. Doma mám Rpi 4 s OS Libreelec. Malinu jsem si umístil do vlastní bedny a mám přes GPO řízený ventilátor (dle teploty CPU) a kontrolku běhu OS. Nejsem žádný zkušený skriptér, skrip co to všechni řídí jsem našel na netu a s drobným pochopením jeho funkce jej upravil pro své potřeby. Tento skript mi roky fungoval, s vědomím, že není nijak učesaný, ale funkční, jsem dle hesla - funguje-li to, nehrab do toho. Nicméně mám nyní problém, pokud se pokusím Libreelec aktualizovat na poslední verzi 12, skript přestává fungovat. A jelikož nejsem odborník, tak nevím, co se v nové verzi OS změnilo, že skript neběhá. Je třeba změnit umístění, oprávnění, nebo něco jiného? Opravdu nevím, kterým směrem koukat.

Jeho současná podoba je tato, jedná se o dva soubory v tomto umístěni:

\storage\config\autostart.sh

\storage\pi\rpi4chtc.sh

Oba soubory mají práva 0755.

Soubor autostart.sh obsahuje pouze odkaz na samotný skript:

#/bin/sh

nohup /storage/pi/./rpi4chtc.sh &

)&

A soubor rpi4chtc.sh obsahuje:

#!/bin/bash

echo "17" > /sys/class/gpio/export # aktivuje GPIO17

echo "out" > /sys/class/gpio/gpio17/direction #nastavi GPIO17 jako vystup echo "18" > /sys/class/gpio/export # aktivuje GPIO18

echo "out" > /sys/class/gpio/gpio18/direction #nastavi GPIO18 jako vystup

while [ "1" = "1" ] #nekonecna smycka

do

TEPLOTA=`vcgencmd measure_temp | cut -c 6-7` #zjisti teplotu procesoru

VETRAK=`cat /sys/class/gpio/gpio17/value`

if [ $TEPLOTA -lt 45 ]; then #vypne chlazeni pokud je teplota mensi nez 45 echo 0 > /sys/class/gpio/gpio17/value fi

if [ $TEPLOTA -gt 50 ]; then #zapne ventilator pokud je teplota vyssi nez 50 echo 1 > /sys/class/gpio/gpio17/value fi

if [ $VETRAK == 1 ] || [ $VETRAK == 0 ]; then #rozsviti LED pri startu echo 1 > /sys/class/gpio/gpio18/value fi sleep 60s # ceka 60s done

Předpokládám, že skript samotný funguje stále stejně, problém bude s jeho spuštěním. Ale nevím, jakou provést úpravu, zda autostart musí být někde jinde, nebo je třeba spustit skript jinak...

Poradíte prosím?

Předem děkuji.

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

27.8.2024 14:55 pavele
Rozbalit Rozbalit vše Re: Skriptování v Libreelec
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zdravím, Předpokládám, že skript samotný funguje stále stejně, problém bude s jeho spuštěním. Ale nevím, jakou provést úpravu, zda autostart musí být někde jinde, nebo je třeba spustit skript jinak...

Začal bych ověřením, že skript funguje i s novou verzí Libreelec 12.


Pokud samotný skript spustíš z příkazové řádky, funguje?

Možná bude něco tady:
"The root cause of your script is that the usage of sysfs-gpio is deprecated. 
Now with kernels > 6.5 it was changed. You should first inspect which gpiochips are presented in your case."

https://forum.libreelec.tv/thread/28407-problem-with-autostart-sh-on-rpi-4-libreelec-11-95-1-omega/
28.8.2024 06:38 ajne
Rozbalit Rozbalit vše Re: Skriptování v Libreelec
Zdravím,

děkuji za nasměrování na možnou cestu. Že se mohl změnit způsob ovládání přímo GPIO pinů mne vůbec nenapadlo. To budu muset vyzkoušet, hned jak se dostanu k zařízení.
27.8.2024 17:00 X
Rozbalit Rozbalit vše Re: Skriptování v Libreelec
Odpovědět | | Sbalit | Link | Blokovat | Admin
a] 0755 jsou prava pro adresare, soubory maji mit 0644..

b] ')&' <- bordel pri vkladani?

c] /storage/pi/./rpi4chtc.sh => /storage/pi/rpi4chtc.sh

d] while [ "1" = "1" ] => while 1

e] `...` => "$(...)"

f] $TEPLOTA => "$TEPLOTA"

g] [ $VETRAK == 1 ] || [ $VETRAK == 0 ] => Logicky zbytecna podminka.

h] Nikde nemas navratovy kod ie. 'exit 0'
28.8.2024 06:47 ajne
Rozbalit Rozbalit vše Re: Skriptování v Libreelec

Zdravím, jak jsem psal, čistota kódu je nulová. Nerozumím tomu moc a dělal jsem to před lety, takže jsem vycházel z nějakých hotových skriptů na netu a přiohnul je svým potřebám. Jak říkám, fungovalo to přesně jak jsem potřeboval, takže jsem to již nechal ve fázi jak to bylo a roky používal. K bodům:

a) Z někoho jsem vycházel, práva mohu snadno změnit.

b) To není bordel při vkládání, skutečně to tam mám. Vycházel jsem z nějakého kódu na webu. Dávno nevím kde.

c) až f) Opět jsem vycházel ze vzoru.

g) Tento paskvil je můj výtvor, nevím proč mi tenkrát nešlo nastavit, aby se prostě zapnul GPIO do 1. S tímto patvarem to roky fungovalo...

h) To znamená co?

28.8.2024 06:50 ajne
Rozbalit Rozbalit vše Re: Skriptování v Libreelec
Přílohy:
Přikládám skripty jak vypadají, při přepisu se mi rozházely.
28.8.2024 10:42 X
Rozbalit Rozbalit vše Re: Skriptování v Libreelec
Prepsal jsem to do trochu lepsiho tvaru:

Prvni:
#/bin/sh
nohup /storage/pi/rpi4chtc.sh &
exit 0
Druhy:
#!/bin/bash
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
echo 1 > /sys/class/gpio/gpio18/value

while true
do

TEPLOTA="$(vcgencmd measure_temp | cut -c 6-7)" 

if [ "$TEPLOTA" -lt 45 ]; then
  echo 0 > /sys/class/gpio/gpio17/value
fi
if [ "$TEPLOTA" -gt 50 ]; then
  echo 1 > /sys/class/gpio/gpio17/value
fi

sleep 60
done
Misto prikazu vcgencmd bych pouzil hodnotu z /sys/class/thermal/thermal_zone0/temp.
28.8.2024 14:04 X
Rozbalit Rozbalit vše Re: Skriptování v Libreelec
Mimochodem RPi ma vlastni gpio-fan overlay, takze cele by to slo resit jeste elegantneji.
28.8.2024 15:18 ajne
Rozbalit Rozbalit vše Re: Skriptování v Libreelec
Wow, děkuji za všechny informace i upravené skripty. Musím si k tomu sednout a otestovat to, včetně té úpravy GPIO uvedené výše, zda vše bude chodit.

Jinak k tomu ovládání ventilátoru přímo přes integrovanou utilitu - v době, kdy jsem tento skript skládal dohromady, tak to ještě nebylo součástí. Dnes je to díky tomu již obsolete řešení, ale tenkrát nic lepšího nebylo. Jelikož ale potřebuji nahodit ještě GPIO s LED indikující náběh systému, tak stejně nějaký skript potřebuji. Zkusím tedy zde doporučené úpravy, a snad to zase rozchodím.
28.8.2024 15:54 X
Rozbalit Rozbalit vše Re: Skriptování v Libreelec
I ta LED se da zapnout pomoci GPIO overlay..
1.9.2024 14:10 ajne
Rozbalit Rozbalit vše Re: Skriptování v Libreelec
Odpovědět | | Sbalit | Link | Blokovat | Admin

Pánové, rád bych Vám oběma chtěl poděkovat. Vše je již zase funkční i v nové verzi Libreelec. Využil jsem oba poznatky, tj. nastavil nová správná čísla GPIO pinů (v mém případě u RPi4 bylo třeba přičíst koeficient 512), a poté jsem použil uhlazený vzhled skriptu.

Funguje to na jedničku, tedy ještě jednou, moc děkuji za pomoc.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.