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 der din.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änge 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