Status AVR mit netcat, socat oder ähnlichem abfragen

Nutzung von XML RPC, Remote Script, JSON RPC, XMLAPI

Moderator: Co-Administratoren

Benutzeravatar
AndreO
Beiträge: 205
Registriert: 24.09.2013, 22:11
Wohnort: Die Rhön is schön :-)
Hat sich bedankt: 4 Mal

Re: Status AVR mit netcat, socat oder ähnlichem abfragen

Beitrag von AndreO » 03.02.2016, 07:49

Hi JoeHMS,

vielen Dank für die Tips!! Genau, ich möchte das im Linux der CCU ausführen.

Ich habe bereits eine Datei im Linux laufen, die den Receiver steuert. Was mir fehlt ist vorher eine Abfrage, ob der Receiver eingeschaltet ist.

Ich hab den Inhalt Deines 2. Vorschlages in eine Datei gepackt, IP angepasst und ausgeführt. Ergebnis: Putty bleibt irgendwie im NC. Ergebnis der Ausgabe: leer. Erst durch STRG-c kann man das Skript beenden.

Entsprechend hab ich nochmal nur die relevante Zeile direkt in Putty ausgeführt. Gleiches Ergebnis. Es kommt erst der Status des Receivers, wie gewünscht, doch dann ne leere Zeile in der er stehen bleibt.

Schaltet man den AVR ein und startet Internetradio, dann zeigt NC immer weitere Zeilen bei der Abfrage. Statt nur die erste Zeile auszugeben und sich dann zu beenden, wie es eigentlich sein sollte.....

Noch ne Idee? Wundert mich ja, dass das über Cuxd läuft. Offenbar beendet CuxD den Prozess.....

EDIT: Habs grad auch nochmal mit Deiner anderen Lösung versucht den Status in die AVR.txt zu schreiben. Egal ob die Datei vorher existiert oder nicht, sie wird bei mir nicht gefüllt und der Prozess hängt ebenso solange bis man Strg-c in Putty drückt..... :-(

Viele Grüße,

André
Dateianhänge

[Die Dateierweiterung bmp wurde deaktiviert und kann nicht länger angezeigt werden.]

[Die Dateierweiterung bmp wurde deaktiviert und kann nicht länger angezeigt werden.]

piVCCU auf RaspberryPi3 (mit Funkmodul), CUL-Stick, 95 wireless Sensoren + Aktoren, 2 FS20-Sensoren + Aktoren

Benutzeravatar
AndreO
Beiträge: 205
Registriert: 24.09.2013, 22:11
Wohnort: Die Rhön is schön :-)
Hat sich bedankt: 4 Mal

Re: Status AVR mit netcat, socat oder ähnlichem abfragen

Beitrag von AndreO » 04.02.2016, 20:10

Guten Abend!

es hat mich ne Menge Recherche gekostet aber ich bin dahintergekommen.

Mit dem Befehl -c kann man Netcat sagen, dass es die Verbindung trennen soll. Allerdings schließt es die Verbindung dann, ohne ein Ergebnis auszugeben. Durch ein "sleep 1" scheint es irgendwie dann doch überzeugt zu sein ein Ergebnis anzuzeigen.

Nächstes Problem für mich war es das Ergebnis, das der Receiver liefert abzugleichen. Offenbar ist hinter dem PWR0 noch ein carriage return oder so. Durch den Vergleich der linken 4 Zeichen klappt dann aber auch das.

So funktioniert es nun jedenfalls wie gewünscht. Ich hab auch meinen AVR geprüft, finde aber keine Einstellung, die ich in Bezug auf Telnet ändern könnte. Mir ist nach wie vor schleierhaft, warum ich das Problem hatte und andere offenbar nicht. Übigens hatte ichs auch mit CUxD versucht. Mit gleichem Ergebnis. Der CUxD läuft bis zum eingestellten Timeout.....ein Ergebnis landete bei mir nicht in der Variable.....

Viele Grüße,

André

Code: Alles auswählen

AVRAus=PWR1
AVREin=PWR0
Status=$({
   echo -ne ?P\\r 
sleep 1
  }  |/usr/local/addons/socat/nc -w1 -c 192.168.250.50 8102)

Status=${Status:0:4}

if [ $Status = $AVRAus ]
then 
echo "AVR ist aus"
else

if [ $Status = $AVREin ]
then
echo "AVR ist ein"
else
echo "Keine Daten vom AVR"
fi

fi 
piVCCU auf RaspberryPi3 (mit Funkmodul), CUL-Stick, 95 wireless Sensoren + Aktoren, 2 FS20-Sensoren + Aktoren

JoeHMS
Beiträge: 340
Registriert: 28.02.2012, 11:09
Danksagung erhalten: 1 Mal

Re: Status AVR mit netcat, socat oder ähnlichem abfragen

