Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HmIP-BWTH does not show value of Channel 10 (open/closed state) #2192

Closed
HBIoT opened this issue Jan 28, 2023 · 27 comments
Closed

HmIP-BWTH does not show value of Channel 10 (open/closed state) #2192

HBIoT opened this issue Jan 28, 2023 · 27 comments
Labels
⚓ upstream issue This is a bug/issue for/in upstream software (OCCU, etc.) 🐛 bug-report Something isn't working 🏷️ WebUI This refs the WebUI component

Comments

@HBIoT
Copy link

HBIoT commented Jan 28, 2023

Describe the issue you are experiencing

After updating to 3.67.10.20230114 the Status of Channel:10 of HmIP-BWTH isn't shown anymore

image

Describe the behavior you expected

Status should be displayed.

Steps to reproduce the issue

...

What is the version this bug report is based on?

3.67.10.20230114

Which base platform are you running?

rpi3 (RaspberryPi3)

Which HomeMatic/homematicIP radio module are you using?

RPI-RF-MOD

Anything in the logs that might be useful for us?

?

Additional information

No response

@HBIoT HBIoT added the 🐛 bug-report Something isn't working label Jan 28, 2023
@jens-maus
Copy link
Owner

Und wie sah das ganz in vorherigen Versionen aus? Hab selbst kein HmIP-BWTH und kann das daher nicht testen hier.

@HBIoT
Copy link
Author

HBIoT commented Jan 29, 2023

Vorher wurden die Werte angezeigt. Der Screenshot zeigt den Zustand nach Rollback auf Release 3.65.11.20221218
image

@jp112sdl
Copy link
Contributor

Kommt in der Browserkonsole eine Fehlermeldung?
Sieht optisch erstmal so aus, als würde nach dem ersten Gerät die (Java)Skript-Verarbeitung abbrechen

@jens-maus
Copy link
Owner

Kurze Zwischeninfo. Scheint wohl auch in der reinen CCU3 Firmware zu passieren. Siehe:

https://homematic-forum.de/forum/viewtopic.php?f=34&t=77852&p=755902#p755901

D.h. ein upstream bug in der WebUI von OCCU seit 3.67.10? Habe leider selbst kein HmIP-BWTH und kann das daher leider nicht testen. Wir sind also auf Mithilfe von anderen (@HBIoT) angewiesen wenn das Problem beseitigt werden soll.

@jens-maus jens-maus added 🏷️ WebUI This refs the WebUI component ⚓ upstream issue This is a bug/issue for/in upstream software (OCCU, etc.) labels Feb 2, 2023
@jens-maus jens-maus added this to the future release milestone Feb 2, 2023
@jp112sdl
Copy link
Contributor

jp112sdl commented Feb 2, 2023

Die Änderung kam in der heating_control.fn mit 3.67.5 (eq-3/occu@53f45b9)

Da wurde die CreateBWTHSwitchState() komplett überarbeitet:
eq-3/occu@53f45b9#diff-5ccd21ec028b6606c74db5ca77a791e52f5fac85510dde697204a1833c023b63L550-R602

@HBIoT
Copy link
Author

HBIoT commented Feb 2, 2023

Kommt in der Browserkonsole eine Fehlermeldung? Sieht optisch erstmal so aus, als würde nach dem ersten Gerät die (Java)Skript-Verarbeitung abbrechen

@jp112sdl : wie du vermutest, wird offenbar das erste Gerät auf eine Seite korrekt angezeigt. Ich erkenne das daran, daß ich zwei Favoriten Seiten eingerichtet haben. Auf jeder Seite wird jeweils der erste Eintrag aus den BWTH's korrekt angezeigt.
Mit der Browserkonsole müsstest Du mir mal helfen. Wo genau müsste ich da hinschauen?

@jp112sdl
Copy link
Contributor

jp112sdl commented Feb 2, 2023

Kommt auf den Browser und das Betriebsystem an...
Chrome oder Firefox unter Windows: F12 drücken. Dann gibt es da unten den Tab "Konsole" oder "Console"

