# Raspberry Pi - Datei starten



## david d (31 August 2015)

Hallo,

weis jemand ob man über einen Piface Eingang und CODESYS SPS Programm eine Datei auf dem Raspberry ausführen kann?.
Ich möchte über das SPS Programm z.B. eine WAV Datei abspielen.

grüße
david


----------



## HausSPSler (6 September 2015)

Hallo David

also wenn du schon mp3's abspielen kannst (über die Linux Konsole) dann kannst du den ersten Teil überspringen:
Anleitung:

am besten mit ssh (putty) zum Pi verbinden…

Dann musst du folgende
Befehle ausführen: (Zeile markieren und mit rechtsclick in putty kopieren +
ausführen also zeilenweise meine ich)
sudo apt-get install
alsa-utils
sudo
apt-get install mpg321
sudo
reboot

sudo
modprobe snd_bcm2835


sudo
amixer cset numid=3  1

dann
must du eine Datei editeeren _/usr/share/alsa/alsa.conf:_

*sudo nano
/usr/share/alsa/alsa.conf*




*Change
     the line “pcm.front cards.pcm.front” to “pcm.front cards.pcm.default”*

So nun kommt der Teil der für CODESYS wichtig ist:


sudo nano
/etc/CODESYSControl.cfg

[SysProcess]
Command.0=mpg321

