Re: Ethersex Device per UDP ECMD funktioniert nicht

Begonnen von Guest, 17 Oktober 2012, 20:30:32

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Hallo Harry,
danke für den Link, aber den kenne ich natürlich schon. (Ich behersche die
SuFu)

Leider nutz mir das nichts.
Wie schon in der Überschrift zu lesen ist, ich brauche *UDP*!
ECMD von fhem geht leider nur mit Telnet, was ja TCP ist.

Also, kann irgend jemand helfen?


Am Mittwoch, 17. Oktober 2012 17:07:14 UTC+2 schrieb ChristianV:
>
> Hallo,
> bin neu hier und komme gleich mal mit einem Problem ;-)
> Ich habe einen ATMEGA8 und ein RFM12 zusammen mit Ethersex, ECMD per UDP
> und Onewire.
> Das Modul funktioniert bestens, Onewire klappt auch.
> Hab mir ein kleines Shell Script geschrieben, welches mir das Device per
> Netcat UDP anspricht und den "1w convert" sowie den "1w get ID" auslöst
> und mir als Rückgabewert die gemessene Temperatur gibt.
> So weit so gut.
> Hier mal mein Script:
>
> #!/bin/sh
> messen=`echo 1w convert | nc -u 192.168.5.3 2701 -q 1 2>/dev/null | grep
> -qe OK || exit 1`;
> temp=`echo 1w get $1 | nc -u 192.168.5.3 2701 -q 1 2>/dev/null`;
> echo "$temp"
> exit 1
>
> Funktioniert wie gesagt einwandfrei.
>
> Jetzt will ich das aber über fhem anstossen und auswerten.
> Dazu habe ich ein Dummy ECMD device erstellt, wobei ich dabei eine Telnet
> Verbindung zum fhem aufbaue
> und anschliessen ein ECMDDevice für den Onewiresensor:
>
> define Dummy_shell ECMD telnet 127.0.0.1:7072
> attr Dummy_shell classdefs node2=/etc/fhem/node2.classdef
> attr Dummy_shell room Interfaces
>
> define WZ_Temp ECMDDevice node2 10eabcff01080045
> attr WZ_Temp room Wohnzimmer
>
> so, fehlt noch die classdef:
>
> params devID
> get temp cmd {`/etc/fhem/node2_1wire.sh %devID`}
>
> und jetzt kommt das Merkwürdige, wenn ich das GET auslöse wird auch das
> Script gestartet aber der Rückgabewert ist erstmal LEER.
> Starte ich das GET dann nochmal will er den Temperaturwert als Kommando
> ausführen.
>
> Help, komme nicht mehr weiter.
>
> Danke schon mal.
>

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

Guest

Originally posted by: <email address deleted>

Hast Du Dir commandref.html angesehen? Dort steht:
"
ECMD
Any physical device with request/response-like communication capabilities
over a TCP connection can be defined as ECMD device.
"

Also wird m.E. nur TCP unterstützt. Also hast Du zwei Möglichkeiten:
- TCP verwenden (Warum auch nicht. Ethersex unterstützt auch TCP für ECMD)
- UDP für ECMD selbst implementieren und der Community zur Verfügung
stellen.

Grüße

Willi

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

LuckyDay

                                         

http://perldoc.perl.org/IO/Socket/INET.html

bekommst noch mal einen Link
:)
stell eben von tcp auf udp um

Hary

On 17 Okt., 20:30, ChristianV wrote:
> Hallo Harry,
> danke für den Link, aber den kenne ich natürlich schon. (Ich behersche die
> SuFu)
>
> Leider nutz mir das nichts.
> Wie schon in der Überschrift zu lesen ist, ich brauche *UDP*!
> ECMD von fhem geht leider nur mit Telnet, was ja TCP ist.
>
> Also, kann irgend jemand helfen?
>
> Am Mittwoch, 17. Oktober 2012 17:07:14 UTC+2 schrieb ChristianV:
>
>
>
>
>
>
>
>
>
> > Hallo,
> > bin neu hier und komme gleich mal mit einem Problem ;-)
> > Ich habe einen ATMEGA8 und ein RFM12 zusammen mit Ethersex, ECMD per UDP
> > und Onewire.
> > Das Modul funktioniert bestens, Onewire klappt auch.
> > Hab mir ein kleines Shell Script geschrieben, welches mir das Device per
> > Netcat UDP anspricht und den "1w convert" sowie den "1w get ID" auslöst
> > und mir als Rückgabewert die gemessene Temperatur gibt.
> > So weit so gut.
> > Hier mal mein Script:
>
> > #!/bin/sh
> > messen=`echo 1w convert | nc -u 192.168.5.3 2701 -q 1 2>/dev/null | grep
> > -qe OK || exit 1`;
> > temp=`echo 1w get $1 | nc -u 192.168.5.3 2701 -q 1 2>/dev/null`;
> > echo "$temp"
> > exit 1
>
> > Funktioniert wie gesagt einwandfrei.
>
> > Jetzt will ich das aber über fhem anstossen und auswerten.
> > Dazu habe ich ein Dummy ECMD device erstellt, wobei ich dabei eine Telnet
> > Verbindung zum fhem aufbaue
> > und anschliessen ein ECMDDevice für den Onewiresensor:
>
> > define Dummy_shell ECMD telnet 127.0.0.1:7072
> > attr Dummy_shell classdefs node2=/etc/fhem/node2.classdef
> > attr Dummy_shell room Interfaces
>
> > define WZ_Temp ECMDDevice node2 10eabcff01080045
> > attr WZ_Temp room Wohnzimmer
>
> > so, fehlt noch die classdef:
>
> > params devID
> > get temp cmd {`/etc/fhem/node2_1wire.sh %devID`}
>
> > und jetzt kommt das Merkwürdige, wenn ich das GET auslöse wird auch das
> > Script gestartet aber der Rückgabewert ist erstmal LEER.
> > Starte ich das GET dann nochmal will er den Temperaturwert als Kommando
> > ausführen.
>
> > Help, komme nicht mehr weiter.
>
> > Danke schon mal.

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

Guest

Originally posted by: <email address deleted>

Moin Hary,
danke, das ist interessant.
Werd Versuchen mir ein ECMD mit UDP nicht TELNET zu basteln.

Vielen Dank :-)


Am Mittwoch, 17. Oktober 2012 22:40:10 UTC+2 schrieb fhem-hm-knecht:
>
> http://perldoc.perl.org/IO/Socket/INET.html
>
> bekommst noch mal einen Link
> :)
> stell eben von tcp auf udp um
>
> Hary
>
> On 17 Okt., 20:30, ChristianV wrote:
> > Hallo Harry,
> > danke für den Link, aber den kenne ich natürlich schon. (Ich behersche
> die
> > SuFu)
> >
> > Leider nutz mir das nichts.
> > Wie schon in der Überschrift zu lesen ist, ich brauche *UDP*!
> > ECMD von fhem geht leider nur mit Telnet, was ja TCP ist.
> >
> > Also, kann irgend jemand helfen?
> >
> > Am Mittwoch, 17. Oktober 2012 17:07:14 UTC+2 schrieb ChristianV:
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > > Hallo,
> > > bin neu hier und komme gleich mal mit einem Problem ;-)
> > > Ich habe einen ATMEGA8 und ein RFM12 zusammen mit Ethersex, ECMD per
> UDP
> > > und Onewire.
> > > Das Modul funktioniert bestens, Onewire klappt auch.
> > > Hab mir ein kleines Shell Script geschrieben, welches mir das Device
> per
> > > Netcat UDP anspricht und den "1w convert" sowie den "1w get ID"
> auslöst
> > > und mir als Rückgabewert die gemessene Temperatur gibt.
> > > So weit so gut.
> > > Hier mal mein Script:
> >
> > > #!/bin/sh
> > > messen=`echo 1w convert | nc -u 192.168.5.3 2701 -q 1 2>/dev/null |
> grep
> > > -qe OK || exit 1`;
> > > temp=`echo 1w get $1 | nc -u 192.168.5.3 2701 -q 1 2>/dev/null`;
> > > echo "$temp"
> > > exit 1
> >
> > > Funktioniert wie gesagt einwandfrei.
> >
> > > Jetzt will ich das aber über fhem anstossen und auswerten.
> > > Dazu habe ich ein Dummy ECMD device erstellt, wobei ich dabei eine
> Telnet
> > > Verbindung zum fhem aufbaue
> > > und anschliessen ein ECMDDevice für den Onewiresensor:
> >
> > > define Dummy_shell ECMD telnet 127.0.0.1:7072
> > > attr Dummy_shell classdefs node2=/etc/fhem/node2.classdef
> > > attr Dummy_shell room Interfaces
> >
> > > define WZ_Temp ECMDDevice node2 10eabcff01080045
> > > attr WZ_Temp room Wohnzimmer
> >
> > > so, fehlt noch die classdef:
> >
> > > params devID
> > > get temp cmd {`/etc/fhem/node2_1wire.sh %devID`}
> >
> > > und jetzt kommt das Merkwürdige, wenn ich das GET auslöse wird auch
> das
> > > Script gestartet aber der Rückgabewert ist erstmal LEER.
> > > Starte ich das GET dann nochmal will er den Temperaturwert als
> Kommando
> > > ausführen.
> >
> > > Help, komme nicht mehr weiter.
> >
> > > Danke schon mal.
>

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

Guest

Originally posted by: <email address deleted>

OMG Hary du bist gut ;-)

Manchmal sieht man den Wald vor lauter Bäumen nicht.
Ich hab echt viel zu umständlich gedacht und es ist so einfach.

Falls jemand mal das Problem hat. ethersex und aus platz Gründen nur UDP:

Man such sich die Datei:    /usr/share/fhem/FHEM/66_ECMD.pm
dort die Zeile 157               $conn = IO::Socket::INET->new(PeerAddr =>
$devicename, timeout => 5);
wie folgt ändern                 $conn = IO::Socket::INET->new(PeerAddr =>
$devicename, timeout => 5, *Proto => "UDP"*);

und schon funzt dat.

Beim define ganz normal telnet einstellen, fertig.

Ich werd jetzt noch ein weiteres Protokoll zum ECMD Modul dazu
Programmieren, also TELNET, SERIAL und dann noch UDP.

Viel Spass wer es braucht.

Christian

Am Donnerstag, 18. Oktober 2012 06:49:44 UTC+2 schrieb ChristianV:
>
> Moin Hary,
> danke, das ist interessant.
> Werd Versuchen mir ein ECMD mit UDP nicht TELNET zu basteln.
>
> Vielen Dank :-)
>
>
> Am Mittwoch, 17. Oktober 2012 22:40:10 UTC+2 schrieb fhem-hm-knecht:
>>
>> http://perldoc.perl.org/IO/Socket/INET.html
>>
>> bekommst noch mal einen Link
>> :)
>> stell eben von tcp auf udp um
>>
>> Hary
>>
>> On 17 Okt., 20:30, ChristianV wrote:
>> > Hallo Harry,
>> > danke für den Link, aber den kenne ich natürlich schon. (Ich behersche
>> die
>> > SuFu)
>> >
>> > Leider nutz mir das nichts.
>> > Wie schon in der Überschrift zu lesen ist, ich brauche *UDP*!
>> > ECMD von fhem geht leider nur mit Telnet, was ja TCP ist.
>> >
>> > Also, kann irgend jemand helfen?
>> >
>> > Am Mittwoch, 17. Oktober 2012 17:07:14 UTC+2 schrieb ChristianV:
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> > > Hallo,
>> > > bin neu hier und komme gleich mal mit einem Problem ;-)
>> > > Ich habe einen ATMEGA8 und ein RFM12 zusammen mit Ethersex, ECMD per
>> UDP
>> > > und Onewire.
>> > > Das Modul funktioniert bestens, Onewire klappt auch.
>> > > Hab mir ein kleines Shell Script geschrieben, welches mir das Device
>> per
>> > > Netcat UDP anspricht und den "1w convert" sowie den "1w get ID"
>> auslöst
>> > > und mir als Rückgabewert die gemessene Temperatur gibt.
>> > > So weit so gut.
>> > > Hier mal mein Script:
>> >
>> > > #!/bin/sh
>> > > messen=`echo 1w convert | nc -u 192.168.5.3 2701 -q 1 2>/dev/null |
>> grep
>> > > -qe OK || exit 1`;
>> > > temp=`echo 1w get $1 | nc -u 192.168.5.3 2701 -q 1 2>/dev/null`;
>> > > echo "$temp"
>> > > exit 1
>> >
>> > > Funktioniert wie gesagt einwandfrei.
>> >
>> > > Jetzt will ich das aber über fhem anstossen und auswerten.
>> > > Dazu habe ich ein Dummy ECMD device erstellt, wobei ich dabei eine
>> Telnet
>> > > Verbindung zum fhem aufbaue
>> > > und anschliessen ein ECMDDevice für den Onewiresensor:
>> >
>> > > define Dummy_shell ECMD telnet 127.0.0.1:7072
>> > > attr Dummy_shell classdefs node2=/etc/fhem/node2.classdef
>> > > attr Dummy_shell room Interfaces
>> >
>> > > define WZ_Temp ECMDDevice node2 10eabcff01080045
>> > > attr WZ_Temp room Wohnzimmer
>> >
>> > > so, fehlt noch die classdef:
>> >
>> > > params devID
>> > > get temp cmd {`/etc/fhem/node2_1wire.sh %devID`}
>> >
>> > > und jetzt kommt das Merkwürdige, wenn ich das GET auslöse wird auch
>> das
>> > > Script gestartet aber der Rückgabewert ist erstmal LEER.
>> > > Starte ich das GET dann nochmal will er den Temperaturwert als
>> Kommando
>> > > ausführen.
>> >
>> > > Help, komme nicht mehr weiter.
>> >
>> > > Danke schon mal.
>>
>

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

Dr. Boris Neubert

                                             

Hallo Christian,

Am 18.10.2012 07:21, schrieb ChristianV:
> Ich werd jetzt noch ein weiteres Protokoll zum ECMD Modul dazu
> Programmieren, also TELNET, SERIAL und dann noch UDP.
>

das ist gut. Wenn Du es fertig hast, nehme ich es gerne entgegen und
checke es ein.

Gruesse
Boris

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!