Beiträge von wenzel

    Ok, nochmals vielen Dank an alle, ich wollte auch nicht unhöflich sein. Meine Waschmaschine ist kaputt gegangen, und die hatte erst mal Vorrang, daher meine kurze Antwort.

    Mit ein bisschen rumprobieren bin ich auf die Lösung gestoßen, die Zeilen des Originals:

    Code: Alles auswählen

    Code
            phase_a     = requests.get(f'http://{shelly_ip}/emeter/0', headers={'Content-Type': 'application/json'}).json()['power']
            phase_b     = requests.get(f'http://{shelly_ip}/emeter/1', headers={'Content-Type': 'application/json'}).json()['power']
            phase_c     = requests.get(f'http://{shelly_ip}/emeter/2', headers={'Content-Type': 'application/json'}).json()['power']
            grid_sum    = phase_a + phase_b + phase_c # Aktueller Bezug - rechnet alle Phasen zusammen

    habe ich ersetzt durch:

    Code: Alles auswählen

    Code
    grid_sum = requests.get(f'http://{shelly_ip}/rpc/EM.GetStatus?id=0', headers={'Content-Type': 'application/json'}).json()['total_act_power']

    Damit habe ich erst mal das erreicht, was ich wollte, um den Rest des Scriptes muss ich mich etwas später kümmern.

    Vielen Dank für eure Mühe

    Eigentlich bin ich ganz entspannt.

    Das spuckt mir mein Browser aus:

    id    0
    a_current    1.404
    a_voltage    227.9
    a_act_power    78.1
    a_aprt_power    319.9
    a_pf    0.24
    a_freq    50
    b_current    0.027
    b_voltage    228.6
    b_act_power    0
    b_aprt_power    6.2
    b_pf    0
    b_freq    50
    c_current    0.03
    c_voltage    228.9
    c_act_power    0
    c_aprt_power    6.8
    c_pf    0
    c_freq    50
    n_current    null
    total_current    1.461
    total_act_power    78.124
    total_aprt_power    332.852
    user_calibrated_phase    []

    Das habe ich auch schon mal vorher ausprobiert, aber das ist ja über HTTP, für mich interessant ist, wie ich "total_act_power" per MQTT abfragen kann.

    Oh, hätte ich geahnt, was ich da lostrete, hätte ich mindestens den Satz:
           
    "Ich glaube nicht, dass ich das mit der Umschalterei wirklich will, das ist mir dann doch zu heiß"

    fett gedruckt und unterstrichen. Also das mit dem Umschalten ist ein für allemal vorbei, war eine dumme Idee.
    Ich hätte wohl auch einen besseren Titel für dieses Thema nehmen sollen, z.B. "Was hat sich zwischen dem 3EM und dem Pro 3EM bezüglich der MQTT-Abfrage geändert?"
    Die Grundidee war eigentlich, nichts zu verschenken, womit andere dann Geschäfte machen.


    So, jetzt aber nochmal zu dem was mein wirkliches Hauptproblem ist:
    Der Unterschied zwischen den Shellys 3EM und Pro 3EM was das Auslesen der Daten mit MQTT angeht:
    Die Zeile

    phase_a     = requests.get(f'http://{shelly_ip}/emeter/0', headers={'Content-Type': 'application/json'}).json()['power']

    die beim 3EM funktioniert, funktioniert beim Pro 3EM nicht.
    Hier haben sich schon so viele schlaue Leute gemeldet; ist vielleicht einer dabei, der mir sagen kann, wie diese Zeile für den Pro 3EM abzuwandeln ist, ohne mich auf die Doku zu verweisen, die ich nicht verstehe.
    Heißt das immer noch "/emeter/0", und heißt das statt "Content-Type" jetzt vielleicht "Gänseblümchen"? - Ich weiß es nicht.
    Ihr scheint euch alle in dem Thema gut auszukennen, ist denn keiner von euch in der Lage, einem blutigen Anfänger zu sagen:
    "Die Zeile muss so und so lauten, und dann geht das auch"

    Wenzel

    Mein Nachbar Francesco und ich haben beide ein kleines Balkonkraftwerk.

    Unsere beiden Stromzähler befinden sich im selben Zählerkasten auf dem Hausflur. Wenn die Sonne kräftig scheint, verschenken wir beide Strom an den Versorger, aber wenn einer seine Kaffeemaschine anschaltet, reicht sein Solarstrom dafür nicht, er kauft dann vom Versorger den Strom, den der Nachbar gerade verschenkt.

    Weil wir das beide nicht für fair halten, ist er auf die Idee gekommen, die Wechselrichter (beide HM800) über je ein Umschaltrelais entweder auf den eigenen, den des Nachbarn, oder sogar beide auf nur einen Zähler zu schalten, je nachdem, was gerade am meisten Sinn macht.

    Francesco (Elektriker von Beruf) hat das mal testweise so aufgebaut, und das funktioniert tatsächlich. Das Blöde ist nur, dass man die Relais per Hand umschalten muss (und sich das Ganze wohl in einer rechtlichen Grauzone befindet).

    Er meint, das schreit nach Automatisierung und einem Raspberry und hat deshalb letzte Woche noch an jeden Zähler einen Shelly Pro 3EM angeschlossen.

    Es sei doch eine nette Aufgabe für mich, da jetzt mal schnell das zu automatisieren, ich sei ja ein begeisterter Hobbybastler.

    Ich glaube nicht, dass ich das mit der Umschalterei wirklich will, das ist mir dann doch zu heiß, aber wenn die Shellys schon mal da sind, soll man sie auch nutzen.

    Naja, eine OpenDTU habe ich zusammengelötet, aber ein Programmierer bin ich überhaupt nicht; mqtt, influxdb etc. waren bis vor ein paar Tagen noch Fremdworte für mich.

    Wie ich die Daten aus den HM800 über mosqitto in eine influxdb bekomme, habe ich im Netz gefunden, und das funktioniert auch, aber bei den Shellys komme ich nicht voran.
    Die entsprechenden Shelly-Seiten verwirren mich mehr, als sie nutzen, sie setzen ein Grundwissen voraus, das ich nicht habe.

    Ich hatte bei:
    https://selbstbau-pv.de/wiki/nulleinspeisung-hoymiles-hm-1500-mit-opendtu-python-steuerung/
    ein Skript gefunden, wie man aus den Shellys die Leistung auslesen kann, die entsprechende Zeilen lauten:

    Code
       try:
           # Nimmt Daten von der Shelly 3EM Rest-API und übersetzt sie in ein json-Format
           phase_a     = requests.get(f'http://{shelly_ip}/emeter/0', headers={'Content-Type': 'application/json'}).json()['power']
           phase_b     = requests.get(f'http://{shelly_ip}/emeter/1', headers={'Content-Type': 'application/json'}).json()['power']
           phase_c     = requests.get(f'http://{shelly_ip}/emeter/2', headers={'Content-Type': 'application/json'}).json()['power']
           grid_sum    = phase_a + phase_b + phase_c # Aktueller Bezug - rechnet alle Phasen zusammen
       except:
           print('Fehler beim Abrufen der Daten von Shelly 3EM')

    Das Skript wurde für einen "Shelly 3EM" geschrieben und funktioniert damit wohl auch, Francesco hat aber die neueren "Pro 3EM" eingebaut, und damit bekomme ich nur : "Fehler beim Abrufen der Daten von Shelly 3EM". ({shelly_ip} ist natürlich angepasst).

    Für die neueren Pro 3EM muss man diese Zeilen wohl ein bisschen anpassen, aber ich habe keinen Schimmer, wie.

    Natürlich habe ich mich erstmal mit meiner Frage an selbstbau-pv.de gewandt, sie bieten ja Hilfe an, leider habe ich als Antwort nur bekommen:

    "wir leisten keinen Support für das Python Script. Ich kann dir da leider nicht weiterhelfen."

    Irgendwo hatte ich gelesen, man muss das 'nur parsen', aber auch damit kann ich nichts anfangen.

    Weiß vielleicht einer von euch wie das geht und kann mir helfen?
    Ihr wisst ja:

    Zitat


    Wissen ist Macht.
    Weißt nix?
    Macht nix! Frag' halt.

    Vielen Dank im voraus für eure Mühe,

    Wenzel