Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugin für die Grünbeck Softliq brauch eure Hilfe

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Holoman5
    antwortet
    Zitat von bmx Beitrag anzeigen
    Du kannst Dir das auch noch einfacher machen:

    erst per pip3 install xmltodict --user die Bibliothek installieren

    dann in der Logik

    Code:
    import xmltodict
    import requests
    
    r = requests.post('http://100.100.0.31/mux_http/', data ={'id': '961', 'show': 'D_A_1_1~','code': '005'})
    
    responsedict = xmltodict.parse(r.text)
    data = responsedict['data']
    
    wert = data['D_Y_1']
    # oder
    Wert = data['D_A_1_1']
    # je nachdem wonach Du oben gefragt hast.
    Hab es geschnallt, hab ein Wert mit "D_Y_2_14" also hab ich es auf 10 gesetzt!! läuft!!

    Werde ich mal testen! Danke dir! Aber es reicht mir jetzt, ich loge es jeden Tag mit, ab jetzt und weis was ich dann im Monat,Woche und Jahr verbraten hab, natürlich mit Kosten Angabe. Das hab ich mit dem Strom so gemacht# voll cool, rückwirkend geht es leider nicht mehr, mir egal. Muss jetzt dann nur noch ne Logik bauen die mir alle Tage über die Zeit zusammen zählt! Nächstes Projekt!! ;-)

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Du kannst Dir das auch noch einfacher machen:

    erst per pip3 install xmltodict --user die Bibliothek installieren

    dann in der Logik

    Code:
    import xmltodict
    import requests
    
    r = requests.post('http://100.100.0.31/mux_http/', data ={'id': '961', 'show': 'D_A_1_1~','code': '005'})
    
    responsedict = xmltodict.parse(r.text)
    data = responsedict['data']
    
    wert = data['D_Y_1']
    # oder
    Wert = data['D_A_1_1']
    # je nachdem wonach Du oben gefragt hast.

    Einen Kommentar schreiben:


  • Holoman5
    antwortet
    Zitat von bmx Beitrag anzeigen
    statt 7 musst Du da wohl 9 addieren ...
    Bist der Beste!!! Danke das wars!! Jetzt kann ich die restlichen Werte mit Login und ohne alle ein pflegen!!!

    Einen Kommentar schreiben:


  • bmx
    antwortet
    statt 7 musst Du da wohl 9 addieren ...

    Einen Kommentar schreiben:


  • Holoman5
    antwortet
    Hier nochmal die Ausgabe:
    Code:
    import requests
    
    
    r = requests.post('http://100.100.0.31/mux_http/', data ={'id': '961', 'show': 'D_A_1_1~','code': '005'})
    aktuellerdurchfluss = r.text[r.text.find('<D_A_1_1>')+7:r.text.find('</D_A_1_1>')]
    
    
    print(r.text)
    print(aktuellerdurchfluss)
    Code:
    <data><code>ok</code><D_A_1_1>0.00</D_A_1_1></data>
    1>0.00
    woher kommt das 1>

    Einen Kommentar schreiben:


  • Holoman5
    antwortet
    Bei der nächsten Abfrage gibt er mir 1>0.00 raus und kann den Wert nicht ins Item schreiben:
    Code:
    Error 'could not convert string to float: '1>0.00'' while evaluating
    Hier der Code:
    Code:
    import requests
    
    
    r = requests.post('http://100.100.0.31/mux_http/', data ={'id': '961', 'show': 'D_A_1_1~','code': '005'})
    aktuellerdurchfluss = r.text[r.text.find('<D_A_1_1>')+7:r.text.find('</D_A_1_1>')]
    sh.Wasserverbrauch.aktueller_durchfluss(float(aktu ellerdurchfluss))
    
    print(aktuellerdurchfluss)
    der Wert ist grad tatsächlich 0.00

    Was kann da sein? Bin grad nicht Zuhause um mal es mit einem anderem Wert zu testen!

    Einen Kommentar schreiben:


  • Holoman5
    antwortet
    Mann ich hab das 1000 mal brobiert! Danke dir bmx!!!!
    Es geht Hura!!!
    Hier der fertiger Code!
    Code:
    import requests
    
    
    r = requests.post('http://100.100.0.31/mux_http/', data ={'id': '961', 'show': 'D_Y_1~'})
    wert = r.text[r.text.find('<D_Y_1>')+7:r.text.find('</D_Y_1>')]
    sh.Wasserverbrauch.verbrauch_gestern(float(wert))
    
    print(wert)

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Am einfachsten sowas wie oben schon von Msinn beschrieben

    Code:
    wert = r.text[r.text.find('<D_Y_1>')+7:r.text.find('</D_Y_1>')]
    wenn es ein integer wert sein soll noch ein wert = int(wert) oder bei Fließkommazahl ein wert = float(wert)

    Einen Kommentar schreiben:


  • Holoman5
    antwortet
    Mit import re bekomme ich wenigstens die Buchstaben weg!
    Code:
    import requests
    import re
    
    r = requests.post('http://100.100.0.31/mux_http/', data ={'id': '961', 'show': 'D_Y_1~'})
    
    
    text = r.text
    zahl = re.findall(r'[+-]?\d+[,.]?\d*', text)
    print(zahl)
    
    wert= r.text
    
    print(r.content)
    
    print(r)
    print(r.text)
    print(wert)
    Code:
    ['1', '56', '1']
    b'<data><code>ok</code><D_Y_1>56</D_Y_1></data>'
    <Response [200]>
    <data><code>ok</code><D_Y_1>56</D_Y_1></data>
    <data><code>ok</code><D_Y_1>56</D_Y_1></data>
    Aber leider hab ich beim der ID vom Wert auch ne Zahl!!

    Einen Kommentar schreiben:


  • Holoman5
    antwortet
    Ich hab jetzt mal was anderes bebaut:
    Code:
    import requests
    
    
    
    r = requests.post('http://100.100.0.31/mux_http/', data ={'id': '961', 'show': 'D_Y_1~'})
    
    print(r)
    print(r.text)
    Jetzt bekomme ich wenigstens ne Antwort:
    Code:
    <Response [200]>
    <data><code>ok</code><D_Y_1>229</D_Y_1></data>
    Soweit so gut, aber wie bekomme ich den Wert 229 jetzt ausgefiltert und in mein Item geschrieben? Muss ich es parsen oder gibts da keine einfachere Lösung?

    Danke im Voraus!

    Einen Kommentar schreiben:


  • Bonze
    antwortet
    Ist nicht das
    response = requests.get(r) falsch?
    oben machts du dich schon r=requests.get()

    Unten müsste es dann heissen request= r.text oder r.json .... Je nach gewünschtem format

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Das bs4 brauchst Du eigentlich nicht. Ich fürchte es wird eine Art stochern im Nebel. Aber schau mal in den Thread hier im Loxone Forum. Dort gibt es einige Hinweise, die Dich vielleicht weiterbringen. Ansonsten frühestens am Wochenende ...

    Einen Kommentar schreiben:


  • Holoman5
    antwortet
    Sorry muss das noch üben.
    Code:
    import requests
    import lxml
    from bs4 import BeautifulSoup
    
    
    payload = {'id': '961', 'show': 'D_Y_1~'}
    r = requests.get('http://100.100.0.31/mux_http/', params=payload)
    
    if r.status_code == 200:
    # r mit lxml analysieren und Werte festsellen
    print("Analysiere...")
    response = requests.get(r)
    wert = response[response.find('<D_Y_1>')+7:response.find('</D_Y_1>')]
    sh.Wasserverbrauch.verbrauch_gestern(float(wert))
    print(r)
    Code:
    Analysiere...
    Error 'Invalid URL '<Response [200]>': No schema supplied. Perhaps you meant http://<Response [200]>?' while evaluating​​​​​​

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Auf jeden Fall solltest Du bei Deinen weiteren Postings das korrekte Einfügen beachten. Ich habe das oben mal gerade gezogen.

    Mach doch mal ein print(r) und poste das Ergebnis, dann können wir uns da rantasten.
    Zuletzt geändert von bmx; 14.05.2020, 08:49.

    Einen Kommentar schreiben:


  • Holoman5
    antwortet
    Danke sowas wie den Executor ist sehr hilfreich, Danke! ich hab jetzt das Ixml installiert, kannst du mir ein Beispiel nennen wie ich in der Logic weiter komm zum analysieren?
    Code:
    import requests
    import lxml
    
    payload = {'id': '961', 'show': 'D_Y_1~'}
    r = requests.get('http://100.100.0.31/mux_http/', params=payload)
    
    if r.status_code == 200:
        # r mit lxml analysieren und Werte festsellen
        print("Analysiere...")
        wert = r[r.find('<D_Y_1>')+7:r.find('</D_Y_1>')]
        sh.Wasserverbrauch.verbrauch_gestern(float(wert))
    Zuletzt geändert von bmx; 14.05.2020, 08:47.

    Einen Kommentar schreiben:

Lädt...
X