[gelöst] userreadings, stateformat hex nach dec

Begonnen von simonTS, 24 Mai 2015, 19:22:29

Vorheriges Thema - Nächstes Thema

simonTS

Hallo Zusammen,

ich verzweifle gerade! Ich versuche nun schon seit geraumer Zeit die Werte meines MDT AMI mit Strommessung vernünftig in fhem darzustellen. Problem: er sendet nur hex Werte.
Allein heute bin ich drei mal hin und her gefahren (da kein internet an der baustelle), weil es mich so langsam wahnsinnig macht, das ich es nicht schaffe...

Also:
ich bekomme 2bit hex werte. Diese möchte ich gerne als dezimal im Frontend anzeigen lassen und eine Grafik dazu.
Alles ist definiert und wird auch angezeigt (eben als 0c19 oder so), der Plot geht logischerweise nicht. Ich habe userReadings und stateFormat (bringt mir schon beim rereadcfg den Fehler "unknown modul" oder so) bis zum "try and error" versucht. Ich habe alle kombinationen ausprobiert, bekomme es aber nicht hin.

Auszug aus dem letzten Code (die ausprobierten Varianten sind ca. das 100fache ;-):


define eg_ez_stromverbrauch EIB 3/1/201
attr eg_ez_stromverbrauch alias Esszimmer S1 Stromverbrauch kWh
attr eg_ez_stromverbrauch room Status,Esszimmer,Diagramme
# attr eg_ez_stromverbrauch stateFormat {sprintf("%.1f", hex(ReadingsVal("eg_ez_stromverbrauch","eg_ez_stromverbrauch",0))/1000.0 ;; }
attr eg_ez_stromverbrauch userReadings eg_ez_stromverbrauch { $MYstate=ReadingsVal("eg_ez_stromverbrauch","state",0)/1000.0 ;; }
define N_test notify eg_ez_stromverbruach set test $MYstate

define test dummy
attr test room Status


# define MY_eg_ez_stromverbrauch dummy
# attr MY_eg_ez_stromverbrauch room Status
# attr MY_eg_ez_stromverbrauch userReadings eg_ez_stromverbrauch { ReadingsVal("eg_ez_stromverbrauch")/1000.0;; }
define FileLog_eg_ez_stromverbrauch FileLog ./log/eg_ez_stromverbrauch-%Y.log eg_ez_stromverbrauch
attr FileLog_eg_ez_stromverbrauch logtype temp4:Plot,text
attr FileLog_eg_ez_stromverbrauch room EIB,Status,Esszimmer,Diagramme
define DIAGRAMM_FileLog_eg_ez_stromverbrauch weblink fileplot FileLog_eg_ez_stromverbrauch:temp4:CURRENT
attr DIAGRAMM_FileLog_eg_ez_stromverbrauch room Diagramme,Esszimmer,Status
# attr eg_ez_stromverbrauch model dpt13.010
# attr eg_ez_stromverbrauch webCmd
define G_eg_ez_stromverbrauch at +*00:01 get eg_ez_stromverbrauch


Ist jetzt natürlich etwas durcheinander, da ich nur noch (sinnlos) probiere...

Wo ist mein Denkfehler?

Muss ich bei Verwendung von userreadings einen Dummy füttern, oder wird "state" von eg_ez_stromverbrauch dann bei jedem "get" angepasst?
Warum kann ich nicht "stateFormat" benutzen? Das wäre doch wohl eher richtig?

Die Beispiele im Forum führten zu den obigen Schnipseln, die Commandref verwirrt mich noch mehr...
FHEM auf wheezy@RPI-->
KNX: MDT STV-0320.01|SCN-IP000.01|AMI-1216.01|JAL-0810.01|AKD-0401.01|AKH-0800.01|BE-GTT4W.01|SCN-P360D1.01|SCN-G360K3.01|ABB-MRS/W Magnet-Reedkontakt|Zisterne:SRF06|LED:XCSOURCE WIFI Controller|

igami

Guck dir mal das Attribut 'model' an http://fhem.de/commandref.html#EIB
Und versuch dann mal ein

attr eg_ez_stromverbrauch model power

Danach sollte der Wert vom Modul umgerechnet werden.

Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

franky08

Hallo, mit dem Perl Befehl hex kannst du von hexadezimal nach dezimal umwandeln. Siehe:

http://perldoc.perl.org/functions/hex.html

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

simonTS

#3
Hey, Danke Euch!

@igami
Ich dachte, ich hätte auch das schon probiert... ohne Erfolg. Muss ich morgen direkt nochmal ausprobieren.
BTW, dann hab ich irgendwie Probleme die commandref zu lesen. Wo steht denn bei "Model", dass power hex Werte darstellt? Ich hab diesen Abschnitt gelesen, deswegen auch der Versuch mit dpt13.010. Das kennt fhem natürlich (?) nicht... also attr xxx model dpt13.010

