ioBroker / AdapterRequests

This Place is used to track the status of new Adapter-Requests.
248 stars 36 forks source link

Weishaupt Adapter via WEM Portal #218

Closed Olivbus closed 4 years ago

Olivbus commented 4 years ago

Zum Einbinden einer Weishaupt Gastherme in das Hausautomatisationssystem. Die Gastherme ist via WEM Portal sowohl über Handyapp als auch über Webapp auslesbar und steuerbar.

ghost commented 4 years ago

WEM oder WCM (home) Portal ? Ich suche ebenfalls einen solchen Adapter via WCM-Modul-Webseite auslesbar

Olivbus commented 4 years ago

Die neueren Modelle gehen ohne WCM Modul direkt via Ethernetkabel in das WEM Portal. Im WEM Portal sind über PC und mobile App die Zustände abfrag- und steuerbar. Leider gibt die Firma Weishaupt die API nicht bekannt.

Olivbus commented 4 years ago

Ich würde für einen solchen Adapter meine Zugangsdaten zur Verfügung stellen, wenn es hilft.

Olivbus commented 4 years ago

Weishaupt

DirtyAtze commented 4 years ago

Ich hätte auch großes Interesse an einem Adapter, falls sich das irgendwie realisieren lässt. Würde die Entwicklung auch gerne unterstützen. Testen, zugang zur Verfügung stellen oder auch finanziell unterstützen.

Gruß

Hardy62wo commented 4 years ago

Hallo an alle! Habe eine Variante, mit der ich mich mit einem Headless Browser am wemportal anmelden kann (Script) und die Meßwerte, Temp, Druck, Heizleistung der ersten Anmeldeseite abgreifen kann. Es basiert auf casperjs/phantomjs. Bisher läuft es auf einem Windows-PC in einer Cmd shell. Hat jemand Interesse? Viele Grüße Hardy62wo

tg-71 commented 4 years ago

Hallo @Hardy62wo,

ich hätte auf alle Fälle Interesse ...

Viele Grüße

Thomas

Hardy62wo commented 4 years ago

Ok, wie können wir kommunizieren? Mail? Am 09.10.19, 07:47, tg-71 notifications@github.com schrieb: Hallo @Hardy62wo,

ich hätte auf alle Fälle Interesse ...

Viele Grüße

Thomas

Hardy62wo commented 4 years ago

Hallo Thomas,

so sieht der Dialog in der Windows cmd-shell aus:

Weishaupt website opened Weishaupt WemPortal Login Login using username and password ... Aussentemperatur_Aktuell 15,2 °C Aussentemperatur_Maximum 22,6 °C Warmwassertemperatur_Aktuell 26,2 °C Leistung_Aktuell_WE0 0 % Anlagendruck 1,55 bar Aussentemperatur_Minimum 8,4 °C Vorlauftemperatur_Aktuell_HKModul --- °C Kesseltemperatur_Aktuell_WE0 27,1 °C ... Anlagen Logout from WemPortal Drücken Sie eine beliebige Taste . . .

ich komme im Moment nur auf die erste Seite .... die Folgeseiten kann ich leider noch nicht erreichen.. von ioBroker habe ich leider keine Ahnung viele Grüße Gerhard

dm82m commented 4 years ago

Hallo Gerhard,

kannst Du teilen was Du gebaut hast? Das klingt für den Anfang gar nicht schlecht.

Gruß Dirk

Sp0b1e commented 4 years ago

Hallo Gerhard, ich habe auch Interesse. Es wäre schon, wenn du deinen Code teilen könntest. Gruß Timo

Hardy62wo commented 4 years ago

Hallo,

stelle hier ein Verfahren vor, um an die Daten aus dem Portal "https://www.wemportal.com" für Weishaupt Heizungen WTC-GW 15-B (seit ca. Frühjahr 2017) zum kommen... Es werden die Tools PhantomJS (headless Browser) und CasperJS benutzt.

Die beiden Softwaren können auf Windows-PC einfach installiert werden. Es existieren im Netz auch Beschreibungen für Installation auf einem Raspberry - habe ich aber noch nicht getestet.

1.0 folgendes herunterladen (Zip-Datei) und in je einem eigenen Ordner entpacken: 1.1 https://phantomjs.org/download.html 1.2 https://codeload.github.com/casperjs/casperjs/zip/1.1.4-1 2.0 die Windows-Pfad-Variable ergänzen: 2.1 entweder Systemweit 2.2 oder als cmd-Script: Path=%Path%;C:\casperjs-1.1.4-1\bin;C:\casperjs-1.1.4-1;C:\phantomjs-2.1.1-windows\bin;C:\phantomjs-2.1.1-windows; 3.0 die Datei "wemportal.js" ins Verzeichnis C:\casperjs-1.1.4-1\bin kopieren 3.1 die Datei Wemportal.cmd ins im Verzeichnis: C:\casperjs-1.1.4-1\bin kopieren 4.0 Starten mit Wemportal.cmd

