Posts by gwaag

    Hallo,

    ich habe ein Python script und bin mir nicht sicher ob dieser code so funktioniert, da die Zeitspanne ja sehr lange ist und ich es nicht richtig testen kann.



    Funktioniert das so, oder gibt es eine einfachere Loesung?

    Vielen Dank und Gruss

    gwaag

    Falls es jemand interessiert,


    habe heute probiert eine Funksteckdose zu schalten.

    Da die Scripte fuer das alle auf einem anderen Pi sind habe ich folgenses gemacht:

    Das Script von gestern auf dem Pi mit der Solaranzeige deaktiviert. (cronjob -e , den minuetlichen Aufruf geloescht)

    Script auf dem anderen PI installiert.


    In dieser Zeile vom Script, localhost mit der IP vom Pi mit der Solaranzeige ersetzt

    Code
    client = InfluxDBClient(host='localhost',  port=8086)

    und schon kann ich ohne weiters zu tun, mit:

    if einspeisung < -1500:

    subprocess.run("Pfad zum script Funkdose schalten") # os.system geht auch ist aber veraltet)


    meine Funksteckdose oder andere Spielereien schalten.


    Gruss

    gwaag

    Hallo jjk,

    ich moechte mich bei Dir herzlich fuer die Unterstuetzung bedanken, jetzt läuft es wie ich es mir vorgestellt habe.

    Nach auslesen der influx db habe ich einen Parameter gefunden der Gesamtleistung heisst, ist er negativ wird eingespeisst ist er positiv wird verbraucht.

    Habe das script ensprechend angepasst.

    In Zukunft werde ich es noch erweitern um eine Wifi Lampe zu schalten, kein Ueberschuss rot, maessig Ueberschuss gelb, viel Ueberschuss gruen, dazu kann ich dann noch Funksteckdosen mit Pilight schalten.

    Allen andern auch, Danke fuer die Hilfe.

    Gruss

    gwaag

    @DeaD_EyE

    habe es jetzt geschafft, mit Mosquitto mqtt Daten auszulesen.

    pi@solaranzeige:~ $ mosquitto_sub -v -h localhost -p 1883 -t 'shellies/shellyem3-8CAAB561948E/emeter/0/returned_energy'

    shellies/shellyem3-8CAAB561948E/emeter/0/returned_energy 0


    /emeter/0/ ist phase 1, /emeter/1 ist pase 2 und /emeter/2 ist phase 3


    Jetzt zeigt phase 1, 0 an, da nicht eingespeisst wir (Wolken)


    Wie sieht jetzt ein Python script aus, dass diese 3 Werte ausliest, phase 1-3 zusammen zaehlt fuer Einspeisung gesamt?




    jjk

    Danke fuer Dein script, Du hast recht, bin kein Experte in Python, kann eigentlich nur einfache Sachen.


    Dein Script funktioniert bei mir eigentlich, nur kenne ich die korrekten Namen der Einspeisung nicht aus der influxdb.

    Da wo bei Dir PV-Leistung steht muss bei mir der Name von returned _energy stehen? Ist der Name in der influxdb der selbe wie unter mqtt angezeigt?

    Dann muesste in Deinem script, beim meinem Anwendungsfall ja auch noch die 3 phasenwerte zusammen gezaehlet werden und weiter verarbeitet werden.

    Das mit dem Durchschnitt und den gpios brauche ich nicht.

    Haenge mal das abgeaenderte script an soll wie ich es haben moechte. (bei den ????? komme icht nicht weiter

    Danke und Gruss

    gwaag



    Edit:

    gerade gesehen das in der influxdb nur diese Werte angezeigt werden


    name: AC

    time Gesamtleistung Leistung_EinspeisungGesamt_R Leistung_EinspeisungGesamt_S Leistung_EinspeisungGesamt_T Leistung_VerbrauchGesamt_R Leistung_VerbrauchGesamt_S Leistung_VerbrauchGesamt_T PowerFactor_R PowerFactor_S PowerFactor_T Spannung_R Spannung_S Spannung_T Strom_R Strom_S Strom_T Wirkleistung_R Wirkleistung_S Wirkleistung_T


    Wie finde ich jetzt returned_energy?


    HalloTell,

    hier der code mit dem eingefuegten.

    Im Log steht dann nur :

    ['/home/pi/th/PVLicht.py']


    Gruss

    gwaag

    Hallo Tell,

    habe Deinen Teil in mein Scritp eingefuegt, sieht jetzt so aus.

    Leider passiert gar nichts wenn ich das scrïpt starte.

    In Solransicht habe ich in var/www/html/shelly.php folgendes eingefuegt:

    Code
    if ($i == 1) {
    $funktionen->log_schreiben(var_export($aktuelleDaten,1),"        ",8);
    $funktionen->log_schreiben(print_r($Daten,1)," ",9);
    
    
    // Eingefuegt fuer PVLicht.py
    
    
    $params = "{$aktuelleDaten["AC Verbrauch"]} {$aktuelleDaten["AC Leistung"]}";
    exec("/usr/bin/python3 /home/pi/th/PVLicht.py $params > /dev/null &");

    Woher weiss dein Code, dass es das machen muss ?

    Code
    einspeisung = int(args.leistung) - int(args.verbrauch)

    wie Du siehst, kenne ich mich mit dem ubehaupt nicht aus, und waere fuer eine Erklaerung sehr dankbar.

    Gruss und Danke

    gwaag

    Hallo Guido64

    schoen hast du das bei Dir realisiert.

    Fuer mich als Anfaenger zu kompliziert. Alle Werte sehe ich ja schon in der auf den Handy mit der Solaranzeige.


    Um es fuer die ganze Familie etwas einfacher zu machen, schaut wenn die Lampe an ist (1W) koennt ihr waschen, buegeln, Heisswasser machen ect.

    Also etwas ganz einfaches, als immer das Handy anzumachen.


    Wenn noch jemand weiss wie man posting 1 umsetzten kann, würde ich mich auf Loeungen freuen.

    Danke und Gruss

    gwaag

    Hallo,

    seit langem habe ich wieder einmal ein neues Projekt und wuerde mich um Unterstüzung freuen.


    Habe seit kurzem eine Solaranlage und bekomme meine Daten mit Solaranzeige (Grafana) angezeigt,

    Der Wechselrichter und der Hauszaehler wird jeweils mit einem Shelly 3EM ausgelesen.


    Ich moechte gerne mit einer RGB Wifi LED Lampe folgendes anzeigen:

    Einspeisung < 0 , Lampe ist rot

    Einspeisung > 500 , Lampe ist gelb

    Einspeisung > 1000 , Lampe ist gruen.

    Die Daten sollen von der Solaranzeige kommen und mit einem Python script ausgewertet werden,


    Ich habe da schon ein Python script das eine weisse Wifi Lampe kontrollieren kann (Ein /Aus,Full Brightness)

    Hier das funktionierende Script: (/home/pi/th/PVLight.py)




    Wie wird jetzt zum anfangen, damit ich verstehe wie es geht, z.B. diese Script so erweitert , damit wenn Einspeisung > 1000 ist, das Kommando send_command(ZONE1_ON, IP, PORT) ausgefuehrt wird.?? Was muss in Solranzeige /var/www/html/shelly.php eingetragen werden, damit die Daten vom Python script gelesen werden koennen?


    so ?????

    Code
    if ($i == 1) {
    $funktionen->log_schreiben(var_export($aktuelleDaten,1),"        ",8);
    $funktionen->log_schreiben(print_r($Daten,1)," ",9);
    
    
    // Eingefuegt fuer PVLicht.py
    
    
    $params = "{$aktuelleDaten["AC Verbrauch"]} {$aktuelleDaten["AC Leistung"]}";
    exec("/usr/bin/python3 /home/pi/th/PVLicht.py $params > /dev/null &");




    Wie sieht das neue Python script aus? mit $params kenne ich mich ueberhaut nicht aus.

    Zusammen kopiert:

    Fehler=

    pi@solaranzeige:~/th $ /home/pi/th/PVLicht.py

    usage: PVLicht.py [-h] verbrauch leistung

    PVLicht.py: error: the following arguments are required: verbrauch, leistung



    Wenn ich das verstehe, kann ich hoffentlich auch spaeter das mit den 3 Farben umsetzen.

    Fuer jede Unterstuetzung bin ich sehr dankbar, da Anfaenger in Sachen php, Daten auslesen und uebertrage, etc.


    Vielen Dank und Gruss

    gwaag

    Hallo,

    In meinen script logget es ca. jede Minute. Gibt es eine Moeglichkeit das nur einmal zu loggen, oder nur jede Stunde?


    Woche 45 Mi 04.11.2020 14:49:18 Script geladen

    Woche 45 Mi 04.11.2020 14:50:49 Script geladen

    Woche 45 Mi 04.11.2020 14:52:19 Script geladen

    Woche 45 Mi 04.11.2020 14:53:50 Script geladen

    Woche 45 Mi 04.11.2020 14:55:20 Script geladen

    Woche 45 Mi 04.11.2020 14:56:51 Script geladen

    Woche 45 Mi 04.11.2020 14:57:30 Alarm AUS gesendet

    Woche 45 Mi 04.11.2020 14:58:21 Script geladen

    Woche 45 Mi 04.11.2020 14:59:52 Script geladen

    Woche 45 Mi 04.11.2020 15:01:22 Script geladen

    Woche 45 Mi 04.11.2020 15:02:53 Script geladen

    Code
    logging.basicConfig(filename='/home/pi/th/Alarm.log', format='%(asctime)s %(message)s', datefmt = "Woche %V %a %d.%m.%Y %H:%M:%S", level=logging.INFO)
    logging.info('Script geladen') # Logeintrag

    gruss

    gwaag


    edit// gerade gesehen dass das ev. das Problem ist.

    Failed to start ein_ausvonalarm Service.

    Nov 04 16:04:41 raspberrypi systemd[1]: ein_ausvonalarm.service: Unit entered failed state.

    Nov 04 16:04:41 raspberrypi systemd[1]: ein_ausvonalarm.service: Failed with result 'timeout'.

    Nov 04 16:04:41 raspberrypi systemd[1]: ein_ausvonalarm.service: Service hold-off time over, scheduling restart.

    Nov 04 16:04:41 raspberrypi systemd[1]: Stopped ein_ausvonalarm Service.

    Nov 04 16:04:41 raspberrypi systemd[1]: Starting ein_ausvonalarm Service...


    Jedesmal wenn es neu startet generiert es einen Logeintrag.


    edit 2 // das ist devinitiv das problem, bin m suchen..........

    Freude herscht!!:bravo2::bravo2::bravo2:

    Problem geloest, es geht jetzt auch wenn mit Putty eingeloggt.

    Nach langem probieren und testen bin ich ein einfach nicht weiter gekommen und wollte schon aufgeben.

    Heute habe ich das Programm PyCharm heruntergeladen und meine scripts mit dem Programm untersucht.

    Folgendes hat PyCharm herausgefunden:


    Falsch ist :


    def low(button): # od. def high(button)

    subprocess.call(["/home/pi/th/aus.py"]) # Licht aus


    This code is unreachable

    Parameter "button" value is not used

    Shadows name "button" is not used


    Richtig ist:


    def low():

    subprocess.call(["/home/pi/th/aus.py"]) # Licht aus


    Seit ich "button" aus den Klammer heraus habe, geht es einwandfrei.


    Warum das einen Unterschied macht wenn eingeloggt, weiss ich allerdings immer noch nicht, bin aber froh dass es jetzt geht.


    Gruss und Danke fuer eure Hilfe

    gwaag

    Keine Ahnung.

    Inhalt von:

    vte-2.91.sh

    gruss

    gwaag