Im CODESYS Projekt SysProcessExecuteCommand (aus der SysProcess.library) oder SysProcessExecuteCommand2 (der ist neu in SP7 und liefert den Rückgabewert in die IEC Welt hoch) aufrufen.
Dazu mache ich dir noch ein Beispiel.
Btte unbedingt dieses Kommando (welches du dann über die Piface Taste startest) in einer eigenen Task aufrufen, das ist wichtig(diese Kommando's sind blockierend d.h die Task in IEC steht solange..)!



Grüße


----------



## Knaller (6 September 2015)

Moin
Hallo Edwin 

So früh schon wieder dran?

Hab mir das Command2 noch nicht angeschaut.     Aber welche Werte kommen da zurück ?  Hast du vieleicht ein Beispiel?    Ich liebäugle immer noch mit KNX.
Über den EIBD Treiber kann ich werte schreiben und auch lesen.  Daher mein Interesse 
Gruß herbert



Sent from my iPhone using Tapatalk


----------



## HausSPSler (6 September 2015)

Moin,
ja auch... da kommt folgendes zurück:

Grüße
Edwin


----------



## david d (14 September 2015)

Hallo Edwin,

ich habe soweit alles installiert. Mit dem Kommando zum starten komme ich noch nicht ganz klar, bzw. wie ich es über den GPIO starte.

grüße
david


----------



## HausSPSler (14 September 2015)

Hallo David,
kannst du mit meinem Projekt von oben denn schon ein MP3 über die PI SPS abspielen?
Grüße
Edwin


----------



## david d (16 September 2015)

Hallo Edwin,

ja jetzt funktioniert es. 
Habe beim Programmaufruf  die Variable xPlaySound auf VAR_INPUT setzen müssen.
Da ich dein Beispiel in mein Projekt eingefügt habe hat noch die Bibliothek "SysTypes" gefehlt.

vielen Dank
grüße david


----------



## PI_Neuling (20 Juni 2016)

Hallo Edwin,

ich habe die passende Bibliothek eingebunden und habe einen Befehl eingegeben. Dieser wird allerdings auf dem Raspberry nicht ausgeführt. Ich möchte eine Wandlung von .h264 nach .mp4 machen, mit MP4Box. Dierekt auf dem Raspberry funktioniert der Befehl,  gibt es noch eine Besonderheit für das senden von Befehlen? Ich nutze SysProcessExecuteCommand();


----------



## HausSPSler (20 Juni 2016)

Hi,
das geht mit allen Befehlen.
Wie heißt der Befehl genau?
Hast du diesen über /etc/CODESYSControl.cfg freigeschaltet?

Grüße


----------



## PI_Neuling (20 Juni 2016)

Hallo Edwin,

Command ist bei mir AllowAll. Der Befehl lautet 'MP4Box -add /media/pi/INTENSO/Videos/video1_1.h264 /media/pi/INTENSO/Videos/video1_1.mp4'
Das Video befindet sich auf einem Stick und soll dort umgewandelt werden. In dem Verzeichnis erscheint aber keine neue Datei nach dem Aufruf aus Codesys. 

Gruß


----------



## HausSPSler (20 Juni 2016)

hm.. müsste schon gehen so,
was immer wieder falsch gemacht wird, ist das in der CODESYSControl.cfg der Eintrag versehentlich doppelt angelegt wird.
(es gibt schon eine Sektion in dem File... bitte diese verwenden für AllowAll)
Dann in IEC müsstest du einen Rückgabewert bekommen, der ist dann 25 was dann bedeutet keine Rechte diese Kommando aufzurufen.
Grüße


----------



## PI_Neuling (21 Juni 2016)

Hallo Edwin,

danke für die schnelle Antwort, ich habe bei mir einen Eintrag unter [SysProcess]. Den habe ich auch mal deaktiviert. Beides Mal kommt aber die 25 zurück.

Ich habe mal meinen Code angehängt.



Gruß
Christian


----------



## HausSPSler (21 Juni 2016)

Hi,
wie gesagt 25 bedeutet du "keine Rechte" - häng doch mal noch CODESYSControl.cfg an.

Grüße


----------



## PI_Neuling (21 Juni 2016)

Achso, natürlich.

Dies ist meine CODESYSControl.cfg:

###################################

[ComponentManager]
Component.1=CmpOpenSSL
Component.2=CmpCAACanL2
Component.3=CmpCAASdoServer
Component.4=CmpCAASdoClient
Component.5=CmpSocketCanDrv

[SysFile]
FilePath.1=/etc/, 3S.dat
PlcLogicPrefix=0

[CmpSettings]
FileReference.0=SysFileMap.cfg, SysFileMap

[SysExcept]
Linux.DisableFpuOverflowException=1
Linux.DisableFpuUnderflowException=1
Linux.DisableFpuInvalidOperationException=1

[SysProcess]
Command.0=rcSwitch
Command = AllowAll

[CmpWebServer]
ConnectionType=0

[CmpOpenSSL]
WebServer.Cert=server.cer
WebServer.PrivateKey=server.key
WebServer.CipherList=HIGH

[CmpLog]
;Logger.0.Name=StdLogger
;Logger.0.Enable=1
;Logger.0.MaxEntries=100000
;Logger.0.MaxFileSize=500000
;Logger.0.MaxFiles=3
;Logger.0.Backend.0.ClassId=0x0000010B
;Logger.0.Backend.1.ClassId=0x00000104
;Logger.0.Filter=0xFFFFFFFF

[CmpApp]
Bootproject.RetainMismatch.Init=1
Application.1=Application

[SysMem]
Linux.Memlock=0

[CmpCodeMeter]
InitLicenseFile.0=3SLicense.wbb

[SysEthernet]
Linux.ProtocolFilter=3

[SysCom]
Linux.Devicefile=/dev/ttyAMA
portnum := COM.SysCom.SYS_COMPORT1

###################################

Diese befindet sich in /etc/


----------



## HausSPSler (21 Juni 2016)

so:
[SysProcess]
Command=AllowAll

dann geht's "AllowAll" schaltet ja alle Befehle frei... also braucht es den anderen nicht mehr!
Grüße


----------



## PI_Neuling (21 Juni 2016)

Das habe ich jetzt gemacht, leider kommt immer noch die 25 zurück, muss ich noch irgendwo Benutzername und Kennwort für den Raspberry eingeben?


----------



## HausSPSler (21 Juni 2016)

Hi,
auch die SPS neu gestartet nachdem zu es geändert hast?
Grüße


----------



## PI_Neuling (22 Juni 2016)

Hallo Edwin,

ich habe den Raspberry mit sudo reboot neugestartet und die SPS urgelöscht und das Programm neu geladen. Funktioniert leider immer noch nicht, kann das damit zusammenhängen, das ich die Dateien auf einem Stick umwandeln möchte?

Gruß
Christian


----------



## HausSPSler (23 Juni 2016)

Hallo Christian,
es muss gehen!
bitte überprüfe noch einmal dein config file: 1 darf nur eine Sektion von SysProcess geben in dem File und Command.0=rcSwitch solltest du entfernen

[SysProcess]
 Command=AllowAll

dann nochmals die Fehlermeldung anschauen im IEC Code wenn du es aufrufst.

Grüße


----------



## PI_Neuling (23 Juni 2016)

Hallo Edwin,

hast recht es funktioniert. Ich habe jetzt genau:

[SysProcess]
Command=AllowAll

eingegeben.

Vorher hatte ich immer:

[SysProcess]
Command = AllowAll

Deshalb hat er das auch nicht erkannt wegen der Leerzeichen.

Vielen Dank für die Unterstützung.

Gruß
Christian


----------



## mike1976 (24 Oktober 2016)

Hallo,
wollte keinen neuen Beitrag aufmachen da mein anliegen eigentlich eh hier rein passt.

Und zwar, bin auch relativer Raspberry und Codesys neuling, muss ich dazu sagen.

Das mit den Commands senden bzw dateien Starten, habe ich erfolgreich zusammengebracht.
Starte damit eine SMS übertragung per "gammu" in codesys schaut das ganze dan so aus: voralarm : STRING := 'echo "Batteriezustand: voralarm" | sudo gammu sendsms TEXT +43xxxxxxxxxxxxx;
läuft einwandfrei.
Umgekehrt damit ich eine aktion am raspberry in codesys auslöse, habe ich den umweg das ich eine sms an den pi sende, mittels smstools auswerte und dann damit einen GPIO schalte und den dann in der codesys auswerte.
Ist sicherlich nicht die schönste lösung, geht aber, zwar halt nur eingeschränkt da ich gerne aktuelle werte von der codesys hätte.

So da komm ich jetzt mal zu meinem anliegen:
1.) Ist es möglich das ich auch einen Wert zb. eines analogeingang oder irgendeiner Variablen übertragen kann? Soll heissen anstatt der Meldung wie zb. "Batteriezustand: voralarm" steht ein aktueller wert!
2.) Gibt es irgendein muster projekt wo jemand mit dem Raspberry pi und codesys per sms befehle sendet und empfängt?  Also direkt in der codesys auswertet?

Bitte seid gnädig mit mir, scribt mässig bin ich ein kompletter neuling.

Gruß Mike


----------



## HausSPSler (25 Oktober 2016)

Hallo Mike,
schöne Sache, vielleicht kannst du für andere mal noch genauer beschreiben, was du alles installiert hast damit du per Kommando Zeile ne SMS senden kannst
und welche Hardware (Stick?) du dafür verwendest.
Damit du Werte verschicken kannst musst du ja lediglich deinen String dann mit "concat" zusammenbauen.

Also den Wert in string wandeln..  so in der Art:

strValue:=REAL_TO_STRING(rValue);

dann über mehrere Concats den String den du für das Kommando brauchst zusammen setzen also praktisch dein Commando das du an Sysprocess gibst zusammensetzen:

strCommand:=CONCAT(strCAMCommand,strValue);
usw...

Grüße


----------

