HomeConnectLocal – Home-Connect-Geräte lokal und ohne Cloud in FHEM steuern

Begonnen von Shadow3561, 25 September 2026, 14:34:30

Vorheriges Thema - Nächstes Thema

Shadow3561

Danke für den Hinweis. Bei mir läuft noch alles ganz altmodisch mit ipv4 daher habe ich mir garnicht weiter Gedanken darum gemacht.
Gruss

Shadow3561

Zitat von: JudgeDredd am 06 Oktober 2026, 14:23:57
Zitat von: Shadow3561 am 25 September 2026, 14:34:30Feedback, Logs von weiteren Gerätetypen und Tests sind willkommen.
Hallo Shadow3561,
erstmal Danke für Deine Arbeit und das Modul.

Ich besitze 2 HomeConnect-Geräte und nutze FHEM eigentlich nur zur Überwachung und weniger zur Steuerung dieser.
  • Dishwasher
    aktueller Status des laufenden Programms
  • FridgeFreezer
    Überwachung, wenn die Türen zu lange geöffnet sind

Das Device des Geschirrspülers (deviceType=Dishwasher) kommt, wie vorgesehen, mit allen möglichen SET Befehlen
Das Device des Kühlschranks (deviceType=FridgeFreezer") erzeugt einige Readings (Tür auf/zu ist dabei).
SET-Befehle für die Steuerung (auch wenn ich das nicht brauche) werden keine generiert.

Vielleicht hast Du ja Interesse und Andere freuen sich darüber den deviceType FridgeFreezer vollständig zu integrieren.
Ich habe Dir mal die beiden XML Dateien angehängt.

Gruß,
JudgeDredd

Moin,

ich habe gerade erfolgreich FQDN und IPv6 in HomeConnectLocal integriert, die neue Version aber noch nicht auf GitHub hochgeladen.

Bevor ich das mache, möchte ich gerne noch ein paar Dinge über deinen Kühlschrank wissen:

1* Welche Verbindungsart zeigt FHEM unter ConnectionType an (AES oder TLS)?
2* Was steht beim Kühlschrank im Internal LastSetList?
3* Lässt sich die Kühlschranktemperatur über die Home-Connect-App ändern? In deiner DeviceDescription sind nämlich alle 17 Einstellungen als access="none" und available="false" gekennzeichnet. Schick mir bitte die readings
DescriptionChanges
MandatoryValues
oder ein anonymisiertes list vom device.
4* Werden die Readings des Kühlschranks zuverlässig und zeitnah aktualisiert, beispielsweise beim Öffnen und Schließen der Tür?

Gruss Daniel


JudgeDredd

Servus,
Zitat von: Shadow3561 am 17 Oktober 2026, 10:28:23ich habe gerade erfolgreich FQDN und IPv6 in HomeConnectLocal integriert, die neue Version aber noch nicht auf GitHub hochgeladen.
Dafür schonmal vielen Dank.

  • TLS
  • Internal: LastSetList => connect:noArg disconnect:noArg reloadMapping:noArg
  • Also in der App lässt sich da einiges einstellen. Mir reicht es eigentlich, wenn das Bier kühl ist ;-)
    Aber Ich versuche mal alles aufzulisten:
    • Externes Licht:
      => true/false (Reading: Power)
      => Helligkeit 0% - 100% (Reading: Brightness)
      => Nachleuchten true/false (Reading: AfterGlowEnabled)
      => Nachleucht Zeitraum 10 Min. - 6 Std. (Reading: AfterGlow)
    • Temperatur Kühlfach
      => Temperatur: 2° - 8° (Reading: SetpointTemperature)
      => Superkühlen: true/false (Reading: SuperMode)
    • Temperatur Gefrierfach
      => Temperatur: -16° - -24° (Reading: SetpointTemperature)
      => SuperGefrieren: true/false (Reading: SuperMode)
    • Optionen (nur eine gleichzeitig wählbar):
      => Urlaubs Modus true/false (Reading: VacationMode)
      => Energiesparmodus true/false (Reading: EcoMode)
      => Frische-Modus true/false (Reading: FreshMode)
      => Sabbat-Modus true/false (Reading: SabbathMode)
  • Das passt bestens.
    Der Kühlschrank verfügt über 2 Sensoren (Kühlschranktür / Gefrierschranktür)
    Reading: DoorState => Open/Close (dabei ist es egal welche Tür geöffnet ist)
    Reading: Refrigerator => Open/Close (nur Kühlschranktür)
    Reading: Freezer => Open/Close (nur Gefrierschranktür)

