Ik ben bezig met mijn eigen aquariumcomputer. Deze gaat in eerste instantie simpel gezegd mijn verlichting aansturen en mijn temperatuur meten. Dit alles gaat via het 1-wire protocol. De verlichting is dimbaar, d.w.z. dat er op gezette tijden een TL lamp van 0% naar 100% gaat. De aansturing (het 1-wire gedeelte) is 100% klaar, ook de interface vanuit PHP naar het protocol is klaar en werkt.
Ik ben nu bezig met de software. Het volgende probleem heb ik, en hiervoor zoek ik een juiste methode om het probleem te tackelen (dus geen code, slechts andere inzichten)
om de "x" tijd een aantal (bijv. 6) sensoren uitlezen en vervolgens (afhankelijk van de status van een sensor) iets doen.
ik wil bovenstaande met PHP gaan doen, aangezien ik daar het meeste ervaring in heb. Dit is allemaal geen probleem, de vraag is concreet hoe zouden jullie de casus aanpakken?
optie 1 (Command Line Interface) :
Ik kan één PHP script maken voor alle sensoren, wat via de CLI gestart gaat worden. Hierin summon ik een daemon dat iedere 5 seconden 6x forked (in geval van 6 sensoren) en in de childs vervolgens de sensor gaan uitlezen en de juiste actie gaat doen.
Voordeel;
- Het hoofdscript blijft om de 5 seconden draaien en dus op tijd lopen (erg belangrijk)
Nadeel;
- Relatief veel kennis nodig om te gaan forken.
- Als er iets wijzigd (bijv. dim tijden wijzigen) moet het script dit weten. Ik wil dit eigenlijk "real-time" en dus niet pas na 5 seconden zien. Dit zou ik kunnen oplossen door het geforkte proces te laten luisteren op een socket...
Optie 2 (CLI/web):
Via PHP een script "infinite" laten lopen dat iedere 5 seconden bijv. 6x een "WGET http://localhost/sensor1.php" aanroept.
Nadeel;
- Als er iets wijzigd (bijv. dim tijden wijzigen) moet het script dit weten. Ik wil dit eigenlijk "real-time" en dus niet pas na 5 seconden zien. Dit zou ik kunnen oplossen door het geforkte proces te laten luisteren op een socket...
Optie 3 (Command Line Interface):
Gewoon voor iedere sensor (TL1, TL2, Temperatuur) een eigen script maken wat:
a) iedere x seconden kijkt of er iets moet wijzigen
b) Forked (de actie doet) indien nodig.
c) luisterd op een poort naar commando's van de webinterface
Voordeel:
- Iedere sensor heeft zijn/haar eigen script
- Instelbare tijd. Kan bijv. dat sensor 1 om de 5 seconden moet pollen, sensor 2 om de 1 minuut?
Nadeel:
- Dubbele code?
Hebben jullie misschien aanvullingen / andere gedachtes?
Ik ben nu bezig met de software. Het volgende probleem heb ik, en hiervoor zoek ik een juiste methode om het probleem te tackelen (dus geen code, slechts andere inzichten)
om de "x" tijd een aantal (bijv. 6) sensoren uitlezen en vervolgens (afhankelijk van de status van een sensor) iets doen.
ik wil bovenstaande met PHP gaan doen, aangezien ik daar het meeste ervaring in heb. Dit is allemaal geen probleem, de vraag is concreet hoe zouden jullie de casus aanpakken?
optie 1 (Command Line Interface) :
Ik kan één PHP script maken voor alle sensoren, wat via de CLI gestart gaat worden. Hierin summon ik een daemon dat iedere 5 seconden 6x forked (in geval van 6 sensoren) en in de childs vervolgens de sensor gaan uitlezen en de juiste actie gaat doen.
Voordeel;
- Het hoofdscript blijft om de 5 seconden draaien en dus op tijd lopen (erg belangrijk)
Nadeel;
- Relatief veel kennis nodig om te gaan forken.
- Als er iets wijzigd (bijv. dim tijden wijzigen) moet het script dit weten. Ik wil dit eigenlijk "real-time" en dus niet pas na 5 seconden zien. Dit zou ik kunnen oplossen door het geforkte proces te laten luisteren op een socket...
Optie 2 (CLI/web):
Via PHP een script "infinite" laten lopen dat iedere 5 seconden bijv. 6x een "WGET http://localhost/sensor1.php" aanroept.
Nadeel;
- Als er iets wijzigd (bijv. dim tijden wijzigen) moet het script dit weten. Ik wil dit eigenlijk "real-time" en dus niet pas na 5 seconden zien. Dit zou ik kunnen oplossen door het geforkte proces te laten luisteren op een socket...
Optie 3 (Command Line Interface):
Gewoon voor iedere sensor (TL1, TL2, Temperatuur) een eigen script maken wat:
a) iedere x seconden kijkt of er iets moet wijzigen
b) Forked (de actie doet) indien nodig.
c) luisterd op een poort naar commando's van de webinterface
Voordeel:
- Iedere sensor heeft zijn/haar eigen script
- Instelbare tijd. Kan bijv. dat sensor 1 om de 5 seconden moet pollen, sensor 2 om de 1 minuut?
Nadeel:
- Dubbele code?
Hebben jullie misschien aanvullingen / andere gedachtes?