@Frank
in den angefgten Codeschnipseln hatte ich ja versucht hex(readingsval(... aber das hat meinen "state" nie geändert und meine kläglichen Versuche einen dummy damit zu füttern auch nicht. Der dummy blieb immer auf "? ? ?" und eg_ez_stromverbrauch hat sich gar nicht mehr geändert (auch nac einem get... blieb der Wert - natürlich stromabnehmer abgeschaltet um Änderung zu bewirken - gleich)
--> Wie kann ich denn hex() anwenden, damit sich der state Wert ändert? Das verstehe ich nicht. Ist doch dann attr xxx userreadings xxx { hex(readingValue(...));; }, oder nicht?

Auf jeden Fall Danke für die Unterstützung!!
FHEM auf wheezy@RPI-->
KNX: MDT STV-0320.01|SCN-IP000.01|AMI-1216.01|JAL-0810.01|AKD-0401.01|AKH-0800.01|BE-GTT4W.01|SCN-P360D1.01|SCN-G360K3.01|ABB-MRS/W Magnet-Reedkontakt|Zisterne:SRF06|LED:XCSOURCE WIFI Controller|

franky08

#4
Ich mache das bei mir in einer sub welche über at alle 2min ausgeführt wird. Mit fhem "set <dein_dummy> $blabla" schreibst du dann den umgerechneten Wert in das dummy. Hier mal meine sub, daraus kannst du sehen wie du vorgehen kannst.

sub
Value_Prozent_2()

{

my $hexad = ReadingsVal("ADC_0","value",0);
my $volt3 = hex(trim($hexad));


fhem "setreading ADC_0 state_voll $volt3";
}


P.S. Das ist natürlich nur ein Ausschnitt aus meiner Utils  :)

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

simonTS

Na super... Captcha falsch --> alles neu schreiben ... mhpf

Also das beantwortet auch einige meiner Fragen. Aber die eigentliche bleibt.

Da mein Aktor eh bei Änderung des Stromverbrauchs den Wert sendet, bräuchte ich ja nur diesen umrechnen. Also kann ich das nicht irgendwie als attr mitgeben das den gerade gesendeten hex direkt als dezimal in state speichert/umwandelt? Dann bräuchte ich auch nicht alle x min die Abfrage zu machen, sondern hab immer den live Wert.

Oder muss ich den Umweg gehen und ein dummy machen, so dass ein notify dann den wert in den dummy schreibt?

also

define stromzähler EIB x/x/x
define dmmy_stromzähler dummy
   define ntfy_stromzähler notify stromzähler { fhem "set dmmy_stromzähler " hex(ReadingsVal("stromzähler","Value",0);; }


schöner wäre doch wenn es irendwie

define stromzähler EIB x/x/x
   attr stromzähler state=hex(aktuelles state)
FHEM auf wheezy@RPI-->
KNX: MDT STV-0320.01|SCN-IP000.01|AMI-1216.01|JAL-0810.01|AKD-0401.01|AKH-0800.01|BE-GTT4W.01|SCN-P360D1.01|SCN-G360K3.01|ABB-MRS/W Magnet-Reedkontakt|Zisterne:SRF06|LED:XCSOURCE WIFI Controller|

igami

Zitat von: simonTS am 24 Mai 2015, 21:44:25
@igami
Ich dachte, ich hätte auch das schon probiert... ohne Erfolg. Muss ich morgen direkt nochmal ausprobieren.
BTW, dann hab ich irgendwie Probleme die commandref zu lesen. Wo steht denn bei "Model", dass power hex Werte darstellt? Ich hab diesen Abschnitt gelesen, deswegen auch der Versuch mit dpt13.010. Das kennt fhem natürlich (?) nicht... also attr xxx model dpt13.010
Das steht auch leider nicht dabei, da das pdf auf das verwiesen wird nicht mehr zu finden ist. Nur wenn du im Modul selber schaust steht dort

  # 2-Octet Float  Value (Temp / Light)
...
  "power" => {"CODE"=>"dpt9", "UNIT"=>"kW"},


Sollte das trotz model nicht umgerechnet werden musst du zu perl greifen, z.B. als userreading

attr eg_ez_stromverbrauch userreading power {hex(ReadingsVal($name , 'state', 0)}
attr stateFormat power

schon steht der Wert im STATE.

Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

simonTS

Cool, Danke Euch!
Die vorgestellten Lösungen nehme ich mit und werde nachher berichten!

05:50... Respekt ;-)
FHEM auf wheezy@RPI-->
KNX: MDT STV-0320.01|SCN-IP000.01|AMI-1216.01|JAL-0810.01|AKD-0401.01|AKH-0800.01|BE-GTT4W.01|SCN-P360D1.01|SCN-G360K3.01|ABB-MRS/W Magnet-Reedkontakt|Zisterne:SRF06|LED:XCSOURCE WIFI Controller|

simonTS

#8
OK Thx! Das habe ich gesucht.

model power und die Syntax mit ReadingsVal geht beides wie gewünscht.

Jetzt muss ich nochmal in mich kehren und ... wie war das mit W und W/s ... Aber das ist ein anderes Thema ;-)

Vielen Dank, für mich gelöst!
FHEM auf wheezy@RPI-->
KNX: MDT STV-0320.01|SCN-IP000.01|AMI-1216.01|JAL-0810.01|AKD-0401.01|AKH-0800.01|BE-GTT4W.01|SCN-P360D1.01|SCN-G360K3.01|ABB-MRS/W Magnet-Reedkontakt|Zisterne:SRF06|LED:XCSOURCE WIFI Controller|