Toon posts:

Batchbestand van afstand starten (Domotica)

Pagina: 1
Acties:
  • 100 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Beste mede-tweakers,

Ik heb een appartement gekocht.
Volgende week is het tijd voor het invrezen van de extra leidingen, en ik vind maar geen oplossing voor mijn laatste obstakel, dus stel dat het helemaal onmogelijk is, kan ik hier rekening mee houden .

Concreet:

Voor mijn tablet pc (233Mhz) heb ik een menuutje geschreven.
Dit menu kan ik aansturen d.m.v. het touchscreen en is in staat batch-bestanden uit te voeren.
In dit menu staan optie's als 'rolgordijnen omhoog', 'beamer aan', sfeerverlichting: Halve sterkte' en dat soort dingen.

De server beschikt over 2 lpt-poorten waarmee ik d.m.v n marix over 64 (!) uitgangen beschik.
Ook het relaisbord hiervoor is helemaal af en werkend.
Op de server staan batchbestanden die de poorten aansturen.
(Voor elke uitgang 1 batch.)

Je raad het al de koppeling tussen de client en de server wil niet lukken.

Het is dus de bedoeling dat het batje op e client het batje OP DE SERVER laat uitvoeren.

Ik weet dat er al een aantal topics over bestaan, zowieso 6, maar geen van allen bied uitkomst, vaak ging het over het bedienen van een server, en dit werd telkens op een andere manier op gelost.
Het enige tooltje wat ik heb kunnen vinden (PS-tools) draait alleen onder XP/W2K en dat is niet haalbaar op mijn tabletje.
(Server draait wel XP)

Ik hoop echt dat hier een oplossing voor is, anders valt mijn mooie plannetje in het water.

Wat misschien ook een oplossing kunnen zou zijn is op de server een web interfae te hosten waarop ik met de client kan inloggen.
Deze server app moet dan dus wel in staat zijn om op de server zelf batches uti te voeren.

Verwijderd

Is het niet "handiger" om een simpele (beveiligde en niet vanaf internet toegankelijke) website te draaien op je servertje, waarmee je je batchfiles uit kunt laten voeren door de server? (Dan zou je die site dus vanaf elke willekeurige PC met LAN-verbinding kunnen gebruiken.)

Dat lijkt me een leukere oplossing dan batch-files op je client. (Maar blijkbaar was je daar zelf min of meer ook al achter...) Volgens mij moet zoiets wel mogelijk zijn met PHP ofzo.

[ Voor 25% gewijzigd door Verwijderd op 02-12-2006 08:47 ]


Verwijderd

Topicstarter
Leuker, idd, maar niet snel genoeg op te 'zappen' (TV).
Vandaar at ik het liefst voor batches ga.

Maar als iemand me kan vertellen welke serverapp ik nodig ben en misschien een voorbeeld of een schop in de goede richting wat betreft de site, zou ik daar erg dankbaar voor zijn :)

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

Ik mis de link met Netwerken, dus even een tik naar Client Software Algemeen

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 17:50
Batch (en executable) bestanden kun je in PHP uitvoeren met shell_exec(). Je moet wel even met het volgende rekening houden:
If you are using a Windows server with IIS, and you try to execture a batch file with shell_exec() function, or his related functions you should do it like this:

<?
shell_exec("C:\\path\\to\\cmd.exe /c C:\\batchfile.cmd");
?>

Note the parameter /c which says "Carries out the ommand specified by string and then terminates"

If you don't add the parameter /c the batch file will not be executed, only the cmd.exe file will.

As, also mentiod in these commants, put your cmd.exe file in your php folder, and your windows folder for security reasons.
PHP in combinatie met een form is erg simpel. Een voorbeeldje die in even snel in elkaar gescript heb:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php 
    //form handling
    define(CMD_PATH, 'C:\\WINDOWS\\system32\\cmd.exe');
    define(BATCH_PATH, 'C:\\');
    $action = $_POST['action'];

    if (!empty($action)) {
        switch($action) {
            case 'Rolgordijnen omhoog':
                $batchFile = 'rolhoog.bat';
                break;
            case 'Rolgordijnen omlaag':
                $batchFile = 'rollaag.bat';
                break;
        }
        
        if (isset($batchFile)) {
            //shell_exec(CMD_PATH . ' /c ' . BATCH_PATH . $batchFile);
            echo CMD_PATH . ' /c ' . BATCH_PATH . $batchFile;
        }
    }
        
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Domotics</title>
</head>

