Frage der Umsetzbarkeit (siehe Anhang)

  • Hey,


    Ich habe eine Frage der Umsetzbarkeit bzw. Eher eine in die Richtung, ob die Denkweise richtig ist..

    Schaut euch bitte meinen Anhang an, ich möchte eine Auswertungssoftware mit mehreren Faktoren "bauen". Ein CORE soll dabei die hinterlegten Daten der Teilprogramme abfragen und dann zu einer Entscheidung kommen. Jedoch soll jedes Ereignis ein Programm bekommen welches dann gestartet wird, Die Daten sollen dann in eine Datenbank geschrieben werden, welche der CORE dann abfragt.

    In welchem Format können Daten in einer Datenbank hinterlegt werden? Nur Zahlwerte oder auch Werte wie zum Beispiel : true, false etc?

    Soll ich dies überhaupt in Python lösen? Es kommt hierbei auf Geschwindigkeit an. Beim benutzen der Software, soll die Auswertung maximal 2.5 Sekunden betragen wenn nicht gleich noch ein wenig zügiger deshalb meine Frage ist Python die richtige Sprache?



    mfg

    Wenn's brennt 112 hilft weiter!

  • Hallo Raspbastler,

    einer Datenbank ist es gleichgültig, welche Art Daten Du hineinschreibst. Die ist da eigentlich recht geduldig..

    Es stellt sich halt nur die Frage, warum ein eintretendes Ereignis ein eigenes Programm zum Starten bringen soll? Wenn das Ereignis 100 mal passiert ist, laufen dann auch 100 Instanzen dieses Programms?

    Wenn ja, dann stürzt Dir irgendwann das ganze System ab.


    Für mich klingt das Design nicht durchdacht.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo Andreas,

    Danke für deine Antwort!

    Dennoch denke ich hast du mich vielleicht etwas missverstanden.

    Also meine Idee sieht wie folgt aus:

    User agiert mit dem System -> Core nimmt den Befehl auf -> Startet die Teilprogramme -> Programme speichern das in die Datenbank -> Core liest die Datenbank und trifft die Entscheidung -> Alle Programme werden beendet bis auf den Core

    Wie sieht es mit der Geschwindigkeit aus? Schafft Python das?

    mfg

    Wenn's brennt 112 hilft weiter!

  • Warum sollen die "Clients" denn erst ihre Daten in eine Datenbank schreiben? Das wäre IMHO ein unnötiger Flaschenhals.

    Ich hab sowas ähnliches für mein RoPi-Projekt umgesetzt, nur bei mir heißt CORE => "The Brain"...

    Ein Hauptprogramm startet Unterprogramme. Die Unterprogramme laufen nahezu selbstständig und reagieren ihrerseits auf bestimmte/unterschiedliche Ereignisse. Das Hauptprogramm fragt den aktuellen Status der Unterprogramme ab und kann auf diese gezielt Einfluss nehmen - bei wichtigen Angelegenheiten fragen die Unterprogramme gezielt das Hauptprogramm nach der Vorgehensweise.

    Die Programme kommunizieren je nach Ereignis miteinander, wahlweise via Socket oder Queue - Socket geht übers Hauptprogramm, Queue über einen dezentralen Server.

    Das Hauptprogramm erhält generell alle Informationen, lernt nach einer bestimmten Menge an Datensätzen gewisse Abläufe und erstellt dann für die Unterprogramme neue Ereignisorientierte Abläufe.

  • Hallo meigrafd,

    Ich brauche die Datenbank für einen Datei abgleich, Datei xy hat den Wert z in der Datenbank das Programm gibt diesen Abgleich an den Core weiter.

    Dennoch sind meine Augen gerade "schwarz" wenn ich versuche Teile davon umzusetzen, denn ich brauche eine Lösung für die Geschwindigkeit.

    Generell stellt sich mir die Frage : ,, WO fange ich an? "

    mfg

    Wenn's brennt 112 hilft weiter!

  • Bzgl. der Geschwindigkeit ist das in Python kein Ding, entscheidend ist die könnte die Datenbank sein (Menge der Einträge in der DB, falls die DB-Einträge gespeichert werden sollen.

    Aber warum überhaupt eine DB?

    Anregung zum Konzept:

    Dein CORE ist ein Pythonprogramm(HTTP-Server), welches im Servermodus läuft (Die User"prozesse" sind die Clients - können ebenso http requests senden/empfangen).

    Der Python-HTTP-Server stellt z.B. einen Webserver dar, die Clients connecten sich per http und senden ihre Daten.

    Der CORE-Webserver akkumuliert die Daten (Auswertung) innerhalb seines Serverprogrammes und startet dann ggf. weitere Prozessen (Programme).

    Ggf. werden noch Logs geschrieben...

  • Ich brauche die Datenbank für einen Datei abgleich, Datei xy hat den Wert z in der Datenbank das Programm gibt diesen Abgleich an den Core weiter.

    Dennoch sind meine Augen gerade "schwarz" wenn ich versuche Teile davon umzusetzen, denn ich brauche eine Lösung für die Geschwindigkeit.

    Generell stellt sich mir die Frage : ,, WO fange ich an? "

    mfg

    Vielleicht beschreibst du das Problem mal richtig: Mit deinen bisherigen Ausführungen kann man nur verschwommen etwas anfangen :)

  • Ich plane Großes.

    Okay, der erste Satz dieses Beitrages (und dieser ist noch Fett geschrieben) klingen wohl möglich etwas gewagt und eingebildet zugleich.

    Ich meine mal im Ernst, Alexa und co. Sind doch wirklich ein bisschen dämlich. Sie können Kalender vorlesen und das SmartHome steuern.

    Mein Plan ist jedoch, dass aus diesen Daten Rückschlüsse gezogen werden können.

    Ich möchte, dadurch viel mehr Erreichen.

    Ziel :

    Kalender Einträge auswerten,m zum Beispiel :

    Viele Termine = Stress

    Todestag = Trauer

    Wetter :

    schlechtes Wetter = schlechtere Laune, da ein Ausflug geplant war, Alternativen Vorschlagen

    Stimmfarbe :

    Sarkasmus, Ironie erkennen...

    Diese ganzen Daten sollen Gespeichert werden, damit diese Abrufbar sind :

    1.Mai (diesen Jahres) 1.Todestag der Katze, somit wird Rücksicht genommen und keine blöden Witze oder so gebracht und die Dialoge angepasst.

    Ich hoffe nun, dass ich meine Ziele besser erläutern konnte - Bei Fragen fragt ;)

    mfg

    Wenn's brennt 112 hilft weiter!

  • Was du da vorhast, kann einige Dutzend hochspezialisierte Fachleute einige Jahre beschäftigen. Google und Co. stecken in sowas hunderte Millionen Dollar. Sorry, wenn ich das mal so deutlich sage, aber: Wenn du nicht mal weißt, welche Datentypen eine durchschnittliche Datenbank speichern kann, dann vergiss das alles mal ganz hurtig.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Hallo,

    raspbastler: irgendwie ist die Beschreibung sehr generisch (aka unspezifisch). Irgendwie klingt das nach einer Mischung KI, maschinellem Lernen und Vergleichsentscheidungen basierend auf statischen Tabellen (z.B. Trauertag -> keine blöden Witze). Geht alles mit Python, für maschinelles Lernen gibt es ein paar sehr gute Bibliotheken (u.a. von Google, die haben dir also schon mal zugearbeitet ;) )

    Aber:

    Quote


    Ich meine mal im Ernst, Alexa und co. Sind doch wirklich ein bisschen dämlich.

    In einer der letzten ct's war ja ein Bericht da drüber. An Alexa arbeiten z.B. bei Amazon zeitweise > 10.000 Entwickler. Wenn du jetzt denkst, du kannst das alleine besser, dann ist das nicht ambitioniert, sondern irgendwas zwischen größenwahnsinnig und weltfremd ;)

    Um auf die Ursprungsfrage zurück zu kommen: ja, geht grundsätzlich mit Python. Könnte nur sein, dass ein Raspi ein bisschen schwachbrüstig von der Rechenleistung ist, je nach Komplexität der Auswertung.

    Gruß, noisefloor

  • Hallo Noisefloor,

    Aber:

    In einer der letzten ct's war ja ein Bericht da drüber. An Alexa arbeiten z.B. bei Amazon zeitweise > 10.000 Entwickler. Wenn du jetzt denkst, du kannst das alleine besser, dann ist das nicht ambitioniert, sondern irgendwas zwischen größenwahnsinnig und weltfremd ;)

    Ja, das ist richtig. Du brauchst aber immer sehr viel "Man-Power", um irgendwas Neues voranzutreiben, um Ideen zu sammeln, um Wege zu bereiten, die es noch nicht gibt.

    Wenn dagegen etwas "fertig" oder abgeschlossen ist, dann reichen sehr wenige - aber fähige Spezialisten - , um irgendetwas nachzuentwickeln.

    Was Du aber immer brauchst, ist ein gut durchdachter Plan mit einem untrüglichen Gefühl für das Machbare, um einen möglichst kurzen Pfad zum Ziel zu beschreiten.

    Wenn man an prinzipiellen Ansätzen zweifelt oder diese nicht versteht, oder Kernforderungen nicht verständlich beschreiben kann, dann wird's verdammt schwierig.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Hallo,

    Danke für die Antworten.

    Dennoch möchte ich ein "Proof of Concept erarbeiten. Ich möchte es wenigstens versuchen eine Lösung zu finden, ich möchte es wenigstens Versuchen.

    Die Google Bibliotheken und Apis habe ich mir schon angeschaut und werde sie auch nutzen um die Spracherkennung hinzubekommen.

    Aber dennoch ist es möglich Formeln zu erarbeiten um die Wahrscheinlichkeit eines Vorfalls zu berechnen und dieser Algorithmus kann ja weiterhin optimiert werden, wenn neue Datensätze aus der Datenbank vorhanden sind.

    Dennoch wären erstmal die ersten Schritte den Kalender auszulesen und diese Ereignisse zu speichern -> Datenbank.

    Dort kommen mir dann wieder die Google APIs zu gute, welche mir das alles ziemlich vereinfachen. Dennoch gibt es meinerseits Fragen welche sich bestimmt nicht nur ich stelle bzw. Stellen werde.

    Selbständigkeit kann man nicht programmieren, wie bekomme ich es hin, dass sich der Algorithmus selbständig verbessert aufgrund mehr Datensätze.

    Wie bkomme ich einen Dynamischen Code hin, welcher sich an veränderte Umstände anpasst?

    mfg

    Wenn's brennt 112 hilft weiter!

  • Wie bkomme ich einen Dynamischen Code hin, welcher sich an veränderte Umstände anpasst?

    Je nach Programmiersprache / Konzept nennt sich sowas Datenstruktur, Objekt, Tabelle etc. Die einzelnen Elemente lassen sich verknüpfen ("Knoten") und teilen ihr "Wissen" auf diese Weise mit den anderen Elementen. Ein simpler Algorithmus setzt neue "Synapsen", wenn neues Wissen dazukommt. Eigentlich wie im realen Leben auch.

    Wozu Du das allerdings brauchst, erschließt sich mir auch nicht. Dafür ist der Datenbestand zu klein, um auf diese angedeutete Weise aufbereitet und ausgewertet zu werden. Für eine simple Erinnerung wie an einen "Trauertag" bedarf es nur einer Information - nicht Verknüpfung mit anderen Informationen, die das Ergebnis in eine andere Richtung lenken könnten.

    Alles, was Du haben willst, kann man programmieren - Deine Aufgabe besteht aber darin, es zu verdeutlichen, bis es jemand versteht und ggf. umsetzen kann.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • "....Deine Aufgabe besteht aber darin, es zu verdeutlichen, bis es jemand versteht und ggf. umsetzen kann...."

    Danke für deinen Aufschlussreichen Beitrag.

    Was meinst du genau mit "verdeutlichen"? Sollte ich erstmal damit beginnen ein Konzept zu entwickeln, welches dann schritt für Schritt umgesetzt werden kann?

    Zu deiner Frage Dynamischer Code, ich habe an folgende Situation gedacht:

    Das Programm hat mehrere Algorithmen -> KLICK [Anzeige]

    Wenn der User zu verstehen gibt, dass die getroffenen Entscheidungen nicht korrekt sind, überdenkt der CORE seine Rückschlüsse und passt dann seinen Code an.

    Danke an alle, welche mir Tipps geben. Es geht hierbei nicht um Erarbeitung von CODE. Sondern um das Grundkonzept. Es soll nicht so rüberkommen : ,,WILL DAS HABEN BITTE IN SCHNELL UND EINFACH". Ich möchte mir selbst etwas erarbeiten um sagen zu können : ,,Das habe ICH geschafft!"

    mfg

    Wenn's brennt 112 hilft weiter!

  • Hallo raspbastler,

    Wenn der User zu verstehen gibt, dass die getroffenen Entscheidungen nicht korrekt sind, überdenkt der CORE seine Rückschlüsse und passt dann seinen Code an.

    Nein! Der CORE überdenkt nicht irgendwas und ändert seinen Code. Dann wärest Du ja in der Ecke mit selbstmodifizierendem Code...

    Der CORE überdenkt meinetwegen irgendwas und passt seine Datenstruktur / Objekte / Datensätze an. Der Code dazu muss alles beinhalten, was mit den Datenstrukturen / Objekte / Datensätze geschehen können und dürfen soll. Die Steuerung all dessen, was Du über Code zu erreichen gedenkst, muss über parametrisierte Datenstrukturen / Objekte / Datensätze erfolgen.

    Wenn sich irgendwann zeigt, dass die "Grundausstattung" mit Code nicht ausreicht, dann wird einfach ein erweitertes Modul bereitgestellt. Das hat aber mit dem grundlegenden CODE des CORE nichts zu tun.

    Mal ein ganz simples Beispiel aus der Mathematik. Du willst ein Programm schreiben, das Dir ALLES mit Zahlen macht. Du fängst klein an

    1. Addition natürlicher Zahlen

    2. Subtraktion natürlicher Zahlen

    Dein Objekt "Zahlen" kennt zwei Methoden: Addieren und Subtrahieren.

    Irgendwann kommst Du auf die Idee, natürliche Zahlen zu multiplizieren. Der erste Ansatz wäre, diese Zahlen so oft zu addieren, wie sie multipliziert werden sollen. Geht bei einem geringen Multiplikationsfaktor. Macht aber bei großem Faktor keinen Spaß, weil es zu lange dauert.

    Also wirst Du (bald) ein neues Objekt erschaffen, dessen zugrundelegende Klasse auch die Methode Multiplikation kennt.

    Dein eigentlicher Code bleibt unverändert, weil alles in der Klassendefinition steckt, die Dein Code einmalig einbindet.

    Somit braucht Dein CODE zumindest eine wie auch immer geartete Update-Funktionalität (Minimallösung: Starten eines Hilfsprogramms - das Hilfsprogramm killt CORE - das Hilfsprogramm startet CORE neu - CORE killt das Hilfsprogramm - CORE kennt die neuen Funktionalitäten).

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited once, last by Andreas (December 23, 2017 at 11:42 AM).

  • Andreas

    Ein großes Dankeschön an dich für deinen tollen Beitrag.

    Ich werde mir ihn in Ruhe durchlesen und mich später nochmal melden - muss noch Geschenke kaufen...

    Also Hilfsprogramm killt den Core was passiert dann? Updatet das Hilfsprogramm den Core?

    Mfg

    Wenn's brennt 112 hilft weiter!

  • Hallo raspbastler,

    das Hilfsprogramm startet den CORE neu (nachdem es ein Update, z.B. neues Modul mit neuen Funktionalitäten gibt).

    Na dann viel "Spaß" beim Panikkauf...

    Beste Grüße

    Andreas

    P.S.: Zum ersten Mal seit Jahrzehnten habe ich alle Weihnachtsgeschenke schon seit der ersten oder zweiten Dezemberwoche zusammen. Der heutige Tag steht voll und ganz dem Lesen, Schreiben und Basteln zur Verfügung.

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Sooo,

    Geschenke gekauft, Konto leer und KI programmiert hat aber auch keine Ratschläge für mein leeres Portmonnaie (Ironie)...

    Ich bin etwas weitergekommen, ich habe mich mal dem Bildvergleich beschäftigt und kann Bilder miteinander vergleichen, dennoch habe ich Probleme Bilder mit der Webcam zu erstellen (Virtuelle Maschine) .

    Ich möchte nämlich die Daten Personenbezogen ändern, in dem eine Webcam Bilder des Benutzers macht und dann vergleicht . Das ist nicht der Abschluss soll sondern erstmal der Einstieg sein.

    Wie kann ich es schaffen, dass wenn FOTO 1 (soll später eine Audio sein) das Original des Benutzer 1 ist , dieses dann mit Bild 2 verglichen wird und wenn das dann nicht übereinstimmt weiterabgeglichen wird, bis der bestimmte Benutzer gefunden wurde. Ich würde es ja mit einer Datenbank machen wie seht ihr das?

    Generell bin ich selbst noch unschlüssig, wie der CORE aufgebaut werden soll. Welche Funktionen sollen eingebaut werden?

    - Speech to Text

    - Text to Speech

    ...

    Anregungen?

    mfg

    Wenn's brennt 112 hilft weiter!

  • Hallo raspbastler,

    wie Du ein Original-Photo mit einer (tagesaktuellen) Aufnahme vergleichen kannst, um die Identität der Person mit dem vorhandenen Original zu ermitteln, verrät Dir eine Suche nach biometrischer Vergleich. Ist aber alles andere als trivial.

    Es ist ja Dein Projekt - also solltest Du auch festlegen, was eingebaut werden soll.

    STT und TTS ist ja jetzt nicht so schwierig. Das habe ich 2014 schon auf einem Raspberry Pi hinbekommen (in Icon) und um 2011 herum in Delphi. Da habe ich meinem Buchhaltungsprogramm das Sprechen beigebracht.


    Wenn ich mir ein großes Projekt vornehme, bei dem ich einzelne Bestandteile als nicht-trivial betrachte, dann erstelle ich zunächst (kleine) Programme, in denen zuerst die nicht-trivialen Aufgaben bearbeitet werden. Erst, wenn diese nicht-trivialen Dinge geklärt sind, fließen die Erkenntnisse in das große Projekt ein. Alles andere führt zu einem frustrierenden Projekt - insbesondere solange der Plan im Sinne eines Lastenheftes nicht zu stehen scheint.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited 4 times, last by Andreas (December 23, 2017 at 9:49 PM).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!