NEWS
Test Adapter weishaupt WEM Portal v0.0.x
-
Hallo, erstmal vielen Dank der Adapter funktioniert auf anhieb. Ich bin neu bei iobroker und kenne mich nicht so gut aus, aber ich habe Probleme mit den ganzen Leerzeichen in den ID´s (bei übertragung über mqtt) kann man die irgendwie entfernen?
-
@simonlaessig guter Punkt ich werde das noch anpassen bedeutet zwar für alle die skripte und history muss nochmal gemacht werden aber so werden andere dinge einfacher
-
@tombox Vielen Dank !!!
-
@simonlaessig in version 0.0.4 entfernt. Bitte von hand die alten Datenpunkte löschen.
Der Adapter wird auch bald in latest repo eingetragen sein. -
@tombox
Auf diesem Wege erste einmal vielen Dank für die geleistete Arbeit.
Das Abfragen der Systemwerte aus der Fachmannebene klappt ohne Probleme.Allerdings kann ich keine Parameter setzen. Weder über die vordefinierten Befehle noch über Custombefehl.
Ein Reverse-Engineering deiner main.js hat gezeigt, dass die dort eingetragenen Links zu den Einstellungsfenstern nicht mit meinen Übereinstimmen. Wenn ich einen der Links aus der main.js verwende, öffnet sich zwar ein Fenster, dieses unterscheidet sich aber von meinem und eingetragene Werte haben bei mir keine Auswirkung.Beispielhaft hier das Fenster für die Normale Solltemperatur des Warmwassers (WWSollNormal):
Eingabemaske mit meinem Link:
(https://www.wemportal.com/Web/UControls/Weishaupt/DataDisplay/WwpsParameterDetails.aspx?entityvalue=46004201000037003C400060FD0300110104&readdata=True&rwndrnd=0.030319963536898475)
Eingabemaske mit dem Link aus der main.js:(https://www.wemportal.com/Web/UControls/Weishaupt/DataDisplay/ParameterDetails.aspx?Id=22686&entityvalueid=207552&unit=@@wh-Unit-1&entitytype=Float&entityvalue=50&GroupId=53494&ElsterDataType=68&name=@@wh-582-ET-Name-5&OVIndex=9529&DataPointId=")
An welchem Weishaupt-Gerät hast du die Befehle getestet, bzw. bei welchen funktionieren sie? Ich habe ein Split-Wärmepumpe WWP-LS10B-R. Kann es sein, dass je nach Gerätetyp oder Gerätefamilie (Wärmepumpe/Gastherme) andere Eingabemasken verwendet werden?
PS: Nach Änderung der Links in der main.js geht das Werte setzen über die vordefinierten Befehle ohne Probleme. Nur der Custombefehl habe ich noch nicht hinbekommen.
-
@Sp0b1e vielleicht kannst du mich als gast zu deinem gerät einladen dann kann ich das checken
-
@tombox
ja gerne, dazu bräuchte ich aber deine e-mail adresse -
@Sp0b1e probier mal ob es mit der neuen version behoben ist
-
@tombox
Danke für das schnelle Update. Die Befehle gehen jetzt, ich weiß aber nicht so recht warum. Zum einen passen die Links immer noch nicht überein und in der main.js multiplizierst du die state.values nochmal mit 10.Der Befehl funktioniert aber nur, wenn ich für eine gewünschte Temperatur von 20,0°C den Wert 200 übergebe. Würde dein Befehl dann nicht 2000 in das Feld eintragen? Über Costum-Befehl funktioniert es mit beiden Links und mit der Werteübergabe von 200.
Hier nochmal die Links zur Warmwasser-Solltemperatur:
Link aus dem WEM-Portal:
https://www.wemportal.com/Web/UControls/Weishaupt/DataDisplay/WwpsParameterDetails.aspx?entityvalue=4600420100003C0055400060FD0300110104&readdata=True&rwndrnd=0.13499713276591585
und hier der Link aus der main.js
https://www.wemportal.com/Web/UControls/Weishaupt/DataDisplay/WwpsParameterDetails.aspx?entityvalue=46004201000037003C4000B9EF0300110104&readdata=True&rwndrnd=0.2514459684152772
Im Grund ist das nichts gravierendes, dass du ändern musst. Ich frage eigentlich nur verständnisshalber, sodass ich auch mal selbst Parameter zum Ändern anlegen kann.
Interessanter fände ich, neben den Werten auf der Infoseite auch die Werte der anderen Untermenüs bereitzustellen. In einer externen Visualisierung bekommt man ansonsten ja nicht mit, wenn Werte direkt am Gerät oder über das WEM-Portal geändert werden. Das sollte doch recht einfach mit einem Wechsel auf das entsprechende Untermenü und der Verwendung der gleichen for-Schleife wie für das Info-Menü möglich sein???
Ich würde mich hier durchaus auch gerne selbst versuchen, dann haben wir aber anschließend 2 Repos....
-
@Sp0b1e Das * 10 ist dazu das man eine Temperatur normal eingeben kann mit 20.5 oder 21.5 dann wandelt er es gleich in 205 oder 215 um. für custom Befehl muss du korrekterweiße dann selber 215 eingeben. Aber die nicht wwp geräte haben 20 oder 21 deswegen habe ich es einheitlich gemacht.
du kannst gerne mein repo forken
und dann wenn du fertig bist ein pull request across forks stellen damit ich es in mein repo übernehmen kann.
Ich habe leider keine weitere Zeit an dem Adapter zu arbeiten, habe nur wegen dem Interesse die Grundlage gelegt.
-
@tombox
Ich muss aber bei den normalen Befehlen für die Temperatur auch 205 oder 215 eingeben. Ansonsten funktioniert es nicht.Ok, ich werde das mit dem forken mal versuchen.
Wie gesagt, ein großer Grundstein ist ja schon gelegt. Vielen Dank nochmal dafür.
-
@Sp0b1e Bei mir geht 21.5 du darfst nur kein Komma verwenden.
-
@tombox
Ich habe mir den Code mal etwas detaillierter angesehen und verstehe den Ablauf und die Befehle grundsätzlich. Das Einzige bei dem ich Verständnisprobleme habe, ist der Login und das wechseln auf die Fachmannseite. Entsprechend finde ich gerade auch keine Lösung auf die anderen Untermenüs zu gelangen. Dazu fehlt mir einfach die Erfahrung in JS und Java ist auch schon etwas länger her...
Kannst du hier vielleicht eine kleine Funktion bereit stellen, die in die entsprechenden Untermenüs wie "Systembetreibsart", "Heizkreis", "Warmwasser", etc.. wechselt? -
@Sp0b1e du brauchst nur __EVENTTARGET und __EVENTARGUMENT das kannst du mit einem proxy wie charles oder mitm proxy oder in dem network von der chrome dev console.
Heizkrei ist zb
__EVENTTARGET: ctl00$rdMain$C$controlExtension$iconMenu$rmMenuLayer
__EVENTARGUMENT: 2 -
Der Adapter ist ja sehr interessant, habe ich schon lange gesucht.
Ist es möglich, über ioBroker die Vorlauftemperatur des Brennwertkessels zu
verändern, so ca. +- 10K zusätzlich zur bestehenden Aussentemperatur-Führung?Ich möchte damit die Leistung über die bereits installierte Einzelraumregelung
entsprechend dem Bedarf korrigieren. -
@hanss
Du kannst nur die Parameter ändern, die Du auch im Wem-Portal ändern kannst. Würde mich wundern, wenn Du die Vorlauf Solltemperatur direkt einstellen könntest. Du kannst die Raumsolltemperaturen oder die Heizkurve anpassen.... -
@Tg-71
Wenn man die Raumsolltemperatur ändern kann, dann wäre das doch was ich brauche:
Raumsolltemperatur +1K entspricht doch Vorlaufsolltemperatur +2K oder nicht? -
@Tg-71
@hanss
Ich kann bei mir die Anforderung unter Heizkreis auf Festwert stellen. Dann kann ich direkt den Sollwert für die Vorlauftemperatur vorgeben. Diese ist dann aber nicht mehr abhängig von der Witterung.
Ich kann aber auch eine Anforderungsüberhöhung zwischen +-5K im witterungsgeführten Betreibsmodus vorgeben. Das wäre in Grunde genau das was du suchst.
Ich habe ein Split-Wärmepumpe, vielleicht gibt es die Einstellungen bei deinem Bennwertkessel auch....
-
@Sp0b1e
Vielen Dank, aber die Möglichkeiten der Einstellung sind natürlich abhängig von der Steuerung/Regelung
mit der man es zu tun hat. In meinem Fall benötige ich die Info für die Weishaupt WTC 15A. -
@tombox said in Test Adapter weishaupt WEM Portal v0.0.x:
@Sp0b1e du brauchst nur __EVENTTARGET und __EVENTARGUMENT das kannst du mit einem proxy wie charles oder mitm proxy oder in dem network von der chrome dev console.
Heizkrei ist zb
__EVENTTARGET: ctl00$rdMain$C$controlExtension$iconMenu$rmMenuLayer
__EVENTARGUMENT: 2Ja ich hatte __EVENTTARGET und __EVENTARGUMENT schon mit der chrom dec console ausgelesen. Bin aber noch zu keinem funktionierenden Ergebnis gekommen. Du hattest noch den "ClientState" gesetzt, muss ich das beim Wechseln ins Untermenü auch setzt?
Ich hatte versucht mit deiner switchFachmann()-Funktion im normalen Benutzermodus auf das Untermenü Heizkreis zuzugreifen, indem ich das von dir definierte __EVENTTARGET und __EVENTARGUMENT mit den ausgelesenen Werten ersetzt habe.
//form["__EVENTTARGET"] = "ctl00$SubMenuControl1$subMenu"; //form["__EVENTARGUMENT"] = "3"; //form["ctl00_SubMenuControl1_subMenu_ClientState"] = '{"logEntries":[{"Type":3},{"Type":1,"Index":"0","Data":{"text":"Übersicht","value":"110"}},{"Type":1,"Index":"1","Data":{"text":"Anlage:","value":""}},{"Type":1,"Index":"2","Data":{"text":"Benutzer","value":"222"}},{"Type":1,"Index":"3","Data":{"text":"Fachmann","value":"223","selected":true}},{"Type":1,"Index":"4","Data":{"text":"Statistik","value":"225"}},{"Type":1,"Index":"5","Data":{"text":"Datenlogger","value":"224"}}],"selectedItemIndex":"3"}' form["__EVENTTARGET"] = "ctl00$rdMain$C$controlExtension$iconMenu$rmMenuLayer"; form["__EVENTARGUMENT"] = "2"; form["ctl00_rdMain_C_controlExtension_iconMenu_rmMenuLayer_ClientState"] = '{"logEntries":[],"selectedItemIndex":"2"}'
Leider geht es wohl nicht so einfach oder ich habe einen Denkfehler. Ich bin mit der Syntax auch nicht wirklich vertraut.
Ergbniss ist, dass in den logs im ioBroker der body als debug-Information ausgeworfen wird...