[gelöst] ltc1257 %dacValue aus classdef in dummy schreiben

Begonnen von franky08, 07 Januar 2016, 15:30:45

Vorheriges Thema - Nächstes Thema

franky08

Hallo, kann mir jemand auf die Sprünge helfen? Folgende ltc1257 ist gegeben:

# Umsetzung in ECMD Befehle
# Ein Uebergabeparameter -> Sollwert
set setDAC params dacValue
set setDAC cmd {"ltc1257_set %dacValue\n"}
set setDAC expect "OK\n"
# Keine Uebergabeparameter
set init cmd {"ltc1257_init\n"}
set init expect "OK\n"
#


Jetzt möchte ich gerne den Wert von %dacValue in das dummy DAC_Wert schreiben, leider klappt eine Erweiterung des classdef Codes um:

{
my $wert = %dacValue;
fhem "set DAC_Wert $wert";
}


nicht.
Kann mich jemand erleuchten?

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

Dr. Boris Neubert

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

franky08

#2
Ja, was soll ich davon beachten? Meine Frage zielte darauf ab ob man %dacValue (ist ja der Sollwert) dem String $wert zugewiesen werden kann. Habe jetzt versucht in meinen 3 Perl Büchern darüber etwas zu finden, lande aber immer bei dem Modulo Operator.
%dacValue ist ja durch die classdef vorgegeben, diese funktioniert auch (Heizungssteuerung Junkers Stetigregelung), die Steuergröße dacValue wird in einer sub (Abhängig von Ist/Soll Raumtemperatur, Außentemperatur und Anstieg) berechnet.
Über ADC sehe ich zwar mit wieviel Prozent der Brenner läuft aber ich hätte gerne, zur Optimierung, gesehen mit welchem Wert der DAC gerade angesteuert wird.
Im Einsatz ist das Pollin AVR IO Board mit Ethersex sowie ein LTC1257 welcher einen LM358 ansteuert. Der LM358 stellt die Steuerspannung (0-22V) für die Heizung bereit.

ECMD define:
define AVRNETIO ECMD telnet 192.168.2.111:2701
attr AVRNETIO DbLogExclude .*
attr AVRNETIO classdefs LTC1257=/opt/fhem/ltc1257_neu.classdef:ADC=/opt/fhem/adc3.classdef
attr AVRNETIO requestSeparator �
attr AVRNETIO room ECMD,HM-Adapter,System


DAC define:
define DAC ECMDDevice LTC1257
attr DAC DbLogExclude .*
attr DAC IODev AVRNETIO
attr DAC room ECMD,Unsorted


ltc1257.classdef:
# Umsetzung in ECMD Befehle
# Ein Uebergabeparameter -> Sollwert
set setDAC params dacValue
set setDAC cmd {"ltc1257_set %dacValue\n"}
set setDAC expect "OK\n"
# Keine Uebergabeparameter
set init cmd {"ltc1257_init\n"}
set init expect "OK\n"
#




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

Dr. Boris Neubert

Ich hätte gerne das Log gesehen (Hinweise im angehefteten Beitrag beachten) und zwar konkret die Einträge in Bezug auf das postproc aus dem Eingangsbeitrag. Ist das aus dem angehefteten Beitrag nicht ersichtlich?

Möglicherweise fehlen Dir aber nur die \ zur Verkettung der Zeilen aus dem postproc.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

franky08

OK, da müsste ich verbose wieder hochdrehen z.Zt. wird da nichts geloggt, wie gesagt es funktioniert alles ich brauchte nur die in der ltc1257.classdef übergebenen Stellgröße dacValue in einem dummy device.
Muss ich jetzt warten bis die Heizung wieder anspringt um den Log. zu posten.

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

franky08

Der Log:
2016.01.07 21:22:40 5: Cmd: >set DAC setDAC 2730<
2016.01.07 21:22:40 5: ECMDDevice: Analyze command >{"ltc1257_set 2730\n"}<
2016.01.07 21:22:40 5: AVRNETIO: sending command "ltc1257_set 2730\n"
2016.01.07 21:22:40 5: SW: 6c7463313235375f73657420323733300a
2016.01.07 21:22:40 5: AVRNETIO: received answer "OK\n"
2016.01.07 21:22:40 5: Triggering DAC (2 changes)
2016.01.07 21:22:40 5: Notify loop for DAC setDAC: OK


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

Dr. Boris Neubert

So, und jetzt hast Du ein reading "setDAC" am Device "DAC" und da steht "OK\n" drin, nicht wahr?

Und es soll 2730, also der Wert in %dacValue drinstehen, nicht wahr?

Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

franky08

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

Dr. Boris Neubert

Ohne es ausprobiert zu haben: ergänze die Klassendefinition doch einmal um

set setDAC postproc { "%dacValue" }

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

franky08

Ich danke dir Boris, probieren kann ich das erst morgen, eine Änderung der classdef bedingt ja einen Neustart oder rereadconfig, kann ich iMo nich machen.
Melde mich morgen, ob es funktioniert hat.

Vielen Dank
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

franky08

#10
Hab es eben schnell noch probieren können, leider funktioniert es nicht, im STATE steht:

STATE setDAC %dacValue
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

franky08

#11
Vlt. könnte man nach setDAC mittels setreading ein neues Reading in das device schreiben?

set setDAC params dacValue; setreading DAC value %dacValue

P.S. das funktioniert leider auch nicht
2016.01.08 18:40:50 3: set DAC setDAC 2280 : Wrong number of parameters.

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

Dr. Boris Neubert

Zitat von: franky08 am 07 Januar 2016, 22:27:20
Hab es eben schnell noch probieren können, leider funktioniert es nicht, im STATE steht:

STATE setDAC %dacValue

Probier das bitte mal mit der überarbeiteten Version aus der Anlage aus.

Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

franky08

Klasse Boris, funktioniert!
DEF        LTC1257
   IODev      AVRNETIO
   NAME       DAC
   NR         1528
   STATE      setDAC 2280
   TYPE       ECMDDevice
   CHANGETIME:
   Readings:
     2015-08-18 21:49:58   init            OK
     2016-01-08 20:36:30   setDAC          2280
     2016-01-08 20:36:30   state           setDAC 2280
   Fhem:
     classname  LTC1257
     Cache:
       Specials:
         %NAME      DAC
         %TYPE      ECMDDevice
Attributes:
   DbLogExclude .*
   IODev      AVRNETIO
   room       ECMD,Unsorted
   verbose    0


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

franky08

#14
Leider kam heute mit dem update 67_ECMDDevice.pm wahrscheinlich die Datei ohne deine Änderung. Habe erst einmal global exclude from update 67_ECMDDevice.pm gesetzt.

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