Telnet mit externe Gerät - Sicherheit

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Ctrl-Z
User
Beiträge: 12
Registriert: Freitag 1. Mai 2015, 03:55

Hallo liebe Schlangenliebhaber,

ich reduziere meine Anfrage hoffentlich auf das wesentliche:

- (Raspberry Pi,) Python 2.7
- extern: Denon AVR, Verbindung: Telnet (Netzwerkkabel)

Das Datenblatt des AVR für die Verbindung: http://www.awe-europe.com/documents/Con ... V7.2.0.pdf

Ich möchte folgendes erreichen:
- Zustand des AVR "jederzeit" kennen
- Zustand des AVR "jederzeit" ändern können
Megawichtig, aber ich will euch nicht verwirren mit dem RP:
- "immer" die GPIO-Pins des Raspberry abfragen und belegen können (ich möchte die Pins als Input und Output nutzen)

Mein jeztiger Status:
- Ich kann den AVR ansteuern über Telnet, wenn die Verbindung da ist (über das Paket Telnet, .write() )
- Ich kann den AVR lesen über Telnet, wenn die Verbindung da ist (über das Paket Telnet, .read_eager() )
- Ich steuer GPIO-Pins über die GPIO-Lib vom Raspberry

Das klingt ja alles ganz okay soweit, aber es funktioniert nicht wirklich. Also fang ich mal an zu jammern:

1) es funktioniert nur, wenn zum AVR keine Verbindung besteht, und diese dann aufgebaut wird
2) ich möchte ja sozusagen in Echtzeit den Zustand des AVR lesen und verwerten. Dieser hat aber eine Reaktionszeit von 0.2 Sekunden (laut Datenblatt und Test), bis eine brauchbare Antwort herauskommt

Was ich wirklich will:
- einen hundertprozentig verlässlichen Automaten. Wenn ich ein Signal bekomme, "NOTFALL", dann darf der Pi nicht in einer 0.2 Sekundenschlleife pausieren, weil er auf eine Telnet-Antwort wartet
- ich will, das das Programm echt sicherheitsrelevant läuft, es darf keinen undefinierten Zustand geben

So, liebe Python-Gurus, danke für Eure Ideen!

LG
Ctrl-Z
User
Beiträge: 12
Registriert: Freitag 1. Mai 2015, 03:55

um noch etwas präzieser zu werden: Der dämliche Highend-Verstärker braucht .2 Sekunden, um zu antworten.
Ich überlege halt, ob ich den Zustand als Thread programmiere, da habe ich aber Null Ahnung von. Ich möchte meine Hauptroutine laufen lassen
und möchte saubere Antworten vom System zurück, aber ich will kein Threading im Sinne, das ich einen Stack aufbaue. Der Verstärker verträgt ziemlich viele Anfragen, schnarcht dann aber .2 Sekunden herum...
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Ctrl-Z: wenn mehrere Aufgaben parallel abgearbeitet werden sollen, sind Threads wohl schon irgendwie sinnvoll. Was hast Du bereits versucht? Code wäre ganz nett.
Antworten