FHEM Forum

FHEM => fhem-users => Thema gestartet von: Guest am 29 Juni 2012, 09:35:00

Titel: Verständniss Frage zu ECMD und die classdefs
Beitrag von: Guest am 29 Juni 2012, 09:35:00
Originally posted by: <email address deleted>

Hallo,

ich habe seit Jahren NetIOs für die Abfrage von 1Wire, Dachs, Tankanzeige.

Nun habe ich nach dem Wikibeitrag die
Abfrage Temperatursensoren getestet.
Mir fehlt auf, das ich als Rückgabe Wert auch immer den Funktionsaufruf
erhalte.

Ich glaube ich kann nur an einem Beispiel erklären:

1) onewire.classdef

# Uebergabeparameter Onewire Geräte ID
params devID
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen
set messen cmd {"1w convert"}
get temp cmd {"1w get %devID"}

2)ECMDDevice

DEF ONEWIRE 1053a470010800d5
  NAME Abgas_kalt


Nun zwei Fragen:
1) Der Befehl "get Abgas_kalt temp" gibt als Antwort: "temp 21.5" oder wenn der Sensor nicht antwortet nur "temp" zurück.
Wie kann ich das so ändern das nur noch die 21.5 angezeigt wird.

2) Wie kann ich ein den Rückgabewert parsen, also kann ich z.B. Perlcode in der *.classdef nutzen
Auch hier ein Beispiel. Wenn ich meinen Dachs abfrage bekomme ich als Rückgabewert 003e4a1f2a28210410b40000000000000000000000"
Hier steht alles drinnen was ich wissen muss. Das würde ich jetzt gerne auf N Variablen aufteilen und im fhem anzeigen.


gruß
lo4dro

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Verständniss Frage zu ECMD und die classdefs
Beitrag von: Guest am 29 Juni 2012, 10:54:06
Originally posted by: <email address deleted>

Das ist aber keine Verständnisfrage zu FHEM, sondern zu Perl.

Da Du sicher noch weitere Ideen hast, lautet mein Vorschlag: Arbeite Dich
richtig in Perl ein, mit einfachen Programmierübungen ibs. zur
Stringbearbeitung. Es ggibt im Netz hunderttausende von fertigen Beispielen.

LG

pah

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Verständniss Frage zu ECMD und die classdefs
Beitrag von: Tobias am 29 Juni 2012, 13:54:20
                                                   

Das sieht im Log nur so aus....

ein "{ReadingsVal("Abgas_kalt", "temp", "error")} sollte dann "21,5"
zurückgeben...

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Verständniss Frage zu ECMD und die classdefs
Beitrag von: Dr. Boris Neubert am 29 Juni 2012, 20:24:06
                                             

Hallo,

Am 29.06.2012 09:35, schrieb lo4dro:
> 2) Wie kann ich ein den Rückgabewert parsen, also kann ich z.B. Perlcode in der *.classdef nutzen
> Auch hier ein Beispiel. Wenn ich meinen Dachs abfrage bekomme ich als Rückgabewert 003e4a1f2a28210410b40000000000000000000000"
> Hier steht alles drinnen was ich wissen muss. Das würde ich jetzt gerne auf N Variablen aufteilen und im fhem anzeigen.

alles, was in der classdef in {} steht, IST Perlcode. Schau Dir bitte
mal das Beispiel 2 in der Commandref an. Mit dem Postprozessor zu jedem
Kommando kannst Du aus dem Rückgabewert den interessanten Teil
rausschneiden. Weitere Hilfe: siehe Perl-Funktionen substr und hex auf
http://perldoc.perl.org.

Grüße
Boris

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Verständniss Frage zu ECMD und die classdefs
Beitrag von: Guest am 30 Juni 2012, 12:21:36
Originally posted by: <email address deleted>

Vielen Dank für eure Antworten.

Das das zwischen den {} Perl Code ist, ist für mich nicht ersichtlich. Auch
wenns in der Referenz steht.
Ich habe Basiskentnisse in Perl, und würde für mein Verständnis mindestens
ein print fehlen.
Da das zwischen den {} der Befehl in der Telnet Sitzung ist.
Genau so unverständlich ist für mich warum %devID eigendlich jeden Namen
kann haben den einem Gefällt.
Ich habe für mich nur die Erklärung, das er Übergabewert automatisch in die
erste mit % beginnende Variable geschrieben wird.

Zur der Refernz. Die ist sicherlich gut, wenn man der Englischen Sprache
mächtig ist und gut bis sehr gut Perl Kenntnisse hat.
Ich selbst bin der Meinung, das ein Deutsches Projekt auch eine Deutsche
Doku benötigt. Dazu gehört auch die Referenzliste.

Da mein Englisch nicht so besonders gut ist, sind die Erklärung nur sehr
scher zu verstehen.

