CO2 Sensorwerte mit PHP-Skript auf Webserver anzeigen

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Einen schönen guten Tag wünsche ich euch.


    Ich verfolge dieses Forum schon seit längerer Zeit und nun benötige ich selbst Hilfe.

    Ich habe einen mhz19b Sensor, welchen ich mit einem Raspberry Pi 3B ansteuere. Mithilfe dieser GitHub Library https://github.com/IT-Berater/mh-z19 gibt mir ein Python Programm nun die Sensorwerte am Terminal aus.

    Was ich aber eigentlich vorhabe ist, diese Werte über ein PHP-Skript auf meiner Apache Website anzeigen zu lassen. Ich bin in diesem Bereich noch ein Anfänger und wollte fragen ob das überhaupt möglich ist.


    Schonmal Vielen Dank im Voraus! ;)


    Jxni

  • Ja natürlich geht das, das Hauptproblem wird nur sein, dass Apache www-data:www-data ist und somit PHP auch und du nichts machen kannst weil www-data nichts darf :)


    *edit* man kann www-data aber irgedwie erlauben es zu dürfen.

    Also ich hatte mal mittels Lightdm (apache konkurenz) + JavaScript + Php + bash Script das Kunstwerk hinbekommen Webradios über html *edit* einen neuen button klick im Webbrowser. Es ist echt aufwendig ( html + javascript + php + bash Script == 4 Sprachen :) )

  • Ok danke für die schnelle Antwort :^)


    Ich habe schon versucht die Berechtigung zu ändern, jedoch ohne Erfolg. Doch wie kann man nun die Werte vom Terminal auf der Website anzeigen? Ich hatte schon einige Versuche mit der Funktion exec(), doch diese Funktion führt ja nur ein externes Programm aus.

  • Wenn er sich ein Apache und PHP installiert dann setzt er auch die entsprechenden Rechte.


    Daher kann er sein PHP Script zusammenbauen welches dann im var/www/html/ ordner liegt und dieses dann ganz einfach abrufen per browser,


    Lars

  • Danke, dass habe ich bereits schon gemacht und läuft auch. Mein Problem ist jetzt, ich weiß nicht wie genau mein PHP-Script aussehen muss. Ich habe schon einiges probiert, aber mir wird auf der Website leider nichts angezeigt.

  • Also ich hab ja nie etwas von grund auf neu Programmiert, sondern ich schau auf github, und wenn es da was passendes gibt wird es angepasst :)

    Jetzt wo hyle den Link gezeigt hat, braucht es gar kein javascript... ja so ist das man kann auch 2 Wochen lang den Code anschauen um zu begreifen was da passiert, oder man Fragt einfach :) :) :)

  • Also ich hab mir gedacht, wenn man schon die Backen aufbläst dann richtig :) :)


    mit jquery.js


    mhz_19.html


    vielleicht hilft es mit "visudo" --> www-data die Rechte zu geben um sudo ausführen zu dürfen, hab hinterher den body string im json format wie er auch zurückgeben würde wenn man die Rechte hätte versteht sich :)



    Es fehlt natürlich CSS, den Code den ich ausgeschlachtet hab da läuft sogar twitter bootstrap :)

  • Also der Code kommt ursprünglich von hier https://github.com/codebude/Ra…/tree/master/Webinterface , hab das webradio nie auf dem Openwrt router gehabt, aber ich denke er ließ einfach alles mit root Rechten laufen :) :)*edit* nein er hat mpd über netcat (nc) abgefragt . Auf der anderen Seite beim Pi mit Raspberry Os geht sudo auch ohne Passwort für den USER pi. Die Technik ist auch schon fast 10 Jahre alt.

  • Das sollte man auf keinen Fall machen!


    Um ganz ehrlich zu sein ich würde den Sensor überhaupt nicht benutzen!!wenn Sie schon keine vernünftige Schnittstelle bereit stellen.


    Das "sudo" sollte bei einem sicheren Betriebsystem auch nicht auf dem Webserver auftachen. Sudo == Root-Rechte ja und dann auch noch ohne Passwortabfrage von (Außen möglich??).

    Eigentlich kann shell-exe kein Passwort abragen, weil es niemand es eingeben kann.... nur Raspberry OS weil es da nicht gibt ????ß (oder????).

    Bei Ubuntu muss man nur einmal das Passwort eingeben und es hält 30 Minuten :) :) :) :)

  • Um ganz ehrlich zu sein ich würde den Sensor überhaupt nicht benutzen!!wenn Sie schon keine vernünftige Schnittstelle bereit stellen.

    Das ist völlig falsch - dieser Sensor gilt als einer der zuverlässigsten in diesem Preissegment…

    Wenn's brennt 112 hilft weiter!

  • Ich glaub es jetzt zu Ahnen warum er es unbedingt mit PHP und nicht mit Javascript haben will.


    In PHP wird nur der Html Code übertragen und eingesehen werden, keine Java-Script Code notwendig.

    Wenn jetzt ein Hacker den Java-Script Code sieht, könnte er versuchen "die Seite zu übernehmen". Vielleicht soll es sogar auf einer Webseite erscheinen im WWW. Wer weiß, ich hab das Thema wie üblich geschreddert :)

    Ich hab mich hald gefreut auch mal was zu wissen.

    Mit rein PHP kann ich nicht helfen, damit die ""Technik""" dahinter verborgen bleibt.

    Vielleicht ist das ganze auch nur für Displays gedacht.

  • Hallo,

    .. nur Raspberry OS weil es da nicht gibt ????ß (oder????).

    Bei Ubuntu muss man nur einmal das Passwort eingeben und es hält 30 Minuten :) :) :) :)

    ich weis nicht ob ich dich richtig verstehe. Du meinst dass der Standard-User 'pi' im Betriebssystem Raspberry OS 'sudo'-Befehle ohne Passworteingabe ausführen kann? Das ist bei der Neuinstallation des Betriebssystems so, das kann (sollte) man aber ändern:

    https://wiki.ubuntuusers.de/sudo/Konfiguration/

    Dann ist es so, wie es dir von Ubuntu bekannt ist.


    Sorry dass der Beitrag etwas am allgemeinen Thema vorbei ging, aber ich finde dass ist schon eine wichtige Einstellung, die jedem bekannt sein sollte.


    Grüße

    Dennis

    🎧 Marylin´s Befehle an meine Junge Seele hör ich in jedem Lied. Heimlich eingegeben, in mein Innenleben, durch den Hard-Rock Beat 🎧

  • Hi Dennis, auf was ich rauß will! muss nicht gemacht werden: Den Apache User von "www-date" auf "pi" ändern.

    Was man ganz elegant machen kann ist ganz einfach,

    und es wird keine sudo-Hintertür aufgemacht.

    Wie soll das gehen??

    Man schreibt ein bash-Script (mit Endloschleife) in dem der "sudo Befehl" ausgeführt wird. Das Sleep kann angepasst werden.

    Man erstell in /run/ (ist im Arbeitspeicher nicht Sdcard) und erzeugt in Intervall eine Datei mit den Daten. Ganz wichtig man gibt dieser Datei die Rechte www-data:www-data damit PHP es lesen kann. Weil PHP mit www-data:www-data läuft kan es ausgelesen werden und schont die Sdkarte :) :)

    Keine Hintertür und clean :) :) Man muss hald ab und zu schauen ob das bash Script noch läuft... Keine Probleme mit "sudo" und apache+PHP.

  • Danke für die ganzen Antworten!


    Ich werde in den kommenden Tagen nochmal einiges versuchen. Übrigens die Werte sollen an einer LED-Matrix angezeigt werden, nur als Info.

  • Eine relativ einfache Methode www-data die Gruppenschreibrechte des Users pi zu übertragen, ist die Erstellung des Scriptes als User pi, auf das dann ein ACL zugunsten www-data gesetzt wird. < man acl >, < man setfacl >, < man getfacl >


    Erstellt der User pi in seinem /home/pi/ ein neues Verzeichnis (z.B. www) und erteilt er diesem eine default ACL, werden alle in dem Verzeichnis vom User pi erstellten Files auch mit dem default ACL versehen.


    Das funktioniert nur für einen Web Server im intallierten Urzustand. Sobald mit chmod 777 der Web-Admin neben www-data fremde User in die Web Sandbox schreiben lässt, gehört der Web-Admin geteert und gefedert.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • ...

    Übrigens die Werte sollen an einer LED-Matrix angezeigt werden, nur als Info.

    Kannst Du bitte Dein Projekt mal genauer beschreiben. Ich verstehe nach dieser Info nicht, wie der Webserver da drinhängt, vielleicht könnten wir Dir dann eine ganz andere Lösung anbieten.