Offensichtlich wird bei den Temperatur-Readings nicht zwischen Kühl- und Gefrierfach unterschieden. Es wird immer die Temperatur von der letzten Einstellungsänderung angezeigt.
Ich hoffe Du kannst mit den Infos was anfangen, ansonsten frag ruhig nach.
Aber nicht das Du wissen willst, wozu man den Kram braucht 😅

Gruß,
JudgeDredd
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

Shadow3561

Schick mir doch bitte noch die runtime-daten
DescriptionChanges
MandatoryValues
oder alternativ ein list vom device.
Hintergrund: Manche Berechtigungen zum schreiben von Daten werden erst zur Laufzeit freigegeben.

Gruss

JudgeDredd

Zitat von: Shadow3561 am 17 Oktober 2026, 12:34:19Schick mir doch bitte noch die runtime-daten
Das einzige was ich damit in Verbindung bringe ist:
RuntimeEffectiveOptions 0
RuntimeEffectivePrograms 0
RuntimeMetaCount 38
RuntimeMetaLastItems 38
RuntimeMetaRevision 1
MappingDeviceFile /opt/fhem/FHEM/FHEM_HomeConnectLocal/505090394546001809_DeviceDescription.xml
last_resource   /ro/descriptionChange
Wenn das nicht ausreicht, dann bekommst Du das List. Ist aber so groß, das ich es dann besser als TXT-Anhang poste.
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

Shadow3561

Ok,
das hätte ich wohl besser erklären können da die benötigten readings standartmässig ausgeblendet sind.

Mach bitte
set Device showRawReadings 1danach einen
set device connectdanach sollten neue readings auftauchen. ich benötige dann descriptionChangesund mandatoryValues
Gruss

JudgeDredd

Zitat von: Shadow3561 am 17 Oktober 2026, 13:07:16set Device showRawReadings 1
Was soll das sein ? Weder der Kühlschrank noch der Geschirrspüler hat einen solchen SET-Befehl 🤔
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

JudgeDredd

