Umlaute im Zusammenhang mit einem MQTT2-Device - Recode-Schnittstelle gesucht

Begonnen von fhem024, 16 November 2024, 12:25:11

Vorheriges Thema - Nächstes Thema

fhem024

Hallo zusammen,
ich habe ein neues MQTT2-Device, welches über den internen MQTT2_FHEM_Server angebunden ist.

Das Device liefert Events / Readings wie folgendes z.B.:
TOB_0x8_R_u00FCcklauftemperatur

Soll
TOB_0x8_Rücklauftemperatur
heißen.

Der Wert wird als solcher vom MQTT-Device übergeben und ist von mir nicht beeinflussbar.

Frage:
Kann ich irgendwo ein Recode des Readings / Events durchführen, bevor es in die Datenbank geschrieben wird, so dass das Encoding am Ende passt?

Ich bin dankbar für jeden Hinweis / Tip
Gruß
fhem024

DS_Starter

Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Beta-User

Ich würde mal jsonMap als Stichwort in die Runde werfen.
Umlaute sind aber afaik in Reading-Namen nicht erlaubt, von daher müßte man halt ue schreiben.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

fhem024

Danke DB_Starter und Beta-User,

ich habe es nun vorerst mit valueFn realisiert und setze die Umlaute da mit einem Regex auf den Hex-Wert um:

  $EVENT =~ s/\x5f\x75\x30\x30\x46\x43/ü/;
  $READING =~ s/\x5f\x75\x30\x30\x46\x43/ü/;

  $EVENT =~ s/\x5f\x75\x30\x30\x44\x46/ß/;
  $READING =~ s/\x5f\x75\x30\x30\x44\x46/ß/;

  $EVENT =~ s/\x5f\x75\x30\x30\x46\x36/ö/;
  $READING =~ s/\x5f\x75\x30\x30\x46\x36/ö/;

  $EVENT =~ s/\x5f\x75\x30\x30\x45\x34/ä/;
  $READING =~ s/\x5f\x75\x30\x30\x45\x34/ä/;

Der Hinweis auf jsonMap ist mir nicht ganz klar. An welcher Stelle kann / soll das eingesetzt werden?

Witzigerweise kommt ein Wert bzw. Value sogar korrekt. Warum auch immer.

Danke!
fhem024

Update:
Nachdem die Änderungen im Beitrag unten durchgeführt wurden, sind diese Manipulationen nicht mehr nötig.

fhem024

Hmm, zum Thema jsonMap. Das MQTT-Device wurde ja automatisch angelegt. Das Umsetzen der Readings erfolgt so:

json2nameValue($EVENT, 'DHK_BM-2_0x35_', $JSONMAP)

Ich vermute einmal, dass das jsonMap hier irgendwo angebracht wäre?

Update:
got it. jsonMap wird im MQTT2_DEVICE durchgeführt und kann zeilengetrennt mehrere Mappings verarbeiten:

Bsp.:
TOB_0x8_Kessel_u00FCbertemperatur_Sammler:TOB_0x8_Kesseluebertemperatur_Sammler
TOB_0x8_Kessel_u00FCbertemperatur_bei_Speicherladung:TOB_0x8_Kesseluebertemperatur_bei_Speicherladung

Danach mit deletereading die "falschen" Readings entfernen. Da autocreate aktiviert ist, kommen danach die Readings entsprechend jsonMap an, sobald sie das nächste mal aufschlagen.

Bsp.:
deletereading [Device] TOB_0x8_Kessel_u00FCbertemperatur_Sammler


Jetzt ist natürlich die Frage, wie sich das ganze dann verhält, wenn man das mit Parametern macht, die man schreiben möchte.