HomeMatic CCU2 bei ELV bestellen

Telnet Antwort in Variable speichern?

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Werbung


Telnet Antwort in Variable speichern?

Beitragvon mrMuppet » 04.12.2011, 14:08

Hallo,
bin leider immer noch Anfänger was die Skripte angeht und komme seit einigen Tagen nicht mehr weiter:

Ich möchte eine Informationen meiner Squeezebox Webradios gerne in Homemtic Variablen speichern (um sie dann auf meinem Mediola a.i.o control Android-Touchpanel anzuzeigen). Die Radios verstehen entweder Telnet Befehle oder JSON-RPC (hab ich gar keine Ahnung von).

Bisher schicke ich (Telnet-)Befehle per Netcat:

sendcmdradio.sh

Code: Alles auswählen
    echo 00:04:21:29:6a:0f $@ | /etc/config/addons/busybox/busybox ./busybox nc 192.168.178.28 9090


und dann einen Aufruf:

Code: Alles auswählen
    string stdout;
    string stderr;
    system.Exec("sh /usr/local/sendcmdradio.sh stop ",&stdout,&stderr);


Bei diesen Befehlen brauche ich nun keine Rückmeldung. Jetzt möchte ich das Kommando "title ?" benutzen auf den das Radio den aktuellen Songtitel zurückliefert. Diese Rückmeldung möchte ich in einer Variable ablegen. Oder wenn es einfacher ist in einer temp-Datei.
An den Server 192.168.178.28 9090 muss also die MAC und danach "title ?" gesendet werden.
Ich habe in die sh-datei schon mal ein ">sb.txt" eingebaut
Code: Alles auswählen
  echo 00:04:21:29:6a:0f $@ >sb.txt| /etc/config/addons/busybox/busybox ./busybox nc 192.168.178.28 9090

aber die Datei beinhaltete dann nur den Aufruf und nicht die Antwort.

Oder ist es einfacher JSON-RPC für diese Problem zu verwenden? Davon hab ich leider gar keine Plan...

Wer kann mir helfen?
58 Kanäle in 44 Geräten
Wand-Tablet mit Mediola
Yamaha AVR, Dreambox, Squeezebox, FreeNAS, Fritzbox, SeduLight, FireTV, Chromecast
mrMuppet
 
Beiträge: 206
Registriert: 22.04.2011, 20:29

Re: Telnet Antwort in Variable speichern?

Beitragvon mrMuppet » 04.12.2011, 21:09

Ok. Das speichern hab ich schon mal herausgefunden. Das Problem bestand darin, dass netcat einfach zu schnell die Verbindung beendet hat. NAchdem ich jetzt "-i 2" eingebaut habe klappts:

Code: Alles auswählen
echo "00:04:20:22:4c:50 artist ?" | /etc/config/addons/busybox/busybox ./busybox nc -i 2 192.168.178.28 9090 >/tmp/sq.txt


Jetzt muss ichs noch hinbekommen die datei auszulesen und in einer Variable abzuspeichern.

Tipps are welcome!
58 Kanäle in 44 Geräten
Wand-Tablet mit Mediola
Yamaha AVR, Dreambox, Squeezebox, FreeNAS, Fritzbox, SeduLight, FireTV, Chromecast
mrMuppet
 
Beiträge: 206
Registriert: 22.04.2011, 20:29

Re: Telnet Antwort in Variable speichern?

Beitragvon owagner » 05.12.2011, 12:51

Was steht denn in der Variable "stdout" nach dem system.Exec()-Aufruf?
Benutzeravatar
owagner
 
Beiträge: 1191
Registriert: 13.05.2008, 19:49

Re: Telnet Antwort in Variable speichern?

Beitragvon mrMuppet » 05.12.2011, 17:13

owagner hat geschrieben:Was steht denn in der Variable "stdout" nach dem system.Exec()-Aufruf?


Keine Ahnung, ich werde es heute abend mal auslesen. Wär ja spitze wenn da schon was brauchbares zu finden ist!
58 Kanäle in 44 Geräten
Wand-Tablet mit Mediola
Yamaha AVR, Dreambox, Squeezebox, FreeNAS, Fritzbox, SeduLight, FireTV, Chromecast
mrMuppet
 
Beiträge: 206
Registriert: 22.04.2011, 20:29

Re: Telnet Antwort in Variable speichern?

Beitragvon mrMuppet » 05.12.2011, 20:29

Em... wieder ne peinliche Anfängerfrage: Wie lese ich stdout denn aus? Leg ich einfach ne Systemvariable gleichen Namens an und lass mir diese anzeigen?
58 Kanäle in 44 Geräten
Wand-Tablet mit Mediola
Yamaha AVR, Dreambox, Squeezebox, FreeNAS, Fritzbox, SeduLight, FireTV, Chromecast
mrMuppet
 
Beiträge: 206
Registriert: 22.04.2011, 20:29

Re: Telnet Antwort in Variable speichern?

Beitragvon mrMuppet » 08.12.2011, 23:01

Habs jetzt mit dem XML-API (FW-Patch) und statechange.cgi gemacht.

Code: Alles auswählen
export SYSVAR_ID=3883
export SYSVAR_VALUE="$(echo "00:04:20:22:4c:50 artist ?" | /etc/config/addons/busybox/busybox ./busybox nc -i 5 192.168.178.28 9090)"
wget  "http:///config/xmlapi/statechange.cgi?ise_id=$SYSVAR_ID&new_value=$SYSVAR_VALUE"


leider bekomme ich noch die Fehlermeldung:
Code: Alles auswählen
wget: statechange.cgi?ise_id=3883&new_value=00%3A04%3A20%3A22%3A4c%3A50 artist WDR%205%20Hotline: Read-only file system


Woran kann das jetzt wieder liegen?

Edit:
hab die wget-Zeile jetzt geändert:
Code: Alles auswählen
wget -0 /dev/null -q http:/192.168.178.22//config/xmlapi/statechange.cgi?ise_id=$SYSVAR_ID&new_value=$SYSVAR_VALUE


Leider bekomme ich jetzt:
wget: server returned error 400: HTTP/1.0 400 Bad Request
58 Kanäle in 44 Geräten
Wand-Tablet mit Mediola
Yamaha AVR, Dreambox, Squeezebox, FreeNAS, Fritzbox, SeduLight, FireTV, Chromecast
mrMuppet
 
Beiträge: 206
Registriert: 22.04.2011, 20:29

Re: Telnet Antwort in Variable speichern?

Beitragvon Tank » 09.12.2011, 09:25

Hallo MrPuppet,
nur um mal das offensichtliche auszuschliessen: im oberen Beispiel hast Du wget "http:///co...
, ohne CCU IP,
im unteren Beispiel hast Du http:/192.168.178.22//con.., also der Doppelslash gehört hinter http, nach der IP nur ein einfacher....
Weiss nicht ob das die Ursachen für Deine Fehler sind.
Jedenfalls musst Du bei den Aufrufen sorgfältiger sein! In der Regel sind es solche Flüchtigkeitsfehler!

Gruss Josef
Tank
 
Beiträge: 60
Registriert: 20.11.2011, 13:08


Zurück zu HomeMatic Zentrale (CCU / CCU2)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste







© homematic-forum.de & Lizenzgebern. Alle Rechte vorbehalten. Alle Bilder & Texte auf dieser Seite sind Eigentum
der jeweiligen Besitzer und dürfen ohne deren Einwilligung weder kopiert noch sonstwie weiter verwendet werden.