FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: franky08 am 01 Mai 2015, 20:23:32

Titel: ECMD LogLevel anpassen?
Beitrag von: franky08 am 01 Mai 2015, 20:23:32
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
Titel: Antw:ECMD LogLevel anpassen?
Beitrag von: Tom_S am 03 Mai 2015, 00:39:08
hallo franky08

attr <Device> verbose 1

mfg
Titel: Antw:ECMD LogLevel anpassen?
Beitrag von: franky08 am 03 Mai 2015, 07:25:20
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
Titel: Antw:ECMD LogLevel anpassen?
Beitrag von: kpwg am 03 Mai 2015, 11:12:46
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?
Titel: Antw:ECMD LogLevel anpassen?
Beitrag von: franky08 am 03 Mai 2015, 11:30:32
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
Titel: Antw:ECMD LogLevel anpassen?
Beitrag von: franky08 am 03 Mai 2015, 11:37:31
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
Titel: Antw:ECMD LogLevel anpassen?
Beitrag von: kpwg am 04 Mai 2015, 17:01:32
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 :)
Titel: Antw:ECMD LogLevel anpassen?
Beitrag von: franky08 am 04 Mai 2015, 17:26:27
@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
Titel: Antw:ECMD LogLevel anpassen?
Beitrag von: franky08 am 04 Mai 2015, 17:37:49
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
Titel: Antw:ECMD LogLevel anpassen?
Beitrag von: kpwg am 04 Mai 2015, 17:45:46
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"
Titel: Antw:ECMD LogLevel anpassen?
Beitrag von: franky08 am 04 Mai 2015, 17:48:08
Ja, Neustart habe ich natürlich gemacht da sonst die geänderte classdef ja nicht neu eingelesen wird.
Titel: Antw:ECMD LogLevel anpassen?
Beitrag von: kpwg am 04 Mai 2015, 18:05:00
Naja, man muss alles ausschließen  :-[

Ich lese die Daten recht "roh" aus dem E6 aus und mache die erst in FHEM zurecht.
Titel: Antw:ECMD LogLevel anpassen?
Beitrag von: Jojo11 am 04 Mai 2015, 18:15:15
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
Titel: Antw:ECMD LogLevel anpassen?
Beitrag von: franky08 am 04 Mai 2015, 18:16:25
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
Titel: Antw:ECMD LogLevel anpassen?
Beitrag von: franky08 am 05 Mai 2015, 09:37:25
Habe in der classdef jetzt:
get value expect ".*"
auskommentiert und die Log Meldungen sind weg!

VG
Frank