<body>

<form method="post" action="<?php $_SERVER['PHP_SELF'] ?>">
    <fieldset>
        <legend>Rolgordijnen</legend>
        <input type="submit" name="action" value="Rolgordijnen omhoog">
        <input type="submit" name="action" value="Rolgordijnen omlaag">
    </fieldset>
</form>

</body>
</html>


Ik heb 'm ook on-line staan op: http://vdvn.net/php/test.php

Voor de server zou ik niet moeilijk doen en XAMPP (de Lite versie) pakken. Alleen Apache aanslingeren is op zich genoeg.

[ Voor 4% gewijzigd door Jaap-Jan op 02-12-2006 11:56 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Tenzij ik er heel erg over heen kijk, maar welk OS draait je tablet PC nu dan?
Is dat echt 'native' MSDOS?

Je zou - als dat inderdaad zo is - eens kunnen kijken of je geen networking client voor MSDOS kan installeren (op www.bootdisk.com staan daar wel voorbeelden van, bijvoorbeeld), op die manier kan je dan in ieder geval netwerk drives mappen.

Als je dan een batchfiletje maakt op die tablet, die bijvoorbeeld elke 2 seconden alle batchfiles in een bepaalde directory uitvoert, dan kan je je 'server' die batchfile directory laten beschrijven met acties die je wilt uitvoeren en misschien ben je er dan al wel?

Een andere optie is misschien om Linux te pakken op je tablet en via iets als 'ssh' dit soort zaken te laten uitvoeren? :)

Verwijderd

Topicstarter
Maar dit is fantastisch!
Dit gaan mijn 9300i ok leuk vinden.
Komt bij dat de interface ook nog snel werkt, als de batches op de server ook onmiddelijk worden uitgevoerd kan ik hier zeker mee zappen!
Vraagje nog, kan je me een goede editor noemen, mss freeware?
Of is dit echt een taak voor het kladblok.
En ik draai momenteel Apache :)

Nu ik je code eens goed bekijk lijkt het alsof ik na r14 gewoon buttons kan bijplaatsen :p
Je maakt het me weel heel makeklijk, ontzettend bedankt!

[ Voor 26% gewijzigd door Verwijderd op 02-12-2006 12:29 ]


Verwijderd

Topicstarter
@Elevator
Dat is ook een goed alternatief maar ik ben toch aardig onder de indruk van het php verhaal.
Ik had het idd niet cermeld maar de client draait 98se.
Met linux ben ik niet handig.
(Maar een distrotje met alleen een webbrowser gaat nog wel lukken, ik denk nu aan underklocken naar 25MHz :D)

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 17:50
Dit stuk is gewoon getypt in Notepad++, omdat het vrij simpel is.

Wat ik ook wel eens gebruik is Eclipse in combinatie met de PHPEclipse plug-in, dan heb je een editor met goede syntax- highlighting, code- completion en het is open- source. Ondanks dat het in Java is geschreven is het een redelijk snelle editor.

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Verwijderd

Topicstarter
Ik ga meteen aan de slag, hou je op de hoogte!

Verwijderd

Topicstarter
Ik ben op een probleem gestuit:

Ik heb apache weer aan de gang gekregen, en daar een indexje en jouw code op gezet.
Dat werkt goed, al wordt er natuurlijk geen batch bestandje gestart omdat deze bij mij op een andere locatie staan.
Verander ik 'define(BATCH_PATH, 'C:\\'); ' in 'define(BATCH_PATH, 'C:\\Root\\Batch\\'); ' , krijg ik een 403 Forbidden als ik op een knop klik.

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 17:50
Verwijderd schreef op zaterdag 02 december 2006 @ 16:05:
Ik ben op een probleem gestuit:

Ik heb apache weer aan de gang gekregen, en daar een indexje en jouw code op gezet.
Dat werkt goed, al wordt er natuurlijk geen batch bestandje gestart omdat deze bij mij op een andere locatie staan.
Verander ik 'define(BATCH_PATH, 'C:\\'); ' in 'define(BATCH_PATH, 'C:\\Root\\Batch\\'); ' , krijg ik een 403 Forbidden als ik op een knop klik.
Dat heeft te maken met bestandsrechten. Apache wordt uitgevoerd onder een bepaald useraccount en dat useraccount moet wel leesrechten hebben op de map en de bestanden die erin staan. :)

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett

Pagina: 1