nodo-domotica.nl

KAKU bedienen via PHP onder Ubuntu

Alles over gebruiks van een wbeserver met de Nodo

KAKU bedienen via PHP onder Ubuntu

Berichtdoor hwijers » 30 sep 2011, 09:56

Met dank aan http://www.nodo-domotica.nl/forum/viewtopic.php?f=9&t=4 en gegoogle is het me gelukt om via een Ubuntu webserver mijn kaku spullen te schakelen.

Voor wie er wat aan heeft:

1. Sluit je nodo aan.

2. Instaleer apache en php:
Code: Selecteer alles
apt-get install apache2 php5


3. zet de poort instellingen goed:
Code: Selecteer alles
stty -F /dev/ttyACM0 ispeed 19200 ospeed 19200 -ignpar cs8 -cstopb -echo


4. Geef de apache user rechten om de USB poort (/dev/ttyACM0) aan te mogen spreken:
Code: Selecteer alles
adduser www-data dialout


5. Er is nog een probleempje met AutoResetOnSerialConnection. Dit is op te lossen door:
-Software oplossing. Deze regel moet blijven draaien.:
Code: Selecteer alles
tail -f /dev/ttyACM0 &

-Hardware oplossing:
http://www.arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection

6. Test eerst via terminal scherm (commandline)
Lamp aan:
Code: Selecteer alles
echo "SendKAKU A1,On;" > /dev/ttyACM0

Lamp uit
Code: Selecteer alles
echo "SendKAKU A1,Off;" > /dev/ttyACM0


7. Zoek even op internet en download "php_serial.class.php"

8. copy de volgende data in een "kaku.php" bestand:

Code: Selecteer alles

<?php


if (isset($_GET['action'])) {
     
    //Load the serial port class
    require("php_serial.class.php");
     
    //Initialize the class
    $serial = new phpSerial();
    $serial->deviceSet("/dev/ttyACM0");
    $serial->confBaudRate(19200);

    //Now we "open" the serial port so we can write to it
    $serial->deviceOpen();

    //Lamp1
    if ($_GET['action'] == "A1on") {
        $serial->sendMessage("SendKAKU A1,On;");
     
    } else if ($_GET['action'] == "A1off") {
        $serial->sendMessage("SendKAKU A1,Off;");
    }
   
    //Lamp2
    if ($_GET['action'] == "A2on") {
        $serial->sendMessage("SendKAKU A2,On;");
     
    } else if ($_GET['action'] == "A2off") {
        $serial->sendMessage("SendKAKU A2,Off;");
    }
     
    //We're done, so close the serial port again
    $serial->deviceClose();

}


?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Klik Aan Klik Uit</title>
</head>
<body>

<h1>Klik Aan Klik Uit</h1>
<p><a href="<?=$_SERVER['PHP_SELF'] . "?action=A1on" ?>">Lamp1 aan.</a></p>
<p><a href="<?=$_SERVER['PHP_SELF'] . "?action=A2off" ?>">Lamp1 uit.</a></p>

<p><a href="<?=$_SERVER['PHP_SELF'] . "?action=A2on" ?>">Lamp2 aan.</a></p>
<p><a href="<?=$_SERVER['PHP_SELF'] . "?action=A2off" ?>">Lamp2 uit.</a></p>
</body>
</html>



9. copy de kaku.php en de php_serial.class.php naar /var/www map

10. open een browser en ga naar http://"server ip adres"/kaku.php

Nu zou het moeten werken.
Laatst bijgewerkt door hwijers op 06 okt 2011, 16:54, in totaal 1 keer bewerkt.
hwijers
 
Berichten: 25
Geregistreerd: 21 sep 2011, 09:26

Re: KAKU bedienen via PHP onder Ubuntu

Berichtdoor Paul » 02 okt 2011, 19:18

Helemaal goed. Ik hoop dat anderen hier wat aan hebben. Ik kan het zelf niet testen want ik ben niet zo technisch :D
Groeten Paul
Paul
 
Berichten: 1152
Geregistreerd: 31 aug 2011, 20:33

Re: KAKU bedienen via PHP onder Ubuntu

Berichtdoor mgb » 03 okt 2011, 14:21

He, dit is leuk.
Zo zie maar weer dat alle kleine beetjes steeds leukere oplossingen maken.

Probeer zelf om mijn mobieltje (wm6) te gebruiken als afstandsbediening.

Mvg,
Michael
mgb
 
Berichten: 9
Geregistreerd: 02 sep 2011, 11:42

OOK onder Windows!!

Berichtdoor edsub » 25 okt 2011, 23:31

Ik heb eea eens bekeken en geinstalleerd.
Zonder Eventghost de Nodo besturen is wat ik wil!
Ben nu zover dat mijn kaku.php (onder Windows toch net iets anders dan Linux) linkjes laat zien voor aan/uit schakelen van de verschillende KaKu's in huis.

Toch lijkt de verbinding met de Nodo niet helemaal stabiel.
Om eea te laten werken krijg ik het beste resultaat om EERST de beheertool op te starten, te verbinden en te verbreken (anders houdt die mijn COM6 bezet).
Daarna kan ik via het PHP script in een willekeurige webbrowser de KaKu's schakelen.
Na verloop van tijd (meerdere uren) lijkt de Nodo de verbinding met de betreffende COM6 te verliezen (staat dan nog wel in apparaatbeher). Nodo herstarten en weer van voor af aan beginnen is een remedie, maar niet bevredigend.
Iemand een tip hoe ik dit verder stabiel krijg?

