class.def parse error

Begonnen von MadCat, 04 Januar 2016, 20:24:27

Vorheriges Thema - Nächstes Thema

MadCat

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.


MadCat

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)) }

Dr. Boris Neubert

Hallo,

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

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

MadCat

#3
Hallo.

Würde ich gerne machen, aber ich sehe hier keinen angehefteten Beitrag.

krikan

#4
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

MadCat

Ah danke für die Info.

Habe ich denn überhaupt die Berechtigung einen Beitrag zu verschieben?

krikan

Würde mich wundern, wenn nicht. Schau bitte unterhalb des Threads nach dem Button "Thema verschieben"

MadCat

Oha, da lasse ich besser die Finger von, nicht das ich wo falsch lande.

MadCat

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?

MadCat

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?

Prof. Dr. Peter Henning

Es steht jedem frei, das Wiki zu bearbeiten.

LG

pah

MadCat

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.