Posts by Fipsi

    __blackjack__ Okay, ich glaube, hättest du aufgezählt, was ich richtig gemacht hab, wäre dein Beitrag wesentlich kürzer geworden :stumm::stumm:


    Vielen Dank für deine Korrektur und ausführlichen Erklärungen, ich werd das mal versuchen zu verinnerlichen.


    Liebe Grüße


    Fipsi

    Na dann berichte mal, wenn es Fortschritt bei deinem Projekt gibt. :thumbup:

    So, ich weiß, das hat jetzt ein paar Monate gedauert, ich weiß und tut mir leid, es hatte sich bisher nicht rentiert, dass ich jetzt grad was bastel.

    Da ich jetzt in einer neuen Wohnung mit etwas besserer technischer Ausstattung bin, hab ich jetzt folgendes Script gebastel:



    Sobald mein Touchdisplay da ist, werd ich anfangen, eine Webseite und/oder ein Python-Script zur Steuerung des bisherigen Scripts schreiben.


    Liebe Grüße


    Fipsi

    Hallo zusammen,


    wer meine Projekte und bisherigen Threads verfolgt, kann sich wohl vorstellen, mit was ich jetzt um die Ecke komm:


    Ich hab für ein Teilprojekt von mir mehrere Raspberry Pis, die jeweils ein LED-Panel ansteuern. Die Pis sind über Python mit TCP-Sockets an einen Pi als Server angebunden. Das funktioniert soweit bisher alles so gut und passt.

    Das Problem kommt jetzt: Ich will die Anzeigen über den Webbrowser steuern. Ja, ich weiß, für JavaScript gibt's WebSockets und damit hab ich die letzten Tage gespielt und getestet, aber das Handling gefällt mir nicht, allein schon, weil es kein vernünftiges Handling für multiple Clients gibt (oder ich es zumindest nicht gefunden hab).


    Deswegen meine Frage: gibt es eine Möglichkeit, wie ich im Browser auf TCP-Sockets zugreifen kann?

    Ich hab auch schon Bridges Websockets/TCP-Sockets probiert, hat mir auch nicht gefallen.

    Ich würde fast alle Umwege gehen, die nur auf dem Server laufen. Es ist wichtig, dass ich auf dem Client nichts brauch/machen muss, ich also jedes Handy, Tablet oder Laptop zum ersten mal hernehmen kann, die Webseite der Steuerung aufrufen kann und das dann sofort läuft, ohne was einrichten oder installieren zu müssen.


    Hat hier jemand Ideen oder kennt sogar was?

    Die Suche nach "TCP-Sockets im Browser" hat nichts sinnvolles ergeben...


    Vielen Dank und

    liebe Grüße


    Fipsi


    Blöde Frage, aber den Firefox welchen du aufrufst, der läuft auch auf dem PI ?
    Nicht das du versuchst vom Notebook aus mit dem Firefox auf "Localhost" zuzugreifen :)

    Nööö... vom Firefox von meinem Laptop aus. :bravo2:

    Aber wie gesagt, mit dem Hostname und der IP-Adresse sagt er das selbe...


    Liebe Grüße


    Fipsi


    Edit:

    *Trommelwirbel*

    Jetzt klappt's. Ich hab im Python-Script immer localhost angegeben.. wenn ich aber die IP-Adresse angebe oder das Feld leer lass, dann kann ich über die IP-Adresse oder dem Hostname im JavaScript verbinden.

    Jetzt dürft ihr mich mit Wattebällchen bewerfen, bis ich blute :shy:

    Also mit

    Code
    ss -t -a -n

    ist Port 14401 erst belegt, wenn ich das Python-Script starte, mit dem ich den WebSocket öffne:

    Code
    pi@arwstst:~ $ ss -t -a -n
    State           Recv-Q       Send-Q                                       Local Address:Port                                          Peer Address:Port        
    LISTEN          0            100                                              127.0.1.1:14401                                              0.0.0.0:*       


    Aber JavaScript kann sich laut Firefox trotzdem immer noch nicht verbinden, egal, ob ich als Adresse localhost, 127.0.01 oder den Hostname angebe.

    Hat noch jemand ne Idee, was ich verkack?


    Liebe Grüße


    Fipsi


    Edit:

    Gerade noch ein wenig gegooglet und dann mal vom Laptop aus geprüft, ob der Port am Pi offen ist:

    Code
    me@laptop:~$ nc -w5 -z -v 192.178.168.31 14401
    nc: connect to 192.178.168.31 port 14401 (tcp) timed out: Operation now in progress

    Nö, aber wenn es auf einem Port geht und auf dem anderen nicht, bedeutet es doch, dass der andere Port schon belegt ist, oder nicht ? :denker:

    Ich wüsste nicht, von was der belegt sein sollte.

    Außerdem würde dann doch das Python-Script, das den WebSocket-Server startet, abstürzen mit nem Error? Das lief aber mit der Meldung, dass der Server erfolgreich gestartet werden konnte.


    Liebe Grüße


    Fipsi

    Ich glaub nicht, dass das was mit ner Firewall zu tun hat, da ich im eigenen Netzwerk bin und nur auf einem Pi mit meinem Laptop.
    Über den Port 14400 kann ich von einem anderem Pi auf den hier betreffenen mit TCP-Sockets auch zugreifen, dann sollte ja der 14401 auch gehen?


    Der nmap-Scan sagt jetzt auch nichts blockierendes aus, soweit ich das sehe:


    Liebe Grüße


    FIpsi

    Nachdem meine Versuche mit ner TCP-/Web-Socket-Bridge fehlgeschlagen sind, versuch ich's jetzt wirklich mit WebSockets.


    Dazu hab ich auf meinem Raspberry Pi folgende Scripte laufen:


    Python: server.py
    import asyncio
    import websockets
    
    async def echo(websocket, path):
        async for message in websocket:
            await websocket.send(message)
    
    asyncio.get_event_loop().run_until_complete(
        websockets.serve(echo, 'localhost', 14401))
    asyncio.get_event_loop().run_forever()


    JavaScript: client.js
    var socket = new WebSocket("ws://localhost:14401")


    Wenn ich dann im Browser das JS aufrufe, kommt in der Konsole folgende Meldung:

    Firefox kann keine Verbindung zu dem Server unter ws://localhost:14401/ aufbauen.


    Was mach ich denn in den wenigen Zeilen schon falsch? :conf::conf:


    Liebe Grüße


    Fipsi


    Edit:

    Ich hab mich gerade ein wenig in Flask eingelesen. Ist es vielleicht sinnvoller das zu verwenden? Das Problem dabei ist allerdings, dass auf dem Pi bereits ein Apache läuft mit Webseite, auf der eben das JS-Script laufen soll.

    Hallo zusammen,


    nachdem meine Socket-Verbindung vom Server zur Ampel über Python einwandfrei funktioniert, bin ich jetzt soweit die Steuerung zu basteln.

    Ich hab kurz ein wenig gegooglet und dabei soviel gelesen wie: JavaScript kann nur WebSockets und WebSockets können sich nicht mit "normalen" Sockets verbinden.

    Stimmt das so? Oder ist das ein alter Stand?

    Oder muss ich tatsächlich in meinem Pythonscript einen zweiten Socketserver öffnen (für Websockets), über den dann die Steuerung läuft? Kann ich das nicht in einem bündeln?


    Vielen Dank im voraus und

    liebe Grüße


    Fipsi

    Also ich hab jetzt heut mit meinem Kollegen gredt, wir können des morgen oder am Freitag machen. Er kann ca. 20 verschiedene Formate anbieten, was hättest du denn gern? :D

    Mein Kollege meinte, er würde dwx oder dwf (ich hoffe, das wären die Formate.. :saint:) bevorzugen.


    Liebe Grüße


    Fipsi

    Uff, okay. Ich glaub, da frag ich dann morgen doch lieber noch mal in der Arbeit, ob mir jemand die Konturen schießen und in irgendein CAD wandeln kann.

    Das mit dem Millimeterpapier seh ich als sehr schwierig, weil bis auf das Ladegerät nichts eben aufliegt.

    Ich melde mich dann noch mal.


    Vielen Dank und

    liebe Grüße


    Fipsi

    Das schaut ja schon echt gut aus.

    Ich muss leider zugeben, dass ich mit Winkel und Radius nicht dienen kann, weil ich nicht hab, um die zu messen.

    Aber mir kommt da grad ne andere Idee: bei mir in der Arbeit haben die so n Gerät zum Konturen fotografieren. Des is ne weiß beleuchtete Platte mit Kamera drüber. Das können die dann in ihr CAD kopieren und müssen nur noch ein Maß angeben, der Rest wird dann automatisch skaliert.

    Ich hab zwar keinen Zugriff darauf, aber weißen Hintergrund und n Handy 😅 würde Dss damit auch funktionieren, bzw. könntest du das so auch machen?


    Liebe Grüße


    Fipsi

    Danke für eure Antworten, ich werd meinen Bekannten gleich mal anfunken.


    Der Grund, weshalb ich hier nachgefragt hab anstatt das selbst zu machen, ist, dass ich momentan zu viel um die Ohren und damit nicht die Zeit hab, mich in CAD und irgendein Programm einzuarbeiten, was als Anfänger ja noch wesentlich länger dauern wird, als wenn ich das schon einige Zeit machen würde ;)


    Liebe Grüße


    FIpsi

    Mir kam gerade noch ein anderer Gedanke wegen der ganzen HF-/NF-Geschichte: gibt es einen Bereich im Schaltschrank, der noch ungenutzt, also leer ist und auch keine Leitungen über 24 V vorbei führen? Wenn ja, könntest du die Relais da einbauen (lassen) und von da weit weg von den 230 V zum Pi gehen? Dann hast du am wenigsten EM-Störungen.

    Oder, falls das auch eine Option wäre: dass du deine Sicherungen mit 230 V auf einer Leitung "sammelst" und dann aus dem Schaltschrank raus in einen weiteren Klemmkasten gehst, in welchem die Relais und ggf. auch gleich der Pi dann sitzt. So sparst du dir unnötig lange 3,3 V-Leitungen und bis von der 230 V-Sache relativ weit weg.

    Wäre eine Idee, aber zu deren Bewertung kenn ich zu wenig Angaben zu den Gegebenheiten vor Ort und dem Budget ;)


    Liebe Grüße


    Fipsi