Netzwerk Relais / LogoControl / TCP-Befehle / sh.Scripte

Willkommen Foren LogoControl Netzwerk Relais / LogoControl / TCP-Befehle / sh.Scripte

5 Beiträge anzeigen - 1 bis 5 (von insgesamt 5)
  • Autor
    Beiträge
  • #3588
    Gerdi
    Teilnehmer

    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 Zustandes

    Ich 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

    #3590
    admin
    Administrator

    Also 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.

    #3591
    Gerdi
    Teilnehmer

    Das hört sich gut an. Hat jemand schon mal ein bash-script geschrieben das den Web Service aufruft und ein Attribut beschreibt?

    Danke

    #3592
    admin
    Administrator

    Ja, 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

    #3594
    Gerdi
    Teilnehmer

    So….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…..

    • Diese Antwort wurde vor vor 7 Jahren, 1 Monat von Gerdi bearbeitet.
    • Diese Antwort wurde vor vor 7 Jahren, 1 Monat von Gerdi bearbeitet.
5 Beiträge anzeigen - 1 bis 5 (von insgesamt 5)
  • Du musst angemeldet sein, um zu diesem Thema eine Antwort verfassen zu können.