Hardy62wo commented 4 years ago

die Dateien sind 7zip komprimiert und in gz umbenannt, damit sie sich hochladen lassen!

Hardy62wo commented 4 years ago

wemportal.gz Weishaupt.gz

Hardy62wo commented 4 years ago

hab sie gerade hochgeladen !

Hardy62wo commented 4 years ago

In der wemportal.js muss natürlich noch Benutzername und das Passwort fürs Wemportal angepasst werden!

dm82m commented 4 years ago

super! dankeschön! ich werde mir das ding anschauen; mein ziel ist es die warmwasser aufbereitung ein/ausschalten zu können und das dann entsprechend in home assistant steuern zu können. und wenn das dann entsprechend funktioniert muss man es halt z.b. noch in ioBroker oder wo auch immer integrieren!

Hardy62wo commented 4 years ago

Hallo Dirk, Freut mich, wenn es Dir weiterhilft. Ich bin leider gescheitert auf die Folgeseiten zu kommen mit diesem Verfahren. Es handelt sich wohl um Seiten, die mit Javascript dynamisch aufgebaut werden. Ich hatte Versuche gemacht um das genauer zu analysieren mit einer Software "burp" Ursprünglich hatte ich mit "curl" Versuche gemacht, kam aber nicht über die Hürde Anmeldung hinweg. Es gibt in FHEM ein universelles Modul "httpmod", damit kam ich leider auch nicht weiter. Viele Grüße Gerhard

tg-71 commented 4 years ago

Ich bin gerade mit "Puppeteer" am "rumprobieren". Gerhard hat mich mit dem Stichwort "Headless Browser" auf die Spur gebracht. Damit kann ich schonmal durchs Portal navigieren (Bin schon auf der "Fachmannseite" ;o) . Hab gerade wenig Zeit umd muss mir neben bei noch Javascript beibringen. Deswegen geht's nur langsam voran.... Gruß Thomas

Hardy62wo commented 4 years ago

Irgendwie kommuniziert unsere Heizung über xmpp mit dem Server von Weishaupt. Für das Portal nutzen die dafür eine Software-Framework von einer anderen Firma. "alnamic AG Habichtweg 21 l 41468 Neuss l Telefon +49-2131-7949-0 office@alnamic.com l www.alnamic.com " .....Für den Aufbau des Weishaupt Energie Management (WEM) Portals hat alnamic auf die Softwareplattform e-ControINet gesetzt. Die modulare Plattform wurde speziell für Internet of Things (loT) Anwendungen entwickelt und bringt bereits viele Funktionen im Standard mit.
...wird die Plattform auf Basis von Microsoft Azure betrieben.

Es gibt auch noch einen CAN-Bus...

Wenn Du NUR Warmwasser zu und abschalten möchtest, bestünde auch eine Möglichkeit über den Temperaturfühler (NTC 5k) Einfluss zu nehmen und dort einen Umschaltung zu machen.(Widerstand bei aufgeheiztem Speicher messen! wahrscheinlich so um 1200 Ohm). Dieser ist an den Klemmen B3 (1,M) angeschlossen

Hardy62wo commented 4 years ago

Hallo Thomas, Ja über Puppeteer bin ich auch gestolpert, hab das aber nicht weiter verfolgt. Dein Script interessiert mich! VG Gerhard

dm82m commented 4 years ago

packt doch eure experimente in github in ein repo, dann können wir gemeinsam schauen was wir erreichen?

tg-71 commented 4 years ago

Ich mach das noch ein bisschen hübscher, damit ich mich nicht schämen muss ;o) - dann zeig das Ganze...

"Repo" ich bin hier auf gihub nur Leser - ich fürchte da brauch ich etwas Unterstützung ;o)

Hardy62wo commented 4 years ago

...mir geht das genauso

tg-71 commented 4 years ago

https://github.com/tg-71/WEM-Portal-puppeteer-erste-Schritte/blob/master/wem.js

tg-71 commented 4 years ago

wie gesagt bin noch am Basteln, Probieren und Lernen, aber das könnte ein Weg sein...

Hardy62wo commented 4 years ago

Hallo Thomas, Das ist ganz große Klasse und hat mich einen großen Schritt weiter gebracht! Vielen herzlichen Dank und viele Grüße Gerhard

