Beiträge von Tom

    Hallo René,

    vielen Danke für die schnelle, umfangreiche Antwort. Das wird wohl ein Vorhaben fürs nächste Wochenende, aber mittlerweile hast du wohl auch bei den 11-jährigen eine Anhängerschaft. :-)
    War wirklich eine coole Idee. Viele Grüße in die Schweiz.

    Hallo Community,

    ich fand diese Spieleserie ganz interessant um meinem Sohn die Programmierung ein wenig schmackhaft zu machen. Und ja - es gefiehl ihm. Ein paar kleine Änderungen auszuprobieren machte ihm ebenso Spass. Nun meinte er, dass es eine Bereicherung für das Spiel wäre, wenn der kleine Ninia zwei Leben hätte und nicht gleich bei der ersten Kollision sein Leben lassen müsste. Ok, dachte ich - hört sich gar nicht so schwierig an, also habe ich einfach eine Variable "lebenspunkte" eingebaut, diese beim Start des Spielers auf 2 gesetzt und dann bei einer Kollision einen Wert > 0 abgefragt, um eine Aktion auszuführen bei der die Figur nicht gleich die nächste Kollision hat und den lebpunkte-Zähler um eins reduziert. Dies klappte auch mit dem Spieler, der dann noch nicht umfällt, doch lieder wird das Spiel auch in der "Hindernis-Klasse" gestoppt bzw. die Hindernisse und hier ist die Variable nicht bekannt. Auch die Variable in der Game-Klasse mit global zu deklarieren brachte mich nicht weiter. Vielleicht hat einer von euch einen Lösungsvorschlag. Vielen Dank !

    Hallo an euch alle hier,

    gerade etwas amüsiert habe ich die Beträge gelesen. Amüsiert deswegen, weil ich sehe welche Mühe sich zwei der besten Spezialisten hier im Forum geben, um aus minimaler Information das beste Ergebnis zu erzielen.

    Jetzt muss ich gleich mal sagen, dass ich bei weitem nicht die Ahnung von Nische und KaiR habe, aber es gibt ein YT -Video mit einem solchen Thema und ich sehe, dass schon die Schnittstelle zu dem Spiel eine Herausforderung ist. Vor allem mit den Informationen und das ist jetzt nicht böse gemeint.

    Ein großes Problem ist meist Folgendes: Wenn es sich um einen Tacho der letzten 15-20 Jahre handelt, wird er mit großer wahrscheinlichkeit am CAN-Bus betrieben. Diese Parameter, Register oder wie auch immer man das nennen will, sind meist nicht für die Öffentlichkeit dokumentiert. Mit etwas Glück kann man sie von einem KFZ-Elektriker erhalten. Dann aber fast nur über die Vertragswerkstätten - in diesem Fall VW ( wenn es sich um einen Golf-Tacho handelt )

    Trotzdem viel Glück bei dem Vorhaben.

    Hallo Sven,

    hatte ebenfalls Probleme mit China Arduinos. Diese waren zwar relativ speziell, denn alles lief soweit, aber Estlcam konnte ich darauf nicht aufspielen.

    Ich hatte dann beim Lieferanten nachgefragt und die hatten mir sogar die Erstattung des Kaufbetrages angeboten.

    Und dann kam mir eine Idee: Es gab hier auf dem Kanal ein Video wie man einen Arduino mit einem anderen Arduino programmieren kann ( "Bootloader" neu brennen. ) Dies habe ich mit allen Arduinos gemacht und seither laufen alle problemlos. Falls du das Video nicht findest - es existieren etliche andere im Netz. Einen Versuch könnte es wert sein. Warum das hilft ? Da wissen wahrscheinlich nur die Programmierer, die den Chip vorprogrammiert haben.


    Gruß Tom

    - das wäre das Video

    Hallo René,

    danke für die nachträgliche Antwort ;-). Ja, ich denke das Eberhard das gleiche Shield verwendet wie ich damals und da waren die vielen Pins ( drei pro Motor) wirklich nervig. Es hatte auch diesen Enable-Pin, der dann per PWM-Signal auch die Drehzahlsteuerung übernehmen konnte.


    Gruß Tom

    Hallo ihr zwei !

    Vielen Dank für eure ausführlichen Erklärungen. Bin immer froh, weil ich mir gut vorstellen kann wie banal ein solches Problem für euch Profis ist.

    Danke !

    Gruß Tom

    Hallo Eberhard und René,

    ich möchte hier noch kurz was dazu sagen. Ich hatte das gleiche Problem mit den Pins eines Motorshields. Es mussten immer die beiden Pins entgegen gesetzt werden und da hast du dieses Problem sehr elegant mit einem "Invertierenden Baustein" umgangen und so einen Pin gespart. Ich fand diese Lösung sehr rafiniert und habe dich nach einem solchen Baustein schon mal gefragt, in diese Richtung jedoch keine Antwort bekommen. An das Video kann ich mich nicht mehr so genau erinnern. Könnte aber sein, dass es eine Plauderei war.

    Gruß Tom

    Hallo Community,

    ich habe ein Frage zum Verständnis der static Konstanten. Bei 11:00 sagt René, wenn er static verwendet, kann man auf die Konstante zugreifen ohne ein Objekt zu erzeugen. Ich denke, klar - die Konstante wird wohl schon angelegt sobald der Compiler oder was auch immer den Klassenblock übersetzt. Meine Frage : Warum nur static und wo macht es Sinn auf eine "Klassenkonstante" zuzugreifen, wenn ohnehin kein Objekt erzeugt wurde. Wobei der zweite Teil der Frage der für mich interessantere wäre. Vielen Dank schon mal.

    Ansonsten - René ! Ehrlich, wie immer top. Super schön erklärt. Ein wenig hätte ich mich dann doch auf meine eigene Rakete gefreut. ;)

    Gruß Tom

    Hallo René,

    da haben wir ein ähnliches Problem :-). Mir ist noch nicht so ganz klar, wieso der Abruf bei Wetter6 funktioniert. Bis auf die Modularisierung in WebWetterXX, ist ja eigentlich das Prinzip identisch.

    Gruß Tom

    Hallo René,

    danke für deine schnelle Antwort. Ich bin immer noch am suchen und bin jetzt schon ein wenig weiter. Also mit dem Teststring auf der Seite von openweathermap funktioniert die Abfrage ( der link beginnt mit samples... ). Mit deinem früheren Programm Wetter6.py kann ich auch Daten abfragen. Verwendet die selbe geheim.py wie WebWetter6.py. Ich habe nun probeweise mal die Werte für AppID und ID in den Request-String fest eingetragen:

    #return "https://samples.openweathermap.org/data/2.5/weather?id={}&lang=de&units=metric&APPID={}".format(WeatherWebService._ort_id,WeatherWebService._app_id)


    return "https://samples.openweathermap.org/data/2.5/weather?id=2849495&lang=de&units=metric&APPID=84ad4c.........

    Dazu habe ich wie du siehst den originial String auskommentiert und die Werte eingetragen. Auch das brachte keinen Erfolg.

    Am meisten wundert mich, dass der Abruf mit Wetter6.py funktioniert und mit WebWetter6 die json-Fehlermeldung auftaucht.

    Gruß Tom

    Hallo Community,

    wie auch immer scheint mein Account von openweathermap nicht mehr zu funktionieren. Es erfolgt auch bei neu generierten Keys die Ausgabe "invalid key...." . Werd jetzt mal alles mögliche versuchen. Vielleicht hat ja jemand schon Erfahrung damit. Könnte es sein, dass ich die maximale Anzahl von Abfragen überschritten habe ? Aber das ist wohl ein Thema was hier eher nichts zu suchen hat. ;-)

    Gruß Tom

    Hallo Community,

    hab ein Problem mit meinen Wetterdaten. Es scheint irgendwie mit json zusammenzuhängen. Was sich mir nicht ganz so erschließt ist, warum diese Probleme plötzlich in zuvor funktionierendem Code auftreten.

    pasted-from-clipboard.png

    Ich habe das Modul gelöscht und nochmals neu hochgeladen - leider ohne Erfolg. Ich suche jetzt schon doch längere Zeit nach einer Lösung im Netz - jedoch ebenso ohne Erfolg.

    Im Verdachte hätte ich, dass die json-Daten nicht komplett übertragen werden oder dass openweather.org nicht immer mit Daten antwortet. Vielleicht hätte jemand eine Idee.

    Wenn ich manuell per Adressleiste auf Openweathermap zugreife scheint alles zu passen.

    Gruß Tom


    kleiner Nachtrag - Scheinbar liegt es doch an dem API-Key - ich hab ihn gerade nochmal probiert und es wird "invalid API key" ausgegeben, obwohl ich den von der Seite nach meinem login kopiert habe. Ich lasse mal einen neuen generieren - soweit dies möglich ist.

    Hallo René,

    ich habe eine Frage zum Aufbau der Rubrik "Frühere Videos". Wenn hinter diesem Eintrag die rote 1 ( oder welche Zahl auch immer ) steht, weißt dies ja wahrscheinlich auf eine Aktuallisierung hin.

    Ähnlich der Rubrik "Forum", wo ich draufklicken und erkennen kann, in welcher Rubrik sich der neue Forumsbetrag befindet ( z.B. in abonnierte Themen), funktioniert das hier nicht so. Wärend ich in der Rubrik Forum sofort die ungelesenen Beiträge sehe, bekomme ich hier eine ganze Liste bisheriger Beiträge bzw. Videos. Ich finde dann häufig nicht, wo sich die Änderung befindet. Deshalb meine Frage: Interpretiere ich die Anzeige falsch oder wie kann ich die Videos finden in den sich Inhalte geändert haben.

    Gruß Tom

    Hallo Andreas,

    danke ! Dir auch einen schönen Feiertag. Ich werd die nächsten Tage etwas suchen. Für heute muss ich noch ein wenig mit dem Rad raus. jetzt hab ich gerade noch gesehen, dass du einen main.py auf dem Board hast. Diese startet nach einem Reboot immer aufs neue. Entweder du klickst mal auf stop und startest dann "Webtest1.py" oder du löscht die "main.py". Was du auf jeden Fall noch benötigst ist das "/test" nach der ip-Adresse. Ohne das Test erhalte ich auch die 404 ...

    Gruß Tom

    Hallo Andreas,

    da es mich eh immer juckt, wenn irgendein Problem zu lösen ist, hab ich gestern sofort wieder mein Heltec-Board gestartet. Leider funktioniert das Programm nun bei mir auch nicht mehr. Der Server läuft zwar, aber ich habe ein Problem mit den Wetterdaten. Es wird eine Fehlermeldung mit Bezug auf json ausgegeben. Nun bin ich schon am Rumsuchen und hab auch schon einen Thread gefunden, der dieses Problem behandelt, ebenfalls im Zusammenhang mit einem Turturial über eine Wetterstation. Leider ist man sich da scheinbar auch nicht so ganz schlüssig.

    Gestern habe ich auf dem Board nochmal alles gelöscht und Micropython neu aufgespielt.

    Aber jetzt zurück zu deinem Problem: Ich bin mir nicht ganz sicher, ob nicht einige Router ebenfalls das "404-Dokument" generieren. Dann könnte es nämlich sein, dass der Server auf dem Board doch nicht läuft. Hast du schon mal probiert auf das Board zu "pingen" ?

    Hallo Andreas,

    könnte es sein, dass der Zugriff über das W-Lan zu langsam ist und es zu einem Timeout kommt. Leider habe ich momentan den Parameter nicht parat, wo man dies höher stellen könnte. Ich hatte den Effekt auch, aber komischerweise nur im /log - Verzeichnis.

    Ich werde mein Board nachher mal kurz testen - vielleicht fällt mir noch was ein.


    Gruß Tom

    Hallo Kai,

    hier schon wieder ein unfassbarer Beitrag. Man müsste die Projekte direkt irgendwo auf der Seite verlinken. Vielleicht kann ja René eine Art virtuellen Makerspace einrichten. Diese Beiträge sind echt top im Forum aber eher schwer zu finden.

    Gruß Tom

    Hi Kai,

    echt top !! Du bist schon ein Genie und hast hier einen riesigen Berg Arbeit bewältigt und für uns schön präsentiert.

    Vielen Dank !

    Vielen Dank Kai für die superschnell Antwort. Mir ist gerade noch ein Gedanke gekommen: Könnte es sein, dass die Datei evtl. zu groß für Thonny ist. Obwohl - andererseits kann ich sie ja auch öffnen wenn sie local gespeichert ist. Danke nochmal für die Erklärung von "with".

    Gruß Tom

    Nachtrag: Hallo Kai. Ich denke, ich habe nun den Fehler gefunden. Ich habe probeweise mal die Datei test.txt verwendet. Und siehe da - sie lässt sich öffnen. Und dann sehe ich, dass ja die Libary dht heißt. Ich denke, dass dies der Grund ist. Ein anderen kann ich mir dann beim besten Willen nicht mehr vorstellen.

    Hallo Community,

    ich habe ein Problem mit einem logfile. Ich habe ein kleines Programm erstellt, da ich aber mit dem Dateihandling unter Micropython überhaupt keine Erfahrung habe, habe ich die Routine der Wetterstation verwendet und einen Teil in folgende Funktion eingebaut.


    def log_value(temp,hum):

    with open("dht.txt","a") as file:

    file.write("Temp:{}°C Hum:{}%rel".format(temp,hum))

    file.write("\n")

    file.close


    Die "file.close" - Zeile habe ich nachträglich angefügt, weil ich einen Verdacht hatte, der sich aber nicht bestätigt hat.

    Die kleine Routine schreibt nur zwei Werte in ein Logfile, was soweit auch funktioniert. Wenn ich das Programm stoppe und das file per Doppelklick einsehen will, dann erhalte ich eine Fehlermeldung:

    Traceback (most recent call last):

    File "C:\Users\Tom\AppData\Local\Programs\Thonny\lib\tkinter\__init__.py", line 1705, in __call__

    return self.func(*args)

    File "C:\Users\Tom\AppData\Local\Programs\Thonny\lib\site-packages\thonny\base_file_browser.py", line 528, in on_double_click

    self.open_file(path)

    File "C:\Users\Tom\AppData\Local\Programs\Thonny\lib\site-packages\thonny\base_file_browser.py", line 880, in open_file

    get_workbench().get_editor_notebook().show_remote_file(path)

    File "C:\Users\Tom\AppData\Local\Programs\Thonny\lib\site-packages\thonny\code.py", line 838, in show_remote_file

    return self.show_file(make_remote_path(target_filename))

    File "C:\Users\Tom\AppData\Local\Programs\Thonny\lib\site-packages\thonny\code.py", line 825, in show_file

    self.select(editor)

    File "C:\Users\Tom\AppData\Local\Programs\Thonny\lib\tkinter\ttk.py", line 892, in select

    return self.tk.call(self._w, "select", tab_id)

    _tkinter.TclError: .!frame.!automaticpanedwindow.!automaticpanedwindow2.!editornotebook.!editor2 is not managed by .!frame.!automaticpanedwindow.!automaticpanedwindow2.!editornotebook


    Andere .txt-Files ( z.B. die log.txt aus der Wetterstation) kann ich problemlos per Doppelklick einsehen. Ich kann die dht.txt auch local herunterladen und dann einsehen. Das ist auch kein Problem.

    Da sich die Funktion nun in keiner Klasse befindet sondern in einer "localen" Funktion hatte ich den Verdacht, dass die Datei nicht sauber geschlossen wird und deswegen hab ich es mit dem close-Befehl probiert.

    Des weiteren hätte ich noch eine Bitte: Kann mir jemand die Sache mit dem with erklären. Ist das speziell bei Dateioperationen. Ich kenne das with aus anderen Sprachen, aber da kann ich keinen Zusammenhang sehen. Ich habe wirklich schon viel gesucht, aber klar gibt man "with Micropython" bei Google ein, erhält man natürlich 1000 Fundorte, die mit dem Befehl nichts zu tun haben. ^^

    Vielen Dank schon mal im Voraus für alle jene, die schon mal bis hierher gelesen haben. :thumbup:

    Gruß Tom