Raspberry Webserver uart kommunikation

Gast #5977874
Lesenswert?

Hallo,
ich spiele ein bischen mit dem Raspberry.
Ich habe den lighttpd Webserver installiert und auch meine eigene Seite 
erstellt.

Nun meien Frage ich möchte gerne meine Lichter über die Webseite per USB 
schalten.

Am USB Port ist ein USB zu Seriell adapter der ist am STM32F4 
angeschlossen.

1. Es sollte dann über die Webseite ein String zum STM32F4 gesendet 
werden mit der information an oder aus.

2. Der Staus der einzelnen Lichter sollte dann auch auf der Webseite 
Angezeigt werden.

Könnte mir einer weiterhelfen , im Web hab ich nichts gefunden oder 
vielleicht auch  nicht die richtigen Suchbegriffe verwendet
Angehängte Dateien:
Gast #5977883
Lesenswert?

Du musst dazu ein Script auf dem Webserver ausführen.

Ein Formular auf der Webseite wird per POST an den Server gesendet. Der 
führt ein Script aus, welches die geposteten Parameter auswertet und 
dementsprechend seriell mit dem STM32 kommuniziert.

Ich würde das mit PHP machen.
https://opensource.com/article/17/3/operate-relays-control-gpio-pins-raspberry-pi
http://www.ko4bb.com/getsimple/index.php?id=serial-port-access-from-php-with-raspberry-pi

Oder mit einer Qt Anwendung, die selbst Webserver ist: 
http://stefanfrings.de/qtwebapp/index.html

Auf jeden Fall solltest du zuerst die Webseite entwickeln, ohne 
Kommunikation zum STM32.Dann machst du den STM32 fertig, ohne 
Kommunikation zum Webserver. Kannst du  ja mit einem seriellen 
Terminalprogramm (Cutecom, Hammer Terminal) testen. Wenn diese beiden 
Teile unabhängig laufen, erst dann bringst du sie zusammen.
Gast #5977920
Lesenswert?

Stefanus F. schrieb:
> Du musst dazu ein Script auf dem Webserver ausführen.

> Ich würde das mit PHP machen.
> 
https://opensource.com/article/17/3/operate-relays-control-gpio-pins-raspberry-pi
> 
http://www.ko4bb.com/getsimple/index.php?id=serial-port-access-from-php-with-raspberry-pi
>

Der STM32 funktioniert bereits tadellos.

mein problem ist dahin gehend das PHP in der Webseite zu integrieren für 
die Kommunikation.

ich habe für meine Anwendung auch keine Beispiele gefunden.

ich habe den raspberry erst seit ein paar Tagen
Gast #5977972
Lesenswert?

andre schrieb:
> bei diesem weis ich auch nicht welchew nummer ich dort am USB eingebe
> $serial->deviceSet("/dev/ttyUSB0");

Stecke deinen USB-UART Adapter an und gebe danach "sudo dmesg" ein. Dann 
müsste eine Meldung erscheinen, wie das Device heisst. Es müsste 
irgendwas mit /dev/tty... sein.

Dann teste die Kommunikation mit deinem STM32, indem du ein 
Terminalprogramm  (Cutecom) verwendest. Dort wirst du dieses Device auch 
einstellen müssen.
Gast #5977994
Lesenswert?

Stefanus F. schrieb:

> Stecke deinen USB-UART Adapter an und gebe danach "sudo dmesg" ein. Dann
> müsste eine Meldung erscheinen, wie das Device heisst. Es müsste
> irgendwas mit /dev/tty... sein.
>
> Dann teste die Kommunikation mit deinem STM32, indem du ein
> Terminalprogramm  (Cutecom) verwendest. Dort wirst du dieses Device auch
> einstellen müssen.
Die Kommunikation funktionier tadellos.
Gast #5978018
Lesenswert?

Wo genau ist dann dein Problem?

Du kannst dem stm Daten schicken. Bau das in ein Skript und führe das 
per php (Google: "php execute Script") aus.

