Willkommen › Foren › LogoControl › Netzwerk Relais / LogoControl / TCP-Befehle / sh.Scripte
- Dieses Thema hat 4 Antworten sowie 2 Stimmen und wurde zuletzt vor vor 7 Jahren, 1 Monat von Gerdi aktualisiert.
-
AutorBeiträge
-
14. November 2017 um 14:08 #3588GerdiTeilnehmer
Hallo zusammen,
ich versuche aktuell über meine LogoControl ein Netzwerk Relais anzusteuern, welches wiederrum eine Pumpe steuert. Auf dem Netzwerk Relais läuft ein kleiner Webserver, den ich mit einfachen TCP Befehlen ansteuern kann.
Folgende Befehle für Relais 1 sind möglich:– „on1“
– „off1“
– „read1“ (dient sum auslesen des aktuellen ZustandesIch sende die Befehle über ein sh-Script welches die Befehle per NetCat absetzt. In diesem steht folgendes:
echo -ne 'on1' | nc -w1 192.168.178.222 5000
Wenn ich dieses Script ausführe, bekomme ich folgendes vom Relais zurück „RelaisEGon1“ das heisst RelaisEG ist der Name des Relais und on1 ist die Rückmeldung das der Befehl ausgeführt wurde.
Ich habe das ganze in LogoControl eingebunden und das entsprechende Script wird auch über die Weboberfläache ausgeführt.Jetzt meine Fragen : 🙂
– Ich würde gerne die Rückmeldung auswerten und irgendwie in der LogoControl entsprechend anzeigen? Hat hier jemand eine Idee wie man dies machen könnte?
– Weiter möchte ich gerne ein Stromstoßtaster mit dem Relais ansteuern, das heißt ich habe folgenden Ablauf:
– on1 senden
– Rückmeldung Relais abwarten
– Wenn positiv dann off1 senden
– Rückmeldung abwarten
Kann ich sowas in der LogoControl abbilden, das ich aus einem Script heraus Werte an LogoControl zurück gebe?Danke für die Unterstützung
Gerdi
14. November 2017 um 16:06 #3590adminAdministratorAlso LogoControl kann nur Werte anzeigen, welche auch aus einer Logo ausgelesen werden. Vielleicht nur als Idee: In LogoControl gibt es ja noch den Webservice. Über CURL oder WGET aus deinem Script kannst du diesen ja aufrufen und den Wert eines LogoControl-Attributs schreiben. Das Attribut wird dann wie alle anderen in der Oberfläche angezeigt. Am besten du legst dir dafür ein Dummy Gerät an mit einer Speicheradresse die von der Logo noch nicht verwendet wird. Theoretisch könntest du so sogar in deinem Logo-Programm dann auf Änderungen des Attributs reagieren oder über einen Trigger LogoControl-Seitig.
14. November 2017 um 22:07 #3591GerdiTeilnehmerDas hört sich gut an. Hat jemand schon mal ein bash-script geschrieben das den Web Service aufruft und ein Attribut beschreibt?
Danke
15. November 2017 um 9:36 #3592adminAdministratorJa, in deinem Script rufst du wie gesagt einfach die URL des LogoControl Webservice auf, mit wget z.B. so
wget -qO- localhost:8088/rest/devices/48/attributes/1/value?set=1
16. November 2017 um 14:20 #3594GerdiTeilnehmerSo….habe es einmal in einem Script umgesetzt. Das schreiben der Attribute funktioniert wunderbar. Jedoch habe ich noch ein Problem mit meinen TCP-Befehlen. Ich sende folgende Zeilen über die Batch-Datei (NetCat Befehl)an mein Relay um den aktullen Zustand abzufragen:
echo -ne 'read1' | nc -v -w1 192.XX.XX.XXX 5000
….Dann warte ich auf eine Antwort, diese lautet z.B. „Relaison1“. Relais ist der Name der Hardware und on1 der aktuelle Zustand. Das ganze Werte ich dann über if/else aus und sende entweder den off oder den on Befehl. Hier taucht dann mein Problem auf. Die Anwort lautet dann nur „Relais“ ohne off1 oder on1. Wenn ich diese Befehle aber manuell im Terminal raus sende bekomme ich die korrekte Antwort mit on oder off hinten an „Relais“. Kann es sein das die Batch Datei die Antwort beim abarbeiten nicht ganz abwartet?Hier mal ein Auszug meiner Batch-Datei:
#Status des Relais 1 auslesen Zustand_Relais_1=$( echo -ne 'read1' | nc -v -w1 192.XX.XX.XX 5000) #Ausgabe des aktuellen Zustandes echo "Aktueller Zustand des Relais 1: " echo $Zustand_Relais_1 #Abfrage welcher Zustand das Relais hat if [[ $Zustand_Relais_1 = "Relaisoff1" ]] #Wenn Relais aus ist das Relais einschalten then echo "Relais 1 einschalten..." Zustand_Relais_2=$( echo -ne 'on1' | nc -i5 192.XX.XX.XX 5000) #Ausgabe des aktuellen Zustandes echo "Aktueller Zustand des Relais 1: " echo $Zustand_Relais_2 #Abfrage ob Relais auf Zustand ON1 geschaltet hat if [[ $Zustand_Relais_2 = "Relaison1" ]] #Wenn Relais ON geschaltet hat dann wieder ausschalten then echo "Relais 1 ausschalten..." Zustand_Relais1=$( echo -ne 'off1' | nc -w1 192.XX.XX.XX 5000) echo $Zustand_Relais1 #Abfrage ob Relais auf Zustand OFF1 geschaltet hat if [[ $Zustand_Relais1 = "Relaisff1" ]] #Wenn Relais OFF geschaltet hat dann Webservice aktualisieren then #LogoControl Attribute auf eins setzten echo "Webservice aktualsiert" wget -qO- localhost:8088/rest/devices/14/attributes/1/value?set=1 fi else #Relais 1 Rückgabewert nicht gekommen echo "Relais 1 wurde nicht eingeschaltet" #Ausgabe des aktuellen Zustandes echo "Aktueller Zustand des Relais 1: " echo $Zustand_Relais_2 fi else echo "Relais ist bereits eingeschaltet..." echo "Relais wird ausgeschaltet..." Zustand_Relais_1=$( echo -ne 'off2' | nc -vv -w5 192.XX.XX.XX 5000) #Ausgabe des aktuellen Zustandes echo $Zustand_Relais_1 wget -qO- localhost:8088/rest/devices/14/attributes/1/value?set=0 fi
Kennt sich hier jemand aus? Ich komme hier einfach nicht weiter…..
-
AutorBeiträge
- Du musst angemeldet sein, um zu diesem Thema eine Antwort verfassen zu können.