Posts by marcuszurhorst

    Ähm, also während ich das nochmal lese bin ich nun doch etwas ratlos.

    Ich muss das nicht komplett dynamisch haben wie in Excel natürlich. Die Daten sind ja sowieso statisch.


    Vielmehr brauche ich eine Berechnung, welche mir den Score jeder einzelnen Spalte quasi einmal berechnet.

    Hallo zusammen,


    ich habe mal eine Datenbankfrage, möchte mich aber nicht extra in einem anderen Board registieren. Evtl. hat hier jemand einen Tipp für mich.

    Und zwar hantiere ich gerade mit einer riesigen Menge Metadaten herum, welche ich aus einem PLM-Tool (Teamcenter) ausgeleitet habe.


    Es geht mir darum, dass die User das System offensichtlich nicht gut bedienen und z.B. bestimmte Felder nicht ausfüllen.

    Ich habe mehrere Millionen Datensätze, welche mir in Excel zur Verfügung gestellt wurden von unserer IT. Da kann ich aber nichts machen, da selbst einfache Pivots sehr lange dauern.

    Daher habe ich mir das (über den Umweg CSV) dann in eine MySQL Datenbank rein gezogen.



    So, nun zur Frage: Kann ich in SQL ähnlich wie in Excel Formeln in die Zellen schreiben? -- So dass sich bestimmte Zellen eben Berechnen lassen?



    Ein Beispiel:

    Ich habe Spalten für die Revision (A, B, C, ...), den Status (In Arbeit, In Prüfung, Freigeben, ...) und für Erstellungs- und Bearbeitungsdatum und noch weitere Attribute.

    Nun möchte ich einen Score ausrechnen, der mit Punkten bewertet ob oder ob nicht Attribute gepflegt sind oder z.B. seit wie vielen Wochen etwas brach liegt obwohl nicht mehr daran gearbeitet wurde.


    In Excel würde ich nun über mehrere Spalten die einzelnen Teil-Scores berechnen und in einer letzten Spalte würde ich dann eine Summe für den Gesamt-Score machen.

    Nur gibt es diese Spalten ja noch nicht in SQL. Muss ich nun zurück nach Excel oder geht das auch in SQL?



    (Ich habe mit HeidiSQL auch ein DB-Frontend zur Verfügung übrigens)



    Vielen Dank.


    Gruß, Marcus

    Hmm, ich bin einfach nicht 100% zufrieden.

    Eigentlich wollte ich es mit "Material Design Lite" (http://www.getmdl.io) machen, aber ich finde viel zu wenig Code-Beispiele im Internet. Evtl. mache ich parallel nochmal einen anderen Entwurf irgendwann.


    Was ich z.B. gerne noch ändern würde, aber nicht hinbekommen habe: Evtl. wäre es besser, wenn ich pro Ventil die Einstellungen in einem Modalfenster einblenden würde. Dann wäre es nicht so eng geknubbelt und viel besser bedienbar vermutlich.

    Hi Linus,

    vielen Dank. Ja, es sind noch Fehler drin. Ist einfach recht mühsam, und ich verliere immer mal wieder den Überblick.


    Ich habe den Raspberry Pi mit dem 5" Display noch gar nicht laufen. Aber wenn ich im Firefox mit den Webentwicklertools ein kleines Display simuliere, dann ist dieses "Fensterchen" deutlich größer als das 5" Display, welches ich daneben halte.

    Ich bin mir einfach nicht sicher, ob das wirklich noch bedienbar ist auf einem 5" Display. Muss ich dringend mal anschließen und ausprobieren.


    Das 5" Display hat 800x480 Pixel Auflösung. Ich möchte das im Hochformat einbauen, und die Seite soll im Kioskmodus den Bildschirm vollständig ausfüllen ohne Scrollen und ohne Platz zu verschwenden.


    Auf meinem Handy (auch ca. 5" Display, aber viel mehr Auflösung) jedenfalls scheint es auch ok auszusehen.




    Was ich noch nicht hingekriegt habe ist, dass jeder Knopf einen eigenen Timer startet, der beim Drücken bei Null anfängt zu zählen.

    Und beim erneuten Drücken (schließen) soll der Timer fallgelassen werden. Das soll mir im Handbetrieb quasi nur anzeigen, wie lange ein Wasserkreis offen ist.


    Und zweitens ändert sich noch die Höhe der grünen Kästen, welche ein Ventil darstellen. Ich hatte eigentlich vor, dass ich beim Wechseln des Reiters die grünen Kästen konstant halte sowie vorne den Titel und die Beschreibung, und dann lediglich der große Button gegen die Settings ausgetauscht wird an der gleichen Stelle. Es ist aber noch nicht gleich groß und nicht eng genug gepackt anscheinend.


    Wenn du da noch einen Tipp hast, dann würde ich mich freuen. Danke.

    Hach Linus, so wie du das schreibst hört sich das so furchtbar einfach an :D

    Aber in der praktischen Umsetzung ist es trotzdem echt schwierig, das ganze auf die kleine Fläche gepackt zu bekommen. (zumindest ohne weitere Erfahrung)


    Ich habe einen Entwurf parat, den muss ich mal auf meinen Webspace laden und hier posten. Wäre mal gut, wenn ich Feedback bekomme bezüglich der Usability.

    Hallo zusammen,


    ich habe nach Ewigkeiten nun endlich ein paar Meter gemacht bei meinem Design für die Steuerung der Gartenbewässerung.

    Das HTML-Gerippe wächst langsam zusammen, aber mit dem CSS handere ich nun.


    Nun ist mein Ziel, dass ich das Frontend von zwei unterschiedlichen Geräten aus angucken möchte:

    1) von dem 5" Touch-Display direkt in der Garage. (800x480 Pixel, Hochkant montiert)

    2) vom Handy aus im Wohnzimmer. Auch ca. 5-6" Größe, aber ja mindestens FullHD oder sogar noch höhere Auflösung.


    Ich möchte jeweils die Webseite im Kiosk-Modus sehen ohne Scrollbalken.

    Mit welchen Stichworten muss ich suchen, um die gleiche Displaygröße mit zwei Auflösungen anzusprechen?

    Bis dato habe ich die exakten Pixel genutzt, aber dann wäre es ja nicht formatfüllend auf dem Handy.


    Vielen Dank.


    Gruß,

    Marcus

    Haha, jetzt habe ich mich selbst reingelegt. Zur Zeit habe ich noch Abschnitte "Valve1", "Valve2" etc, in der INI-Datei drin, und es funktioniert. Dachte mir aber gerade, dass ich immer den gleichen Bezeichner brauche, um die zu finden.


    Anyways, wie kriege ich denn dynamisch eine Instanz abelegt wenn er ein "Valve*" findet?

    Hallo zusammen,


    ich habe eine weitere Einsteigerfrage für mein Projekt. Und zwar habe ich eine INI-Datei mit Einstellungen für meine Ventile. Pro Ventil gibt es einen Abschnitt mit den jeweiligen Einstellungen:


    Code
    settings.ini
    [Valve]
    name = Ventil 1
    [Valve]
    name = Ventil 2
    ...


    Ich habe mit einer Klasse valve() begonnen, und ich habe meine 6 Ventile zur Zeit fest eincodiert:

    v1 = valve()

    v2 = valve()

    ...


    Aber es wäre ja wesentlich schöner, wenn ich dassdessen über die INI-Datei iterieren könnte und bei jedem Abschnitt "Valve" dann eine neue Instanz von meiner Klasse ableite. Wie könnte ich das denn besser dynamisch machen?


    Ich bin auch später nicht mehr drauf angewiesen auf die Variablennamen der einzelnen Ventile in der Programmierung.

    Jede Instanz der Klasse valve() registiert sich in einer Liste listofallvalves[]. So kann ich später einen Wasserkreislauf nach dem anderen Abklappern wenn die Bewässerung läuft:

    Code
    for v in valve.listofallvalves:
        v.openvalve()
        sleep(v.duration)
        v.closevalve()

    (das letztere ist nur ein Platzhalter zum Verdeutlichen meines Plans)


    Vorschläge willkommen. Vielen Dank.

    Sorry, hatte mich missverständlich ausgedrückt.

    Ich bin gestartet mit vielen Funktionen, welche in "klassischer" Weise miteinander verknotet habe. So hatte ich vor 25 Jahren mit Pascal die ersten Schritte gemacht in der Schule.


    Was ich natürlich meinte ist, dass ich nun alles auf Klassen und Methoden umstelle, und dann für die Ventile jeweils ein Objekt von dieser Klasse ableite.

    Und diese Ventil-Objekte sind dann über Ihre get/set Methoden überall erreichbar. Ich habe mir ein paar kleine Dummies geschrieben zum Testen. Das funktioniert einwandfrei so ;)

    Dann erzähl mal, was du noch zum Frontend zählst. Den Code, der für dein Flask zuständig ist? Das wäre schon Backend ;)

    Weil das Frontend im Browser läuft kannst du es gar nicht mit dem anderen Code zusammen bringen.


    Vielen Dank für diesen Satz. Das hat mir gehörig auf die Sprünge geholfen. Ich bin bis dato davon ausgegangen, dass Flask zum Frontend gehört, da dieser Teil von Python ja das HTML ausliefert. Und ich dachte, ich müsste nun 1x ein Flask-Skript schreiben welches unabhängig von meiner Bewässerungslogik sei, aber dennoch mit dieser kommunizieren müsse.


    Ich weiß ja nicht, wie deine verschiedenen Programmteile miteinander kommunizieren. Vielleicht magst du mal ein Schema deiner Architektur zeichnen?

    Ich würde dir gerne ein Schema zeichnen, aber ich scheitere an der Darstellung. Ich versuche es mal in Worten:

    1. Mein Skript stellt mittels Flask ein Webfrontend zur Verfügung.
    2. Der Zustand der Bewässerung (Ventile geöffnet oder geschlossen / Wasserkreis aktiv oder inaktiv / Automatik- oder Handbetrieb, ...) wird aus den Settings raus gelesen vor dem Ausliefern der Seite.
    3. Die Settings liegen in einer INI-Datei und werden beim Starten des Skripts ausgelesen. Ich habe pro Wasserkreis ein Objekt im Speicher liegen mit den zugehörigen Settings und kann von überall darauf zugreifen.
    4. Ich nutze einen parallen Thread, um die Warterei zwischen zwei nächtlichen Bewässerungen zu erledigen ohne das Hauptprogramm zu beinflussen. Dieser Thread wird gestartet wenn ich im Frontend die Automatik anschalte, und er wird beendet wenn ich zurück auf Handbetrieb stelle.
    5. Wenn ich parallel zum nächtlichen Automatikbetrieb auch tagsüber noch manuell bewässere, dann wird die Dauer des geöffneten Ventils auch wieder nachts berücksichtigt.



    Mein größter Fehler war, dass ich OOP als Option angesehen habe. Ich habe mir sehr viel gebastelt mit Funktionen, welche sich kreuz und quer aufrufen. Aber damit komme ich nun ganz klar an Grenzen, und nur durch die Umstellung auf Objekte kann ich auch sinnvoll innerhalb der Flask-Routen darauf zugreifen. Das hat mir die Augen geöffnet und macht einen riesigen Unterschied gerade.


    Nun haben wir aber erst mal Nachwuchs bekommen. Ich sehe (leider) nicht, wo ich da noch Zeit zum Programmieren finden würde ich den nächsten 3-4 Monaten.


    Gruß,

    Marcus

    Hallo zusammen!


    Jetzt ist hier aber Schwung rein gekommen. Vielen Dank.

    Ich habe mir eure Tipps zu Herzen genommen und erst mal mit Grundlagen gespielt. Folgendes läuft hier schon mal:

    1) normale Routen (GET Requests)

    2) POST Requests

    3) Ich kann die Infos aus dem POST nutzen um z.B. meine Objekte zu ändern (sprich, um z.B. die Einstellungen zu ändern)

    4) Ich kriege über GET und POST Infos zurück auf die Webseite


    Was mir nun noch fehlt ist ein automatisches Polling im Hintergrund.

    Plus, viel wichtiger: die alles entscheidende Frage der grundsätzlichen Architektur. :conf:


    Dazu mal eine Frage:

    Meine Steuerung besteht ja aus diversen Teilen (Steuerungslogik, Timer für Automatikbetrieb, Frontend). Die ersten beiden Teile hängen in einem "Programm" zusammen, wobei der Timer als Thread parallel nebenher läuft. Wäre das Frontend nun ein komplett eigenständiges "Programm", oder hänge ich das auch noch mit dem anderen zusammen?

    Ich frage deshalb, da mir nicht 100% klar ist wie die "Verbindung" zwischen den Programmen ausschaut, sobald ich sie voneinander trenne. Und wie ich bei meinem Spielereien bereits bemerkt hatte kann ich ja das Frontend nutzen um meine Objekte zu beeinflussen. Sprich, ich müsste evtl. gar nichts voneinenander trennen und könnte alles im Speicher jonglieren.
     

    Guten Morgen zusammen!


    Klar ist das zu groß für mich. Daher nutze ich ja parallel sogar Gießkanne und Gartenschlauch für die Bewässerung. Ich habe so was noch nie gemacht, und ich habe keinerlei Ausbildung als Programmierer. Dennoch sind eure TIpps nicht gerade motivierend :-/


    Momentan gebe ich irgendwas bei Google ein in der Hoffnung, ein nachvollziehbares Tutorial zu finden. Obiges Anmeldefenster benötige ich nicht für meine Anwendung. Es war nun mal so in dem Tutorial drin, ich hab es kopiert. Würde ich Daten vor- und zurück übergeben können, dann könnte ich mir das analog übertragen.


    Ich hatte verstanden dass ich AJAX/JS schon brauchen würde, damit ich beim Ändern von Einstellungen (z.B. Spinner mit +/- Buttons) nicht bei jedem einzelnen Klick die Seite neu laden müsse. Nun gut, dann suche ich nun mal nach einen klassischen Request/Response Modell.


    Gruß,

    Marcus

    Guten Abend zusammen!


    Ich dreh' mich hier mit meinem Gebastel seit Tagen im Kreis und komme einfach nicht weiter. Könnte mir mal bitte jemand auf die Sprünge helfen?

    Und zwar geht es mir drum, dass ich mir ein Web-Frontend für meine Gartenbewässerung bauen möchte. Da bin ich aber zur Zeit noch meilenweit entfernt von, da ich selbst mit Code-Blöcken aus diversen Tutorials nicht zurecht komme.


    Was ich habe:

    1) app.py Python Skript:

    Die ersten beiden Routen zu index.html und heyhoo.html funktionieren. Beide haben jeweils einen statischen Link auf die andere Seite, und alles funktioniert.

    Die Route zur signup.html bringt mir ein Anmeldeformular. Ab hier klappt es aber nicht. Ich hätte erwartet, dass ich über Klick auf den Button dann in der letzten Route die eingegebenen Daten zurück nach Python bekomme.


    2) signup.html


    3) sript.js JavaScript Datei




    Was mir zum Beispiel auffällt: Wenn ich den Knopf drücke, dann kann ich in WingIDE nicht "live" die print-Aufgabe sehen.

    Aber wenn ich nun ein Skript ändere und der Server sich automatisch neu startet, dann werden plötzlich die print-Ausgaben alle hintereinander ausgeben. dgdgd ist der besagte String aus dem Formular.



    Im Grunde möchte ich "nur" was ganz einfaches:

    1) Daten vom Frontend ans Backend geben

    2) Daten vom Backend ans Frontend geben

    3) Unter "Frontend" verstehe ich eine Webseite, wo hinterher ein paar Knöpfchen drauf sind für die Ventile, sowie eine zweite Seite mit "Einstellungen" etc.

    4) Backend ist für mich die gesamte Logik der Bewässerung, welche in Abhängigkeit von den im Frontend gemachten Einstellungen laufen soll.


    Nur wenn ich bei Google danach suche, dann werde ich erschlagen von unterschiedlichen Meinungen bezüglich dem besten JS-Framework und was weiß ich noch alles.

    Ich hatte mich auf "Bootstrap" und "jQuery" eingeschossen, hauptsächlich weil ich dazu die passenden Widgets gefunden hatte. (Toggle-Button scheint nicht jedes Framework zu haben)


    Würde mich sehr über Hilfe freuen, damit ich mal ein Stück weiter komme.



    Vielen Dank.


    Gruß,

    Marcus

    Hallo Bootsmann,


    danke für den Tipp. Mit csv klappt es sehr einfach.
    Mit dem Beispiel hier komme ich direkt and die relevanten Werte ran:




    Jetzt muss ich mir das noch etwas aufhübschen und flexibler machen um eine variable Anzahl an Tagen auszulesen, dann ist es fertig.


    :danke_ATDE:

    Hallo nochmal,


    könnte mir bitte jemand einen Lösungsansatz zu folgender Aufgabe beschreiben:


    Nachfolgend die letzten beiden Zeilen einer Textdatei mit ein paar hundert Zeilen:

    Code
    13670;20170909;    1;   8.0;   4;-999;eor
    
    
         13670;20170910;    1;   0.8;   4;-999;eor


    Die Felder sind: STATIONS_ID;MESS_DATUM;QN_6; RS; RSF;SH_TAG;eor
    Das zweite und vierte Feld ist für mich relevant. (Niederschlagsmenge in mm/m² pro Tag)


    Ich lade ein Datenpaket (.zip) vom FTP-Server und extrahiere diese Textdatei in ein temporäres Verzeichnis.
    Soweit klappt das schon.
    Nun komme ich aber nicht so richtig weiter und bräuchte mal einen Tipp mit welchen Modulen ich das effizient erreichen könnte.


    Geht evtl. RegEx?
    Mit \;[0-9]{8};\ finde ich die 8 Ziffern, die zum Datum gehören.
    Und mit \[0-9]*\.[0-9]\ erwische ich die mehrstellige Niederschlagsmengen.


    Vielen Dank.


    Gruß,
    Marcus