Hallo zusammen
wer kann mir weiterhelfen. Ich habe ein AVR Board mit Ethersex geflasht und lt. Fhem Wiki AVR NETIO die Einträge für Onewire, Relais, Analog Eingänge und Contacts kopiert und als onewire.classdefin usw in dem Verzeichnis cd /opt/fhem abgespeichert. Auch die Gruppe und Rechte sind angepasst.
Die Onewire Abfragen und das Schalten der Relais funktioneren einwandfrei.
Nur bei dem Versuch Analog Eingänge anzulegen oder Digital Eingänge abzufragen / anzulegen kommt nach dem Eintrag
define Netzspg ECMDDevice adc 4 in der Fhem Eingabezeile folgende Meldung
ECMDDevice Netzspg error: unknown class adc (I/O device is NETIO_02) .
Wo liegt mein Fehler, zudem dies schon mal alles funktioniert hat , hab leider kein Backup erstellt - Learning by Doing ..
Danke schon mal im voraus für Eure Mithilfe
manny59
Hallo, poste mal deine adc.classdef und list von deinem NETIO Board.
VG
Frank
Hallo Frank
danke für Deine rasche Antwort - hier meine adc.classdef
# Uebergabeparameter Portnummer des Analogeingangs wie auf der Platine aufgedruckt
params PortID
# Umsetzung in ECMD Befehle
# value = Rückgabewert in 0-100%, je nach eingestelltem Referenzwert im Attribut "Referenz"
# portvalue = originaler Rückgabewert des NET-IO in Dec umgerechnet um einen Referenzwert ermitteln zu können
get value cmd {"adc get %PortID"}
get value postproc {\
my $hexval = hex("$_");\
my $refval = AttrVal("%NAME","status",1024);\
my $retval = $hexval*100/$refval;\
$retval;\
}
get portvalue cmd {"adc get %PortID"}
#get portvalue postproc{hex("$_")}
und hier das List von NETIO_02
Internals:
DEF telnet 192.168.1.85:2701
DeviceName 192.168.1.85:2701
FD 4
NAME NETIO_02
NR 30
PARTIAL
Protocol telnet
STATE opened
TYPE ECMD
Readings:
2015-07-16 10:18:14 state opened
Fhem:
Classdefs:
Adc:
filename /opt/fhem/adc.classdef
params PortID
Gets:
Portvalue:
cmd {"adc get %PortID"}
Value:
cmd {"adc get %PortID"}
postproc { my $hexval = hex("$_"); my $refval = AttrVal("%NAME","status",1024); my $retval = $hexval*100/$refval; $retval;}
Contact:
Onewire:
filename /opt/fhem/onewire.classdef
params devID
Gets:
Temp:
cmd {"1w get %devID\n"}
expect \d+.\d\n
Sets:
Messen:
cmd {"1w convert\n"}
expect OK\n
Relais:
filename /opt/fhem/relais.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";}
Adc:
Contact:
Ip01:
Netio:
Attributes:
classdefs ADC=/opt/fhem/adc.classdef:ONEWIRE=/opt/fhem/onewire.classdef:RELAIS=/opt/fhem/relais.classdef
room AVR Board
... das war´s - bin schon gespannt auf Deine Antwort
manny59
Probier mal die adc.classdef von mir. Im Netz kursieren einige Varianten die nicht funktionieren, ich hab damals auch ewig drann rumprobiert.
gegebenfalls den Namen anpassen und dann aber fhem shutdown restart, da die geänderte classdef sonst nicht geladen wird!
get value cmd {"adc get %PortID\n"}
params PortID
get value expect ".*"
get value postproc {\
my $hexval = hex(trim("$_"));\
my $hash = $defs{%NAME};\
readingsSingleUpdate($hash, "state", $hexval, 1);\
}
VG
Frank
P.S. Da ist jetzt aber keine Umrechnung /1024 mit drinn
Hallo Frank
hab Deine adc.classdef eingefügt - raspi mit shutdown restart neu gestartet , Analogeingang definiert ..
Ergebnis :
ECMDDevice Netzspg error: unknown class adc (I/O device is NETIO_02).
... das macht mich noch ganz irre !
trotzdem schonmal Danke für Deine Bemühungen
manny59
classdefs ADC
schreib mal ADC groß bei deiner definition
Zitatdefine Netzspg ECMDDevice adc 4
Stimmt! Das gehört natürlich Groß geschrieben, ist mir erst gar nicht aufgefallen.
define Netzspg ECMDDevice ADC 4
VG
Frank
Hallo harry, Hallo Frank
Danke für Eure Unterstützung - jetzt klappt´s wieder - Danke.
War schon am Verzweifeln - wo war der Fehler in der classdef - nur so zum Verständnis ..
Und habt Ihr auch eine classdef für die digitalen Eingänge für mich parat - grins ..
Danke nochmals - super Forum, tolle und hilfsbereite MItglieder .
manny 59
Guck mal hier: http://www.ethersex.de/index.php/Nutzung_in_FHEM_(Deutsch)#digitale_Eing.C3.A4nge_-_proaktiv
oder
http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin
oder mal im Netzt suchen, ich benutze die digitalen nicht.
VG
Frank
Danke Frank
dafür muss ich aber das AVR NETIO nochmals mit Ethersex "bearbeiten" - hat asich ber früher auch ohne diese "Watch io changes and react" Einstellung nutzen lassen ..
Trotzdem Danke , vielleicht gibt es ja andere User bei denen dies klappt und welche die digtialen Ports nutzen
manny59
Hallo manny59
Du könntest dich an den User kpwg wenden, er arbeitet an der Sache oder mach unter Automatisierung mal einen neuen Thread auf, hier im Anfängerbereich ließt das sonst keiner von den richtigen Leuten.
VG
Frank
ZitatWar schon am Verzweifeln - wo war der Fehler in der classdef - nur so zum Verständnis ..
Wie man aus deinem List erkennen kann ....
ZitatAttributes:
classdefs ADC=/opt/fhem/adc.classdef:ONEWIRE=/opt/fhem/onewire.classdef:RELAIS=/opt/fhem/relais.classdef
Hallo zusammen
ich wollte nur noch berichten, dass die Analogdaten nun seit Tagen einwandfrei ankommen und sich dementsprechend auswerten und anwenden lassen.
Vielen Dank nochmals an Hary und Frank
P.S. die Sache mit den Digitaleingängen hab ich einstweilen als "Analogeingang" gelöst - funktioniert auch so .
manny59