Daher hoffe ich hier auf meine Fragen eine Antwort zu bekommen. Ganz nach
dem Zitat: "Es gibt keine blöde Fragen, nur blöde Antworten"
Mir selbst fehlt ein IRC Channel, dort habe ich gute Erfahrungen gesammelt.
Ich versuche auch alles was ich Verstanden habe im Wiki für andere
nachvollziehbar zu beschreiben. Ich hoffe es Glückt mir.

@tobias.faust
Das sieht nicht nur im Log so aus, das steht auch im Webfrontend so. (siehe
Bild)
Wenn ich dein Beispiel richtig verstehe, ist das Perlcode den ich in
"notify" Teilen nutzen kann.
Ich habe diene Zeile in der Command-Line getestet, und es kommt nur die
Temperatur heraus.
Nun muss ich noch herausfinden, ob ich das auch in der "ECMDDevice" nutzen
kann.

Ich versuch mal deinen Vorschlag in einem "notify" umzusetzen.

Gruß und ein schönes Wochenende wünsche ich euch allen.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Verständniss Frage zu ECMD und die classdefs
Beitrag von: rudolfkoenig am 30 Juni 2012, 12:43:17
                                                   

> Ich selbst bin der Meinung, das ein Deutsches Projekt auch eine Deutsche
> Doku benötigt. Dazu gehört auch die Referenzliste.

Ich bin einfach gewohnt, dass technische Dokumentation in english ist, auch
wenn es zunehmend Uebersetzungen gibt.

Fhem wurde (wie auch meine anderen OpenSource Projekte) nicht als "Deutsches
Projekt" angelegt, da ich auf internationale Unterstuetzung/Verwendung hoffte.
Ich muss aber zugeben, dass "Auslaender" beim fhem deutlich weniger vertreten
sind wie bei den anderen Projekten.

Ich bin offen fuer Uebersetzungen aller Art, aber der Einzige, der bisher sich
angeboten hat commandref zu uebersetzen wurde in dieser Liste verschreckt.
Wenn es eine deutsche Uebersetzung geben wuerde, dann waere dessen Pflege fuer
das Einchecken von FHEM Modulen (auch) Voraussetzung.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Verständniss Frage zu ECMD und die classdefs
Beitrag von: Puschel74 am 01 Juli 2012, 10:52:13
                                               

Hallo,

ist zwar der falsche Beitrag aber dennoch ...
Ok Rudi. ich hab den Wink verstanden ;-)
Ich werd die commandref fertig übersetzen und dir zur Durchsicht schicken
wenn das
ok ist.
Angefangen hab ich ja damit und bin auch fast fertig.
Ich sollte mich nicht so leicht verschrecken lassen damit wir hier mal
vorwärts kommen.

Grüße

Am Samstag, 30. Juni 2012 12:43:17 UTC+2 schrieb Rudolf Koenig:
>
> > Ich selbst bin der Meinung, das ein Deutsches Projekt auch eine Deutsche
> > Doku ben�tigt. Dazu geh�rt auch die Referenzliste.
>
> Ich bin einfach gewohnt, dass technische Dokumentation in english ist,
> auch
> wenn es zunehmend Uebersetzungen gibt.
>
> Fhem wurde (wie auch meine anderen OpenSource Projekte) nicht als
> "Deutsches
> Projekt" angelegt, da ich auf internationale Unterstuetzung/Verwendung
> hoffte.
> Ich muss aber zugeben, dass "Auslaender" beim fhem deutlich weniger
> vertreten
> sind wie bei den anderen Projekten.
>
> Ich bin offen fuer Uebersetzungen aller Art, aber der Einzige, der bisher
> sich
> angeboten hat commandref zu uebersetzen wurde in dieser Liste verschreckt.
> Wenn es eine deutsche Uebersetzung geben wuerde, dann waere dessen Pflege
> fuer
> das Einchecken von FHEM Modulen (auch) Voraussetzung.
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Re: Verständniss Frage zu ECMD und die classdefs
Beitrag von: Dr. Boris Neubert am 01 Juli 2012, 15:17:09
                                             

Am 30.06.2012 12:21, schrieb lo4dro:


# Uebergabeparameter Onewire Geräte ID
params devID
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get =
Tempwert lesen
set messen cmd {"1w convert"}
get temp cmd {"1w get %devID"}

> Auch wenns in der Referenz steht.
> Ich habe Basiskentnisse in Perl, und würde für mein Verständnis
> mindestens ein print fehlen.
> Da das zwischen den {} der Befehl in der Telnet Sitzung ist.

> Das das zwischen den {} Perl Code ist, ist für mich nicht ersichtlich.

Was in { } steht, wird als Perl-Ausdruck ausgewertet und an das
Ethersex-Gerät geschickt. Bei Dir steht dort ein String. Es könnte aber
auch der Rückgabewert einer Funktion sein. Ein print() gehört da nicht
hin, Du willst ja nichts ausgeben.

