Faul – Fauler – Adlerweb – Wie man eine Entfernung von 1m überbrückt

Das Leben als PC-User ist schon schwer. Ständig neue Updates und das Essen muss man auch noch an der Haustür abholen. Aber zumindest eine Bewegung fällt nun flach – der Griff in Richtung Rechner.

Bild: http://adlersa.yotaweb.de/blog/wp-content/uploads/2006/04/05-04-06_1824Vorschaubild.jpgDa ich eigentlich nie CDs nutze steht mein Rechner relativ weit (1m) von meinem Sitzplatz entfernt. Eigentlich kein Problem – müsste man sich nicht zum einschalten dahin bewegen.

Also eine neue Idee muss her – der Einschalter in Griffweite.

Gesagt – getan. Die Anschlüsse am MB einfach an einen kleinen Steckverbinder löten. Ich hab mich für einen 9-poligen SUB-D entschieden, da mein Bild: http://adlersa.yotaweb.de/blog/wp-content/uploads/2006/04/05-04-06_1837Vorschaubild.jpgGehäuse dafür so eine schöne Halterung hat. Von da gehts per seriellem 1:1-Kabel zu einer umfunktionierten Umschaltbox welche mit den entsprechenden LEDs und Schaltern bestückt ist.

OK, Spaß bei Seite – das ist natürlich nicht (nur) um diesen einen Meter zurück zu legen. Neben meinem Rechner hängt an der Box nämlich noch mein Server, welcher eine paar Räume weiter steht. Dadurch muss ich bei den diversen Reset-Orgien bei Installationen nicht andauernd durchs halbe Haus rennen.

Neben Power, Reset und Co sind noch die LAN-LEDs sowie Statuslampen z.B. für Onlinestatus, Emailbenachrichtigung, … in der Box.

3 Gedanken zu „Faul – Fauler – Adlerweb – Wie man eine Entfernung von 1m überbrückt“

  1. Achso – da ich so gerne sachen lösche die ich noch brauch hier der Quellcode für die zusätzlichen LEDs. Ist von überall her zusammen geklaut und 100% ineffizient 😉

    /* leds.c
    Compile with optimisation (-O2).
    08.04.2006
    */

    #include
    #include // error codes
    #include // or
    #include // exit, atoi
    #include // getuid(), usleep
    #include
    #include
    #include

    union foo
    {
    uint32_t u32_;
    uint8_t u8_[4];
    };

    int main (int argc, char *argv[])
    {
    //Definitionen
    char uc=0;
    int l1=0, l2=0, l3=0, l4=0, l5=0, l6=0, l7=0, l8=0, s1=0, s2=0, s3=0, s4=0, s5=0, s6=0, s7=0, s8=0, sum=0, save=0;
    union foo u_foo;

    //Haben wir einen Wert?
    if (argc < 9) { printf ("Aufruf über: %s Wert1 Wert2 Wert3 ... Wert8\n", argv[0]); printf ("Mögliche Werte:\n"); printf ("1 - LED Ein\n"); printf ("0 - LED Aus\n"); printf ("2 - Keine Änderung\n"); exit (1); } //Got root? 🙂 if (geteuid () != 0) { printf ("Bitte als Root aufrufen!\n"); exit (1); } char data[80]; FILE *ptr; ptr = fopen("/tmp/pleds","r"); fgets(data, 80, ptr); fclose(ptr); save = strtol (data, (char **) NULL, 0); if(argc == 10) { printf("E: %d\n", save); } if(save >= 128) {
    s1=1;
    save=save-128;
    }
    if(save >= 64) {
    s2=1;
    save=save-64;
    }
    if(save >= 32) {
    s3=1;
    save=save-32;
    }
    if(save >= 16) {
    s4=1;
    save=save-16;
    }
    if(save >= 8) {
    s5=1;
    save=save-8;
    }
    if(save >= 4) {
    s6=1;
    save=save-4;
    }
    if(save >= 2) {
    s7=1;
    save=save-2;
    }
    if(save >= 1) {
    s8=1;
    save=save-1;
    }

    if(argc == 10) {
    printf(“1: %d\n”, s1);
    printf(“2: %d\n”, s2);
    printf(“3: %d\n”, s3);
    printf(“4: %d\n”, s4);
    printf(“5: %d\n”, s5);
    printf(“6: %d\n”, s6);
    printf(“7: %d\n”, s7);
    printf(“8: %d\n”, s8);
    }

    l1 = strtol (argv[8], (char **) NULL, 0);
    l2 = strtol (argv[7], (char **) NULL, 0);
    l3 = strtol (argv[6], (char **) NULL, 0);
    l4 = strtol (argv[5], (char **) NULL, 0);
    l5 = strtol (argv[4], (char **) NULL, 0);
    l6 = strtol (argv[3], (char **) NULL, 0);
    l7 = strtol (argv[2], (char **) NULL, 0);
    l8 = strtol (argv[1], (char **) NULL, 0);

    switch(l1) {
    case 1:
    sum=sum+128;
    break;
    case 2:
    if(s1==1) sum=sum+128;
    break;
    }

    switch(l2) {
    case 1:
    sum=sum+64;
    break;
    case 2:
    if(s2==1) sum=sum+64;
    break;
    }

    switch(l3) {
    case 1:
    sum=sum+32;
    break;
    case 2:
    if(s3==1) sum=sum+32;
    break;
    }

    switch(l4) {
    case 1:
    sum=sum+16;
    break;
    case 2:
    if(s4==1) sum=sum+16;
    break;
    }

    switch(l5) {
    case 1:
    sum=sum+8;
    break;
    case 2:
    if(s5==1) sum=sum+8;
    break;
    }

    switch(l6) {
    case 1:
    sum=sum+4;
    break;
    case 2:
    if(s6==1) sum=sum+4;
    break;
    }

    switch(l7) {
    case 1:
    sum=sum+2;
    break;
    case 2:
    if(s7==1) sum=sum+2;
    break;
    }

    switch(l8) {
    case 1:
    sum=sum+1;
    break;
    case 2:
    if(s8==1) sum=sum+1;
    break;
    }

    //Init 2
    iopl (3);
    outb (0xb, 888 + 2);
    u_foo.u8_[2] = 0xb;

    //writer – uc=wert
    u_foo.u8_[0] = sum;
    outl (u_foo.u32_, 888);

    ptr = fopen(“/tmp/pleds”,”w”);
    fprintf(ptr, “%d”, sum);
    fclose(ptr);

    iopl (0); /* release region */
    exit (0);
    }

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert