ECMD LogLevel anpassen?

Begonnen von franky08, 01 Mai 2015, 20:23:32

Vorheriges Thema - Nächstes Thema

franky08

Hallo, ich betreibe mit einem AVR-NET-IO Board von Pollin (ethersex) einige 1Wire Sensoren und hauptsächlich die Heizungssteuerung über LT1257 mit nachgeschalteten OPV (Junkers Stetigregelung). Da ich alle 30 sec. die ADC auslese und alle 2min. über DAC die Spannung für die Heizung setze häufen sich demgemäß die Logeinträge.
Ich hatte mir die ECMDDevice.pm schon einmal ansehen aber bin nicht so Recht daraus schlau geworden wo der Log Level festgelegt wird. Den hätte ich gern auf Level1 für ECMDDevice.
Anbei die Stellen die ich im Code gefunden habe:
Wo kann ich den LogLevel anpassen?

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

Tom_S

hallo franky08

attr <Device> verbose 1

mfg
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

franky08

#2
Das dachte ich auch, bringt aber nichts. Es wird trotzdem alles gelogt.

Auch hier: http://forum.fhem.de/index.php/topic,36728.0.html

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

kpwg

Frank, Du musst das verbose auf die Messung selbst setzen, damit endlich Ruhe wird.

Viele Grüße, Ricardo

ps: ich betreibe auch die Junkers Therme mit E6. Wie hast Du das regelungstechnisch gelöst?

franky08

#4
Hallo, also verbose nicht auf das ECMDDevice sondern wie auf die Messung? Die Messung erfolgt alle 2 Minuten über ein at
+*00:02:00 get MP_1 value; sleep 2; get MP_2 value; {Value_Prozent}
welches über get die Werte ausließt. Die sub rechnet die  Werte in Prozent um.
Die Reglung/Modulation mache ich je nachdem wie groß die Differenz zwischen Ist/Soll -Temperatur ist auch über eine sub und setze darüber den DAC Value. Hier die sub, vlt. kannst du davon was brauchen:
sub
HZ_Steuerung_Temp

{

my $ist = ReadingsVal("TH_Sensor_WZ","temperature",18);
my $soll = ReadingsVal("Temperatur_Tresh_setz_dummy","state",18);
my $stell = ($soll - $ist);


if( $stell < 0.3 and $stell > 0.1 ) {
fhem "set DAC setDAC 1300";
}
if( $stell < 0.5 and $stell > 0.3 ) {
fhem "set DAC setDAC 1500";
}
if( $stell < 1.0 and $stell > 0.5 ) {
fhem "set DAC setDAC 1700";
}
if( $stell < 2.5 and $stell > 1.0 ) {
fhem "set DAC setDAC 2400";
}
if( $stell > 2.5 ) {
fhem "set DAC setDAC 3800";
}
if( $stell <= 0 ) {
fhem "set DAC setDAC 600";
}

fhem "setreading DAC_test state $stell";

}




Über Temperatur_Tresh_setz_dummy kann durch eine setList die gewünschte Raumtemperatur vorgegeben werde. Gesetzt wird damit das THRESHOLD Modul:
define HZ_WZ_gesteuert THRESHOLD TH_Sensor_WZ:temperature:0:Temperatur_Tresh_setz_dummy:state |set DAC setDAC 600;; set HZ_on_off_dummy off|{HZ_Steuerung_Temp};; set HZ_on_off_dummy on
attr HZ_WZ_gesteuert DbLogExclude .*