Beitrag von JoeHMS » 09.09.2017, 15:23

Hallo André,

wie ich sehe nutzt du cauch YAHM auf einem Raspi. Ich nutze YAHM auf einem Raspi3 und habe auf diesem auch noch OpenHAB2 installiert.
Das geht einfach per apt-get und man hat sich in 3-4 Stunden gut eingearbeitet.

Alles was mit homematic nur mit Verenkungen und Skripten geht, mache ich mittlwerweile auf Openhab (Aber nur Komfort Funktionen und Audio/Video).
Das ist echt super einfach, da es für viele Geräte schon Bindings gibt.

Für den Pioneer AVR nutze ich das entsprechende Binding, wie auch für meinen LG TV.
Somit lässt sich das alles super einfach automatisieren.

Kannst ja ma versuchen, der Winter naht ;-) .

Gruß, Jochen
CCU3( 3.47.22 piVCCU3) auf RasPi4 * Wired * CUXD(2.3.3) mit CUL868 (v1.66), 1 Wire USB FTDI * Redmatic * Synology mit ccu-historian spk (V2.3.0) * ccu.io(1.0.51) * dashui(0.9beta120) openHAB 2.5.0 mit auf RasPI 4
-------------------------------------------------------------------------------------------------------------------
132 Kanäle in 38 Geräten und 140 CUxD-Kanäle in 21 CUxD-Geräten

Benutzeravatar
AndreO
Beiträge: 205
Registriert: 24.09.2013, 22:11
Wohnort: Die Rhön is schön :-)
Hat sich bedankt: 4 Mal

Re: Status AVR mit netcat, socat oder ähnlichem abfragen

Beitrag von AndreO » 17.09.2017, 09:15

Hallo Jochen,
Das klingt in der Tat spannend. Werde das als Winterprojekt mal ins Auge fassen. Du lässt neben YAHM auch OpenHAB2 auf den gleichen Raspi vermutlich in getrennten Containern laufen?
Viele Grüße,
André

Gesendet von meinem D5503 mit Tapatalk
piVCCU auf RaspberryPi3 (mit Funkmodul), CUL-Stick, 95 wireless Sensoren + Aktoren, 2 FS20-Sensoren + Aktoren

JoeHMS
Beiträge: 340
Registriert: 28.02.2012, 11:09
Danksagung erhalten: 1 Mal

Re: Status AVR mit netcat, socat oder ähnlichem abfragen

Beitrag von JoeHMS » 17.09.2017, 17:14

Hallo Andrè,

Habe OpenHab 2 nativ am Laufen.
Auf dem Raspi 3 rennt beides super Performance.

Grüße Jochen
CCU3( 3.47.22 piVCCU3) auf RasPi4 * Wired * CUXD(2.3.3) mit CUL868 (v1.66), 1 Wire USB FTDI * Redmatic * Synology mit ccu-historian spk (V2.3.0) * ccu.io(1.0.51) * dashui(0.9beta120) openHAB 2.5.0 mit auf RasPI 4
-------------------------------------------------------------------------------------------------------------------
132 Kanäle in 38 Geräten und 140 CUxD-Kanäle in 21 CUxD-Geräten

ah966
Beiträge: 8
Registriert: 31.10.2017, 18:56

Re: Status AVR mit netcat, socat oder ähnlichem abfragen

Beitrag von ah966 » 03.09.2018, 21:58

Hallo zusammen,

ich muß den Fred nochmal rauskramen, da ich vor dem gleichen Problem stehe:

Will meinen Pioneer VSX über Homematic steuern, und will das anfangs erwähnte Script benutzen.
Aber der CUxD-Befehl hängt, bis ich ihn über PuTTY abschiesse.

Das mit dem sleep-Befehl habe ich über Homematic-Script nicht hinbekommen, d.h. mit dem nc-Parameter -c wird das Script beendet, aber keine Variable gespeichert.
Weiß jemand, wie man das elegant lösen kann?

Ich habe versucht, über ein weiteres Programm, das auf den gleichen Trigger hört, mit 2 Sek. Verzögerung und diesem Schnipsel
! === vorherigen Prozess killen ===
string cmdline="for pid in `ps | grep 192.168.8.131 | grep -v grep | awk '{print $1}'`; do kill -9 $pid; done;";
dom.GetObject("CUxD.CUX2801001:3.CMD_SETS").State(cmdline);
WriteLine(cmdline);
den anderen Prozess abzuschiessen, aber das wird wohl nicht korrekt von Homematic-Script an die Shell übergeben.
Wenn ich es direkt auf der Shell absetze, funktioniert der Befehl, aber wirklich schön wärs so rum auch nicht. :(

Hat jemand eine Idee?

Viele Grüße,
Andreas

Antworten

Zurück zu „Softwareentwicklung von externen Applikationen“