"kein Beispiel gefunden" zählt nicht. Konkrete Probleme bitte oder eben 
mit den Grundlagen - zum Beispiel auf Basis der genannten Tutorials - 
bekannt machen.
Gast #5978033
Lesenswert?

Testfall schrieb:
> Wo genau ist dann dein Problem?
>
> Du kannst dem stm Daten schicken. Bau das in ein Skript und führe das
> per php (Google: "php execute Script") aus.
>
> "kein Beispiel gefunden" zählt nicht. Konkrete Probleme bitte oder eben
> mit den Grundlagen - zum Beispiel auf Basis der genannten Tutorials -
> bekannt machen.

Mein Problem ist wie ich das in meine HTML Seite einbaue und speichere 
ich das script mit welche Rechte
Gast #5978724
Lesenswert?

Ich würde den STM nicht direkt über die Webseite per UART ansteuern.
Ähnliches hatte ich anfangs auch gemacht, war dann aber bei 
Erweiterungen
und Änderungen sehr unflexibel und wurde geändert.


Ich hätte folgenden Vorschlag (bei mir seit langem im Einsatz):
---------------------------------------------------------------
a) UDP-Server in Python, der die UART bedient
Der Server lauscht auf einem UDP-Port und verarbeitet UDP Datenpakete
In den Datenpaketen stecken die Befehle, die dann per UART
an das angeschlossene Gerät gesendet werden

b) dann so wie oben beschrieben mit php arbeiten, aber das php schickt
 UDP-Befehle an den Server und nicht direkt Befehler per UART.



Hier der sehr "übersichtliche" Server, der meine FS20 Aktoren im 
Netzwerk ansprechbar macht:


#!/usr/bin/python

#-------------------------------------------------------------
# imports
#-------------------------------------------------------------
from socket import *
import serial
import time


#-------------------------------------------------------------
# UDP server configuration
#-------------------------------------------------------------
HOST = "0.0.0.0"
PORT = 49454


#-------------------------------------------------------------
# serial RS232 interface
#-------------------------------------------------------------
ser = serial.Serial('/dev/ttyS0', 9600)


#-------------------------------------------------------------
# main loop
#-------------------------------------------------------------
serversock = socket(AF_INET, SOCK_DGRAM)
ADDR = (HOST, PORT)
serversock.bind(ADDR)
print('waiting for UDP connection on port', PORT)

while 1:
  data, sender_addr = serversock.recvfrom(128)
  ser.write(data)
Gast #5978727
Lesenswert?

Heinz schrieb:
> a) UDP-Server in Python, der die UART bedient
> Der Server lauscht auf einem UDP-Port und verarbeitet UDP Datenpakete
> In den Datenpaketen stecken die Befehle, die dann per UART
> an das angeschlossene Gerät gesendet werden

Das gibt es schon fertig und hört auf den Namen "socat".

https://unix.stackexchange.com/questions/453974/create-a-udp-to-serial-bridge-with-socat
Gast #5978737
Lesenswert?

Mein Aspekt war eigentlich  nur, dass ich anregen wollte, die serielle 
Schnittstelle nicht direkt an die http POST Requests anzuknoten.

Aber viele Wege führen nach Rom insofern ist deine Anmerkung absolut 
berechtigt ;)
#5978884
Lesenswert?

andre schrieb:
> pegel schrieb:
>> Was spielt eigentlich der Raspi für eine Rolle in dem ganzen
>> Projekt.
>>
>> Wenn schon ein STM32F4 im Spiel ist, sieh dir einfach das Beispiel
>> "Webserver mit SSI and CGI" an.
>
> Dort nutze ich den LWIP WEB-Server leider wird der Speicher langsam
> knap.
dann lass doch die Seite[n] die die Befehle entgegen nimmt oder aktuelle 
Zustände liefert (am besten per JSON) auf dem STM.
Oder sende die Daten per UDP aus dem PHP-Script vom Raspi zum STM.

Sascha

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren