mit script ein relais an com schalten. Wie?

  • hi,


    Ich möchte gernen ein relais mit einem Script schließen und öffnen können.


    wie lauten die Befehle und welchen Pol muss ich nehmen?


    Ich würde dann einfach den Pol des Com-Anschlusses an einen Transistor Schalten, welcher das Relais schaltet.

    Bilder meines Lüfterlosen eigenbau VDRs an dem ich momentan baue.

    Mein VDR:
    Asus A7N8X-VM/400, AMD Athlon XP 1700+ JIUHB DLT3C, 768MB DDR, 250GB HDD, DVB-S FF 1.3, Skystar 2.6d, 27x4 LCD mit SMD LED Hintergrundbeleuchtung, Rasputin Hardware-Wakeup, 7" TFT für GraphTFT, AVBoard.
    Debian 4.0, Kernel 2.6.19, VDR 1.4.4
    Alles im Selbstgebauten Alu-gehäuse.

    Einmal editiert, zuletzt von MaN ()

  • Hi,


    also hier reicht ein einfaches 'Öffnen' um die Signale RTS/DTR (Pin 7/4 auf 9pol) auf High zu setzen; also quick & dirty :D


    #Relais an COM1 ein schalten (RTS bzw. DTR 'High')
    dd if=/dev/ttyS0 & pid=$!


    #Relais wieder ausschalten (RTS bzw. DTR 'Low')
    kill $pid

  • vielen dank!!! das werde ich demnächst mal ausprobieren. was entsteht denn eigentlich für eine Spannung an RTS bzw DTR? 12 volt? will ja nicht gleich den Transistor verheizen :D

    Bilder meines Lüfterlosen eigenbau VDRs an dem ich momentan baue.

    Mein VDR:
    Asus A7N8X-VM/400, AMD Athlon XP 1700+ JIUHB DLT3C, 768MB DDR, 250GB HDD, DVB-S FF 1.3, Skystar 2.6d, 27x4 LCD mit SMD LED Hintergrundbeleuchtung, Rasputin Hardware-Wakeup, 7" TFT für GraphTFT, AVBoard.
    Debian 4.0, Kernel 2.6.19, VDR 1.4.4
    Alles im Selbstgebauten Alu-gehäuse.

  • Hi,


    Zitat

    Original von MaN
    vielen dank!!! das werde ich demnächst mal ausprobieren. was entsteht denn eigentlich für eine Spannung an RTS bzw DTR? 12 volt? will ja nicht gleich den Transistor verheizen :D


    Normalerweise ca. -12/+12V gegen Ground (Pin 5 an 9Pol), aber es gibt z.B. auch EPIA-Boards mit 5V oder ähnlich; einfach mal messen ...

  • reichen die 12 volt auch direkt für das relais? oder soll ich doch ein Transistor vorschalten?

    Bilder meines Lüfterlosen eigenbau VDRs an dem ich momentan baue.

    Mein VDR:
    Asus A7N8X-VM/400, AMD Athlon XP 1700+ JIUHB DLT3C, 768MB DDR, 250GB HDD, DVB-S FF 1.3, Skystar 2.6d, 27x4 LCD mit SMD LED Hintergrundbeleuchtung, Rasputin Hardware-Wakeup, 7" TFT für GraphTFT, AVBoard.
    Debian 4.0, Kernel 2.6.19, VDR 1.4.4
    Alles im Selbstgebauten Alu-gehäuse.

  • Nein, die 12V würd ich auf jeden Fall über nen Transitor schalten ausser du willst deinen COM-Port grillen (der zwar eigentlich gegen Überlastung geschützt ist... aber na ja)




    Die 2 Dioden sind noch zum Schutz des Transistors.
    Gruß
    Roland

    Software: VDR 1.4.3, mp3, osdpip, streamdev-server, femon, wapd, X11, Wireless Keyboard Kernel: 2.6.18
    Hardware: 1x DVB-S v 1.3, 1x Skystar 2, Celeron@2GHz, 256 MB RAM, 4 HDs Raid1/5, Total: 600 GB, Asus P4S533 cmi8738 & LAN on board 6 PCI
    40" Sammelbestellungs-LCD an ATI Radeon 9550 DVI-Out + tvtime, 70 cm TV an J2-RGB-Out
    Organisator der ersten und zweiten VDR-Sanitizer Sammelbestellung.
    In progress: POV-ION 330 - MediaPointer MP-S2 - vdr 1.7.9 - vdr-xine(vdpau)

  • Zitat

    Original von egal
    Hi,



    Normalerweise ca. -12/+12V gegen Ground (Pin 5 an 9Pol), aber es gibt z.B. auch EPIA-Boards mit 5V oder ähnlich; einfach mal messen ...


    Die Messung eventuell mit einem Lastwiderstand (z.B.10kOhm gegen Masse) vornehmen, sonst hast Du nur die reine Leerlauspannung.


    Garry

    VDR-Tower(yaVDR0.5): ASROCK N68c-S UCC + MSI N210 MDIG/D3NVIDIA630 + Doppeltunerkarte TBS 6981 + 2*DVBS USB PCTV461e
    Pundit Ah2 2xSkystar2.6c + HP NovaTD über DVI HDMI (yavdr0.3) stillgelegt
    Asus M3N78-EMH HDMI + GT630 single Slot mit YAVDR0.5 2xTT cinergy DVB-C +DVBS USB PCTV461e+ Hauppauge USB TD (DUAL DVB-T) 2 x MediaMVP+RaspberryVomp + Raspbmc

  • das einschalten gieng schonmal :D


    aber das ausschalten noch nicht. kommt die meldung:


    kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]



    wie killed mans denn richtig?

    Bilder meines Lüfterlosen eigenbau VDRs an dem ich momentan baue.

    Mein VDR:
    Asus A7N8X-VM/400, AMD Athlon XP 1700+ JIUHB DLT3C, 768MB DDR, 250GB HDD, DVB-S FF 1.3, Skystar 2.6d, 27x4 LCD mit SMD LED Hintergrundbeleuchtung, Rasputin Hardware-Wakeup, 7" TFT für GraphTFT, AVBoard.
    Debian 4.0, Kernel 2.6.19, VDR 1.4.4
    Alles im Selbstgebauten Alu-gehäuse.

  • Hallo MaN,


    Zitat

    Original von MaN
    ...wie killed mans denn richtig?


    Kill wird die PID eine Zahl zwischen 2-65535 übergeben, diese wird im Beispiel von egal in der Variable pid gespeichert, diese must Du Dir aufheben und dann an kill übergeben.
    Testen kanst Du das mit echo $pid
    eine PID krigst du über $(pidof dd), allerdings für alle laufenden dd's


    also so:

    Code
    kill $(pidof dd)


    wenn Du die PID nicht gespeichert hast.


    Zum speichern der PID schau Dir auch mal start-stop-daemon an (in vielen der start/stop-scripte in /etc/init.d/ verwendet).


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

  • ok das ausschalten funktioniert jetzt auch :D


    aber was sind dd's? Prozesse?


    Was passiert eigentlich beim Hochfahren? werden da nicht manche pole unkoordiniert auf high und low hin und her geschalten?


    wenn ja, dann könnte ich doch einfach ein Kondensator dazu schalten das das relais erst bei mehreren sec auf high schaltet. oder?


    edit:
    hab grad mal beim hochfahren gemessen. also entweder ich habe einmal beim messen gewackelt, oder es wird wirklcih einmal ganz kurz auf high geschalten.

    Bilder meines Lüfterlosen eigenbau VDRs an dem ich momentan baue.

    Mein VDR:
    Asus A7N8X-VM/400, AMD Athlon XP 1700+ JIUHB DLT3C, 768MB DDR, 250GB HDD, DVB-S FF 1.3, Skystar 2.6d, 27x4 LCD mit SMD LED Hintergrundbeleuchtung, Rasputin Hardware-Wakeup, 7" TFT für GraphTFT, AVBoard.
    Debian 4.0, Kernel 2.6.19, VDR 1.4.4
    Alles im Selbstgebauten Alu-gehäuse.

    2 Mal editiert, zuletzt von MaN ()

  • Hallo MaN,


    Zitat

    Original von MaN
    ..aber was sind dd's? Prozesse?


    in dem Beispiel von egal wird ein Programm namens 'dd' gestartet und mit dem Symbol '&' als Hintergrundprozess ausgeführt. Dieses Programm läuft ewig ... bis zum kill ...


    in meinem Beispiel mit "pidof dd" werden alle laufenden Programme namens 'dd' beendet, dies ist keine saubere Lösung, da aber 'dd' selten genutzt wird ist es in Deinem Fall zwar als 'Notlösung' einsetzbar.
    Für eine richtige Lösung sollte aber die PID gespeichert siehe 'pid=$!'


    Zitat

    Was passiert eigentlich beim Hochfahren? werden da nicht manche pole unkoordiniert auf high und low hin und her geschalten?


    die Dienste, die auf dem COM-Port was suchen, sollten sich bestimmt ausschalten lassen.


    Zitat

    wenn ja, dann könnte ich doch einfach ein Kondensator dazu schalten das das relais erst bei mehreren sec auf high schaltet. oder?


    Das ist auch möglich, nimm aber dann die Zeit etwas größer, Eletrolytkondensatoren verlieren mit der Zeit etwas von ihrer Kapazität.


    Hardy

    Suche: 6 Richtige für die nächste Lottoziehung
    PS: Wer Rechtschreibfehler findet, darf sie behalten!

  • vielleicht ne blöde frage, aber ist das eigenltich c++? oder was linux-eigenes?

    Bilder meines Lüfterlosen eigenbau VDRs an dem ich momentan baue.

    Mein VDR:
    Asus A7N8X-VM/400, AMD Athlon XP 1700+ JIUHB DLT3C, 768MB DDR, 250GB HDD, DVB-S FF 1.3, Skystar 2.6d, 27x4 LCD mit SMD LED Hintergrundbeleuchtung, Rasputin Hardware-Wakeup, 7" TFT für GraphTFT, AVBoard.
    Debian 4.0, Kernel 2.6.19, VDR 1.4.4
    Alles im Selbstgebauten Alu-gehäuse.

  • Zitat

    Original von BlackKing
    Das ist kein C++. Ich würde es "Linux Bash Scripten" nennen.



    Hier ist es z.B. erklärt...
    http://learnlinux.tsf.org.za/c…shell-scripting/ch04.html


    ok sowas hab ich mir auch gedacht.



    edit:


    Hab gerade die Schaltung zusammen gelötet. Als Kondensator hab ich einen mit 47 mf genommen. Die Schaltung funktioniert einwandfrei!!! Danke nochmals an alle für die schnelle Hilfe!
    Beim Hochfahren hab ich kein schalten. Dafür reicht der Kondensator also. Aber immer kurz bevor er runtergefahren ist, schaltet er nochmal kurz auf high und gleich wieder auf low. Das filtert der Kondensator leider nicht raus. Was soll ich für einen nehmen?


    der 47mf war einfach der größte den ich auf die schnelle gefunden hab.


    Gruß


    MaN

    Bilder meines Lüfterlosen eigenbau VDRs an dem ich momentan baue.

    Mein VDR:
    Asus A7N8X-VM/400, AMD Athlon XP 1700+ JIUHB DLT3C, 768MB DDR, 250GB HDD, DVB-S FF 1.3, Skystar 2.6d, 27x4 LCD mit SMD LED Hintergrundbeleuchtung, Rasputin Hardware-Wakeup, 7" TFT für GraphTFT, AVBoard.
    Debian 4.0, Kernel 2.6.19, VDR 1.4.4
    Alles im Selbstgebauten Alu-gehäuse.

    Einmal editiert, zuletzt von MaN ()

  • so mein script ist jetzt fertig :D bitte nicht wundern, ist mein erstes "größeres" (für meine verhältnisse :D) linux script.


    da mein router manchmal abstürtzt und der im Keller steht ist es sehr lästig wenn ich ihn neustarten muss. Deswegen das script, welches prüft ob der router online ist, und wenn er offline ist per relais in neustartet.




    x=0
    y=0
    z=0


    while [ 1 ]
    do


    if ping -c 1 192.168.1.1;
    then
    z=$((var+1))
    echo router online! test: $z


    else
    echo router offline!

    #Zähler
    x=$(( x+1 ))
    y=$((10-$x))
    #wenn Zähler 10 erreicht hat router neustarten
    if [ $x = 10 ] ;
    then
    echo router neustarten
    #relais einschalten router aus
    dd if=/dev/ttyS0 & pid=$!
    sleep 10
    #relais ausschalten router an
    kill $(pidof dd)
    #warten bis router hochgefahren ist
    sleep 240
    #Zähler auf 0 setzen
    x=0
    z=0
    else
    echo noch $y versuche
    fi


    fi


    sleep 5


    done



    und was haltet ihr davon? würdet ihr was verbessern? oder kann ichs so lassen?


    gruß


    MaN

    Bilder meines Lüfterlosen eigenbau VDRs an dem ich momentan baue.

    Mein VDR:
    Asus A7N8X-VM/400, AMD Athlon XP 1700+ JIUHB DLT3C, 768MB DDR, 250GB HDD, DVB-S FF 1.3, Skystar 2.6d, 27x4 LCD mit SMD LED Hintergrundbeleuchtung, Rasputin Hardware-Wakeup, 7" TFT für GraphTFT, AVBoard.
    Debian 4.0, Kernel 2.6.19, VDR 1.4.4
    Alles im Selbstgebauten Alu-gehäuse.


  • Hier reicht kill $pid, deshalb hast du hinter dd ein pid=$! gesetzt :)


    Du willst ja nicht ausversehen einen anderen dd killen :D


  • Dann kann ich das ganze aber nicht in das script einbauen ;)
    aber das über windows kann ich sicher mal brauchen. thx :)



    @ egal.und LordJaxom


    Wie ich weiter oben im thread geschrieben habe, funktioniert das bei mir nicht. da kam immer die Meldung.


    kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]


    ehrlich gesagt verstehe ich nicht ganz warum die zeile funktioniert:
    dd if=/dev/ttyS0 & pid=$!


    ich kenn zwar das if von der if schleife, aber da ist ja nirgends ein fi!?
    dann kenn ich auch noch das /dev/ttyS0, der aufruf der COM1 Schnitstelle. Aber die ganze zeile insgesammt verstehe ich nicht, und weis auch nciht was jetzt genau für das DTR und RTS high verantwortlich ist!


    könnt ihr mir das vielleicht ein wenig genauer erklären (würd mich nämlich sehr interesssieren. will ja wissen was ich da mach :D )

    Bilder meines Lüfterlosen eigenbau VDRs an dem ich momentan baue.

    Mein VDR:
    Asus A7N8X-VM/400, AMD Athlon XP 1700+ JIUHB DLT3C, 768MB DDR, 250GB HDD, DVB-S FF 1.3, Skystar 2.6d, 27x4 LCD mit SMD LED Hintergrundbeleuchtung, Rasputin Hardware-Wakeup, 7" TFT für GraphTFT, AVBoard.
    Debian 4.0, Kernel 2.6.19, VDR 1.4.4
    Alles im Selbstgebauten Alu-gehäuse.

    2 Mal editiert, zuletzt von MaN ()

  • ich habe es mir zwar nicht ganz durchgelesen, aber das if steht für "input interface" wenn kein of (output interface) angegeben ist wird auf die standart ausgabe ausgegeben (vermute ich...). Es wird hier aber eh nix ausgegeben also ist es egal........

    Aktuelle Systeme:
    VDR-Server: MSI KT6A Ultra FISR ; Athlon XP 2200+ ; GrKa Geforce 2 MX; 256MB DDR-SDRam Plugins: streamdev-server, remote
    2 x DVB-Budget Karte, Gentoo, Kernel 2.6.8 usw....

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!