Ankündigung

Einklappen
Keine Ankündigung bisher.

Wärempumpen mit Web2Com (Ochsner/Wolf/...)

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

    [callidomus] Wärempumpen mit Web2Com (Ochsner/Wolf/...)

    Hallo zusammen!

    Nutzt vielleicht auch jemand eine Wärmepumpe mit dem Web2Com Protokoll?

    Wir haben eine Sole-Wasser-Wärmepumpe von Ochsner und die zugehörigen Module zum Auslesen (http://www.ochsner.com/de-de/die-wae...nste-regelung/):

    z.B.
    https://knx-user-forum.de/forum/%C3%...endlich-am-bus

    https://www.loxforum.com/forum/faqs-...-und-schreiben


    Jetzt wäre es toll, die Verschiedenen Werte übersichtlich mit im Callidomus zu haben.

    Einfach mal so in die kreative Runde gefragt

    Danke und Grüße
    Thorsten

    #2
    Hi Thorsten,

    Du musst erstmal für Dich rausfinden, wie Du an die Werte kommst. Im Loxone-Forum sah es so aus, als ob man über eine URL an die Werte kommt.
    Wir können das sicherlich zusammen was entwickeln, um die Werte dann in callidomus zu bekommen.

    Gruß, Waldemar
    OpenKNX www.openknx.de

    Kommentar


      #3
      Hi Waldemar,

      ich glaub mit
      https://docs.google.com/document/d/1...h.9faew18aw2p6
      dürfte ich eine gute Grundlage haben.

      Mal durchlesen und spielen.

      Geht SOAP unter CD denn auch?

      Grüße
      Thorsten

      Kommentar


        #4
        Hallo Thomas,

        auf dem Image ist BeautifulSoup und lxml installiert, damit kann man sehr einfach XML parsen. Macht z.B. das DWD Plugin.

        Viel Erfolg

        Bis bald

        Marcus

        Kommentar


          #5
          So, jetzt hab ich mir mal in den letzten 2 Stunden ein wenig was angeschaut und hänge nun an folgendem Punkt. Vielleicht kann mir jemand den Fehler aufzeigen

          Ich bekomme Werte von der Wärmepumpe mit Curl (erstmal nicht ausgewertet):
          Code:
          curl 'http://192.168.1.200/ws' --user "USER:XXX" -H 'Content-Type: text/xml; charset=UTF-8' -H 'SOAPAction: http://ws01.lom.ch/soap/getDP' --data-binary $'<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://ws01.lom.ch/soap/"><SOAP-ENV:Body><ns:getDpRequest><ref><oid>/1/2/1/125/4</oid><prop/></ref><startIndex>0</startIndex><count>1</count></ns:getDpRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>'
          Ergebnis:
          Code:
          <?xml version="1.0" encoding="UTF-8"?>
          <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://ws01.lom.ch/soap/"><SOAP-ENV:Body><ns:getDpResponse><ref><oid>/(1) EBusRoot/(2) 513200224/(1) WAERMEPUMPE/(125) /(4) 00:70</oid><prop>-r--</prop></ref><dpCfg><index>4</index><name>00:70</name><prop>-r--</prop><desc>Scalar Var</desc><value>18.5</value><unit>°C</unit><type>13</type><step>0.1</step><minValue>0.0</minValue><maxValue>100.0</maxValue></dpCfg></ns:getDpResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
          Das geht also.

          Dann hab ich das versucht in Python umzusetzen, aber da kommt nur ein Fehler. Irgendwas mit der Autorisierung schein nicht zu gehen, aber ich komm nicht weiter.
          Code:
          import requests
          
          url='http://192.168.1.200/ws'
          username='USER'
          password='XXX'
          
          headers = {
              'Content-Type': 'text/xml; charset=UTF-8',
              'SOAPAction': 'http://ws01.lom.ch/soap/getDP',
          }
          
          data = {
            '$<?xml version': '"1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://ws01.lom.ch/soap/"><SOAP-ENV:Body><ns:getDpRequest><ref><oid>/1/2/1/125/4</oid><prop/></ref><startIndex>0</startIndex><count>1</count></ns:getDpRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>'
          }
          
          resp = requests.post(url, headers=headers, data=data, auth=(username,password))
          
          print('Ergebnis:\n')
          print(resp.text)
          Da kommt dann leider nur:
          Code:
          <?xml version="1.0" encoding="UTF-8"?>
          <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://ws01.lom.ch/soap/"><SOAP-ENV:Body><SOAP-ENV:Fault><faultcode>SOAP-ENV:Client</faultcode><faultstring>No XML root element</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
          Kann wir jemand helfen?

          Danke!
          Grüße
          Thorsten

          Kommentar


            #6
            Hallo Thorsten,

            Zitat von RoyalTS Beitrag anzeigen
            Code:
            data = {
            '[COLOR=#FF0000]$[/COLOR]<?xml version': '....
            }
            gehört das da wirklich hin?

            Bis bald

            Marcus

            Kommentar


              #7
              Der data part passt doch nicht. Ich kenne mich mit requests nicht aus.
              Aber Google ist Dein Freund: http://stackoverflow.com/questions/1...quests-library
              I'm feeling lucky

              Kommentar


                #8
                Hallo Marcus,

                hatte ich aus dem Chrome-Curl-Export übernommen. Auch wenn ich das "$" weg lasse, ändert es leider nichts am Fehler.
                Ich hatte den gleichen Fehler im Curl-Befehl ohne
                Code:
                --user "USER:XXX"
                Als ich den eingefügt hatte, dann ging es. Grüße Thorsten

                Kommentar


                  #9
                  Auch folgender Data-Part ändert leider nichts am Ergebnis
                  Code:
                  data = """<?xml version': '"1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://ws01.lom.ch/soap/"><SOAP-ENV:Body><ns:getDpRequest><ref><oid>/1/2/1/125/4</oid><prop/></ref><startIndex>0</startIndex><count>1</count></ns:getDpRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>"""
                  Morgen mal weiter suchen, wenn mich meine Kids lassen.

                  Kommentar


                    #10
                    Ok, ich habs

                    Code:
                    import requests
                    
                    url='http://192.168.1.200/ws'
                    username="USER"
                    password="XXX"
                    
                    headers = {
                        'Content-Type': 'text/xml; charset=UTF-8',
                        'SOAPAction': 'http://ws01.lom.ch/soap/getDP',
                    }
                    
                    data = """<?xml version': '"1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://ws01.lom.ch/soap/"><SOAP-ENV:Body><ns:getDpRequest><ref><oid>/1/2/1/125/4</oid><prop/></ref><startIndex>0</startIndex><count>1</count></ns:getDpRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>"""
                    
                    resp = requests.post(url, auth=(username,password), headers=headers, data=data)
                    print(resp.text)
                    Bei username und password hab ich die " anstatt der ' gebraucht.

                    Gute Nacht und morgen geht's weiter

                    Kommentar


                      #11
                      Ok, doch noch weiter

                      Code:
                      import requests
                      
                      url='http://192.168.1.200/ws'
                      username="USER"
                      password="XXX"
                      oid="/1/2/1/125/4"
                      
                      headers = {
                          'Content-Type': 'text/xml; charset=UTF-8',
                          'SOAPAction': 'http://ws01.lom.ch/soap/getDP',
                      }
                      
                      data = """<?xml version': '"1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://ws01.lom.ch/soap/"><SOAP-ENV:Body><ns:getDpRequest><ref><oid>""" + oid + """</oid><prop/></ref><startIndex>0</startIndex><count>1</count></ns:getDpRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>"""
                      
                      resp = requests.post(url, auth=(username,password), headers=headers, data=data)
                      
                      print('Ergebnis:')
                      print(resp.text)
                      
                      my_value = resp.text[(resp.text.index("<value>")+len("<value>")):resp.text.index("</value>")]
                      my_unit = resp.text[(resp.text.index("<unit>")+len("<unit>")):resp.text.index("</unit>")]
                      print(my_value + ' ' + my_unit)
                      Und jetzt brauch ich das als Plugin mit schöner Ausgabe für alle wichtigen Werte. Da such ich aber morgen alle zusammen.

                      OID sind z.B. die verschiedenen Werte (Temperaturen, Laufzeiten, etc.)

                      Grüße
                      Thorsten
                      Merken

                      Kommentar


                        #12
                        Hi Thorsten,

                        ich habe gerade bei google folgendes gefunden:
                        In vielen Fällen werden Sie auch Daten senden wollen, die nicht formular-kodiert sind. Wenn Sie an Stelle eines Dictionary einen string übergeben, werden diese Daten direkt übertragen.
                        Du musst also folgendes schreiben:
                        Code:
                        data = '<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://ws01.lom.ch/soap/"><SOAP-ENV:Body><ns:getDpRequest><ref><oid>/1/2/1/125/4</oid><prop/></ref><startIndex>0</startIndex><count>1</count></ns:getDpRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>'
                        Dann ist data ein string und wird nicht "verunstaltet".

                        Gruß, Waldemar
                        OpenKNX www.openknx.de

                        Kommentar


                          #13
                          Hi Thorsten,

                          hatte die Antwort vorher nicht gesehen...

                          Du brauchst aber nicht unbedingt ein Plugin, Du kannst doch von der Logik aus die Items mit Werten beschreiben und in der Visu anzeigen.

                          Gruß, Waldemar
                          OpenKNX www.openknx.de

                          Kommentar


                            #14
                            Hallo Waldemar,

                            mit der Logik und den Werten wäre ich soweit. Aber ein eigenes Plugin mit Widget wäre schön.
                            So mit Darstellung eines Wassertanks, der Wärmepumpe und er Leitungen mit der Anzeige der jeweiligen Temperaturen. Ggf. sogar Farbanpassungen je nach Temperatur.

                            Nur wie bastelt man sein eigenes Widget?

                            Themen für den Stammtisch gibt es also.

                            Grüße
                            Thorsten

                            Kommentar


                              #15
                              Hi Thorsten,

                              wie gesagt, ob Plugin oder Logik ist sekundär, da ein Widget ja nur die Werte eines oder mehrerer Items darstellt. Wie man ein Widget macht: Ich hab mir einfach mal ein existierendes genommen und dann gebastelt.
                              Ob wir beim Workshop so was wie dieses Widget schaffen, kann ich nicht beurteilen. Aber die Konzepte hinter Widgets würden mich auch interessieren.

                              Gruß, Waldemar

                              OpenKNX www.openknx.de

                              Kommentar

                              Lädt...
                              X