ECMDDevice-avrnetio bzw webmodul

Begonnen von ghostwriter, 20 Januar 2023, 18:16:34

Vorheriges Thema - Nächstes Thema

ghostwriter

Hallo liebe Foren Gemeinde,

ich habe kürzlich mein Rpi/Fhem System komplett neu gemacht.
Nach dem einspielen meines Fhem backups,fiel mir auf das die din.classdef
datei nicht mehr unter den Attributen zu sehen war.
Komischerweise nur die, alle anderen classdefs (onewire,dht22+relais) sind da und funktionieren.

Zum hizufügen bekomme der classdef bekomme ich nur angezeigt "Unknown argument classdef, choose one of reopen classdef"
Und beim neustarten von Fhem im Log "WEB_MODUL: cannot open file /opt/fhem/Fhem/lib/din.classdef for class DIN."

Ich muß dazu schreiben das ich seit Jahren alte ecmd(6.2.2016) + ecmddevice(8.11.2016) module benutze.
Wollte einfach jetzt den Schritt wagen um auf den neusten stand zu sein.
Habe dann versucht Beispiele aus dem wiki und vom commandref zu benutzen, aber alle funktionieren nicht.
Ich würde bei Lösung meines Problems mal die wiki neu schreiben.

Wenn ich über Putty eine anfrage an mein webmodul sende (pin get ok1 bekomme ich ein on zurück).
Also erwarte ich entweder ein on oder off.

So zu meinem Setup:
Ich benutze das webmodul,was fast gleich ist, wie das avrnetio (leichte verschiebung der ports).
Es ist natürlich ethersex drauf,aber die ports (eingänge und ausgänge) sind mit der named_pins funktion.
Das heißt meine Digitalen Eingäge haben die namen ok1,ok2,ok3 und ok4

Ecmd.pm vom 2018-03-10
Ecmddevice vom 2016-12-26
Aktuelles Fhem

List vom Webmodul:
Internals:
   CFGFN      /opt/fhem/webmodul.cfg
   DEF        telnet 192.168.1.90:2701
   DeviceName 192.168.1.90:2701
   FD         11
   FUUID      5c488fb5-f33f-9d21-7f6d-5dd488a6ce0c4c4b
   NAME       WEB_MODUL
   NR         60
   PARTIAL   
   Protocol   telnet
   STATE      opened
   TYPE       ECMD
   eventCount 1
   READINGS:
     2023-01-20 16:17:36   state           opened
   fhem:
     classDefs:
       DHT22:
         filename   /opt/fhem/FHEM/lib/dht22.classdef
         params     devID
         gets:
           DHT:
             cmd        {"dht temp %devID\n\000dht humid %devID\n"}
             expect     -?\d+.\d\n
             postproc   { s/(.*)\n(.*)\n/T: $1 H: $2/; my $hash  = $defs{%NAME}; my $temperature = $1; my $humidity = $2; my $state = $_;  readingsSingleUpdate($hash, "temperature", $temperature, 1); readingsSingleUpdate($hash, "humidity", $humidity, 1); readingsSingleUpdate($hash, "state", $state, 1); }
         sets:
       ONEWIRE:
         filename   /opt/fhem/FHEM/lib/onewire.classdef
         params     devID
         gets:
           temp:
             cmd        {"1w get %devID\n"}
             expect     -?\d+.\d+\n
             postproc   { s/\n//g; $_ }
         sets:
       RELAIS:
         filename   /opt/fhem/FHEM/lib/relais.classdef
         params     name
         gets:
           getdata:
             cmd        {"pin get %name\n"}
             expect     (on|off)\n
             postproc   { s/(.*)\n/$1/; my $hash  = $defs{%NAME}; my $status = $1;  readingsSingleUpdate($hash, "status", $status, 1); }
         sets:
           off:
             cmd        {"pin set %name off\n"}
             expect     (on|off)\n
             postproc   { s/(.*)\n/$1/; my $hash  = $defs{%NAME}; my $status = $1;  readingsSingleUpdate($hash, "status", $status, 1); }
           on:
             cmd        {"pin set %name on\n"}
             expect     (on|off)\n
             postproc   { s/(.*)\n/$1/; my $hash  = $defs{%NAME}; my $status = $1;  readingsSingleUpdate($hash, "status", $status, 1); }
Attributes:
   classdefs  ONEWIRE=/opt/fhem/FHEM/lib/onewire.classdef:DHT22=/opt/fhem/FHEM/lib/dht22.classdef:RELAIS=/opt/fhem/FHEM/lib/relais.classdef:DIN=/opt/fhem/Fhem/lib/din.classdef
   logTraffic 5
   requestSeparator \000
   room       Systeme
   verbose    5


Inhalt der din.classdef:

params name
get read cmd {"pin get %name\n"}
get read expect ".*"
get read postproc {\
s/(.*)\n/$1/;\
my $hash  = $defs{%NAME};\
my $status = $1;\
\
readingsSingleUpdate($hash, "status", $status, 1);\
\
}


So ich hoffe das ich mein Problem verständnisvoll erklärt habe.
Vielleicht hat jemand das so ähnlich und kann mir mit seiner Digitalen Abfrage ( classdef) aushelfen.
Und Bitte, ich habe wirklich viel im Wiki und Forum gesucht und zu meinem Problem keine Lösung gefunden.
Ich würde mich sehr freuen das mir jemand hilft.

Danke schonmal im voraus-
Gruß aus Hamburg


Dr. Boris Neubert

Zitat
   classdefs  ONEWIRE=/opt/fhem/FHEM/lib/onewire.classdef:DHT22=/opt/fhem/FHEM/lib/dht22.classdef:RELAIS=/opt/fhem/FHEM/lib/relais.classdef:DIN=/opt/fhem/Fhem/lib/din.classdef

Den Pfad /opt/fhem/Fhem gibt es nicht, nehme ich an. Du musst auch für den letzten Eintrag FHEM statt Fhem schreiben.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

ghostwriter

Hallo Boris

Das kann es doch jetzt nicht gewesen sein ????
Ich habe gerade nochmal meine classdef dateien nach /opt/fhem/lib verschoben,
und was soll ich sagen, nach einem neustart konnte ich (define OK1 ECMDDevice IO ok1) anlegen.
Ich hatte die ganze zeit darüber nach gedacht das die classdef falsch war.

Ich möchte mich sehr herzlich bei Dir bedanken.

gruß
Thomas