ok, war ein Attribut (verwende ich nicht sooft).
descriptionChanges:
{
    "data": [
        {
            "access": "WRITEONLY",
            "uid": 576,
            "available": true,
            "parentUID": 0
        },
        {
            "parentUID": 0,
            "available": true,
            "uid": 594
        },
        {
            "available": true,
            "parentUID": 0,
            "uid": 575
        },
        {
            "uid": 553,
            "available": true,
            "parentUID": 0,
            "access": "WRITEONLY"
        },
        {
            "access": "WRITEONLY",
            "available": true,
            "parentUID": 0,
            "uid": 554
        },
        {
            "access": "WRITEONLY",
            "parentUID": 0,
            "available": true,
            "uid": 1
        },
        {
            "access": "WRITEONLY",
            "uid": 560,
            "parentUID": 0,
            "available": true
        },
        {
            "parentUID": 0,
            "available": true,
            "uid": 3,
            "access": "READWRITE"
        },
        {
            "uid": 520,
            "parentUID": 259,
            "access": "READ"
        },
        {
            "access": "READWRITE",
            "uid": 524,
            "available": true,
            "parentUID": 0
        },
        {
            "access": "READ",
            "parentUID": 0,
            "available": true,
            "max": 2,
            "min": 1,
            "uid": 539
        },
        {
            "uid": 26,
            "parentUID": 259,
            "available": true
        },
        {
            "access": "READ",
            "parentUID": 0,
            "available": true,
            "uid": 5
        },
        {
            "access": "READ",
            "uid": 557,
            "available": true,
            "parentUID": 0
        },
        {
            "parentUID": 0,
            "available": true,
            "uid": 527,
            "access": "READ"
        },
        {
            "available": true,
            "parentUID": 0,
            "uid": 592
        },
        {
            "parentUID": 0,
            "available": true,
            "uid": 27,
            "access": "READ"
        },
        {
            "access": "READWRITE",
            "available": true,
            "parentUID": 0,
            "max": 1,
            "uid": 4211,
            "min": 1
        },
        {
            "access": "READWRITE",
            "available": true,
            "parentUID": 0,
            "uid": 8224
        },
        {
            "stepSize": 1,
            "min": -24,
            "uid": 8198,
            "max": -16,
            "parentUID": 0,
            "available": true,
            "access": "READWRITE"
        },
        {
            "uid": 8229,
            "parentUID": 0,
            "access": "READWRITE"
        },
        {
            "access": "READWRITE",
            "parentUID": 0,
            "available": true,
            "uid": 8208
        },
        {
            "access": "READWRITE",
            "uid": 8228,
            "available": true,
            "parentUID": 0
        },
        {
            "parentUID": 0,
            "available": true,
            "access": "READWRITE",
            "min": 600,
            "stepSize": 60,
            "uid": 20500,
            "max": 21600
        },
        {
            "access": "READWRITE",
            "uid": 20509,
            "available": true,
            "parentUID": 0
        },
        {
            "max": 100,
            "stepSize": 1,
            "uid": 20498,
            "min": 0,
            "access": "READWRITE",
            "available": true,
            "parentUID": 0
        },
        {
            "access": "READWRITE",
            "available": true,
            "parentUID": 0,
            "uid": 20497
        },
        {
            "uid": 20482,
            "stepSize": 1,
            "min": 0,
            "max": 100,
            "parentUID": 0,
            "available": true,
            "access": "READWRITE"
        },
        {
            "access": "READWRITE",
            "parentUID": 0,
            "available": true,
            "uid": 20483
        },
        {
            "uid": 20481,
            "parentUID": 0,
            "available": true,
            "access": "READWRITE"
        },
        {
            "uid": 20513,
            "parentUID": 0,
            "available": true,
            "access": "READWRITE"
        },
        {
            "max": 8,
            "stepSize": 1,
            "uid": 8199,
            "min": 2,
            "access": "READWRITE",
            "available": true,
            "parentUID": 0
        },
        {
            "access": "READWRITE",
            "uid": 8230,
            "parentUID": 0
        },
        {
            "uid": 8209,
            "available": true,
            "parentUID": 0,
            "access": "READWRITE"
        },
        {
            "access": "READWRITE",
            "uid": 8226,
            "available": true,
            "parentUID": 0
        },
        {
            "access": "READWRITE",
            "available": true,
            "parentUID": 0,
            "uid": 8225
        },
        {
            "access": "READ",
            "available": true,
            "parentUID": 0,
            "uid": 4096
        },
        {
            "available": true,
            "parentUID": 0,
            "uid": 4097,
            "access": "READ"
        }
    ],
    "msgID": 240978385,
    "action": "RESPONSE",
    "resource": "/ro/allDescriptionChanges",
    "sID": 1760250729,
    "version": 1
}

mandatoryValues:
{
    "resource": "/ro/allMandatoryValues",
    "action": "RESPONSE",
    "version": 1,
    "sID": 1760250729,
    "data": [
        {
            "uid": 3,
            "value": true
        },
        {
            "value": true,
            "uid": 5
        },
        {
            "uid": 21,
            "value": 0
        },
        {
            "uid": 520,
            "value": "2026-10-17T11:15:22"
        },
        {
            "value": false,
            "uid": 524
        },
        {
            "value": 1,
            "uid": 527
        },
        {
            "uid": 535,
            "value": false
        },
        {
            "value": 2,
            "uid": 539
        },
        {
            "value": true,
            "uid": 547
        },
        {
            "value": 0,
            "uid": 559
        },
        {
            "value": 0,
            "uid": 592
        },
        {
            "uid": 593,
            "value": 0
        },
        {
            "uid": 595,
            "value": 0
        },
        {
            "uid": 598,
            "value": 0
        },
        {
            "uid": 4096,
            "value": 0
        },
        {
            "uid": 4097,
            "value": 0
        },
        {
            "uid": 4211,
            "value": 1
        },
        {
            "uid": 8198,
            "value": -16
        },
        {
            "value": 6,
            "uid": 8199
        },
        {
            "value": false,
            "uid": 8208
        },
        {
            "uid": 8209,
            "value": false
        },
        {
            "value": false,
            "uid": 8224
        },
        {
            "uid": 8225,
            "value": false
        },
        {
            "value": false,
            "uid": 8226
        },
        {
            "uid": 8228,
            "value": false
        },
        {
            "uid": 12288,
            "value": 0
        },
        {
            "value": 0,
            "uid": 12289
        },
        {
            "uid": 12304,
            "value": 0
        },
        {
            "uid": 12368,
            "value": 0
        },
        {
            "uid": 12369,
            "value": 0
        },
        {
            "uid": 12370,
            "value": 0
        },
        {
            "uid": 20481,
            "value": true
        },
        {
            "uid": 20482,
            "value": 100
        },
        {
            "uid": 20483,
            "value": true
        },
        {
            "value": true,
            "uid": 20497
        },
        {
            "value": 100,
            "uid": 20498
        },
        {
            "uid": 20500,
            "value": 600
        },
        {
            "uid": 20509,
            "value": false
        },
        {
            "value": true,
            "uid": 20513
        }
    ],
    "msgID": 240978386
}
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

