Digitale Pins in Logocontrol einbeziehen

Willkommen Foren LogoControl Digitale Pins in Logocontrol einbeziehen

13 Beiträge anzeigen - 1 bis 13 (von insgesamt 13)
  • Autor
    Beiträge
  • #3518
    Doc1983
    Teilnehmer

    Hallo allerseits. Ich habe Dank dieser Seite mein Haus mit dieser Steuerung realisiert…was auch ziemlich gut klappt. Ein weiter Teil meines Projektes sind die PIR Bewegungsmelder (für Raspy bzw. Arduino) welche ich zur Zeit auf Umwegen über Arduio in Verbindung mit Relais die Signale an meine Logo8 schicke. Ich wollte daher fragen, wie ich die PIR direkt an die Eingänge des Raspy nutzen kann. Füge hinzu…es sind im ganzen Haus 24 bwm installiert.

    Für euer Hilfe wäre ich sehr dankbar.

    #3532
    stpg
    Teilnehmer

    Also nur über einen Umweg.

    Die digitalen Pins auswerten (gibt 1000 Tuts) und bei Betätigung einen Script ausführen. Im Script dann folgende Zeile ausführen:

    curl logocontrol:8088/rest/Device…..

    Und eben eine Methode anlegen. Diese dann z.b mit der 100.1 verknüpfen und in der Logo einen NI mit der VB 100.1 anlegen.

    Schon hast du den PIN von RasPI in der Logo und kannst es dort weiter verarbeiten. Über einen Merker z.B dann wieder als Attribut bzw. Status in der Logo Control anzeigen.

    Hoffe du verstehst was ich meine. Beispiel folgt morgen wenn ich wieder am PC sitze und nicht am Smartphone.

    #3534
    Doc1983
    Teilnehmer

    Hi. Also, ich hab jetzt etwas rum experimentiert…aber viel geholfen hat es nicht. Könntest du mir, sobald du Zeit hast ein Bsp. Posten…das würde mir schon enorm weiter helfen.

    Gruß Richard

    #3535
    stpg
    Teilnehmer

    Hallo Richard,
    bin jetzt erst dazu gekommen. Habe zum Test mal einen Taster an den Raspberry angeschlossen. GPIO4 in meinem Fall.

    Also let´s go:

    sudo nano tigger.sh

    Da packen wir jetzt das rein:

    #!/bin/bash
    
    # Den Pin als Eingang definieren
    echo "4" > /sys/class/gpio/export
    echo "in" > /sys/class/gpio/gpio4/direction
    
    # Den Zustand des Eingangs lesen
    previous=$(cat /sys/class/gpio/gpio4/value)
    
    # Endlose Schleife
    while true
    do
      # Den Zustand des Eingangs lesen
      pin=$(cat /sys/class/gpio/gpio4/value)
    
      # Wenn der Zustand geändert hat
      if [ $pin -ne $previous ]
      then
        if [ $pin -lt $previous ]
        then
          # Eingeschaltet
          curl logocontrol:8088/rest/devices/1/methods/1
        else
          # Ausgeschaltet
          curl logocontrol:8088/rest/devices/1/methods/2
        fi
      fi
    
      previous=$pin
      sleep 0.5
    done

    Dann in der Config folgendes Schreiben:

    <device id="1" name="Bewegunsmelder 1" type="light">						
    <method id="1" name="BWM1 AN" plc="myLogo" address="100.1" />
    <method id="2" name="BWM1 AUS" plc="myLogo" address="100.2" />
    </device>

    In der LogoSoft sieht das dann so aus:

    NI setzen Rücksetzen

    Geht aber auch mit einer direkten Ansteuerung von NI1 und NI2. Ich hab es nur gerne eindeutig Adressiert.
    Sollte aber in der Config auch so gehen:

    <device id="1" name="Bewegunsmelder 1" type="light">						
    <method id="1" name="BWM1 AN" plc="myLogo" address="NI1" />
    <method id="2" name="BWM1 AUS" plc="myLogo" address="NI2" />
    </device>

    Hoffe das klappt jetzt bei dir.

    #3536
    Doc1983
    Teilnehmer

    Das sieht doch schon sehr vielversprechend aus. Werde das morgen mal ausprobieren…wobei ich die zweite if Abfrage sowie den NI2 weglassen werde, da für mich nur die steigende Flange des Bewegungsmelders interessiert.
    Die schon mal vielen Dank.
    GRUß

    #3537
    Doc1983
    Teilnehmer

    HI noch mal. Ich habe das jetzt heute mal ausprobiert.
    Iwi haut das bei mir nicht hin.
    Das Signal geht irgendwo verloren bzw. kommt nicht an.
    In der LogoControl Config Seite bzw. im browser kann ich den neu angelegten Punkt betätigen und alles klappt…aber eben nicht der Pin.
    habe in der config device 200 genommen und in skript das eben angepasst. Pin4 habe ich so zum testen gelassen.
    Desweiteren habe ich noch 3 Fragen…
    a) wie kann ich einsehen, ob überhaupt der Pin4 aktiviert wird?
    b) die 1. if abfrage kann ich mir eigentlich sparen, da der bwm theoretisch bei keiner Bewegung kein Signal ausgibt. Und die else für die rücksetztung mach ich auch in der UDF in der Logo…ergo auch weglassen (ohne probleme?)
    c) wie sieht es nun hier mit den Anzahl der BWMelders aus. Alles in ein skript und dann per if…? Ich frage mich da nur, die If abfrage läuft ja einmal durch oder eben beim übereinstimmen nur bis zu dem Punkt, was übereinstimmt. Was würde geschehen wenn zur gleichen Zeit ein zweiter BWM anspringt…?

    #3538
    stpg
    Teilnehmer

    Script ausführbar gemacht?
    sudo chmod +x Tigger.sh

    Und schau mal ob der Pi gewertet wird

    in der konsole:

    gpio mode 4 in
    gpio read 4

    bzw. schau mal das du gpio nicht mit der PIN verwechselst.
    informiere dich mal bitte über gpio

    The GPIO utility

    #3539
    Doc1983
    Teilnehmer

    jap…alles gemacht.
    habe mit nem test skript den wert ausgelesen…der ändert sich wunderbar und einen zweien script, wo ich bei einfachem ausführen den curl nutze…was auch funktioniert. Scheinbar hackt es irgendwo in der value. Ich hatte auch deinen script kopiert…also schreibfehler ausgeschlossen 😉

    #3540
    Doc1983
    Teilnehmer

    also…hab das erstmal hinbekommen, das Signal kommt in der Logo an…aber….nach ca. erst 5 bis 7 Sekunden 😀
    und in der Konsole kommt ein riesen text (hatte ich bei den einzelnen jeweiligen Scripten nicht so gehabt.
    //
    ./tigger.sh: Zeile 4: echo: Schreibfehler: Das Gerät oder die Ressource ist bele gt.
    <Fault xmlns=“http://schemas.microsoft.com/ws/2005/05/envelope/none“&gt;<Valu e xmlns:a=“http://schemas.microsoft.com/ws/2005/05/addressing/none“>a:InternalSe rviceFault</Value><Reason><Text xml:lang=“de-DE“>the desired address is b eyond limit for this PLC</Text></Reason><Detail><ExceptionDetail xmlns:i=“http:/ /www.w3.org/2001/XMLSchema-instance“ xmlns=“http://schemas.datacontract.org/2004 /07/System.ServiceModel“><HelpLink i:nil=“true“ /><InnerException i:nil=“true“ / ><Message>the desired address is beyond limit for this PLC</Message><StackTrace> at LogoControl.Logo.LogoConnection.CheckResultCodeAndReconnectIfNeeded (Int32 res) [0x00000] in <filename unknown>:0
    at LogoControl.Logo.LogoConnection.SetBit (Int32 byteNumber, Int32 bitNumber, Boolean state) [0x00000] in <filename unknown>:0
    at LogoControl.DataModel.Device.ExecuteDeviceMethod (LogoControl.DataModel.Dev iceMethod method, IPlcConnection logo) [0x00000] in <filename unknown>:0
    at LogoControl.Remote.RemoteControlService.ExecuteMethod (System.String device Id, System.String methodId) [0x00000] in <filename unknown>:0 </StackTrace ><Type>System.ApplicationException</Type></ExceptionDetail></Detail></Fault>true

    #3541
    Doc1983
    Teilnehmer

    ah und noch was…wenn ich raus bin, oder ein weiteres script starte…tut sich auch nix mehr…ich müsste trigger wieder ausführen, damit der Melder fröhlich weiter seine Signale weiterleitet

    #3542
    Doc1983
    Teilnehmer

    SO. Wieder mal langes hin und her und jetzt läuft es schon wesentlich besser. Der Riesen Text kam daher, das ich die zweit device nicht zugordnet hatte. Der ist jetzt auch weg. Und das war der Grund, warum sich alles so exrem verzögert hatte.

    Bleiben jetzt nur noch zwei fragen…

    1. wie realisere ich es mit 24 BWMeldern und…
    2. so, das dass Script auch schön im Hintergrund weiterläuft.

    PS: vielen Danke dir für deine mühen 😉

    • Diese Antwort wurde vor vor 7 Jahren, 2 Monaten von Doc1983 bearbeitet.
    #3544
    stpg
    Teilnehmer

    Der neue Script erstmal für 6 BWM.

    Also erstmal erstellen:

    sudo nano bwm.sh

    Dann füllen 🙂

    #!/bin/bash
    
    while [ true ]  
    do
    
    #GPIOs einstellen auf IN
    gpio mode 4 in
    gpio mode 5 in
    gpio mode 6 in
    gpio mode 7 in
    gpio mode 8 in
    gpio mode 9 in
    #usw...
    #GPIOs lesen
    bwm1=$(gpio read 4)
    bwm2=$(gpio read 5)
    bwm3=$(gpio read 6)
    bwm4=$(gpio read 7)
    bwm5=$(gpio read 8)
    bwm6=$(gpio read 9)
    #usw...
    
    #Jetzt setzen wir die Werte in der Logo
    curl logocontrol:8088/rest//devices/1/attributes/1/value?set=$bwm1
    curl logocontrol:8088/rest//devices/1/attributes/1/value?set=$bwm2
    curl logocontrol:8088/rest//devices/1/attributes/1/value?set=$bwm3
    curl logocontrol:8088/rest//devices/1/attributes/1/value?set=$bwm4
    curl logocontrol:8088/rest//devices/1/attributes/1/value?set=$bwm5
    curl logocontrol:8088/rest//devices/1/attributes/1/value?set=$bwm6
    #usw...
    
    sleep 0.5
    done

    Jetzt zur Config:

    Als erstes mal einen neuen TextConverter

    <calculation id="bwm">
        <!-- Analogwert zu/von Wert in Wert -->
        <valueToText calculation="{[value]/1}"/>
        <textToValue valueParseRegex="([\d.,]+)\w*" calculation="{[value1]*1}"/>
    </calculation>
    </valueTextConverter>

    Und dann entsprechendes Device:

    <device id="1" name="Bewegungsmelder" type="ot">
    	<attribute id="1" name="BWM1" plc="myLogo" address="100" datatype="dword" valueTextConverter="bwm" />
    	<attribute id="2" name="BWM2" plc="myLogo" address="104" datatype="dword" valueTextConverter="bwm" />
    	<attribute id="3" name="BWM3" plc="myLogo" address="108" datatype="dword" valueTextConverter="bwm" />
    	<attribute id="4" name="BWM4" plc="myLogo" address="112" datatype="dword" valueTextConverter="bwm" />
    	<attribute id="5" name="BWM5" plc="myLogo" address="116" datatype="dword" valueTextConverter="bwm" />
    	<attribute id="6" name="BWM6" plc="myLogo" address="120" datatype="dword" valueTextConverter="bwm" />				
    </device>

    dann wieder ausführbar machen

    sudo chmod +x bwm.sh

    Und dann noch in der Logo:

    Programm

    und dann die Variablen Speicher anpassen:

    VM

    Am ende ist M1 aktiv solange BWM1 an GPIO 4 aktiv ist. M2 solange BMW 2 an GPIO 5 usw.

    • Diese Antwort wurde vor vor 7 Jahren, 2 Monaten von stpg bearbeitet.
    • Diese Antwort wurde vor vor 7 Jahren, 2 Monaten von stpg bearbeitet.
    • Diese Antwort wurde vor vor 7 Jahren, 2 Monaten von stpg bearbeitet.
    • Diese Antwort wurde vor vor 7 Jahren, 2 Monaten von stpg bearbeitet. Grund: Jetzt müsste es aber gehen
    • Diese Antwort wurde vor vor 7 Jahren, 2 Monaten von stpg bearbeitet.
    #3558
    Doc1983
    Teilnehmer

    Hey Hey. Also…es klappt. Hab ein paar sachen ändern müssen, das einlesen der Pins hat so nicht funktioniert und ich hatte ständig
    probleme mit den GPIO´s 2 und 3…ka warum.

    Aber jetzt läufts so wie ich es will. Danke dir vielmals 😉

13 Beiträge anzeigen - 1 bis 13 (von insgesamt 13)
  • Du musst angemeldet sein, um zu diesem Thema eine Antwort verfassen zu können.