dpt5.001 ohne %

Begonnen von eburkon, 13 Dezember 2018, 20:47:10

Vorheriges Thema - Nächstes Thema

eburkon

Hallo Miteinander,

wie kriege ich denn ein Reading so umformatiert, dass bei einem dpt5.001 _kein_ Prozentzeichen angehängt wird.
Beim dpt9.001 kann man ja einfach dpt9 nehmen um die Einheit loszuwerden aber wenn ich dpt5 verwende entfällt
die Umrechnung des Wertebereichs 0-255 in 0-100.

die Definition meines FBH Reglers sieht gerade so aus:


defmod KNX_0106003 KNX 1/6/3:dpt9:temp_ist:get 1/6/6:dpt9:temp_soll:get 1/6/17:dpt5:betriebsart:set 1/6/8:dpt5.001:kreis1_ventil:get 1/6/29:dpt5.001:kreis2_ventil:get
attr KNX_0106003 IODev KNX
attr KNX_0106003 alias Wohnzimmer
attr KNX_0106003 group Heizung
attr KNX_0106003 mqttPublish *:topic={"iot/FBH/1OG/WOHNEN/$reading/value"}
attr KNX_0106003 room 1OG,HEIZUNG,KNX


Da ich die Werte richtung MQTT schiebe wäre es zweckmässig Wert und Einheit zu trennen.

Danke & Gruss
     Ekkehard
FHEM auf Rpi48G, KNX via knxd und IP Interface, Hue, FS20, und ein paare externe Sachen via MQTT

erwin

Hi,
readingsChange könnte funktionieren... (siehe Commandref)
in etwa so (ungetested):
define KNX_0106003_rc readingsChange KNX_0106003 kreis2_ventil-get (\d+).* $1

l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

JoeALLb

Das ist auch ein großer Wunsch von mir... Ich möchte diese eigentlich fast immer "entfernt" haben.
Leider wurde ein eigenes Konstrukt in FHEM dafür zum Trennen der Werte von der Einheit bisher nur diskutiert aber niemals umgesetzt.

Ich habe mir KNX dafür gepatcht und ein "dpt5.001o" ohne Einheit ergänzt, aber das muss ich bei jedem Update nachziehen...


Du könntest alternativ noch per userReadings  ohne eigenes Device folgendes machen:


Entweder Elegant (aber ungetestet)
userReadings kreis1_ventilOVZ:kreis1_ventil.* {\
  return $eventValue =~ s/\D//g;\
}


oder
userReadings kreis1_ventilOVZ:kreis1_ventil.* {\
  return ReadingsNum($device,"kreis1_ventil","");\
}
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

abc2006

Ich habe mittlerweile recht viele Readings extra mit Einheit versehen, damit ich mich besser zurechtfinde.
Mit den Konstrukten ReadingsNum und [device:reading:d] (und in perl eignet sich split, weil der Wert meist Leerzeichengetrennt dahinter steht) komme ich ziemlich gut an alle Zahlen ran, die ich brauche.
Ansonsten würd ich auch die UserReadings nehmen.
Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Andi291

Moinsen!

Für solche Fälle hatte ich vor geraumer Zeit stateCmd eingebaut. Beispiel aus der commandref:

attr wasser_status stateCmd {sprintf("%s", ReadingsVal($name,"status-get",""))}

JoeALLb

#5
Bei devices mehr alsveinen  Reading/GAD hilft halt stateCmd auch nix.....
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

eburkon

Servus,

Vielen Dank für Eure Antworten.

ich hab das jetzt mit dem von erwin vorgeschlagenen readingsChange implementiert.

Das funktioniert gut auch wenn ich es als recht unübersichtlich empfinde, da ein anderes Gerät
jetzt in den Readings rumfurwerkt.

Eigentlich fände ich es besser wenn grundsätzlich Wert und Einheit voneinander getrennt wären.
Aber sowas nachträglich einzubauen bricht halt auch alle Kompatibilität.

Gruss
    Ekkehard
FHEM auf Rpi48G, KNX via knxd und IP Interface, Hue, FS20, und ein paare externe Sachen via MQTT