Posts by Hofei

    Dirkete Lichtschalter kenne ich nicht.

    Empfehlen würde ich solche Shelly Relais:

    https://shelly.cloud/products/…rt-home-automation-relay/


    Die Cloud dazu muss man nicht aktivieren. Wenn du den Hersteller gar nicht traust kannst du die Dinger auch mit Tasmota flashen.

    Einbau der Teile natürlich nur durch eine Elektrofachkraft!


    EDIT:

    https://shop.shelly.cloud/shel…smart-home-automation#369

    Die haben auch Funktaster, gerade entdeckt. Weiß aber nicht ob auch hier Tasmota laufen würde...muss mal selbst danach suchen

    Aber halt nicht mit 433MHz

    Hallo und herzlich Willkommen im Forum.


    Als Start werde ich mich mal durch das Forum lesen....

    Am besten hier:

    Wie frage ich nach Hilfe?


    Dann siehst du, dass Doppelposts nicht gern gesehen sind, vorallem ist das hier Uservorstellung und somit dein Problem mit Chromium am falschen Platz.

    Außerdem sehe ich an deiner Signatur, dass du das 64bit System verwendest, naja ist halt Beta....was erwartest du?

    Zu letzt noch, der Pi ersetzt keinen PC, auch wenn das viele immer hoffen...

    Danke für deinen Hinweis, werd ich im Hinterkopf behalten.

    3 Jahre hat er schonmal geschafft, wurde nämlich von der alten Platine mit genommen. Sollte es mal Probleme geben, weiß ich wo ich ansetzen muss. Aktuell hängt auf dem ULN eh nur eine RGB und ein Relais.

    Wenn ihr jedoch Kritik und Verbesserungen zum Programmierstill habt, dann wäre ich euch auch sehr dankbar. Würde es gerne von Anfang an richtig lernen.

    Vorweg gleich, auf deine konkrete Frage kann ich nicht antworten. GUI Programmierung liegt mir auch nicht wirklich. Jedoch möchte ich deinem Wunsch nach Konstruktive Kritik nachkommen


    Zeile 1:

    Vermeide * Imports, die müllen zum einen den globalen Namespace zu, und bewirkt dass man die Übersicht verliert, welche Funktion/Klasse/Objekt zu welchen Modul zugehörig ist.

    Also besser: import tkinter


    Womit Zeile 2 überflüssig wird.


    Zeile 8 + 9:

    Konstanten schreibt man GROß, Variablen und Funktionsnamen dafür durchgehend klein (siehe Zeile 34, 37, 40). Klassennamen werden in CamelCase geschrieben.


    Zeile 10, url ist keine Konstante, da du sie ja im Verlauf des Programmes verändern willst, womit sie auch nicht mehr im globalen Namensraum sein soll. Ebenso Zeile 11 - 15


    Verwende gleich einen Editor(mit IDE am besten) so hast du gleich eine Syntaxhighlighting und der Editor bekritelt (so wie ich gerade) die Verstöße gegen PEP 8

    ann ist die Antwort hier nun verboten und SPAM?

    nö, meinte nur wegen : "Bei neuen Problemen ist es besser einen neuen Thread zu eröffnen"



    Ich bastel gerade mit matplotlib und stelle fest, dass es einfacher wäre ich hätte Datum und Zeit als einen kompletten String in der Datenbank ... Fand das im Februar so eben übersichtlicher ..

    am besten einfach als timestamp abspeichern



    Und ja, Grafana hab ich schon mal gehört und gesehen, mich aber noch nicht damit beschäftigt. Ich hab mich damals für matplotlib entschieden ..

    würd ich überdenken ;)

    https://kuehltest.linus.dev

    Stromzähler mit Raspberry Pi und ModBus auslesen

    Wetterstation inkl. Abgleich mit Vorhersagen


    Hier ein paar Links von meinen Dashboards^^

    Aber ganz unrecht hab ich damit nicht, dass der speicher außerhalb vom Aufruf definiert werden muss


    Mein Tipp an dich, mach die ganz grundsätzlich mal mit folgenden Punkten vertraut, bevor du bei deinem Projekt weiter arbeitest:

    Gültigkeitsraum einer Variable (Scope)

    (:;)



    Aber dann selbst was machen, da hapert es mit der Umsetzung, weil ichs wohl doch nicht so kapiert oder verinnerlicht hab.

    Das ist ja kein Problem, kannst ja gerne immer hier nachfragen (also im Forum, nicht im selben Thread :lol:)



    Meine Datenbank speichert Zeit und Datum separat ab. Ich kann da auch Werte nach Datum usw. abrufen und verarbeiten.

    Das ist ja umständlich, warum nicht in einem Rutsch.


    Das mit der Liste oben ist für mich ein kleines Progrämmchen zum rumprobieren und verstehen wie alles funktioniert und zusammenhängt. Immer kleine Schritte gehen ...

    Aber ja, wenn es erstmal nur zum lernen dient alles ok.


    Du schriebst, du willst das ganze Visualisieren....kennst du Grafana (:https://grafana.com/

    wenn man immer alles herumreicht funktioniert das Beispiel von Hofei aber nur 1 Mal. In einer Endlosschleife würde der Speicher bei jedem Aufruf von main() wieder "genullt" werden. Sowas muss ich doch irgendwo "außerhalb" definieren, dass es eine Liste namens Speicher gibt in die Werte geschrieben werden Können.

    Nein


    ->

    Code
    def main():
    speicher = {"a": [], "b": []}
        while True:
        speicher = messwert_hinzufuegen(speicher, "a", 1)
        speicher = messwert_hinzufuegen(speicher, "b", 2)
        speicher = messwert_hinzufuegen(speicher, "a", 3)
    main()

    ;)



    Mir fehlt wohl noch sehr viel zum richtigen Verständnis in Python. Zb. die Listen die du in main() definierst ("speicher_a = []")... das ist doch auch sowas wie ne globale Variable?

    Nein ist keine globale Variable, denn du musst diese explizit in die Funktion mit übergeben.


    Mein Tipp an dich, mach die ganz grundsätzlich mal mit folgenden Punkten vertraut, bevor du bei deinem Projekt weiter arbeitest:

    • Gültigkeitsraum einer Variable (Scope)
    • Verwendung von Funktionen
    • Funktionsweisen von Klassen
    • Verwendung von for und while Schleifen
    • Iteration
    • Listen
    • Dictionarys
    • Sets
    • Mutable - Immutable


    Da ich für jeden Messwert eine eigene Liste haben möchte ist die Reihenfolge für den Mittelwert eigentlich egal. Die Werte kommen später in die Sqlite Datebank und lassen sich hier ja jederzeit abrufen um damit neue Listen zu bilden.

    Dann wäre es aber gleich von Vorteil, wenn du dir den Zeitstempel mit speicherst in die Liste

    Grundsätzlich bitte neuer Thread bei neuem Problem.


    Zum einen ja, könntest du das über eine Klasse machen, musst aber nicht.

    Deine Funktion oben funktioniert nur, weil du schon wieder mit globalen Variablen arbeitest!


    oder



    EDIT: Am besten aber du beschreibst mal die Gesamtanforderung / Ziel.