Tlacitko na vypnuti PC – RS-232

Dnes jsem resil problem s vypinanim domaciho serveru – nepotrebuju aby bezel porad (akorat zere elektrinu). Nechce se mi kvuli vypnuti po siti zapinat jiny PC. Proto jsem si udelal tlacitko, ktere kdyz podrzim tak vypnu server.

Kvuli jednoduchosti se to pripojuje na seriovy port (RS-232C). Samotne vypnuti je realizovano uzemnenim vstupni linky DSR (pin 6) proti zemi GND (pin 5) po stanoveny cas.Zapojeni RS-232CSchemaNa pocitaci bezi nasledujici program (/usr/local/bin/vypnout-rs232.py):

#! /usr/local/bin/python 
# VYZADUJE 	python-serial
from serial import *
from os import system
from time import sleep

#####################################################
port = "/dev/ttyS0"
# jmeno serioveho portu

cas = 2
# jak dlouho je potreba drzet tlacitko, 
# aby doslo k vypnuti PC [s] 0.2 => 0,2s

####################################################

com = Serial(port)
print "Port ", com.portstr, "otevren."
print "Cekam na stisknuti tlacitka ..."

while 1 :
	sleep(cas)
	stav = com.getDSR()
	if stav == 1 :
		system ("halt")

com.Close()

 

Instalace:

  1. Nainstalovat python-serial
  2. Do /usr/local/bin/ nakopirovat soubor s programem a pojmenovat ho vypnout-rs232.py
  3. V souboru vypnout-rs232.py nastavit pozadovany port a dobu drzeni tlacitka (kdyz nastavim 10s, tak musim tlacitko drzet 10s nez se PC vypne) CAS MUSI BYT ALESPON 0,1s, JINAK JE PROCESOR VYTIZEN NA 100%
  4. Do /etc/rc.local pridat pred exit 0 radek: nohup python /usr/local/bin/vypnout-rs232.py &>/dev/null &

 


Testovano na: Debian GNU/Linux 4.0 2.6.18-4-486 i686

3 komentáře u „Tlacitko na vypnuti PC – RS-232

  1. Petr Zavadil

    Dobrý den pane Vancl, dá se obdobným způsobem použít port COM i jako jednoduché tlačítko pro Windows? Abych propojením dvou pinu na seriovém portu dokázal detekovat v .NET aplikaci jako klávesu. Děkuji a přeji vše nejlepší.

    1. Martin Vancl

      Dobry den,
      ano, urcite pujde na Windows vycitat stav vstupni linky serioveho portu.
      Pyserial a python by sel zprovoznit i pod Windows. Pomoci cythonu by pak sel vytvorit i exe soubor z python aplikace.

      v .NET jsem nikdy nic nedelal. Nasel jsem vsak nejaky navod http://xanthium.in/Serial-Programming-using-Csharp-on-Windows
      a z neho https://gist.github.com/tuxmartin/2e065e09592729372e1cd19faa258888 – v tomto programu bych zkusil pouzit „SerialPort.DsrHolding“ https://msdn.microsoft.com/cs-cz/library/system.io.ports.serialport.dsrholding(v=vs.110).aspx a teoreticky by to melo bez problemu fungovat.

      Jen pro info – za dolar se da sehnat USB-RS232 prevodnik: http://www.ebay.com/itm/252127285665
      Kdybyste u cinskych prevodniku narazil na problem s ovladaci, staci napsat. Mam sbirku ovladacu na vetsinu cinskych USB-RS232 prevodniku.

  2. Kamil Blažek

    Dobrý den,
    podle mého názoru lze vyřešit tuto úlohu ještě o něco elegantněji. Mám doma starší PC bez připojeného monitoru, klávesnice a myši, které využívám jako souborový server k občasnému zálohování. Běží na něm nějaká starší verze Mandrivy. V nastavení napájení mám na stisknutí tlačítka napájení nastavenou činnost „Vypnout počítač“. Funguje to skvěle, při krátkém stisku tlačítka napájení dojde ke korektnímu ukončení OS a vypnutí PC.

    Tuto funkci využívám i na ostatních PC, kde je užitečná v případě, že dojde z nějaké příčiny k pádu X serveru a ovládání z klávesnice a myši je nemožné, tak mám v záloze ještě tuto možnost korektního vypnutí PC přes tlačítko napájení.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *