Weishaupt WCM-COM

Hallo,

da das Auslesen von Weishaupt Heizungen via ebus bekanntermaßen eine größere Herausforderung darstellt, hatte ich mir seinerzeit gleich das Kommunikationsmodul WCM-COM mitgekauft. Das Teil funktioniert soweit ganz toll, man kann via Webbrowser auf alle Werte des Systems zugreifen und auch alles konfigurieren. Es gibt zusätzliche digitale Ein- und Ausgänge, man kann E-Mails verschicken und sogr SMS über ein eingebautes GSM Teil.

Was ich mir jedoch wesentlich einfacher erhofft habe ist die Anbindung an Fremdsysteme wie IPS. Eine wie auch immer geartete Schnittstelle scheint es hierfür jedoch nicht zu geben.

Na gut, dann eben per WWW Reader und Text Parser …geht leider so einfach auch nicht so einfach.

Die Webseiten sind alle dynamisch und voller Script Gedöns. Hier hört meine Weisheit leider auf. So tief stecke ich in den Web Technologien nicht drin. Ich vermute mal es ich gar nicht so schlimm, denn ein Script, das der Webbrowser aufruft, sollte man ja auch von IPS aus auslesen können - oder?

Hier mal ein Beispiel. Ein Frame sieht z.B. so aus:

Die Daten darin sind alle dynamisch, d.h. nach Laden der Seite stehen dort Platzhalter, und erst nach einigen Sekunden werden die Felder mit den echten Daten ausgefüllt. Ein einfaches Text Parsen ist daher nicht möglich.

Leider verstehe ich nicht genug davon, aber ich bin mir sicher man müsste die Scripte auch irgendwie direkt aufrufen können. der Quelltext der Seite (genauer dieses Frames) sieht so aus:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="../main.xsl" ?>
<stx:doc xmlns:stx="http://www.sevenstax.de">
  <stx:includescript select="Form_WTC_G_Prozesswerte"/>
  <stx:vars>
    <stx:var name="szInfo"><stx:word key="info"/></stx:var>
    <stx:var name="szDatalogger"><stx:word key="datalogger"/></stx:var>
    <stx:var name="szFree"><stx:word key="free"/></stx:var>
    <stx:var name="szSurveillance"><stx:word key="surveillance"/></stx:var>
    <stx:var name="szNA"><stx:word key="na"/></stx:var>
  </stx:vars>
  <stx:body onload="gfctWEBAPP_OnLoadHandler()">
    <stx:div class="clForm">
      <stx:caption websiteid="#010101"><stx:word key="processvalues"/></stx:caption>
      <div class="clForm_Content">
        <div id="List_WTC_G_15_Prozesswerte" class="clL_List">
          <div class="clL_List_Element"><h4><stx:word key="actor_burner_state"/></h4></div>
          <div class="clL_List_Element">
            <div id="idT0051" class="clNotChecked">******<stx:word key="flame"/></div>
          </div>
          <div class="clL_List_Element">
            <div id="idT05D9" class="clNotChecked">******<stx:word key="gasvalve"/> 1</div>
          </div>
          <div class="clL_List_Element">
            <div id="idT05DA" class="clNotChecked">******<stx:word key="gasvalve"/> 2</div>
          </div>
          <div class="clL_List_Element">
            <div id="idT01D2" class="clNotChecked">******<stx:word key="pump"/></div>
          </div>
          <div class="clL_List_Element"></div>
          <div id="idT0176_N" class="clL_List_Element">I10 **<stx:word key="working_state"/></div>
          <div id="idT0001_N" class="clL_List_Element">I10 **<stx:word key="error"/></div>
          <div id="idT008A_N" class="clL_List_Element">I11 **<stx:word key="load_state"/></div>
          <div id="idT0A0C_N" class="clL_List_Element">I12 **<stx:word key="damped_outsidetemp"/></div>
          <div id="idT0002_N" class="clL_List_Element">I13 **<stx:word key="heatexpectation"/></div>
          <div id="idT0C1D_N" class="clL_List_Element">I30 **<stx:word key="pretemp"/> (<stx:word key="estb"/>)</div>
          <div id="idT0145_N" class="clL_List_Element">I31 **<stx:word key="exhausttemp"/></div>
          <div id="idT000C_N" class="clL_List_Element">I33 **<stx:word key="outsidetemp"/></div>
          <div id="idT000E_N" class="clL_List_Element">I34 **<stx:word key="hotwater_temp"/></div>
          <div id="idT0076_N" class="clL_List_Element">I38 **<stx:word key="buffersensor"/> B10</div>
          <div id="idT0C56_N" class="clL_List_Element">I42 **<stx:word key="opcyclecount"/> <stx:word key="burner"/></div>
          <div id="idT0C57_N" class="clL_List_Element">I43 **<stx:word key="op_hours"/> <stx:word key="burner"/></div>
          <div id="idT02BC_N" class="clL_List_Element">I45 **<stx:word key="time_since_last_check"/></div>
        </div>

        <div id="Information_WTC_G_Prozesswerte" class="clM_List">
          <div class="clM_List_Content">
            <div class="clM_List_Element_left"><h4><stx:word key="op_type"/></h4></div>
            <div class="clM_List_Element_left">
                <div id="idT0067_H" class="clNotChecked">******<stx:word key="heating"/></div>
            </div>
            <div class="clM_List_Element_left">
                <div id="idT0067_W" class="clNotChecked">******<stx:word key="hotwater"/></div>
            </div>
            <div class="clM_List_Element_right"></div>
            <div class="clM_List_Element_right"></div>
            <div class="clM_List_Element_right"></div>
            <div id="idT0176" class="clM_List_Element_left"><stx:word key="na"/></div>
            <div id="idT0001" class="clM_List_Element_left"><stx:word key="na"/></div>
            <div id="idT008A" class="clM_List_Element_left"><stx:word key="na"/></div>
            <div id="idT0A0C" class="clM_List_Element_left"><stx:word key="na"/></div>
            <div id="idT0002" class="clM_List_Element_left"><stx:word key="na"/></div>
            <div id="idT0C1D" class="clM_List_Element_left"><stx:word key="na"/></div>
            <div id="idT0145" class="clM_List_Element_left"><stx:word key="na"/></div>
            <div id="idT000C" class="clM_List_Element_left"><stx:word key="na"/></div>
            <div id="idT000E" class="clM_List_Element_left"><stx:word key="na"/></div>
            <div id="idT0076" class="clM_List_Element_left"><stx:word key="na"/></div>
            <div id="idT0C56" class="clM_List_Element_left"><stx:word key="na"/></div>
            <div id="idT0C57" class="clM_List_Element_left"><stx:word key="na"/></div>
            <div id="idT02BC" class="clM_List_Element_left"><stx:word key="na"/></div>
          </div>
        </div>

        <div id="Einheit_WTC_G_Prozesswerte" class="clR_List_Left">
          <div class="clR_List_Content">
            <div class="clR_List_Element"></div>
            <div class="clR_List_Element"></div>
            <div class="clR_List_Element"></div>
            <div class="clR_List_Element"></div>
            <div class="clR_List_Element"></div>
            <div class="clR_List_Element"></div>
            <div id="idT0176_E" class="clR_List_Element"></div>
            <div id="idT0001_E" class="clR_List_Element"></div>
            <div id="idT008A_E" class="clR_List_Element">%</div>
            <div id="idT0A0C_E" class="clR_List_Element">°C</div>
            <div id="idT0002_E" class="clR_List_Element">°C</div>
            <div id="idT0C1D_E" class="clR_List_Element">°C</div>
            <div id="idT0145_E" class="clR_List_Element">°C</div>
            <div id="idT000C_E" class="clR_List_Element">°C</div>
            <div id="idT000E_E" class="clR_List_Element">°C</div>
            <div id="idT0076_E" class="clR_List_Element">°C</div>
            <div id="idT0C56_E" class="clR_List_Element"></div>
            <div id="idT0C57_E" class="clR_List_Element"><stx:word key="hours"/></div>
            <div id="idT02BC_E" class="clR_List_Element"><stx:word key="hours"/></div>
          </div>
        </div>

        <div id="Checkboxen_D_WTC_G_Prozesswerte" class="clCheckboxen_Werte" style="top:147px">
          <div class="clCheckboxen_Werte_Content">
            <div class="clCheckboxen_Werte_Element"><stx:word key="datalog"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0176_CDL" type="checkbox" name="DC1" value="1" onclick="gftcAddorSub_CB(this,0)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0001_CDL" type="checkbox" name="DC2" value="1" onclick="gftcAddorSub_CB(this,0)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT008A_CDL" type="checkbox" name="DC3" value="1" onclick="gftcAddorSub_CB(this,0)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0A0C_CDL" type="checkbox" name="DC4" value="1" onclick="gftcAddorSub_CB(this,0)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0002_CDL" type="checkbox" name="DC5" value="1" onclick="gftcAddorSub_CB(this,0)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0C1D_CDL" type="checkbox" name="DC6" value="1" onclick="gftcAddorSub_CB(this,0)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0145_CDL" type="checkbox" name="DC7" value="1" onclick="gftcAddorSub_CB(this,0)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT000C_CDL" type="checkbox" name="DC8" value="1" onclick="gftcAddorSub_CB(this,0)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT000E_CDL" type="checkbox" name="DC9" value="1" onclick="gftcAddorSub_CB(this,0)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0076_CDL" type="checkbox" name="DC10" value="1" onclick="gftcAddorSub_CB(this,0)"/></div>
            <div class="clCheckboxen_Werte_Element"></div>
            <div class="clCheckboxen_Werte_Element"></div>
            <div class="clCheckboxen_Werte_Element"></div>
          </div>
        </div>

        <div id="Checkboxen_U_WTC_G_Prozesswerte" class="clCheckboxen_Ueber" style="top:147px">
          <div class="clCheckboxen_Ueber_Content">
            <div class="clCheckboxen_Ueber_Element"><stx:word key="ueberw"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0176_CUW" type="checkbox" name="UC1" value="1" onclick="gftcAddorSub_CB(this,1)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0001_CUW" type="checkbox" name="UC2" value="1" onclick="gftcAddorSub_CB(this,1)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT008A_CUW" type="checkbox" name="UC3" value="1" onclick="gftcAddorSub_CB(this,1)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0A0C_CUW" type="checkbox" name="UC4" value="1" onclick="gftcAddorSub_CB(this,1)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0002_CUW" type="checkbox" name="UC5" value="1" onclick="gftcAddorSub_CB(this,1)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0C1D_CUW" type="checkbox" name="UC6" value="1" onclick="gftcAddorSub_CB(this,1)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0145_CUW" type="checkbox" name="UC7" value="1" onclick="gftcAddorSub_CB(this,1)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT000C_CUW" type="checkbox" name="UC8" value="1" onclick="gftcAddorSub_CB(this,1)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT000E_CUW" type="checkbox" name="UC9" value="1" onclick="gftcAddorSub_CB(this,1)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0076_CUW" type="checkbox" name="UC10" value="1" onclick="gftcAddorSub_CB(this,1)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0C56_CUW" type="checkbox" name="UC11" value="1" onclick="gftcAddorSub_CB(this,1)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT0C57_CUW" type="checkbox" name="UC12" value="1" onclick="gftcAddorSub_CB(this,1)"/></div>
            <div class="clCheckboxen_Werte_Element"><input id="idT02BC_CUW" type="checkbox" name="UC13" value="1" onclick="gftcAddorSub_CB(this,1)"/></div>
          </div>
        </div>
        <div id="idHeaderJavaScriptError" class="clDebug" style="visibility:hidden;">
        Debug: Outs
        </div>
      </div>
      <div id="idInfoBox" class="clInfo"><stx:word key="info"/>:</div>
      <stx:applybutton onclick="localSubmitCheckboxes()"><stx:word key="apply"/></stx:applybutton>
    </stx:div>
  </stx:body>
</stx:doc>

Kann mir jemand erklären, wass da passirt, und wie ich ggf. von IPS aus an die gewünschten Daten kommen kann? Das wäre Super!

Gibt es jemanden hier im Forum, der auch das WCM-COM hat dieses mit IPS nutzt? Ich würde mich gerne über Eure Erfahrungen hierzu austauschen.

Entwicklertools im Browser einschalten F12 und dann die Seite aufrufen.
Die Website arbeitet sicher auch mit einer Art API-Abfragen.
Wenn Du Glück hast sind es einfach HTTP-Abfragen, die die Werte schon halbwegs formatiert zurückgeben.

Gesendet von meinem D6633 mit Tapatalk

Für das WCM-COM kann ich dir weiterhelfen, mit einer fertigen Lösung :wink:
Unser Nachbar hat das Teil und da der Kessel ab und zu auf Störung ging, hab ich eine Überwachung gebaut die mir im Fehlerfall per Telegram eine Meldung schickt und gleichzeitig alle 10 min. z.B. die Daten und Temperaturen in cacti/rrdtool aufzeichnet. Wir haben einen Linux Server im Keller laufen, auf dem ich das Programm laufen hab.
Blöderweise muss die Abfrage ja übers Internet und um das WCM-COM zu erreichen, hab ich beim Nachbarn eine dydns Adresse vergeben inklusive Portforwarding für http und manchmal funktioniert die dyndns Adresse nicht, ist etwas nervig.
Zusätzlich kann es sein wenn man das WCM-COM in zu kurzen Zeitabständen hintereinander abfrägt das es sich aufhängt, da hilft dann nur ein Neustart mit Stromstecker ziehen. Kann aber sein daß es an der Authentifizierung liegt.

Die Abfrage läuft über json (Google mal danach) und sieht genauso aus als ob einer über Browser drauf zugreift, inklusive Passworteingabe.
Geschrieben hab ich dazu ein C-Programm das einen bestimmten http-Request schickt. Das kann man sicher auch mit einem Script in beliebiger Sprache machen, aber für die Stringzerlegung bin ich in C am geschicktesten :slight_smile:
Die einzelnen Geräte und Werte werden per Nummern angesprochen, die muss man halt auf seine Anlage anpassen.

Wenn du Interesse dran hast, kann ich dir ein Zip per Mail schicken.

Im FHEM Forum gibt es auch einen Beitrag dazu: Weisshaupt Heizungssteuerung
Da gibts noch mehr Info.

Hallo Geronet,
ich habe seit 2 Wochen nun auch IPS in Betrieb und möchte es gern mit meiner Weishaupt-Therme inkl. WCM COM kombinieren. Kannst Du mir bitte auch Dein Modul zur Verfügung stellen? :wink:

Herzlichen Dank!

Gesendet von iPhone mit Tapatalk

Wenn es das Skript/Modul noch gibt, wäre ich auch sehr interessiert dran. Kannst du oder die anderen es mir auch zukommen lassen?

Wenn möglich hätte ich auch gerne das Script. :slight_smile:

Danke