tg-71 commented 4 years ago

Freut mich ;o)

dm82m commented 4 years ago

so leute, ich hab mich mal an einer python version probiert. aktuell kann ich die werte auslesen und auch zum formular für die warmwasser aufbereitung wechseln, dort kann ich auch die werte ändern aber sie werden noch nicht gespeichert. siehe: https://github.com/dm82m/wemportal-python/blob/master/wem.py

Hardy62wo commented 4 years ago

Hallo Dirk, Finde Deine Lösung auch sehr interessant! Einen Ansatz mit Python hat auch dieser Kollege vor wenigen Tagen veröffentlicht: https://github.com/neiser/wemportal-scripts Viele Grüße Gerhard

neiser commented 4 years ago

Hallo zusammen,

ich melde mich mal hier als Reaktion auf https://github.com/neiser/wemportal-scripts/issues/1

Meine Story ist, dass ich ziemlich verärgert war, dass einem Weishaupt auch nach längerem Gespräch mit dem Support keine vernünftige API zur Verfügung stellt und nur dieses vollkommen träge und bescheuerte Web-Interface zur Verfügung stellt (wofür man auch noch zahlen darf per Abo...grrrr...nachdem man schon tausende Euro für die Anlage selbst bezahlt hat.....grrrr). Da das Web-Interface offensichtlich auf ASP.Net basiert und sowohl Client- als auch Server-State hat den es bei jedem "Klick" in der Oberfläche durch tonnenweises XML modifiziert, hab ich mit Selenium obiges Script entwickelt. Davor hab ich übrigens auch mit Wireshark probiert, ne Man-in-the-Middle Attacke auf die mit TLS gesicherte XMPP Verbindung zwischen Gerät und WEM Portal zu starten. Hat nich geklappt, aber bei sowas bin ich auch nich sooo gut.

@dm82m hat in https://github.com/neiser/wemportal-scripts/issues/1 ein paar Fragen gestellt: Bei mir läuft das in einer "headless" VM sehr zuverlässig. Es braucht aber schon ein paar hundert MB RAM. Es sollte aber problemlos möglich sein, das mal auf einem RPi zum laufen zu kriegen, zumindest um es anzutesten. Ist halt nur sehr resourcenhungrig. Die Prometheus Metriken kann man einfach per "curl" abholen und schauen, ob es klappt. Passwort usw. ist per Umgebungsvariable zu setzen. Ein "Scrape", also das Auslesen aller Daten von der "Fachmann Info" Seite dauert etwa 20 Sekunden, wobei die meiste Zeit darauf geht darauf zu warten dass die Seite fertig geladen hat (das ist leider auch nicht so trivial, siehe unten).

Mir war allerdings nicht bewusst, dass es auch eine App gibt. Vielleicht kann man die ja disassemblieren und eine halbwegs vernünftige API vorfinden. Vielleicht ist diese dann ohne diese Selenium-"Kanone" nutzbar für die "Spatzen"anwendung, einfach nur regelmäßig alle Daten auszulesen....

Bisher war nicht geplant, auch das Warmwasser an/aus zu machen, aber alles, was man im Webinterface klicken kann, sollte man mit Selenium hinbekommen. Allerdings ist die Webseite alles andere als nicht trivial, und man muss höllisch aufpassen, dass die Seite auch fertig "geladen" hat, sprich: Diesen ganzen XML State hin- und hergeschickt hat.

Ich folge mal dem Issue hier und kann gerne Hilfe leisten, mein Script zum Laufen zu kriegen.

dm82m commented 4 years ago

so leute; mein repo ist upgedated. ich kann jetzt alle werte der ersten seite auslesen und ich kann die warmwasseraufbereitung ein bzw. ausschalten. das alles ohne selenium und per python aber sehr leichtgewichtig und schnell durch mechanicalsoup und danke der hilfe eines kumpels! im wasseraufbereitungsscript habe ich auch schon begonnen mir die solardaten des tages zu holen; ich werde also das script in meiner homeautomatisierung täglich laufen lassen und die warmwasseraufbereitung ausschalten sofern genug sonnenenergie kommt und ich ausreichend warmwasser per solarthermie mache. falls nicht wird die warmwasseraufbereitung über die heizungsanlage aktiviert.

siehe: https://github.com/dm82m/wemportal-python/

Hardy62wo commented 4 years ago

Hallo Dirk, Gefällt mir sehr-sehr gut! Habe Dir gerade eine Mail geschrieben!! Viele Grüße Gerhard

dm82m commented 4 years ago

Freut mich, wenns euch was bringt. Für Home Assistant bin ich fertig, da habe ich jetzt alle Weishaupt Werte und kann meine Warmwasser Aufbereitung je nach Solarenergie ein- bzw. ausschalten. Hier sind wir ja aber eigentlich im ioBroker Repository, d.h. den Aufwand das dann da reinzubekommen müsste jemand anderes tun. :)

Hardy62wo commented 4 years ago

... geht mir ähnlich ... bin ein oldfashion FHEM- Dino 😉

Apollon77 commented 4 years ago

Habt Ihr auch alle oben "Thumbs up" beim ersten Beitrag gemacht wenn Interesse besteht? onst ist das Interesse unsichtbar wenn jemand schaut

dm82m commented 4 years ago

Ich nicht, aber ich nutze kein ioBroker, daher ist es für mich auch irrelevant ob das Feature dort enthalten ist oder nicht.

Olivbus commented 4 years ago

Als Eröffner dieses Issues möchte ich mich schon mal herzlich für Eure tolle Vorarbeiten bedanken. Es wäre super, wenn jemand hieraus einen Adapter für den Iobroker entwickeln könnte. Ich kann das leider nicht leisten, weil ich mich damit überhaupt nicht auskenne. Wenn ein solcher Adapter erstellt werden würde, würde ich mich über folgende Möglichkeiten freuen: Warmwasser Push anstellen, Warmwassersolltemperatur ändern, Betriebsart wechseln, Raumsolltemperatur ändern, Statistik auslesen, aktuelle Werte für Warmwassertemperatur, Anlagendruck, Leistung , Außentemperatur, Vorlauftemperatur und Kesseltemperatur auslesen.

neiser commented 4 years ago

@dm82m Ich hab mir dein Script wem_status.py mal angeschaut und mir ist aufgefallen, dass du direkt nach dem Login anfängst, die Seite zu parsen. Klappt das zuverlässig? Ich hatte das Problem, dass es immer ein bissel braucht bist auch alle DOM Elemente von dem JavaScript im Hintergrund auch wirklich fertig geladen worden sind. Weißt du, ob mechnicalsoup auch diesen JavaScript-Kram richtig kann und ob man vielleicht sogar die Daten von der Fachmann-Info Page auslesen kann (dort sind ja noch viel mehr interessante Daten zu bekommen)?

dm82m commented 4 years ago

Also ich würde sagen es funktioniert, wenn ich mir die Werte in meiner Homeautomatisierung anschaue. Siehe Bild. Fachmann Seite müsste auch gehen, ich kann ja sogar die warmwasser Aufbereitung ein bzw ausschalten. 1F59047E-CBE9-44F2-9B82-116AD26024A9

TA2k commented 4 years ago

Wenn wirklich bedarf besteht kann ich ein adapter draus machen. Es wäre einfacher für mich mit Zugangsdaten die temporär mir zu Verfügung gestellt werden. Einfach im Forum tombox anschreiben.

tg-71 commented 4 years ago

Mein Interesse ist riesig ;o) Ich würde Dir auch meine Zugangsdaten zur Verfügung stellen. Ich habe aber nur die "Minimalaustattung" (meine Gastherme arbeitet als Gasdurchlauferhitzer) - somit wirst du bei mir nicht alle Funktionen finden. "Olivbus" scheint ein paar mehr Funktionen im Portal zur Verfügung zu haben. Vielleicht ist es sinnvoller mit seinem Account zu arbeiten... Viele Grüße Thomas

TA2k commented 4 years ago

Mir egal ich kann mit einem kleineren anfangen man kann ja dann nachbessern falls noch was fehlt

Sp0b1e commented 4 years ago

Hallo, ich habe auch sehr großes Interesse und kann meine Zugangsdaten auch zur Verfügung stellen. Bei mir ist eine Split-Wärmepumpe WWP-LS10B installiert. Dann kann auch Verglichen werden, welche Daten im Portal gerätespezifisch bzw. geräteübergreifend sind.

TA2k commented 4 years ago

dann schreib mir im forum eine pn an tombox gibt die app genauso alle informationen aus wie die webseite?

Sp0b1e commented 4 years ago

Nein, die App gibt wesentlich weniger Werte aus als die Webseite, da es hier keine Fachmannebene gibt.

TA2k commented 4 years ago

Ok gut zu wissen wie ist die Pin für die Fachmannebene?

Olivbus commented 4 years ago

Pin ist normalerweise: 11

TA2k commented 4 years ago

https://forum.iobroker.net/topic/26710/test-adapter-weishaupt-wem-portal-v0-0-x

Olivbus commented 4 years ago

Super!! Installiert und läuft.