Skip to content

Rudi 60 patch hybrid pro button#238

Merged
mschneider82 merged 3 commits intomschneider82:mainfrom
rudi-60:rudi-60-patch-hybrid-pro-button
Feb 13, 2026
Merged

Rudi 60 patch hybrid pro button#238
mschneider82 merged 3 commits intomschneider82:mainfrom
rudi-60:rudi-60-patch-hybrid-pro-button

Conversation

@rudi-60
Copy link
Contributor

@rudi-60 rudi-60 commented Feb 10, 2026

No description provided.

a check of a var to be null in javascript shoul bem done like
abc  !== null
current impleantation leads to hybrid_button shown even if it is not a hybrid system
value in kf.secondaryHeatGeneratorStatuus?value is set even if 
kf.secondaryHeatGeneratorStatus is null

remove check on value,
check only on kf.secondaryHeatGeneratorStatus
@mschneider82
Copy link
Owner

Wenn secondaryHeatGeneratorStatus ein Objekt mit leerem value: {} ist, ist es trotzdem !== null und der Button würde weiterhin falsch angezeigt.

was hältst du von?

const isHybrid = typeof kf.secondaryHeatGeneratorStatus?.value === 'string' &&
                 kf.secondaryHeatGeneratorStatus.value !== '';

@rudi-60

@rudi-60
Copy link
Contributor Author

rudi-60 commented Feb 13, 2026

@mschneider82
Ich habe es so programmiert, dass es für mein System, Vitocal 250A nicht-hybrid, passt.
Der Wert für kf.secondaryHeatGeneratorStatus wird in dashboard-render-engine mit der funktion find () null, weil es keinen value gibt.
Javascript bricht die Verarbeitung eines Scripts gerne einfach ab, wenn es Variablen nicht gibt; das würde ich gerne vermeiden.
Das Problem gibt es so an vielen Stellen in den Skripten.

Wenn auch ein leeres Value abgefragt werden soll, dann vielleicht so:
const isHybrid = kf?.secondaryHeatGeneratorStatus && typeof kf.secondaryHeatGeneratorStatus?.value === 'string' &&
kf.secondaryHeatGeneratorStatus.value !== '';

Hier mein JSON Auszug
{
"feature": "heating.secondaryHeatGenerator.state",
"properties": {},
"gatewayId": "7736xyz",
"deviceId": "0",
"timestamp": "2026-02-11T17:46:36.160Z"
},
{
"feature": "heating.secondaryHeatGenerator.status",
"properties": {},
"gatewayId": "7736xyz",
"deviceId": "0",
"timestamp": "2026-02-11T17:46:36.160Z"
},

@mschneider82
Copy link
Owner

Die find() Funktion gibt explizit null zurück wenn:

  • Das Feature nicht gefunden wird, ODER
  • Das Feature existiert aber keinen gültigen Value hat (z.B. leere properties)

Nicht-Hybrid (Deine Vitocal 250-A):

{
  "feature": "heating.secondaryHeatGenerator.status",
  "properties": {},  // LEER!
}

Die find() Funktion:

  1. Findet das Feature (line 319)
  2. type === 'object' → true
  3. container = feature.value || feature.properties → container = {}
  4. container.value ist undefined (leeres Objekt)
  5. Check auf line 340: feature.value !== null && feature.value !== undefined → fails
  6. Gibt null zurück (line 359) ✓

Hybrid (Mein system):

{
  "properties": {
    "value": {
      "type": "string",
      "value": "standby"
    }
  }
}

Gibt {type: "string", value: "standby"} zurück ✓

Der PR-Code !== null schlägt fehl wenn:

  • Bei manchen Systemen das Feature gar nicht existiert (nicht in der API)
  • Dann ist secondaryHeatGeneratorStatus undefined
  • undefined !== null ist true → Button würde fälschlicherweise angezeigt!

Beste lösung wäre:

const isHybrid = kf.secondaryHeatGeneratorStatus != null &&
                 typeof kf.secondaryHeatGeneratorStatus?.value === 'string';

Das deckt alle Fälle ab:

  • null != null → false ✓ (deine anlage mit leerem Feature)
  • undefined != null → false ✓ (Systeme wo Feature fehlt)
  • {...} != null && typeof "standby" === 'string' → true ✓ (meine Hybrid)
  • {...} != null && typeof undefined !== 'string' → false ✓ (Sonstige Edge Cases)

check if secondary heater info is in JSON/API and has an appropiate value
@rudi-60
Copy link
Contributor Author

rudi-60 commented Feb 13, 2026

@mschneider82
Danke,
die Funktionsweise der find() Funktion war mir schon klar.
Die weiteren Varianten hatte ich in der Tiefe nicht bedacht.
Habe den Vorschlag eingearbeitet.

@mschneider82 mschneider82 merged commit 7feb577 into mschneider82:main Feb 13, 2026
1 of 3 checks passed
@rudi-60
Copy link
Contributor Author

rudi-60 commented Feb 13, 2026

@mschneider82
Habe nochmal dies und das probiert, manches verwundert schon:
undefined tritt nur dann auf wenn es das feature, hier kf. secondaryHeatGeneratorStatus, in der features-structure nicht gibt.
... Hatte es einfach mal auskommentiert.
null tritt auch dann auf, wenn es den gesuchten Parameter (Test mit 'heating.secondaryHeatGenerator.statusxyz' ) für das feature in der API nicht gibt.
offensichtlich kann die find() Funktion mehr als erwartet.

@rudi-60 rudi-60 deleted the rudi-60-patch-hybrid-pro-button branch February 13, 2026 13:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants