Hausautomation

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Du kannst das wie folgt lösen (ich habs nicht ausprobiert):

    PHP
    <?php
       if((isset($_GET['system_code'])) && (isset($_GET['unit_code'])) && (isset($_GET['state']))){
       system("send ".$_GET['system_code']." ".$_GET['unit_code']." ".$_GET['state']."");
       }
    ?>

    Anschließend kannst du via <a href="dateiname.php?system_code=11111&unit_code=1&state=1">an</a> das ganze schalten.

    Empfehlenswert wäre sicherlich noch eine Überprüfung zur Fehlervermeidung.. Aber das ist erstmal irrelevant.

  • Hallo zusammen,

    bei der Lösung von Chris1705 sehe ich noch zwei Punkte die man beachten sollte. Ansonsten sieht der PHP-Code in Ordnung aus.

    1) "send" muss mit "sudo" aufgerufen werden. Kleine Änderung an dem PHP-Code.
    2) Die "sudoers" muss angepasst werden damit der Benutzer "www-data" auch "send" aufrufen kann. Wurde hier schon mehrfach erklärt was man da machen muss.

    Gruß Georg

  • Danke dir! Wie kann ich denn die sudoers anpassen sodass der send aufrufen kann?

    Ich habe es schon möglich gemacht, das man ohne cd raspberry-remote den send befehl ausführen kann, falls das wichtig ist.

    Ich habe jetzt eine Datei angelegt (steckdose.php):

    PHP
    <?php
                                  if((isset($_GET['system_code'])) && (isset($_GET['unit_code'])) && (isset($_GET['state']))){
                                  system("send ".$_GET['system_code']." ".$_GET['unit_code']." ".$_GET['state']."");
                                  }
                                ?>


    Die liegt im gleichen Verzeichnis.

    Dann Einbindung im Webinterface:

    Code
    <tr>
                            <td>Bett</td>
                            <td><button id="aus" style="float: right;">An</button>
                            <a href="steckdose.php?system_code=11111&unit_code=3&state=1">An</a>    
                            
                            </td>
                        </tr>


    Jetzt wird zwar "An" neben dem Button angezeigt, das ist aber erst einmal egal. Wenn ich aber darauf klicke, kommt eine neue, weiße, leere Seite. Jedoch passiert nichts.

    Wie editiere ich richtig die /etc/sudoers sodass www-data auch den Befehl ausführen kann?

    Neben bei: Ich brauche noch ein Script was die Temperatur des Temperatursensors: 28-000003ada56a ausliest und in dieser Sprechblase wiedergibt:


    Einmal editiert, zuletzt von Racer j (30. Juni 2013 um 19:17)

  • send ist also ein Programm, das mit root-Berechtigung laufen soll?
    Dann wechsel mal in das Verzeichnis, in dem send steht ( cd /pfad/zu/send )

    Dann machst Du einen

    Code
    $ sudo chown root:root send

    dann noch einen

    Code
    $ sudo chmod +s send

    und dann probiers noch mal, ohne sudo in Deinem script.

    cu,
    -ds-

  • Voher war es nur möglich, eine funksteckdose so zu aktivieren:
    Sudo ./send 11111 1 1
    Und man musste im Verzeichnis raspberry-remote sein. Jetzt kann ich aber dank post #20 auch ohne im Verzeichnis zu sein;
    Sudo send 11111 1 1 machen ohne /.

    Einmal editiert, zuletzt von Racer j (30. Juni 2013 um 21:47)


  • Voher war es nur möglich, eine funksteckdose so zu aktivieren:
    Sudo ./send 11111 1 1
    Und man musste im Verzeichnis raspberry-remote sein. Jetzt kann ich aber dank path auch ohne im Verzeichnis zu sein;
    Sudo send 11111 1 1 machen ohne /.

    Hallo Racer,

    hast Du mein Posting gelesen und verstanden?
    ciao,
    -ds-

  • Feststellung. Sry, meinte die Anleitung in Post #20. Das klappt auch. Bloß klappt es noch nicht das ich mit chris seinem Script die funksteckdosen aktivieren kann. Dazu muss www-data das ja erst einmal dürfen. Wie mache ich das jetzt möglich ?
    Danke für die Geduld...

  • Hallo Racer j,

    du rufst erstmal den folgenden Befehl auf damit du die "sudoers" bearbeiten kannst.

    Code
    sudo visudo

    Anschließend fügst du am Ende der Datei die folgende Zeile ein.

    Code
    www-data ALL=(root) NOPASSWD: /usr/local/sbin/send

    Danach sollte auch der Aufruf über das PHP-Skript funktionieren.

    Gruß Georg

    Einmal editiert, zuletzt von boandlkramer (30. Juni 2013 um 21:54)

  • Habe das ganze jetzt eingetragen. Doch leider funktioniert es immer noch nicht.

    Mein PHP script (liegt im gleichen ordner) und heißt steckdose.php:

    PHP
    <?php
                                  if((isset($_GET['system_code'])) && (isset($_GET['unit_code'])) && (isset($_GET['state']))){
                                  system("send ".$_GET['system_code']." ".$_GET['unit_code']." ".$_GET['state']."");
                                  }
                                ?>

    Dann mein HTML-Code:

    Code
    <tr>
                            <td>Bett</td>
                            <td><button id="aus" style="float: right;">An</button>
                            <a href="steckdose.php?system_code=11111&unit_code=3&state=1">An</a>    
                            
                            </td>
                        </tr>

    Wenn ich jetzt dort drauf klicke, kommt eine neue, leere, weiße Seite und in der Adressleiste sieht das ganze dann so aus:

    Code
    http://192.168.2.103/home/steckdose.php?system_code=11111&unit_code=3&state=1

    Was mache ich falsch? In der Konsole geht das einwandfrei:

    Code
    sudo send 11111 3 1


    /Edit: Jetzt geht es, der Code ist so richtig:

    PHP
    <?php
                                  
    if((isset($_GET['system_code'])) && (isset($_GET['unit_code'])) 
    && (isset($_GET['state']))){
                                  system("sudo send ".$_GET['system_code']." ".$_GET['unit_code']." ".$_GET['state']."");
                                  }
                                ?>

    Einmal editiert, zuletzt von Racer j (1. Juli 2013 um 15:59)

  • Siehe /edit, geht jetzt wieder. Super. Vielen Dank euch allen, wie happy ich bin könnt ihr gar nicht glauben.

    Was ich jetzt nur brauche, ist ein Script, was meinen Temperatursensor ausliest. Das Script von Chris funktioniert bei mir leider nich, sorry Chris :)


  • Siehe /edit, geht jetzt wieder. Super. Vielen Dank euch allen, wie happy ich bin könnt ihr gar nicht glauben.

    Was ich jetzt nur brauche, ist ein Script, was meinen Temperatursensor ausliest. Das Script von Chris funktioniert bei mir leider nich, sorry Chris :)

    Hi Racer,

    der sudo Aufruf in Deinem script deutet darauf hin, dass Du die sudoers geändert hast.
    Hilfreich für alle die diesen Thread verfolgt haben wäre es aber wenn Du kundtun könntest welche Änderungen Du wie durchgeführt hast.
    So eine Art Zusammenfassung halt ...

    Schöne Zeit noch,
    -ds-

  • ich verfolge das thema jetzt schon länger, bei mir funktioniert jetzt fast alles. aber was kann ich machen dass nicht immer die leere seite aufgeht wenn ich das php script mit href aufruf?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!