Shadow3561

magst du mal bitte diese version probieren?

attr <Kühlschrank> deviceType fridgefreezer
set <Kühlschrank> reloadMapping

Danach bitte LastSetList kontrollieren.

Wichtig: Ich habe die SET-Erzeugung bewusst nicht auf Verdacht umgebaut. Die Runtime-Daten zeigen zwar, dass Einstellungen schreibbar sind, aber wir müssen noch bestätigen, dass das Modul sie korrekt in die SetMap übernimmt.
Falls LastSetList weiterhin nur connect, disconnect und reloadMapping enthält, benötige ich als Nächstes MappingLoaded, MappingPrefix und MappingError aus den Internals. Damit kann ich die Ursache weiter eingrenzen, ohne funktionierende Teile des Moduls unnötig zu verändern.

Gruss

JudgeDredd

Hab das alte Modul mal gegen das neue ausgetauscht.
Die Frage wäre aber, was soll ich denn testen ?

Also die Kühlschranktür geht zum Glück weiterhin aus und zu 😅
Allerdings werden die bisherigen Readings nicht mehr aktualisiert (DoorSstate etc..)
Lediglich die last_action/last_resource erzeugen Events.

Ob sich bei den GET/SET Befehlen was verändert hat, kann ich nicht sagen, aber augenscheinlich sieht es aus wie bisher.

Dafür bekomme ich aber haufenweise
PERL WARNING: Argument "" isn't numeric in addition (+) at ./FHEM/98_JsonMod.pm line 1112.im Log. Da scheint irgendwas beim JSON parsen nicht sauber zu funktionieren.
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

Shadow3561

Mhhh,
hast du fhem neu gestartet nach dem Dateitausch?
Falls nicht, mach das bitte mal.
ZitatDie Frage wäre aber, was soll ich denn testen ?

Ob sich die readings verändern, z.B. 2 getrennte Temperaturen für Fridge und Freezer?
Und natürlich kontrollieren ob neue set Befehle erscheinen.

bzgl. des JsonMod-Fehlers,
Es kann durchaus sein, dass ein leerer String übergeben wird.

Nachtrag:
Im Device das Log auf5 stellen und mir bitte das log zukommen lassen

JudgeDredd

Zitat von: Shadow3561 am 17 Oktober 2026, 16:02:21hast du fhem neu gestartet nach dem Dateitausch?
Nein, nur das Modul neu geladen. Wüsste nicht, was ein FHEM-Restart da da mehr bewirken sollte.
Ich kann das aber gerne nochmal mit neu starten ausprobieren, das muss dann aber bis morgen warten.

Zitat von: Shadow3561 am 17 Oktober 2026, 16:02:21Es kann durchaus sein, dass ein leerer String übergeben wird.
Vielleicht kannst Du das ja vor der Übergabe abfangen ?
Router: Eigenbau (pfSense)
FHEM: Proxmox (DELL R720) | Debian 12 (VM)

Shadow3561

ZitatWüsste nicht, was ein FHEM-Restart da da mehr bewirken sollte.
Zumindest kann man dann nicht vergessen nach dem reload des Moduls ein set Device reloadMapping und set Device connect abzusetzen.

ZitatVielleicht kannst Du das ja vor der Übergabe abfangen ?
Ich denke das brauchen wir so nicht.
Einmal alle readings im device löschen und dann reloadMapping und connect ausführen.
Oder einfach das Device löschen und neu anlegen.

Edit:
Überprüfe bitte auch beim Neuanlagen des Devices ob IPv6 oder FQDN bei dir funktionieren.