telnet werte auslesen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Hallo,

ich habe einen Mikrocontroller und würde mit diesem gerne die Temperatur werte über Telnet auslesen
wenn ich auf meiner Linux console folgendes eingeben: getadc bekomme ich diese Werte zurück:

peter@peter:~$ telnet 192.168.0.90
Trying 192.168.0.90...
Connected to 192.168.0.90.
Escape character is '^]'.
Start Telnet Server:
getadc

Analogwerte: 437;441;454;422
Ready

wenn ich unter Python folgendes Skript aufrufe

Code: Alles auswählen

#!/usr/bin/python
#-*- coding:utf8 -*-
import telnetlib
import time


telnethost = '192.168.0.90'

telnetport = 23
netio = telnetlib.Telnet(telnethost, telnetport)

def v_Access(): 
    netio.write('getadc ' + '\n')
    print netio.read_until('\n').strip('\r\n')
v_Access()
dann kommt nur folgendes zurück:
Start Telnet Server:

hat jemand eine erklärung dafür?
kommt er vielleicht mit den Zeilenumbruch nicht klar?
BlackJack

@erdmulch: Vielleicht darfst Du das 'getadc' erst senden nachdem Du die Startmeldung gelesen hast. Und eventuell musst Du das mit '\r\n' abschliessen statt nur mit '\n'.
Malta
User
Beiträge: 83
Registriert: Samstag 8. Januar 2011, 23:51

Bei FHEM gibt es ein Beispiel, vielleicht kannst davon etwas ableiten:
http://forum.fhem.de/index.php?topic=16297.0
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Leider hat auch dies nicht funktioniert.
deshalb habe ich folgendes versucht:

kann irgendjemand mit der Fehlermeldung was anfangen?

vielen Dank

Code: Alles auswählen

#!/usr/bin/python
#-*- coding:utf8 -*-
import telnetlib
import time
telnethost = '192.168.0.90'
telnetport = 23
netio = telnetlib.Telnet(telnethost, telnetport)

while(1): 
    netio.write('getadc')
    print netio.read_until('\n').strip('\r\n')
    netio.close()



File "./test.py", line 14, in <module>
netio.write('getadc')
File "/usr/lib/python2.7/telnetlib.py", line 280, in write
self.sock.sendall(buffer)
AttributeError: 'int' object has no attribute 'sendall'
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@erdmulch: Raten bringt Dich da wohl nicht weiter. Ohne Zeilenumbruch wird ist garantiert nicht funktionieren.
Die Fehlermeldung ist der etwas kryptische Hinweis, dass die Verbindung bereits geschlossen wurde (Na, wer die wohl schließt ;-) ).
Antworten