Hallo,
Ich hätte ne Frage, ich hab 2 Ideen weiss aber nicht was die bessere
ist.
Also ich hab den Raspberry Pi der als Server läuft (Apache2). Auf der
Website sind 3 LED Und 3 Button Heizung ein Aus Störung. Ich kann
mit den Buttons den Zustand der Heizung verändern das klappt anhand PHP
und PYTHON und SQLITE
So jetzt möchte ich dass die 3 Bilder den realen Wert der Anlage schauen
und diese an die Website schicken bzw diese verändern.
1 Lösung bevor ich eine Website aufrufe wird ein hpscript aufgerufen der
wiederum ein pythonscriptaufruft. In diesem Script wird dann alles
analysiert und dann die Website geschrieben wird in eine File die dann
als html aufgerufen wird.
2 Lösung eine php website
Also ich rufe heizung.php auf :
1Php --> Python --> SQLite
2 Php script schaut was in der Datenbank steht und benutzt dann Bild a
oder b . Die Website wird dann durch echo übergeben.
Vielen Dank im Voraus. Das wäre meine idee gibt es was leichteres zum
beispiel durch javascript oder so ?
Charel P. schrieb:> Ich hätte ne Frage, ich hab 2 Ideen weiss aber nicht was die bessere> ist.
Ich würde Dir gerne helfen, habe aber leider nicht einmal ansatzweise
verstanden was Du da machst, warum Du es machst, und wie Du es machst.
Bitte tu' Dir -- und uns -- den Gefallen und ordne bitte Deine Gedanken,
formulier sie strukturiert und im Idealfall ohne große Rechtschreib- und
Grammatikfehler, und gerne auch mit Beispielcode. Viel Erfolg!
Hallo,
Ich hätte ne Frage, ich hab 2 Ideen weiss aber nicht was die bessere
ist.
Also ich hab den Raspberry Pi der als Server läuft (Apache2). Auf der
Website sind 3 LEDs(Bilder) und 3 Button Heizung: Ein ;Aus ;Störung.
Ich kann mit den drei Schalter die Heizung steuern. 1 Einmal einschalten
, auschalten und die Heizung in den Dauermodus setzen. Die Heizung wird
ansonsten per Temperaturfühler überwacht im Normalfall. Durch die
Betätigung eines Schalters wird ein PHP - Script aufgerufen, der nur ein
Python-script aufruft. Im Python-script wird die Heizung durch die GPIOs
angesteuert. Das funktioniert auch alles wunderbar.
So jetzt möchte ich aber noch wissen wie der aktuelle Betrieb der
Heizung ist von der Website aus. Deswegen hab ich 3 LEDs als Bilder.
-Die 1 LED zeigt graue LED (nicht eingeschaltet) oder grüne
LED(eingeschaltet) durch Schalter Heizung an.
-Die 2 LED zeigt graue LED (eingeschaltet) oder grüne LED
(ausgeschaltet) durch den Schalter Heizung aus.
-Die 3 LED zeigt graue LED (fehlerfrei) oder rote LED (Störung) an.
So damit jetzt die Bilder je nach Zustand der Anlage gewechselt wird
hätte ich 2 Lösungen.
1 Lösung: Ich rufe keine html-datei auf sondern eine php-datei. Dort
wird mit Hilfe von Python und SQLite den Zustand ermittelt umd
anschliessend wird die ganze Website per echo ... ausgegeben.
2 Lösung: Bevor die Website aufgerufen wird, wird erst der Zustand der
Anlage ermittelt. In der Html-datei wird dann durch javascript Jquery
durchgeführt. Verbindung zum Server geöffnet mit Rückgabewert. Anhand
diesem Rückgabewert wird dann durch java... Bild1 oder 2 eingefügt.
Was ist die bessere Variante? Oder gibt es noch was anderes.
Charel P. schrieb:> Also ich hab den Raspberry Pi der als Server läuftCharel P. schrieb:> Durch die> Betätigung eines Schalters wird ein PHP - Script aufgerufen, der nur ein> Python-script aufruft. Im Python-script wird die Heizung durch die GPIOs> angesteuert.
damit WEISS der PI den Zustand der Heizung!
Charel P. schrieb:> Bevor die Website aufgerufen wird, wird erst der Zustand der> Anlage ermittelt.
wieso also?
Der PI kann die Bilder austauschen oder man nutzt Checkbox und HTML
mit
<meta http-equiv="refresh" content="120">
im HTML Code aktualisiere ich alle 2 Minuten beim NETIO die Webseite
LED on / off
<td>
<input type="checkbox" name="OUT" value="G" >
PCres (PC6)
</p>
<p align="center"><input type="submit" name="SUB" value="Senden"></p>
</td>
<td>
<p align="left"><img src="ledoff.gif" alt="" width="17" height="17">
PCres (PA1)</p>
</td>
z.B.
Moinsen!
Ich mache sowas gerne mit Javascript und Ajax (gibt es recht einfach mit
jqery).
Hat den Vorteil, daß man nicht immer die Seite komplett neu laden
muss,und deswegen 'straflos' etwas öfter nachfragen kann.
Bin etwas in Eile, bei Interesse ggfs. später mehr...
IdS,
Baku
Baku M. schrieb:> Moinsen!>> Ich mache sowas gerne mit Javascript und Ajax (gibt es recht einfach mit> jqery).> Hat den Vorteil, daß man nicht immer die Seite komplett neu laden> muss,und deswegen 'straflos' etwas öfter nachfragen kann.>> Bin etwas in Eile, bei Interesse ggfs. später mehr...>> IdS,> Baku
So würde ich das auch machen (y)
Deinen Lösung funktioniert und ist in Ordnung, ich schlage hier aber nur
ein paar Möglichkeiten vor, wie man es noch besser machen könnte. Die
Einarbeitung dafür kann aber etwas Zeit in Anspruch nehmen.
Warum gehst du dem Umweg über php und das Python Script. Du könntest ja
auch den Webserver gleich mit Python realisieren und direkt auf die
Datenbank zugreifen.
Das mit dem Neuladen der Seite ist einfach, wenn du das aber häufiger
machst, dann steigt die Wahrscheinlichkeit, dass die Seite beim Klick
neu geladen wird und dein Klick nicht angenommen wird.
Deshalb würde wir ich auch AJAX verwenden und nur die Daten abfragen und
die Seite lokal im Browser aktualisieren. Wenn die Seite noch weiter
wachsen soll, weil weiter Aktoren/Sensoren eingebunden werden, dann
würde ich es aber nicht wie baku mit jquery machen, sondern lieber eine
Framework verwenden. Ich verwenden mittlerweile React
(https://reactjs.org/). Allerdings erfodert das ganze etwas
Einarbeitung, gerade wenn man aus der Embedded Welt kommt.
Dir Krönung wären dann websockets. In diesem Fall hältst du einen
"Leitung" vom Browser zu deinem Server offen und der Server schickt
deinem Browser ein Update, sobald sich ein Zustand ändert.
Ich sage jetzt nicht, dass man das unbedingt soweit treiben muss, hängt
davon ab, wann man fertig werden will und was man in Zukunft noch
erweitern möchte.
Ich hab auch sowas gebaut, aber entkoppelt. Der Raspberry hängt an der
Heizung, am Stromzähler usw und loggt alle 5 min seine Daten in eine
Datenbank auf meinem V Server. Auf dem V Server läuft dann auch der
Apache, der mittels PHP die aktuellen und kummulierten Werte aus der DB
ausliest, die Homepage zusammen baut, Bilder tauscht, Text und Grafiken
und die Bilder einbaut usw...
Kannst du natürlich auch alles auf dem Raspi laufen lassen, wollte ich
aber aus Sicherheitsgründen nicht.
bla schrieb:> Baku M. schrieb:>>[...]> Ajax ja, jQuery nö. jQuery braucht man eigentlich nicht mehr, das> aktuelle JavaScript kann genug:>> https://scotch.io/tutorials/how-to-use-the-javascript-fetch-api-to-get-data
Schau mal an, da hab ich wohl die Zeit verpennt :-)
Das ist aber so ein typisches Verhalten (auch bei mir): Wenn etwas
funktioniert, dann macht man das eben immer so.
Besten Dank für den Hinweis sagt
Baku
https://caniuse.com/#search=fetch
naja, für eigene (private) projekte und seiten mit (hauptsächliche)
technisch interessierter zielgruppe ja.
allgemein nein, da die ie-unterstützung nicht ausreicht - das (hier
unflätiges schimpfwort einsetzen) teil ist immer noch viel zu weit
verbreitet (anteil > 0%)
der eine oder der andere schrieb:> https://caniuse.com/#search=fetch>> naja, für eigene (private) projekte und seiten mit (hauptsächliche)> technisch interessierter zielgruppe ja.>> allgemein nein, da die ie-unterstützung nicht ausreicht - das (hier> unflätiges schimpfwort einsetzen) teil ist immer noch viel zu weit> verbreitet (anteil > 0%)
Wenn man diese Zielgruppe unbedingt braucht, dann verwendet man
heutzutage einen Polyfill anstatt die ganze Seite nur deswegen mit
Uralttechnik zu bauen.
https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#Polyfill
Den Polyfill schmeisst man dann bei gegebener Zeit (wenn auch der letzte
sein ungepatchtes Windows von 2015 entsorgt hat) einfach raus.
Um für eine Statusänderung die Webseite neu auzurufen - das ist
unprofessionell, denn das kann just in dem Moment passieren, indem du
ein Kommando abschickst und dann ist der Status unklar: angekommen oder
nicht?
Also macht man die Kommandoebene (Buttons/Schalter) von der Statusebene
(z.B. LEDs) unabhängig.
Dies ist wiederum ist auf verschiedenen Wegen möglich.
Hat das System Kontakt zum Internet, kann man Ajax/JQuery benutzen, um
einzelne Objekte unabhängig vom Rest der Webseite zu aktualisieren.
Kontakt zum Web spielt deshalb eine Rolle, weil man die dazu notwendigen
Libs üblicherweise per Link (von Google) einbindet und nicht lokal
vorrätig hält.
Man kann auch etwas "selber basteln", z.B. mit iFrames und die
Aktualisierung erfolgt per Javascript und Timer. WebSockets (auch
Javascript) wären wohl auch möglich ...
Frank E. schrieb:> Kontakt zum Web spielt deshalb eine Rolle, weil man die dazu notwendigen> Libs üblicherweise per Link (von Google) einbindet und nicht lokal> vorrätig hält.
Geht aber auch problemlos ohne Internet, wenn man jquery nicht vom
Google CDN lädt, sondern vom Server ausliefern lässt. Da ja auch noch
Bilder verwendet werden sollen, muss der Pi Server sowieso statische
Dateien ausliefern.
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang