Hallo, nach einem Stromausfall und anschließendem instabilen System, habe ich mein System komplett neu aufsetzen müssen.
Meine fhem.cfg habe ich mir noch gerettet,aber leider vergessen meine classdeffs zu sichern. Jetzt habe ich zwar die classdeffs wieder angelegt, aber FHEM findet diese scheinbar nicht. Kann ich irgendwie überprüfen ob FHEM die Datei nicht Findet oder den Inhalt nicht lesen kann?
Mein ECMD sieht so aus.
define NETIO_01 ECMD telnet 192.168.1.71:2701
attr NETIO_01 classdefs ONEWIRE=./onewire1.classdef:RELAIS=./relais1.classdef
attr NETIO_01 requestSeparator
Und die dazugehörige classdef
# Uebergabeparameter Onewire Rom-Code
params devID
# Umsetzung in ECMD Befehle ONEWIRE get = Temperatur auslesen
get ONEWIRE cmd {"ONEWIRE get %devID\n"}
get ONEWIRE expect "\d+.\d+\n"
get ONEWIRE postproc {\
s/\n//g;\
my $hash = $defs{%NAME};\
my $temperature = $_;\
my $state = "T: $temperature";\
\
readingsSingleUpdate($hash, "temperature", $temperature, 1);\
readingsSingleUpdate($hash, "state", $state, 1);\
\
}
Ob ich die classdeff auch wieder richtig hin bekommen habe, da bin ich mir jetzt nicht ganz sicher.
Ich komme nicht weiter!
Die class.deff wird zwar jetzt gefunden, aber ich bekomme bei der Auslesung einen parse Error, ich wüste aber nicht wo in meiner class.deff der Fehler ist.
Die aktuell configuration sieht so aus.
classdef
# Uebergabeparameter Onewire Rom-Code
params devID
# Umsetzung in ECMD Befehle 1w get = Temperatur auslesen
get 1W cmd {"1w get %devID\n"}
get 1W expect "\d+.\d+\n"
get 1W postproc {\
s/\n//g;\
my $hash = $defs{%NAME};\
my $temperature = $_;\
my $state = "T: $temperature";\
\
readingsSingleUpdate($hash, "temperature", $temperature, 1);\
readingsSingleUpdate($hash, "state", $state, 1);\
\
}
EMCD
Internals:
DEF telnet 192.168.1.71:2701
DeviceName 192.168.1.71:2701
FD 4
NAME NETIO_01
NR 21
PARTIAL
Protocol telnet
STATE opened
TYPE ECMD
Readings:
2016-01-05 12:43:40 state opened
Fhem:
Classdefs:
Onewire:
filename ./onewire1.classdef
params devID
Gets:
1w:
cmd {"1w get %devID\n"}
expect \d+.\d+\n
postproc { s/\n//g; my $hash = $defs{%NAME}; my $temperature = $_; my $state = "T: $temperature"; readingsSingleUpdate($hash, "temperature", $temperature, 1); readingsSingleUpdate($hash, "state", $state, 1); }
Sets:
Relais:
filename ./relais1.classdef
params RelaisPort
Sets:
Off:
cmd {"io set ddr 2 ff\n\000io set port 2 00 %RelaisPort\n"}
expect OK\n
postproc {s/([OK\n|;]*)/success/; "$_" eq "success" ? "ok" : "error";}
On:
cmd {"io set ddr 2 ff\n\000io set port 2 %RelaisPort %RelaisPort\n"}
expect OK\n
postproc {s/([OK\n|;]*)/success/; "$_" eq "success" ? "ok" : "error";}
Attributes:
classdefs ONEWIRE=./onewire1.classdef:RELAIS=./relais1.classdef
requestSeparator 1
EMCD Device
Internals:
CHANGED
DEF ONEWIRE 283866620500007d
IODev NETIO_01
NAME Puffer1_25
NR 23
STATE parse error°C
TYPE ECMDDevice
Readings:
2016-01-05 12:40:03 1W state: T: parse error
2016-01-05 12:40:03 state 1W state: T: parse error
2016-01-05 12:40:03 temperature parse error
Fhem:
classname ONEWIRE
Cache:
Specials:
%NAME Puffer1_25
%TYPE ECMDDevice
%devID 283866620500007d
Params:
devID 283866620500007d
Attributes:
IODev NETIO_01
event-on-change-reading temperature
icon sani_buffer_temp_all
room Heizung,Puffer1,Solar
sortby 1
stateFormat { sprintf("%s°C",ReadingsVal("Puffer1_25","temperature",0)) }
Hallo,
bitte einen aussagekräftigen Protokollauszug posten (siehe angehefteten Beitrag ECMD).
Grüße
Boris
Hallo.
Würde ich gerne machen, aber ich sehe hier keinen angehefteten Beitrag.
Der ist in dem Unter-Forum angepinnt, in dem man Fragen zu ECMD laut http://fhem.de/MAINTAINER stellen sollte.
Wenn Du Dein Thema auch dorthin verschieben könntest, wäre das prima!
Danke und Gruß, Christian
Ah danke für die Info.
Habe ich denn überhaupt die Berechtigung einen Beitrag zu verschieben?
Würde mich wundern, wenn nicht. Schau bitte unterhalb des Threads nach dem Button "Thema verschieben"
Oha, da lasse ich besser die Finger von, nicht das ich wo falsch lande.
Ich habe jetzt FHEM noch mal komplett neu aufgesetzt, auf dem neusten Stand und versucht nach dieser Anleitung nur mal einen Sensor ans laufen zu bringen http://www.ethersex.de/index.php/Nutzung_in_FHEM_(Deutsch)#Grundlagen
Aber da sehe ich bereits eine Hürde, in der Anleitung werden zwei verschiedene IP Adressen angegeben, ist das richtig so?
Ah ganz toll, jetzt weiß ich warum das nicht funktioniert, das Wiki wurde zuletzt vor dem update des ECMD bearbeitet, na toll, dann sollte man das mal aktualisieren, damit die angaben darin auch stimmen.
Und wo bekomme ich jetzt die richtigen Einstellungen für die classdef her?
Es steht jedem frei, das Wiki zu bearbeiten.
LG
pah
So FHEM läuft jetzt wieder weitestgehendst und zwar mit fhem 5.6 da war das ganze kein Problem.
Wie ich mittlerweile durch Stundenlanges durchwühlen des Internet und Forum herausgefunden habe liegt die Ursache bei dem update auf 5.7 und solange die Spezialisten hier sich nicht erbarmen die Wikis
http://www.ethersex.de/index.php/Nutzung_in_FHEM_(Deutsch)
http://www.fhemwiki.de/wiki/AVR-NET-IO
zu überarbeiten, kann ich nur jedem davon abraten ein update auf fhem 5.7 durchzuführen.
Die Hinweis zum Update auf 5.7 und die nötigen Anpassungen habe ich durchgelesen und versucht umzusetzen, leider reicht mein Wissen dafür aber nicht aus und bin kläglich gescheitert.