Hier der gesamte Code aus der fhem.cfg:
define AVRNETIO ECMD telnet 192.168.2.111:2701
attr AVRNETIO DbLogExclude .*
attr AVRNETIO classdefs ONEWIRE=/opt/fhem/onewire.classdef:LTC1257=/opt/fhem/ltc1257.classdef:ADC=/opt/fhem/adc.classdef
attr AVRNETIO room HM-Adapter,System
define DAC ECMDDevice LTC1257
attr DAC DbLogExclude .*
attr DAC IODev AVRNETIO
attr DAC room Heizung,Unsorted
define MP_1 ECMDDevice ADC 0
attr MP_1 DbLogExclude .*
attr MP_1 IODev AVRNETIO
attr MP_1 room Heizung
attr MP_1 stateFormat state_Prozent %
attr MP_1 verbose 1
define MP_2 ECMDDevice ADC 3
attr MP_2 DbLogExclude .*
attr MP_2 IODev AVRNETIO
attr MP_2 alias Heizung Leistung
attr MP_2 room Heizung
attr MP_2 stateFormat state_Prozent %
attr MP_2 verbose 1
define Messung_adc at +*00:02:00 get MP_1 value;; sleep 2;; get MP_2 value;; {Value_Prozent}
attr Messung_adc DbLogExclude .*
attr Messung_adc alignTime 00:00:00
attr Messung_adc disable 0
attr Messung_adc room Unsorted
define DAC_set_dummy dummy
attr DAC_set_dummy DbLogExclude .*
attr DAC_set_dummy alias HZ Leistung
attr DAC_set_dummy devStateIcon off.*:Shutdown
attr DAC_set_dummy event-on-change-reading .*
attr DAC_set_dummy eventMap 569:0 1000:25 2000:50 3000:75 4095:100
attr DAC_set_dummy room Heizung
attr DAC_set_dummy setList state:0,25,50,75,100,0
attr DAC_set_dummy stateFormat state %
attr DAC_set_dummy webCmd state
define DAC_test_dummy dummy
attr DAC_test_dummy DbLogExclude .*
attr DAC_test_dummy room Test
define DAC_setzen_nty notify DAC_set_dummy {DAC_setzen}
attr DAC_setzen_nty DbLogExclude .*
attr DAC_setzen_nty room Unsorted
define HZ_on_off_dummy dummy
attr HZ_on_off_dummy DbLogExclude .*
attr HZ_on_off_dummy alias Heizung
attr HZ_on_off_dummy devStateIcon on.*:ankl off.*:auskl
attr HZ_on_off_dummy fp_Status 95,1000,0,
attr HZ_on_off_dummy room Heizung,Unsorted
define Temperatur_Tresh_setz_dummy dummy
attr Temperatur_Tresh_setz_dummy DbLogExclude .*
attr Temperatur_Tresh_setz_dummy alias Temperatur HZ setzen
attr Temperatur_Tresh_setz_dummy room Heizung
attr Temperatur_Tresh_setz_dummy setList state:21.0,21.5,22.0,22.5,23.0,23.1,23.2,23.3,23.4,23.5,23.6,23.7,23.8,23.9,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0
attr Temperatur_Tresh_setz_dummy webCmd state
define AVRNETIO_reopen at +*12:00:00 set AVRNETIO reopen
attr AVRNETIO_reopen DbLogExclude .*
attr AVRNETIO_reopen alignTime 00:15:00
attr AVRNETIO_reopen disable 1
attr AVRNETIO_reopen room System,Unsorted
define DAC_test dummy
attr DAC_test DbLogExclude .*
attr DAC_test room Test
define Sub_DAC_Aufruf at +*00:01:00 {HZ_Steuerung_Temp}
attr Sub_DAC_Aufruf DbLogExclude .*
attr Sub_DAC_Aufruf alignTime 00:00:00
attr Sub_DAC_Aufruf room Unsorted
define HZ_WZ_gesteuert THRESHOLD TH_Sensor_WZ:temperature:0:Temperatur_Tresh_setz_dummy:state |set DAC setDAC 600;; set HZ_on_off_dummy off|{HZ_Steuerung_Temp};; set HZ_on_off_dummy on
attr HZ_WZ_gesteuert DbLogExclude .*
attr HZ_WZ_gesteuert number_format %.1f
attr HZ_WZ_gesteuert room Heizung
attr HZ_WZ_gesteuert state_format _m _dv
define FileLog_HZ_on_off_dummy FileLog ./log/HZ_on_off_dummy-%Y-%m HZ_on_off_dummy


Habe hier noch eine Frage, mit einem Labornetzteil funktioniert die Steuerung wie gewünscht nun wollte ich den 1 2 4 Bus mit der Steuerung verbinden und dabei ist mir aufgefallen das an dem Modulations Eingang ca. 20V anstehen, obwohl es ja ein Eingang ist, man will ja nichts kaputt machen  :o

P.S. klar  :o verbose vom at auf 0  :o
VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

franky08

verbose 0 auf die Messung (at) und er logt munter weiter:
2015.05.03 11:34:00 1: AVRNETIO: unexpected answer "031 \nOK\n" received (wrote "adc get 0\n", expected .*)
2015.05.03 11:34:00 1: PERL WARNING: Illegal hexadecimal digit ' ' ignored at (eval 19003) line 1.
2015.05.03 11:34:00 3: eval: { my $hexval = hex(trim("$_")); my $hash  = $defs{MP_1}; readingsSingleUpdate($hash, "state", $hexval, 1);}
2015.05.03 11:34:02 1: AVRNETIO: unexpected answer "038 \nOK\n" received (wrote "adc get 3\n", expected .*)
2015.05.03 11:34:02 1: PERL WARNING: Illegal hexadecimal digit ' ' ignored at (eval 19008) line 1.
2015.05.03 11:34:02 3: eval: { my $hexval = hex(trim("$_")); my $hash  = $defs{MP_2}; readingsSingleUpdate($hash, "state", $hexval, 1);}
2015.05.03 11:34:02 2: After sleep: value 56
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