@jp112sdl
Copy link
Contributor

jp112sdl commented Feb 2, 2023

Ist denn sichergestellt, dass parseInt auf HEATING_VALVE_TYPE passt?
Liefert die Param-Description immer eine Zahl? Oder evtl. (auch) einen String?

@HBIoT
Copy link
Author

HBIoT commented Feb 2, 2023

Aufgrund der Ausgabe der XML-API nehme ich an, daß hier ein boolscher Wert verarbeitet werden muss.

<channel name="Thermostat Bad:10" ise_id="1826">
<datapoint name="HmIP-RF.00xxxxxxxxxxxx:10.STATE" type="STATE" ise_id="1827" value="false" valuetype="2" valueunit="" timestamp="1675346301"/>
</channel>

@HBIoT
Copy link
Author

HBIoT commented Feb 2, 2023

Kommt auf den Browser und das Betriebsystem an... Chrome oder Firefox unter Windows: F12 drücken. Dann gibt es da unten den Tab "Konsole" oder "Console"

@jp112sdl: auf der Console erhalte ich folgende Meldung
[Violation] 'readystatechange' handler took 1817ms webui.js:6900
[Violation] 'setTimeout' handler took 2375ms prototype.js:320

@jp112sdl
Copy link
Contributor

jp112sdl commented Feb 2, 2023

Aufgrund der Ausgabe der XML-API nehme ich an, daß hier ein boolscher Wert verarbeitet werden muss.

Darum ging es nicht. Es geht um HEATING_VALVE_TYPE des Kanal 8.
https://github.com/eq-3/occu/blob/master/WebUI/www/rega/esp/controls/heating_control.fn#L593-L597

Bei den Konsolenmeldungen wird das noch nicht alles sein.
Da müssten mindestens noch einige Warnungen auftauchen
Evtl. findet sich noch jemand hier, der sich in der Konsole auskennt.

@jens-maus
Copy link
Owner

jens-maus commented Feb 3, 2023

@jp112sdl Hab mir die besagten Codezeilen nun mal genauer angeschaut...

Aufgrund der Ausgabe der XML-API nehme ich an, daß hier ein boolscher Wert verarbeitet werden muss.

Darum ging es nicht. Es geht um HEATING_VALVE_TYPE des Kanal 8. https://github.com/eq-3/occu/blob/master/WebUI/www/rega/esp/controls/heating_control.fn#L593-L597

Schau dir doch mal das hier an:

https://github.com/eq-3/occu/blob/84bed9a491eedf8f4244c65d89d46842fd762f7e/WebUI/www/rega/esp/controls/heating_control.fn#L594

bzw.

https://github.com/eq-3/occu/blob/84bed9a491eedf8f4244c65d89d46842fd762f7e/WebUI/www/rega/esp/controls/heating_control.fn#L599-L603

Das "riecht" für mich danach, das state hier weder true noch false wird, sondern vmtl. ein string wird weil valveState als string ausgeliefert wird bzw. die folgende Zeile aus valveState dann eben ein String macht...

https://github.com/eq-3/occu/blob/84bed9a491eedf8f4244c65d89d46842fd762f7e/WebUI/www/rega/esp/controls/heating_control.fn#L580

Und das oValveState kommt ja aus dem hier:

https://github.com/eq-3/occu/blob/84bed9a491eedf8f4244c65d89d46842fd762f7e/WebUI/www/rega/esp/controls/heating_control.fn#L565

Insofern könnte es sein das das SWITCH.STATE eben kein true oder false liefert, sondern entweder ein 0/1 als string, oder was ganz anderes. Und dann wird das if(state == true) { ... } else if (state == false) { ...} eben beides nicht greifen....

@jp112sdl
Copy link
Contributor

jp112sdl commented Feb 3, 2023

Das "riecht" für mich danach, das state hier weder true noch false wird, sondern vmtl. ein string wird weil valveState als string ausgeliefert wird bzw. die folgende Zeile aus valveState dann eben ein String macht...

Ich hatte nicht auf dem Schirm, dass die Deklaration boolean nicht verbindlich ist.

Meine Vermutung zielte eher darauf ab, dass
chn8Description.HEATING_VALVE_TYPE nicht 0 oder 1 zurück gibt, sondern einen String und das JS abbricht, weil es bei parseInt knallt.

@jens-maus
Copy link
Owner

Meine Vermutung zielte eher darauf ab, dass chn8Description.HEATING_VALVE_TYPE nicht 0 oder 1 zurück gibt, sondern einen String und das JS abbricht, weil es bei parseInt knallt.

Stimmt, das kann auch sein. Oder da getParamset() geht an der stelle schief oder liefert einfach ggf. nur mal einen empty string zurück oder so... Laut der offiziellen homematicIP doku (https://homematic-ip.com/sites/default/files/downloads/hmip-device-documentation.pdf) liefert dieser Kanal wohl schon einen integer, aber er ist auch als ENUM vermerkt mit Namen dahinter:

Bildschirm­foto 2023-02-03 um 11 30 09

Wer weiss was da so passiert. Aktuelle Vermutung von mir ist das der getParamset() aufruf irgendwie ins leere rennt für gewisse geräte (gleicher Firmwarestand? Fehlende Datenpunkt weil mit FW-Update irgendwann nachgeliefert?), denn anscheinend sind nicht alle BWTH Nutzer von dem Problem betroffen... Leider hab ich keinerlei Geräte in meinem Fuhrpark der diesen HEATING_VALVE_TYPE DP hat.

@isi07
Copy link

isi07 commented Feb 9, 2023

Kann das Problem bei mir bestätigen.
Meine Raspberrymatic läuft auf 3.67.10.20230114 (ova).
Die HmIP-BWTH sind auf der beta firmware 2.8.10.

Anzeige von mehreren gleichzeitig:
nur beim ersten Kanal 10 wird der Status angezeigt, bei den folgenden nicht mehr

grafik

Meldungen in der Konsole / Firefox unter Windows

Jedes BWTH einzeln funktioniert
grafik

grafik

grafik

@jp112sdl
Copy link
Contributor

Ah okay. Jetzt ist es eindeutig:
https://stackoverflow.com/questions/902839/how-to-select-all-elements-with-a-particular-id-in-jquery

When you use
jQuery("#elemid")
it selects only the first element with the given ID.

Die Lösung könnte dann Stackoverflow zufolge lauten:
Aus WriteLine("jQuery('#idValveState').text(lblValveState);");
mach WriteLine("jQuery('[id=idValveState]').text(lblValveState);");

oder man arbeitet in der Tabelle statt mit id
WriteLine("<td><div id='idValveState'></div></td>");
mit einer class
WriteLine("<td><div class='clsValveState'></div></td>");

und dann
WriteLine("jQuery('.clsValveState').text(lblValveState);");

Testen kann ich es nicht.

@jens-maus
Copy link
Owner

Das ist ein super Hinweis! Allerdings würde ich wohl besser die id ändern und da z.b. die objekt/device id einfach hinzufügen!

@jp112sdl
Copy link
Contributor

Allerdings würde ich wohl besser die id ändern und da z.b. die objekt/device id einfach hinzufügen!

Ach ja, sonst steht ja bei allen der selbe Text 🤓
Also einfach noch die chnId mit anhängen, dann sollte es passen?

586: WriteLine("<td><div id='idValveState"#chnId#"'></div></td>");
...
615: WriteLine("jQuery('#idValveState"#chnId#"').text(lblValveState);");

@jens-maus
Copy link
Owner

Allerdings würde ich wohl besser die id ändern und da z.b. die objekt/device id einfach hinzufügen!

Ach ja, sonst steht ja bei allen der selbe Text 🤓 Also einfach noch die chnId mit anhängen, dann sollte es passen?

Genau so ist es und so würde ich das jetzt auch umsetzen wollen. Danke also nochmal für den Denkanstoß!

@jens-maus
Copy link
Owner

Ok, das Problem sollte nun für die nächste Version behoben sein. Interessierte könnten bereits mit dem morgen erscheinenden nightly snapshot entsprechend testen ob das Problem nun wirklich beseitigt ist und hier bitte entsprechendes Feedback geben.

@bropat
Copy link

bropat commented Feb 13, 2023

@jens-maus

Ich habe die letzte nightly snapshot Version getestet und erhalte dabei noch folgenden Fehler:

image

image

var chn8Description = homematic('Interface.getParamset', {'interface':'HmIP-RF', 'address':'XXXXXXXXXXXXXX:8', 'paramsetKey': 'MASTER'}),
state = false,
lblValveState = translateKey('stringTableValveStateNotAvailable');
if (parseInt(chn8Description.HEATING_VALVE_TYPE) == 0) {             // <== Hier tritt die Exception auf da chn8Description null ist
if (state == true) {
lblValveState = translateKey('stringTableValveStateTrue');
} else if (state == false) {
lblValveState = translateKey('stringTableValveStateFalse');
}
} else if (parseInt(chn8Description.HEATING_VALVE_TYPE) == 1) {
if (state == true) {
lblValveState = translateKey('stringTableValveStateFalse');
} else if (state == false) {
lblValveState = translateKey('stringTableValveStateTrue');
}
}
jQuery('#idValveState2024').text(lblValveState);

Was mir noch aufgefallen ist, dass in meinen Fall die Seriennummer des Gerätes im Javascript Teil oben (mit XXXXXXXXXXXXXX zensiert) vom Typ HmIP-FROLL ist... 😮

@jp112sdl
Copy link
Contributor

jp112sdl commented Feb 13, 2023

vom Typ HmIP-FROLL

Das ist wirklich sehr merkwürdig und hat glaub ich mit diesem Bug hier nix zu tun.

Die Funktion CreateBWTHSwitchState() an sich dürfte beim FROLL schon gar nicht aufgerufen werden.

CreateBWTHSwitchState() wird nur aufgerufen, wenn a) ein Control vom Typ SWITCH vorhanden ist und b) im Label() des Kanals der Teilstring BWTH enthalten ist:
https://github.com/eq-3/occu/blob/master/WebUI/www/rega/esp/datapointconfigurator.fn#L983-L990

@jens-maus
Copy link
Owner

Würde mir ehrlich gesagt auch interessieren wie das zustande kommt das ein FROLL diese Funktion aufrufen lässt die nur für BWTH bestimmt ist. Ist das reproduzierbar?

@bropat
Copy link

bropat commented Feb 14, 2023

Ja ist reproduzierbar. Der Fehler tritt seit der Version 3.67.10.20230114 immer beim laden der Startseite auf (denke liegt an der Favoritenansicht). Nach dem auftreten des Fehlers wird nichts mehr weiter geladen:

image

@jp112sdl
Copy link
Contributor

Jetzt wird es ja wirklich komisch.
Hast du in der Favoritenansicht ein BWTH ?

Unabhängig davon wäre es - auch wenn es nicht auftreten sollte - sinnvoll, chn8Description auf null zu prüfen, bevor damit irgendwas gemacht wird (parseInt usw.)

@bropat
Copy link

bropat commented Feb 14, 2023

Ja hab ich.

@jens-maus
Copy link
Owner

Unabhängig davon wäre es - auch wenn es nicht auftreten sollte - sinnvoll, chn8Description auf null zu prüfen, bevor damit irgendwas gemacht wird (parseInt usw.)

Ja, denke auch das man das machen sollte (wie immer!). Trotzdem wäre es interessant herauszubekommen wie der auf die idee kommt das auszuwerten auch wenn das ein FROLL ist.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
⚓ upstream issue This is a bug/issue for/in upstream software (OCCU, etc.) 🐛 bug-report Something isn't working 🏷️ WebUI This refs the WebUI component
Projects
None yet
Development

No branches or pull requests

5 participants