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
    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:


  • bmx
    antwortet
    Laut Anleitung s.o. kannst Du alle Parameter die Dich interessieren mit einem | verketten. Als Ergebnis bekommst Du ein xml wie schon erkannt.
    Es gibt ein Python Package wie lxml mit dem kannst Du die zurückgemeldeten Daten parsen (https://lxml.de) Alternativ geht auch Beautifulsoup4

    Als Ansatz kannst Du damit zunächst in einer Logik arbeiten. Es ist schwierig ohne Python Kenntnisse direkt fehlerfrei Logiken zu schreiben. Daher kannst Du Dir mal das Plugin Executor anschalten über die Admin Gui. Dort kannst Du im zweiten Tab Python Code testen.
    Dort funktioniert sowas wie print("Hallo SmartHomeNG").
    Entsprechend kannst Du dort auch

    Code:
    import requests
    
    
    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))

    Einen Kommentar schreiben:


  • Holoman5
    antwortet
    Sorry aber wo soll ich den String hinzufügen in meiner Logic?

    Die Body Ausgabe bekomm ich mit Postman (APP) wenn ich die Anlage auslese.

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Wenn Du den Body einem String (im Beispiel s) zuweist:
    Code:
    s = '<data><code>ok</code><D_Y_1>30</D_Y_1></data>'
    wert = s[s.find('<D_Y_1>')+7:s.find('</D_Y_1>')]
    wert enthält dann '30'
    Zuletzt geändert von bmx; 13.05.2020, 16:06.

    Einen Kommentar schreiben:


  • Holoman5
    antwortet
    Ah ok, danke für die Rückmeldung.

    Es kommt immer die selbe Antwort bis auf die Zahl natürlich!

    Hättest du mir ein Tipp wo ich nachkucken kann wegen dem String Handling in der Logic?

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Du bekommst von dem Device ein XML Dokument zurück. Das musst Du parsen. Dazu gibt es Bibliotheken für Python. Das ist aber eher nichts für jemand der sich nicht in Python auskennt.

    Falls Du immer nur die Antwort bekommst, wie Du sie beschrieben hast, kannst Du mit reinem String Handling an die Sache rangehen. Da das Device jedoch eine XML Antwork liefert, wird sich der Inhalt der Response vermutlich auch ändern. Dann müsstest Du das XML sauber parsen.
    Zuletzt geändert von Msinn; 13.05.2020, 14:28.

    Einen Kommentar schreiben:


  • Holoman5
    antwortet
    das hier kommt zurück im Body:

    <data><code>ok</code>
    <D_Y_1>30</D_Y_1></data>

    Einen Kommentar schreiben:


  • Holoman5
    antwortet
    Ich versuche grad über eine Logic die Grünbeck Anlage auszulesen über requests.
    Meine Logik:

    import requests


    payload = {'id': '961', 'show': 'D_Y_1~'}
    r = requests.get('http://100.100.0.31/mux_http/', params=payload)
    if r.status_code == 200:
    sh.Wasserverbrauch.verbrauch_gestern(15)


    er setzt den Wert auf 15 ist schon mal super. Aber wie bekomme ich den Respons Wert D_Y_1~ auf das Item geschrieben?

    Sorry ich hab keine Ahnung von Python!

    Einen Kommentar schreiben:


  • Holoman5
    hat ein Thema erstellt Plugin für die Grünbeck Softliq brauch eure Hilfe.

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

    Hi erstmal an alle die das lesen, ich habe mein SHNG soweit mit allem in meine Haus erfolgreich mit eurer Hilfe verbunden (KNX, OW, VBUS...) und werte alle Daten super in der SmartVISU aus.
    Nur die Wasserenthärtungsanlage macht mir seit paar Wochen graue Haare, ich blicks einfach nicht wie ich POST Requests an sie absetze und die Response in ein Item schreiben kann. Ich habe ein Tipp bekommen, es so zu machen wie es im Tankerkoenig plugin in Zeile 66 ist, ne simple url aufrufen. Keine Chance ich gib auf.

    So jetzt meine Frage, würde vlt jemand ein Plugin für mich schreiben, wär sogar bereit was zu zahlen (spenden)!.

    Anbei die freigegebene Doku von Grünbeck, Ihr müsst auch nicht alle Datenpunkte ein pflegen, das kann ich dann schon übernehmen. Nur z.B. den (D_Y_1~) ist der Verbrauch gestern.

    Wär cool wenn sich jemand melden würde!

    PS: sorry ich hoffe es ist nicht illegal für eure Arbeit Geld anzubieten!



    Angehängte Dateien
Lädt...
X