kpwg

Genau, das verbose auf's at hat mir geholfen.

Hier scheint jedoch ein anderes Problem zu bestehen- ich vermute in der classdef. Es werden hier ausschließlich Fehler gezeigt.
Ich verstehe hier nicht, warum eine Fehlermeldung kommt, obwohl Du expect als .* definierst. Ich sehe das immer als guten Einstieg, um den Rest ans Laufen zu bekommen und passe das expect erst zum Schluss an.

Wie sieht denn die classdef dazu aus?

Viele Grüße,

Ricardo

ps: danke für die Heizungsansteuerung. Ich erforsche das mal :)

franky08

@Ricardo
Das ist möglich das in der adc.classdef noch "Reste" von einem Test waren. Jetzt sieht die classdef so aus:

get value cmd {"adc get %PortID\n"}
params PortID
get value expect ".*"
get value postproc {\
my $hexval = hex(trim("$_"));\
my $hash  = $defs{%NAME};\
readingsSingleUpdate($hash, "state", $hexval, 1);\
}


Werde jetzt global verbose wieder auf 3 setzen und dann mal sehen ob der Fehler weiterhin besteht.

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

franky08

Der Fehler besteht nach der Bereinigung der adc.classdef leider immer noch.

2015.05.04 17:34:00 1: AVRNETIO: unexpected answer "05F \nOK\n" received (wrote "adc get 0\n", expected .*)
2015.05.04 17:34:00 1: PERL WARNING: Illegal hexadecimal digit ' ' ignored at (eval 3240) line 1.
2015.05.04 17:34:00 3: eval: { my $hexval = hex(trim("$_")); my $hash  = $defs{MP_1}; readingsSingleUpdate($hash, "state", $hexval, 1);}
2015.05.04 17:34:02 2: After sleep: value 57
2015.05.04 17:35:02 1: AVRNETIO: unexpected answer "03B \nOK\n" received (wrote "adc get 3\n", expected .*)
2015.05.04 17:35:02 1: PERL WARNING: Illegal hexadecimal digit ' ' ignored at (eval 3309) line 1.
2015.05.04 17:35:02 3: eval: { my $hexval = hex(trim("$_")); my $hash  = $defs{MP_2}; readingsSingleUpdate($hash, "state", $hexval, 1);}
2015.05.04 17:35:02 2: After sleep: value 59
2015.05.04 17:36:02 1: AVRNETIO: unexpected answer "038 \nOK\n" received (wrote "adc get 3\n", expected .*)
2015.05.04 17:36:02 1: PERL WARNING: Illegal hexadecimal digit ' ' ignored at (eval 3357) line 1.
2015.05.04 17:36:02 3: eval: { my $hexval = hex(trim("$_")); my $hash  = $defs{MP_2}; readingsSingleUpdate($hash, "state", $hexval, 1);}
2015.05.04 17:36:02 2: After sleep: value 56


VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

kpwg

Seltsam... Nach bereinigung FHEM mal durchgestartet, damit die Dateien neu eingelesen werden?

Ein testweises Abfragen eines analogen Einganges mit logtraffic=1, aber verbose=0 auf dem "at" sieht hier so aus:
2015.05.04 17:43:09 1: NETIO_GZ: write "adc get 0\n", expect .*
2015.05.04 17:43:09 1: NETIO_GZ: read "3FF \n"

franky08

#10
Ja, Neustart habe ich natürlich gemacht da sonst die geänderte classdef ja nicht neu eingelesen wird.
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

kpwg

Naja, man muss alles ausschließen  :-[

Ich lese die Daten recht "roh" aus dem E6 aus und mache die erst in FHEM zurecht.

Jojo11

Hallo,

ich habe leider das gleiche Problem auch immer noch. Ein verbose 0 im at bringt bei mir leider nichts. Es wird immer noch geloggt. Und bei den geloggten Meldungen handelt es sich nicht um Fehler:

2015.05.04 18:10:00.847 3: get HK.Hz VC470f.HWActive : VC470f.HWActive yes

Leider wächst dadurch mein logfile so stark an, dass ich die für mich wichtigeren Informationen nicht mehr finde  :-\

schöne Grüße
Jo

franky08

Ja, ich lese die Daten auch roh aus und rechne sie in einer sub in Prozent um. Weiter oben in dem Thread hatte ich mal den gesamten Abschnitt aus der config gepostet.

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

franky08

Habe in der classdef jetzt:
get value expect ".*"
auskommentiert und die Log Meldungen sind weg!

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...