Willkommen › Foren › LogoControl › Digitale Pins in Logocontrol einbeziehen
Verschlagwortet: PIR Bewegungsmelder über Rasby Logocontrol
- Dieses Thema hat 12 Antworten sowie 2 Stimmen und wurde zuletzt vor vor 7 Jahren, 3 Monaten von Doc1983 aktualisiert.
-
AutorBeiträge
-
29. August 2017 um 10:03 #3518Doc1983Teilnehmer
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.
29. August 2017 um 21:59 #3532stpgTeilnehmerAlso 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.
1. September 2017 um 22:15 #3534Doc1983TeilnehmerHi. 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
2. September 2017 um 20:10 #3535stpgTeilnehmerHallo 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:
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.
3. September 2017 um 21:13 #3536Doc1983TeilnehmerDas 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ß4. September 2017 um 21:28 #3537Doc1983TeilnehmerHI 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…?4. September 2017 um 22:08 #3538stpgTeilnehmerScript ausführbar gemacht?
sudo chmod +x Tigger.shUnd schau mal ob der Pi gewertet wird
in der konsole:
gpio mode 4 in
gpio read 4bzw. schau mal das du gpio nicht mit der PIN verwechselst.
informiere dich mal bitte über gpio4. September 2017 um 22:32 #3539Doc1983Teilnehmerjap…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 😉4. September 2017 um 23:07 #3540Doc1983Teilnehmeralso…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“><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>true4. September 2017 um 23:10 #3541Doc1983Teilnehmerah 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
4. September 2017 um 23:33 #3542Doc1983TeilnehmerSO. 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, 3 Monaten von Doc1983 bearbeitet.
5. September 2017 um 10:35 #3544stpgTeilnehmerDer 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:
und dann die Variablen Speicher anpassen:
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, 3 Monaten von stpg bearbeitet.
- Diese Antwort wurde vor vor 7 Jahren, 3 Monaten von stpg bearbeitet.
- Diese Antwort wurde vor vor 7 Jahren, 3 Monaten von stpg bearbeitet.
- Diese Antwort wurde vor vor 7 Jahren, 3 Monaten von stpg bearbeitet. Grund: Jetzt müsste es aber gehen
- Diese Antwort wurde vor vor 7 Jahren, 3 Monaten von stpg bearbeitet.
23. September 2017 um 14:44 #3558Doc1983TeilnehmerHey 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 😉
-
AutorBeiträge
- Du musst angemeldet sein, um zu diesem Thema eine Antwort verfassen zu können.