Posts by mc-gl

    Hi __deets__


    Ich konnte soeben endlich wieder an das Projekt sitzen. Ich habe mir deine Links nun einmal angesehen. Leider ist es für mich gerade nicht ganz verständlich. Wie bereits erwähnt, ist das eins meiner ersten Phyton Script und ich verstehe im Moment nicht was du genau meinst, bzw. was die Links zu bedeuten haben.



    Mir faellt nur auf, dass du readline() aufrufst, nur das du dann das Ergebnis wegwirfst. So geht das nicht. Damit wartet der dann blockierend auf die naechste Eingabe, und hat vorher alles weggeworfen.


    Wo werfe ich ein Ergebnis weg? meinst du weil ich sie nach dem ausgeben nicht weiter verwende? Das ist nur so, weil ich Das Script noch nicht flüssig zum laufen gebracht habe, ich habe deshalb die Daten noch gar nicht weiter gesendet. Wollte test weise erst in der Console alle Werte laufend sehen und mich dann dem nächsten Step zuwenden.


    Es wäre mir auch lieber die Einkommenden Serial Daten in einem Interrupt als in einer While auszulesen. Allerdings habe ich auf den ersten Blick nicht die richtigen Befehle auf deinen Links gefunden.


    Stattdessen solltest du - gut dokumentiert hier: https://pythonhosted.org/pyserial/pyseri...in_waiting bzw https://pythonhosted.org/pyserial/pyseri....inWaiting - die Anzahl der aufgelaufenen Bytes benutzen.


    Wie müsste der Interrupt denn geschrieben werden?
    Vielleicht um Missverständnisse zu vermeiden: ich verstehe dass der Interrupt die Daten des Serial nur dann ausliest wenn auch tatsächlich vorhnaden sind richtig verstanden?



    Aber was hat das Serielle auslesen mit Tornado zu tun?


    Und so vorzugehen wie du das tust geht das nicht. Du benutzt einen blockierende while-Schleife. Stattdessen solltest du mit http://www.tornadoweb.org/en/s…ioloop.IOLoop.add_handler und dem jeweiligen serial-Objekt auf einkommende Daten warten.


    Vielen Dank für eure Hilfe :)

    Hallo Zusammen


    Ich habe nun einiges zum laufen gebracht.


    Habe meine Arduinos umgeschrieben sodass Sie auf die richtigen Befehle antworten und dementsprechend auch eine Antwort geben.


    Auch habe ich das Python Script so bearbeitet dass es via Tornado von einer Webseite einen Befehl erhalten (nach dem Script von meingrafd), diese an die beiden Arduinos auf USB0 und USB1 weitergeben und dann auf Antwort horcht.


    Nun denn: ich erhalte Antworten in der Konsole diese jedoch nur unregelmässig.


    Zum Verständnis:
    Ich senden den Arduinos den Befehl start. Diese lesen nun jeweils eine Laserschranke in Dauerschleife aus. Sollte die Schranke unterbrochen werden, so senden Sie eine Antwort an den Raspi zurück, welcher dann die Antwort splittet um zu erkennen welcher Arduino diese Antwort gesendet hat. Diese erhalte ich, wie ich schon erwähnt habe allerdings nur unregelmässig.


    Ich gehe davon aus das der Pi ein durcheinander hat welcher Port jetzt was sendet. Allerdings habe ich keine Ahnung an was es liegen könnte


    hier mein Tornado Python Script:




    Findet Ihr das Problem in meinem Script? Oder habt Ihr gar eine Lösung?


    Vielen Dank
    Gruss GL

    Hallo meingrafd


    Vielen Dank für die Verlinkung zu deinem Tutorial


    Ich habe es nun nachgebaut (ohne json, mit tornado) Allerdings habe ich nun das Problem, dass die Verwindung aus dem Browser zum Script zwar hergestellt wird, allerdings wird der Befehl nicht gesandt bzw. empfangen. Bei einem klick auf den Button CPU Temp passiert... gar nichts.


    Folgendes passiert beim Laden der Seite im Browser mit "meineIP:8080"


    im Terminal Raspi wird folgendes angezeigt

    Code
    WARNING:tornado.access:404 GET /static/control.js (meine IP) 13.44ms
    WARNING:tornado.access:404 GET /static/websocket.js (meine IP) 4.97ms



    Die Websiete zeigt:
    WebSocket Status: closed


    Test: 757



    Firebug zeigt:

    Code
    "NetworkError: 404 Not Found - http://192.168.2.27:8080/static/control.js"             control.js
    "NetworkError: 404 Not Found - http://192.168.2.27:8080/static/websocket.js"           websocket.js
    ReferenceError: init is not defined                                                    192.168.2.27:8080 (Zeile 1, Spalte 1)



    Wirst du daraus schlau? Google konnte mir bisher nicht helfen


    Gruss GL

    Hallo maigrafd


    Super! Danke! Habe schon verzweifelt nach einem guten tutorial gesucht. Mit diesem könnte ich tatsächlich weiterkommen :)


    Melde mich wieder wenn ich mich durch gelesen und meine ersten Schritte gemeistert habe :)


    Gruss Gl



    Gesendet von iPhone mit Tapatalk

    Hi __deets__


    Ich glaube wir hatten auch schon mal das Vergnügen, schön wieder Tipps von dir zu erhalten. Das letzte Mal hats genützt :)


    Irgendwie ist mir dass jetzt zu viel Information auf einmal gewesen :)


    Habe mich nun in der letzten Stunde ein wenig mit Tornado auf Youtube beschäftigt. Es ist tatsächlich das was ich benötige. Allerdings habe ich nun eben das Problem, dass ich mich zu wenig mit Phyton auskenne. Auch die JQuery Sache habe ich nur anhand einem Forum fertig gebracht, weil da jemand so nett war und mir dies praktisch pfannenfertig geliefert hat. Bin eben ein Generalist, kann von allem etwas aber nichts richtig :/


    Einen Tipp wie mir der Einstieg in diese Materie am einfachsten gelingt?


    bzgl. Datenbank:
    Es ist in der Tat das Ziel ein Ranking zu erstellen und sämtlich Spielergebnisse zu loggen. Das ganze soll auch noch um einen RFID Leser erweitert werden mit welchem die Spieler sich einloggen. Wenn dieses Test Objekt funktioniert würde ich dies auch für Turniere mit mehreren Tischen einsetzen.


    Übrigens nochmals zum Verständnis:
    Du meinst der Ablauf sollte wie folgt sein.


    Via HTML wir der Spielmodus gewählt und mittels Tornado an Phyton Script übergeben.
    Dieses regelt das ganze Spiel (zählt Punkte und stellt fest wann das Spiel gemäss Modus beendet ist)
    Während des Spiel liefert das Python Script auch via Tornado RealTime den Spielstand an HTML
    nach Beendigung des Spiels meldet Phyton - Tornado das auch ans HTML und dieses fällt zurück auf die Moduswahl, während Phyton noch den Eintrag in die DB macht.


    Ist das korrekt?


    Gruss GL

    Hallo Zusammen


    Ich versuche gerade unseren Kickertisch zu automatisieren. Dies wie folgt:


    Ein arduino kontrolliert die laserschranken der Beide Tore. Wenn eine unterbrochen wird zählt er dies Als Tor.


    Diese Daten kann ich jetzt bereits erfolgreich via USB an der Raspi weitergeben und mit einem Phyton Script verarbeiten.


    Nun soll der Punktestand auf einer Webseite angezeigt werden. Direkt am Raspi über ein Touchscreen wie auch von anderen Geräten im Netzwerk.


    Dies stellt nun das Problem dar, da mein Wissen von Phyton oder von Javascript beschränkt ist. (PHP, HTML, mysql ist kein problem)


    Bis jetzt habe ich es geschaft die die Daten von Phyton in ein txt zu schreiben welche ein Jquery aufnimmt und in die Webseite integriert.


    Allerdings sollen mehrere Spielmodus möglich sein. Z.B: bis 5 punkte, bis 10 punkte, zeit spiel u.s.w. Das heisst meiner Meinung nach sollte die Gameengine auf der webseite gemanaget werden. Während die arduino seite nur punkte zählt.


    Wie bringe ich das jetzt am besten umgesetzt:


    Modus wählen auf webseite - webscript starten im gewählten modus - kontrollieren ob spiel beendet ist und gleichtzeitig live feed über punkte stand.
    Natürlich werden die ergebnise am Ende noch in eine Mysql Datenbank gespeichert.


    Ich wäre froh um Lösungsansätze.


    Vielen Dank


    Gruss GL



    Gesendet von iPhone mit Tapatalk


    Also ich hab's gerade noch mal probiert - auch auf dem PI (vorher "nur" mein Mac, aber unix ist unix in diesen Dingen), und da geht's.


    Bitte pruef noch mal, ob du die Pfade zu den richtigen Programmen angeben hast. Ich vermute dein rumgebastel hat das verhackstueckt. Du musst den vollen Pfad, der an subprocess.Popen uebergeben wird, auch so in der Shell eingeben koennen - und dann muss da hochgezaehlt werden. Also /tmp/test, oder wohin auch immer du das Programm kompiliert hast.


    Hallo Deets



    Vielen Lieben Dank für deine Unterstützung.


    Ich konnte das Projekt heute zu ende bringen.
    Die Daten der Wetterstation werden nun mit deiner Script Hilfe in meine DB geschrieben.


    Es war tatsächlich ein Pfad Problem. Ich habe nicht bemerkt, dass du den Pfad absolut gesetzt hast und habe somit bei mir den Pfad relativ gehalten. Dumm... :blush:



    So sieht nun mein Pyhton Script aus:


    Und Hier RFSniffer:



    Für die die es interessiert, hier der Arduino Code:


    Es ist natürlich noch nicht der definitve Code. Da muss ich noch ein paar Sachen ändern. Aber Immerhin kommen die Daten nun an.


    Vielen Dank nochmals. Und sorry für meine Flüchtigkeitsfehler. :danke_ATDE:


    Gruss GL

    Aaaahaa


    Beim Scrollen ist die erste Zeile im Script "import subprocess" nicht angezeigt worden und somit nicht mitgekommen.


    Nun passiert beim ausführen auch was allerdings nicht viel. Die Console wird Schwarz, bzw wird mit Nichts gefüllt. Beim Abbruch mit Ctrl+C erschein diese Meldung:


    Code
    ^CTraceback (most recent call last):
    File "test2.py", line 14, in <module>
    main()
    File "test2.py", line 10, in main
    print(data)
    KeyboardInterrupt
    close failed in file object destructor:
    sys.excepthook is missing
    lost sys.stderr



    Wenn ich den Code richtig verstehe müsste dort doch jetzt gezählt werden genau wie wenn ich das CPP Script selbst ausführe. Oder Irre ich mich?
    Automatisch zusammengefügt:[hr]
    Okay und wieder weiter:


    nun erhalte ich nur noch den Fehler


    Code
    Traceback (most recent call last):
    File "test2.py", line 14, in <module>
    main()
    File "test2.py", line 6, in main
    stdout=subprocess.PIPE,
    File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
    File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
    OSError: [Errno 2] No such file or directory


    Hallo Deets


    Hast du bemerkt dass ich noch ein edit vorgenommen habe?


    Wenn du den RFSniffer schon zum laufen gebracht hast - dann sollte dir doch eigentlich aufgefallen sein, dass man den kompilieren muss. Das gilt natuerlich auch fuer test.cpp. Das kann an nicht direkt ausfueheren. Sondern muss es zB mit "gcc -o /tmp/test /tmp/test.cpp" uebersetzen.


    Und der "Syntaxfehler beim unerwarteten Wort (" klingt auch komisch - wie fuehrst du das denn aus?!?!?


    Hallo deets


    Uuuups da wusste ich wohl noch weniger über C++ als gedacht. War eigentlich logisch ;)


    Somit funktioniert das Cpp Script schon mal und zählt munter vor sich her.


    Das phyton File habe ich mit chmod +x ausführbar gemacht und führe es dann mit ./test2.py aus.


    gibt es noch andere Möglichkeiten?


    Sorry für meine Unwissenheit. Deshalb habe ich mich auch nach langem überlegen hier gemeldet (ist immer meine letzte Option, will normal alles selbst herausfinden / ergoogeln;) )


    Gruss GL



    Edit: uuuups das waren ja die Bash scripts :/
    mit Python test2.py erscheint folgendes:


    Code
    Traceback (most recent call last):
    File "test2.py", line 12, in <module>
    main()
    File "test2.py", line 2, in main
    p = subprocess.Popen(
    NameError: global name 'subprocess' is not defined

    Hallo Deets


    Vielen Herzlichen Dank für deinen Aufwand.


    Allerdings muss ich irgendwas nicht richtig verstanden haben.


    Ich habe soeben (bevor ich am RFSniffer rum bastle) dein Testscript bei mir versucht.


    Alledrdings werden mir folgende Fehler beim asuführen angezeigt:


    Ausführen vom Phytonscript:

    Code
    ./test2.py: Zeile 1: Syntaxfehler beim unerwarteten Wort `('
    ./test2.py: Zeile 1: `def main():'


    beim direkten Ausführen vom C++ Script:

    Code
    ./test2.cpp: Zeile 4: Syntaxfehler beim unerwarteten Wort `('
    ./test2.cpp: Zeile 4: `int main()'


    Was bei mir noch anders ist. ich habe beide Dateien im selben Ordner und im Phytonscript den Verweis von "/tmp/test" auf "test2.cpp" geändert.


    Kannst du mir hier vieleicht nochmals kurz aushelfen? ich bin dir wirklich schon seeeeehr Dankbar für deinen bisherigen Input.


    Dann benutz doch kein C++. Fuer eine so simple Aufgabe.


    Stattdessen zB mit Python's subprocess-Modul den RFSniffer aufrufen, Ausgabe verarbeiten und in die DB schreiben.


    Hallo Deets


    Danke für deine Antwort


    Wie kann ich denn die fortlaufenden Daten mit Phyton abfangen?


    Gruss GL

    Hallo Zusammen


    Ich habe mir mit einem Arduino eine Funkwetterstation gebaut welche autonom mit Batterien im garten angebracht wird. Sie misst regelmäßig Temperatur, Luftfeuchte, Regen, und Helligkeit. Die Daten setzt Sie verschlüsselt per Funk an meinen Pi ab und geht danach wieder für 8 Minuten in den Sleep.


    Der Raspi empfängt die Daten mit den 433Utils. Das alles funktioniert wunderbar. Allerdings bleibe ich jetzt an meinen wirklich mangelhaften C++ Kenntnissen hängen. Die Datei RFSniffer möchte ich nun so umschreiben, dass dieser wenn Werte empfangen werden, diese in eine Mysql Datenbank schreibt, welche auf meinem NAS Server läuft.


    Vielleicht noch zu Info: Die Daten welche gesendet werden kommen verschlüsselt. Anhand dem Code kann später herausgefunden werden für welche Daten der übermittelte Wert steht.


    Um nicht falsch verstanden zu werden. Ich verlange nicht nach einer Komplettlösung. Ich erhoffe mir mit diesem Beitrag aber einen Wegweiser für den richtigen Lösungsweg mit dem Hintergedanke, dass ich mich zwar in vielen Programmiersprachen auskenne ausser in C++ ;)


    Hier meine RFSniifer:





    Vielen Dank schon Mal


    Gruss GL

    Hallo Zusammen



    Ich habe das Problem, das ich bereits auf zwei Jessie Images Xrdp installiert habe.


    Jedoch ist von der Windows 10 Remote App keine Verbindung möglich. Das Bild bleibt einfach schwarz.


    Hat jemand anderes das selbe Problem oder eine Idee um dies zu beheben? Google konnte mir leider auch nichts für mich brauchbares liefern :(


    Vielen Dank im Voraus.


    Gruss GL