FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: MadCat am 04 Januar 2016, 20:24:27

Titel: class.def parse error
Beitrag von: MadCat am 04 Januar 2016, 20:24:27
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.

Titel: Antw:classdef parse error
Beitrag von: MadCat am 05 Januar 2016, 12:58:02
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)) }
Titel: Antw:class.def parse error
Beitrag von: Dr. Boris Neubert am 05 Januar 2016, 19:50:42
Hallo,

bitte einen aussagekräftigen Protokollauszug posten (siehe angehefteten Beitrag ECMD).

Grüße
Boris
Titel: Antw:class.def parse error
Beitrag von: MadCat am 05 Januar 2016, 20:49:10
Hallo.

Würde ich gerne machen, aber ich sehe hier keinen angehefteten Beitrag.
Titel: Antw:class.def parse error
Beitrag von: krikan am 05 Januar 2016, 20:56:17
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
Titel: Antw:class.def parse error
Beitrag von: MadCat am 05 Januar 2016, 20:58:36
Ah danke für die Info.

Habe ich denn überhaupt die Berechtigung einen Beitrag zu verschieben?
Titel: Antw:class.def parse error
Beitrag von: krikan am 05 Januar 2016, 21:00:04
Würde mich wundern, wenn nicht. Schau bitte unterhalb des Threads nach dem Button "Thema verschieben"
Titel: Antw:class.def parse error
Beitrag von: MadCat am 05 Januar 2016, 21:01:36
Oha, da lasse ich besser die Finger von, nicht das ich wo falsch lande.
Titel: Antw:class.def parse error
Beitrag von: MadCat am 05 Januar 2016, 21:46:42
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?
Titel: Antw:class.def parse error
Beitrag von: MadCat am 05 Januar 2016, 23:51:48
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?
Titel: Antw:class.def parse error
Beitrag von: Prof. Dr. Peter Henning am 06 Januar 2016, 03:41:14
Es steht jedem frei, das Wiki zu bearbeiten.

LG

pah
Titel: Antw:class.def parse error
Beitrag von: MadCat am 06 Januar 2016, 19:13:51
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.