> Genau so unverständlich ist für mich warum %devID eigendlich jeden Namen
> kann haben den einem Gefällt.
> Ich habe für mich nur die Erklärung, das er Übergabewert automatisch in
> die erste mit % beginnende Variable geschrieben wird.

Du hast devID als Parameter deklariert mit params devID. Der Wert wird
durch den Übergabeparameter bei get temp ersetzt.

Grüße
Boris

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Re: Verständniss Frage zu ECMD und die classdefs
Beitrag von: Guest am 01 Juli 2012, 22:07:31
Originally posted by: <email address deleted>

Am Sonntag, 1. Juli 2012 15:17:09 UTC+2 schrieb Boris:
>
> Am 30.06.2012 12:21, schrieb lo4dro:
>
> > Das das zwischen den {} Perl Code ist, ist für mich nicht ersichtlich.
>
> Was in { } steht, wird als Perl-Ausdruck ausgewertet und an das
> Ethersex-Gerät geschickt. Bei Dir steht dort ein String. Es könnte aber
> auch der Rückgabewert einer Funktion sein. Ein print() gehört da nicht
> hin, Du willst ja nichts ausgeben.
>
>
> Grüße
> Boris
>


Nun  habe ich doch noch eine Frage.
Wenn z.B. der Rückgabewert nicht eine Temperatur wäre, sondern ein HEX  
String ist
z.B.  003e4a1f2f2d200410b40000000000000000000000

Die Betriebsstunden stehen z.B. auf HEX-Wert 1 und HEX-Wert 2
Die Anzahl der Startsvorgänge aug HEX 3 und HEX 4

Ich möchte jetzt nicht den HEXwert sonder die richtigen Werte zurückgeben.
Ginge das auch oder muss ich ich hierfür etwas neues Anlegen?

 

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Re: Verständniss Frage zu ECMD und die classdefs
Beitrag von: Dr. Boris Neubert am 01 Juli 2012, 22:22:37
                                             

lo4dro schrieb:

>
>
>Nun  habe ich doch noch eine Frage.

Die Frage habe ich Dir bereits vor 2 Tagen beantwortet.

Viele Grüße
Boris

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Re: Verständniss Frage zu ECMD und die classdefs
Beitrag von: Guest am 02 Juli 2012, 08:32:33
Originally posted by: <email address deleted>

Am Sonntag, 1. Juli 2012 22:22:37 UTC+2 schrieb Boris:
>
>
>
>
>
> lo4dro schrieb:
>
> >
> >
> >Nun  habe ich doch noch eine Frage.
>
> Die Frage habe ich Dir bereits vor 2 Tagen beantwortet.
>
> Viele Grüße
> Boris
>

Danke Boris,
die Antwort habe ich auch gelesen.
Kannst du das an einem Einfach Beispiel auch erklären, da ich deine Antwort
nicht verstanden habe.

Ich weis das das zwischen den {} ein Perl Ausdruck ist, der an das ECMD
geschickt wird.
Könnte ich z.B. mit
{
my $a = 1w get %devID";
my $b = $a*2;
... weiter perlcode
}
mehrere Rückgabewerte definieren, und im Webfrontend sehen?

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Re: Verständniss Frage zu ECMD und die classdefs
Beitrag von: Tobias am 02 Juli 2012, 13:14:41
                                                   

schau dir bitte mal im Wiki den Beitrag zum AVR-Net-IO an. Dort im
Unterkapitel "analoge Sensoren einbinden" habe ich ein komplexeres postproc
eingestellt wo genau soetwas (Hex-Umrechnungen etc.) gemacht wird.

Ich warte nur noch auf die Rückmeldung von Boris damit er die Änderungen im
ECMDDevice-Modul eincheckt ;)

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Re: Verständniss Frage zu ECMD und die classdefs
Beitrag von: Guest am 02 Juli 2012, 16:08:10
Originally posted by: <email address deleted>

Am Montag, 2. Juli 2012 13:14:41 UTC+2 schrieb tobias.faust:
>
> schau dir bitte mal im Wiki den Beitrag zum AVR-Net-IO an. Dort im
> Unterkapitel "analoge Sensoren einbinden" habe ich ein komplexeres postproc
> eingestellt wo genau soetwas (Hex-Umrechnungen etc.) gemacht wird.
>
> Ich warte nur noch auf die Rückmeldung von Boris damit er die Änderungen
> im ECMDDevice-Modul eincheckt ;)
>

Vielen Dank.
Ich werde es mir in Ruhe anschauen.
 

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Titel: Re: Re: Verständniss Frage zu ECMD und die classdefs
Beitrag von: Dr. Boris Neubert am 02 Juli 2012, 20:49:16
                                             

Am 02.07.2012 13:14, schrieb tobias.faust:

> Ich warte nur noch auf die Rückmeldung von Boris damit er die Änderungen
> im ECMDDevice-Modul eincheckt ;)


erledigt ;-) morgen verfügbar.
bn

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com