Mijn KaKu.php (zoals je ziet zit er nogal wat uitgecommentarieerde code in, daar blijk ik nl best zonder te kunnen, of zou dat een bron van het probleem zijn?):
Code: Selecteer alles

<?php


if (isset($_GET['action'])) {
     
//Load the serial port class
    require("php_serial.class.php");
     
//Initialize the class
    $serial = new phpSerial();
//Set COM port
    $serial->deviceSet("COM6");
//Configure COM port
//    $serial->confBaudRate(19200);
//    $serial->confParity("none");  //Parity (this is the "N" in "8-N-1")
//    $serial->confCharacterLength(8); //Character length (this is the "8" in "8-N-1")
//    $serial->confStopBits(1);  //Stop bits (this is the "1" in "8-N-1")
//    $serial->confFlowControl("xon/xoff");

//Open serial port
    $serial->deviceOpen();
//Evaluate action parameter
    switch ($_GET['action'])
        {
//Lamp1
       case "D1on":
              $serial->sendMessage("SendKAKU D1,On;");
              break;
       case "D1off":
              $serial->sendMessage("SendKAKU D1,Off;");
              break;
//Lamp2
       case "D2on":
              $serial->sendMessage("SendKAKU D2,On;");
              break;
       case "D2off":
              $serial->sendMessage("SendKAKU D2,Off;");
              break; 
//Lamp2
       case "D3on":
              $serial->sendMessage("SendKAKU D3,On;");
              break;
       case "D3off":
              $serial->sendMessage("SendKAKU D3,Off;");
              break; 
//Lamp2
       case "D4on":
              $serial->sendMessage("SendKAKU D4,On;");
              break;
       case "D4off":
              $serial->sendMessage("SendKAKU D4,Off;");
              break; 
//Lamp2
       case "D5on":
              $serial->sendMessage("SendKAKU D5,On;");
              break;
       case "D5off":
              $serial->sendMessage("SendKAKU D5,Off;");
              break; 
//Lamp2
       case "D6on":
              $serial->sendMessage("SendKAKU D6,On;");
              break;
       case "D6off":
              $serial->sendMessage("SendKAKU D6,Off;");
              break; 
        }
//Close the serial port
    $serial->deviceClose();

}


?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Klik Aan Klik Uit</title>
<?php date_default_timezone_set('Europe/Amsterdam'); ?>
<?php $date = date('d-m-Y H:i:s', time()); ?>
<?php $version = '0.1'; ?>
        <style type="text/css">

        <!--
            body { font-family: Verdana, Arial, Helvetica, sans-serif; }
        -->
        </style>


</head>
<body>

<h1>Klik Aan Klik Uit</h1>
<p><b>Server: </b><?php echo $_SERVER['HTTP_HOST']; ?> <br>
<p><b>Page: </b><?php echo $_SERVER['PHP_SELF']; ?> <br>
<p><b>Servertime: </b><?php echo $date; ?> </p>
<p><b>Page version: </b><?php echo $version; ?> </p>

<!--
<p><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D1on" ?>>Lamp voorkamer aan.</a></p>
<p><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D1off" ?>>Lamp voorkamer uit.</a></p>

<p><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D2on" ?>>Lamp achterkamer aan.</a></p>
<p><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D2off" ?>>Lamp achterkamer uit.</a></p>
-->
<table border="1"
cellpadding="10">
<tr>
<td>D1</td>
<td>Contactdozen Voorkamer</td>
<td><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D1on" ?>>Aan</a></td>
<td><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D1off" ?>>Uit</a></td>
</tr>
<tr>
<td>D2</td>
<td>Verlichting Achtertafel</td>
<td><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D2on" ?>>Aan</a></td>
<td><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D2off" ?>>Uit</a></td>
</tr>
<tr>
<td>D3</td>
<td>Verlichting Aquarium</td>
<td><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D3on" ?>>Aan</a></td>
<td><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D3off" ?>>Uit</a></td>
</tr>
<tr>
<td>D4</td>
<td>Verlichting Overloop</td>
<td><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D4on" ?>>Aan</a></td>
<td><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D4off" ?>>Uit</a></td>
</tr>
<tr>
<td>D5</td>
<td>Verlichting Slaapkamer</td>
<td><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D5on" ?>>Aan</a></td>
<td><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D5off" ?>>Uit</a></td>
</tr>
<tr>
<td>D6</td>
<td>Verlichting Terras</td>
<td><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D6on" ?>>Aan</a></td>
<td><a href=<?php echo $_SERVER['PHP_SELF'] . "?action=D6off" ?>>Uit</a></td>
</tr>

</table>

</body>
</html>

edsub
 
Berichten: 11
Geregistreerd: 10 okt 2011, 14:03

Re: KAKU bedienen via PHP onder Ubuntu

Berichtdoor Paul » 27 okt 2011, 16:41

Houdt je er rekening mee dat de Nodo tijd nodig heeft om de seriële commando's te verwerken en dat er een HELE kleine seriële buffer is. Eigenlijk zou je moeten communiceren met XON/XOFF ingeschakeld om te voorkomen dat opdrachten verminkt aankomen en niet opgepakt kunnen worden!
Groeten Paul
Paul
 
Berichten: 1152
Geregistreerd: 31 aug 2011, 20:33


Keer terug naar Webserver

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers. en 1 gast

cron