Zapinaci/Vypinaci tlacitko na desce

Odpovědět
knedlicek5
Příspěvky: 3
Registrován: úte 03. srp 2021 16:42:21

Zapinaci/Vypinaci tlacitko na desce

Příspěvek od knedlicek5 » úte 10. srp 2021 17:38:58

Zdravim,
Zakoupil jsem si RPi 4B a k tomu jako UPSku Suptronics X728 "https://rpishop.cz/rozsirujici-karty/31 ... ery=SUP021". Na desce je zapinaci/vypinaci tlacitko.
Postupoval jsem podle navodu na strankch vyrobce, stahnul pozadovany skript, instaloval ho, pouzil prikaz na konfiguraci vypinani.
Predpokladal jsem ze po provedeni kroku co pise vyrobce desky, bude tlacitko integrovano do systemu a bude fungovat pri podrzeni tlacitka restartování 1-2s, bezpečné vypnutí 3-7s, vynucené vypnutí <8s. Funguje jen tech 8s. :-)
Prikaz na vypis kolik zbyva baterek funguje.
Prikaz na SW vypnuti vypise ze se zarizeni vypina, ale bezi to dal.
Můžete mi prosím nekdo poradit jak se vyznat ve skriptech? V adresari RPi jsem nasel ten stazeny skript od vyrobce a pak samotne skripty na vypis tech baterek a toho uspani.

Vypinaci skript:
#!/bin/bash
BUTTON=13
echo "$BUTTON" > /sys/class/gpio/export;
echo "out" > /sys/class/gpio/gpio$BUTTON/direction
echo "1" > /sys/class/gpio/gpio$BUTTON/value
SLEEP=${1:-4}
re=^[0-9.]+
if ! [[ $SLEEP =~ $re ]] ; then
echo "error: sleep time not a number" >&2; exit 1
fi
echo "X728 Shutting down..."
/bin/sleep $SLEEP
#restore GPIO 13
echo "0" > /sys/class/gpio/gpio$BUTTON/value
Diky za info jak bych mohl postupovat dal.
Jestli to neni nad me schopnosti a nechal bych to na nekoho kdo tomu rozumi. Ja jsem da se rici skoncil u prikazove radky v DOSu. :-)
Uživatelský avatar
PetrSmetana
Příspěvky: 310
Registrován: pon 22. črc 2019 9:06:45
Bydliště: Mnich
Dal poděkování: 28 poděkování
Dostal poděkování: 60 poděkování
Kontaktovat uživatele:

Re: Zapinaci/Vypinaci tlacitko na desce

Příspěvek od PetrSmetana » stř 11. srp 2021 7:31:33

Ahoj, tenhle skript určitě nic nevipíná. Pošle jedničku na pin13 a pak tam hodí zase nulu ... žádný shutdown/poweroff příkaz ... vůbec nevím, co zajišťuje čtení z portu - systemd / nějaký cyklus - chybí komplet logika ... a hlavně čtení a možná evaluace.
Modré z nebe na počkání, zázraky do dvou dnů.
Uživatelský avatar
pasta
Příspěvky: 50
Registrován: čtv 07. led 2021 9:21:18
Dal poděkování: 1 poděkování
Dostal poděkování: 3 poděkování

Re: Zapinaci/Vypinaci tlacitko na desce

Příspěvek od pasta » stř 11. srp 2021 7:36:11

Zkuste tento návod:

Kód: Vybrat vše

http://www.suptronics.com/miniPCkits/x728-software.html
P.
knedlicek5
Příspěvky: 3
Registrován: úte 03. srp 2021 16:42:21

Re: Zapinaci/Vypinaci tlacitko na desce

Příspěvek od knedlicek5 » pát 13. srp 2021 23:01:13

pasta píše:
stř 11. srp 2021 7:36:11
Zkuste tento návod:

Kód: Vybrat vše

http://www.suptronics.com/miniPCkits/x728-software.html
P.
Prave podle tohoto navodu jsem postupoval.
Uživatelský avatar
pasta
Příspěvky: 50
Registrován: čtv 07. led 2021 9:21:18
Dal poděkování: 1 poděkování
Dostal poděkování: 3 poděkování

Re: Zapinaci/Vypinaci tlacitko na desce

Příspěvek od pasta » sob 14. srp 2021 5:26:26

No a toto je ten script na vypínací knoflík.

Kód: Vybrat vše

#x728 Powering on /reboot /full shutdown through hardware
#!/bin/bash

    sudo sed -e '/shutdown/ s/^#*/#/' -i /etc/rc.local

    echo '#!/bin/bash

SHUTDOWN=5
REBOOTPULSEMINIMUM=200
REBOOTPULSEMAXIMUM=600
echo "$SHUTDOWN" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio$SHUTDOWN/direction
BOOT=12
echo "$BOOT" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio$BOOT/direction
echo "1" > /sys/class/gpio/gpio$BOOT/value

echo "X728 Shutting down..."

while [ 1 ]; do
  shutdownSignal=$(cat /sys/class/gpio/gpio$SHUTDOWN/value)
  if [ $shutdownSignal = 0 ]; then
    /bin/sleep 0.2
  else  
    pulseStart=$(date +%s%N | cut -b1-13)
    while [ $shutdownSignal = 1 ]; do
      /bin/sleep 0.02
      if [ $(($(date +%s%N | cut -b1-13)-$pulseStart)) -gt $REBOOTPULSEMAXIMUM ]; then
        echo "X728 Shutting down", SHUTDOWN, ", halting Rpi ..."
        sudo poweroff
        exit
      fi
      shutdownSignal=$(cat /sys/class/gpio/gpio$SHUTDOWN/value)
    done
    if [ $(($(date +%s%N | cut -b1-13)-$pulseStart)) -gt $REBOOTPULSEMINIMUM ]; then 
      echo "X728 Rebooting", SHUTDOWN, ", recycling Rpi ..."
      sudo reboot
      exit
    fi
  fi
done' > /etc/x728pwr.sh
sudo chmod +x /etc/x728pwr.sh
sudo sed -i '$ i /etc/x728pwr.sh &' /etc/rc.local 

Modul nevlastním, tak jen hádám. Podle mě příkaz by měl být tento:

Kód: Vybrat vše

sudo python x728pwr.py
ten jako jediný není v návodu ke spuštění.

tak snad :)

P.
Odpovědět