Sensor

  • Dank eurer Hilfe habe ich es schon fast geschafft mein erstes Projekt abzuschließen ....


    Stand:


    Ich kann über Webserver intern sowie auch übers Netz meine Garage Steuern das sehr gut funktioniert !


    Meine Weboberfläche ist ein .php Script mit einen Button der alle 3 Zustände meiner Garage steuert über ein Relais !


    Jetzt würde ich noch gerne meine 2 Sensoren einbinden, um den Status auch Optisch auf dieser Seite anzeigen zu lassen für Garage Zustand Offen und Garage Zustand Geschlossen.


    Ich habe leider keinen Plan wie ? ..... hat irgendjemand Vorschläge für mich...es soll nicht kompliziert werden mir genügt ein Button der erscheint mit Offen od. Zu ... keine Ahnung wie ?


    Meine Sensoren geben ein Signal von 3,3 Volt aus, das habe ich alles schon vorbereitet, ich bräuchte nur Hilfestellung wie ich das angehen kann mit einen Skript ??


    Vielleicht hat ja jemand noch eine Idee ?


    Vielen Dank,

  • Du musst durch vergleichen herausfinden welche Werte High und Low sind und abhängig davon eine Ausgabe anzeigen.
    Wenn du dein bisheriges PHP hochstellst können vielleicht auch andere besser Helfen

    Es gibt KEINE dummen Fragen!

  • Ich sehe drei Moeglichkeiten:


    * Eine statische Webseite die vom User manuell neu geladen wird
    * Eine statische Webseite die die sich ueber das meta refresh selber wieder laedt
    * Eine dynamische Seite mit AJAX


    Die erste Variante ist einfach zu realisieren. Entweder kann das PHP-Script die
    verwendeten IOs selber auslesen oder ein unabhaengiger Prozess schreibt den
    aktuellen Zustand dauernd irgendwo hin wo ihn das Script lesen kann.


    Die zweite Variante ist gleich wie die erste, nur braucht es ein meta-Tag im head-Element



    AJAX ist komfortabel fuer den User, aber der Server arbeitet und fuellt das Log...


    Ein JavaScript auf der Seite schickt im Hintergrund Abfragen zum Server und
    schreibt die aktuellen Daten auf die Webseite. Das braucht etwas Wissen ueber
    das DOM-Modell und JavaScript, sonst kriegt man das nicht hin.


    Man kann sich die Arbeit etwas erleichtern mit JavaScript-Libraries wie jQuery,
    aber ganz ohne Verstaendnis fuer HTML, Scripts auf dem Server und JavaScript
    geht es vermutlich nicht.

  • also der erste Vorschlag mit manuell neu Laden über php Script würde mir schon völlig reichen, wenn ich wüsste wie ich die Abfrage auf die Webseite bekomme ?

  • Siehe mein Link oben. Daraus bekommst du einen String den du mit http://php.net/manual/de/function.intval.php in eine integer varianle verwandelst.
    Diese Variable vergleichst du mit einem If um zwischen den Sensorzuständen zu unterscheiden.
    [hr]

    Code
    if intval(trim(@shell_exec("/usr/local/bin/gpio -g read 23")) > 2,7)
    echo "Sensor aktiv"

    Es gibt KEINE dummen Fragen!

    Edited once, last by paul70078 ().

  • Ich hab kein PHP auf meinem PI, aber als erster Ansatz muesste das gehen:


    Die Anleitung nimmt an, dass GPIO4 durch NICHTS belegt ist !


    a) Vorbereitung


    Den nachfolgenden Code in ein File namens setup speichern


    Bash
    #!/bin/bash
    echo "4" > /sys/class/gpio/export
    echo "in" > /sys/class/gpio/gpio4/direction


    Das File ausfuehrbar machen mit chmod 755 setup


    Das Script ausfuehren mit sudo ./setup


    -> Jetzt gibt es ein File /sys/class/gpio/gpio4/value, und das ist lesbar vom User www-data


    b)


    Ins PHP-Script diesen Code einsetzen


    PHP
    Zustand: <?php echo file_get_contents( '/sys/class/gpio/gpio4/value' ) ; ?>


    Wenn das Pin auf 3.3V steht, muesste eine 1 dort stehen, sonst eine 0


    Wenn das klappt, machen wir morgen weiter :D

  • Also soweit habe ich alles gemacht....nur leider in meiner .php Seite bleibt Zustand leer....


    Wenn ich aber ins Verzeichnis value gehe steht eine 0 dort (noch keine 3,3V angelegt).....ausführbar habe ich die Datei auch gemacht wie du beschrieben hast...soweit geht alles außer das er mir es nicht wirklich in meiner Seite anzeigt....


    Aber der Ansatz ist sehr gut hoffe du hast morgen noch etwas Zeit für mich...wahrscheinlich habe ich etwas falsch gemacht :daumendreh2:


    Vielen Dank einstweilen für deine Hilfe...aber ich bin auf den richtigen Weg glaube ich zumindest ;-)


    Gute Nacht,

  • das kommt raus.........


    Fri Jan 03 23:47:17 2014] [error] [client 10.0.0.23] PHP Warning: file_get_contents(/sys/class/gpio/gpio4/value): failed to open stream: Permission denied in /var/ww$


    Den Code hab ich als setup.sh gespeichert hoffe das war richtig ?
    und den php Script zu meiner bestehenden Seite dazukopiert.

  • Führ einmal den Befehl

    Code
    sudo chmod 644 /sys/class/gpio/gpio4/value


    Dann hat jeder die Berechtigung die Datei zu lesen
    wenn es zu Problemen kommt dann verwende einmal

    Code
    sudo chmod 666 /sys/class/gpio/gpio4/value


    Da darf dann jeder Lesen & Schreiben

    Es gibt KEINE dummen Fragen!

  • hmmm bleibt dabei "PHP Warning: file_get_contents(/sys/class/gpio/gpio4/value): failed to open stream: Permission denied in /var/ww$"
    [hr]
    Wenn ich über Filezilla reingehe und die Value anschaue ist bei Dateiberechtigung nirgends ein Häckchen bei Ausführen......kann ich aber auch nicht über Filezilla ändern ? .....aber ausführen wird ja nicht gebraucht oder? auf jedenfall ist jetzt auf 666 !

  • Es liegt nicht an den Filerechten, das File ist lesbar fuer www-data, das habe ich verifiziert.


    Aber da ist ein Soft-Link drin, und das koennte das Problem sein.


    Probieren wir es mal mit dem effektiven Pfad:


    PHP
    Zustand: <?php echo file_get_contents( '/sys/devices/virtual/gpio/gpio4/value' ) ; ?>
  • Bei zustand kommt nix und dies ist das Error log :


    Sat Jan 04 11:30:18 2014] [error] [client 10.0.0.23] PHP Warning: file_get_contents(/sys/class/gpio/gpio4/value): failed to open stream: Permission denied in /var/www/zustand.php on line 1

  • Halt, Stop, Sichern:


    [font="Tahoma, Verdana, Arial, sans-serif"]> file_get_contents(/sys/class/gpio/gpio4/value): failed to open stream[/font]


    [font="Tahoma, Verdana, Arial, sans-serif"]Im letzten Post habe ich '[/font][font="Tahoma, Verdana, Arial, sans-serif"]/sys/devices/virtual/gpio/gpio4/value' angegeben ![/font]

  • Habe dies jetzt eingefügt:


    Zustand: <?php echo file_get_contents( '/sys/class/gpio/gpio4/value' ) ; ?>


    Error:
    PHP Warning: file_get_contents(/sys/class/gpio/gpio4/value): failed to open stream: Permission denied in /var/www/zustand.php on line 1



    Hoffe du hast das jetzt so gemeint ?

  • ....ich habe alle 2 Varianten getestet.....
    Zustand: <?php echo file_get_contents( '/sys/devices/virtual/gpio/gpio4/value' ) ; ?>
    Zustand: <?php echo file_get_contents( '/sys/class/gpio/gpio4/value' ) ; ?>


    und es ist überall dasselbe....tja da anscheinend mein Hirn mit dieser Aufgabe überfordert ist habe ich meine alte IP Cam rausgesucht in meine php Seite eingebunden und sehe halt nun so ob wirklich zu oder offen ist !


    Es tut mir leid aber ich kenne mich nun mal mit Linux nicht aus .....das mit den Sensoren muss ich wohl lassen...