Page 1 of 5

RevPiModIO - Python3 Direktzugriff auf IOs

Posted: 20 Jan 2017, 09:30
by RevPiModIO
Veröffentlicht:

Aktuelle Version RevPiModIO2 2.5.9 vom 03.11.2021 - Download
Jetzt mit Netzwerkfunktionen für alle Plattformen, die Python sprechen.

Jetzt auch für den Connect!

Versionslog

(WHEEZY, JESSIE, STRETCH und BUSTER kompatibel)

Fragen und Antworten HIER im Forum!

Ab Jessie in den Kunbus Paketquellen:

Code: Select all

pi@RevPi ~/ $ sudo apt-get update

# Installieren - Version 2
pi@RevPi ~/ $ sudo apt-get install python3-revpimodio2

# Updaten (alles)
pi@RevPi ~/ $ sudo apt-get dist-upgrade

Über das Netzwerk auf das Prozessabbild zugreifen - https://revpimodio.org/revpipyplc/
Jetzt auch Events verwenden ohne das Programm im mainloop zu blockieren: Aufruf von mainloop(blocking=False)
Jetzt auch virtuelle Devices mit Daten füttern und in logiCAD drauf zugreifen :D

----------------------------------------------------------------------------------

Ich schreibe momentan ein Python3 Modul, über das es möglich ist die Ein und Ausgänge direkt anzusprechen. Außerdem kann die automatische Prozessbildaktualisierung aktiviert werden um Zyklisch die Daten zu erfassen.

Dabei wird die config.rsc Datei beim instantiieren eingelesen. Die darin stehenden "devicesnames" und "ionames" werden dann in Python direkt ansprechbar gemacht.

mymodule.io.ioname.value

Für eure Gateways kann man eigene Inputs und Outputs definieren, die über mehrere Bytes lang sind und einen bestimmten Datentypen abbilden.

In diesem Beispiel wird auf dem Device "devicename" eine 8 Byte lange int() Value registriert, die bei Byte "Input_5" beginnt.

Code: Select all

mymodule.io.Input_5.replace_io("timestamp", "Q")

Nachfolgende "Input Bytes" (Input_6, Input_7, ...) werden automatisch aus der Namensliste entfernt, da sie ja "überschrieben" werden.

Auch Bits können auf ein "Input Byte" registriert werden und sind direkt über den neuen Namen ansprechbar:

Code: Select all

mymodule.io.Input_4.replace_io("statusbit", "?", bit=1)

Man hat zwei Möglichkeiten für die Prozessbildaktualisierung:

Cycleloop:

Code: Select all

def zyklusprogramm(zyklustools):
    # Input direkt auf ersten Output schreiben
    mymodule.io.O_1.value = mymodule.io.I_1.value

# Zyklus starten
mymodule.cycleloop(zyklusprogramm)

Mainloop:
Eigene Prozeduren kann man als "event" an einen Input hängen, die ausgelöst werden, wenn der Input sich verändert:

Code: Select all

def myevent(ioname, iovalue):
    print("änderung", ioname, iovalue)

# Event erstellen und mainloop starten
mymodule.io.inputname.reg_event(myevent)
mymodule.mainloop()

Ab dem "mainloop" wartet das Programm auf Events (analog zu TkInter, nur das hier Inputs die Events auslösen und nicht der Benutzer, der auf einen Button klickt). Wenn sich der Wert von "inputname" ändert wird die Prozedur "myevent" ausgeführt.

Gruß, Sven Sager (naruxde)

Re: RevPiModIO - Python3 Direktzugriff auf IOs

Posted: 20 Jan 2017, 14:41
by volker
Hallo Sven,
das ist ein super schönes Projekt! Wir freuen uns auch, dass miprotec die Quellcodes bereitstellen möchte. Gerne werden wir dafür auf der Plattform einen Download ermöglichen.

Technische Fragen werden hier im Forum am schnellsten beantwortet und wir bitten um Verständnis, dass Anfragen an KUNBUS deutlich längere Reaktionszeiten haben. Wir setzen unsere Prioritäten im Projekt Revolution Pi auf die Community und investieren hier auch unsere Zeit und Mitarbeiter, weil wir davon überzeugt sind, dass wir so am effizientesten für die gesammte Community Probleme lösen können.

Re: RevPiModIO - Python3 Direktzugriff auf IOs

Posted: 06 Feb 2017, 11:07
by RevPiModIO
So, das RevPiModIO-Modul für Python3 geht JETZT in die Testphase :D

Wenn alles gut läuft veröffentlichen wir möglichst schnell eine BETA von dem Modul, damit auch andere Testen können!!!

Wir nehmen jetzt unseren Prüfungsaufbau, der von den Azubis "normalerweise" mit einer SIEMENS SPS programmiert wird.

Also machen wir damit mal die RICHTIGE REVOLUTION!!! :twisted:

Wir berichten über TWITTER: https://twitter.com/revpimodio

Gruß, Sven

Re: RevPiModIO - Python3 Direktzugriff auf IOs

Posted: 14 Feb 2017, 16:42
by RevPiModIO
Hier mal eine erste Testversion die unseren Revolutionsumbau überstanden hat :D

https://revpimodio.org/quellen/

Wäre schön, wenn wir ein paar Tester finden :D

Gruß, Sven

Re: RevPiModIO - Python3 Direktzugriff auf IOs

Posted: 22 Feb 2017, 16:03
by benjamin
Hallo zusammen,
ich habe mir das Modul aufgespielt und eines eurer Beispiele ausprobiert:
_____________________________________________________________________
#!/usr/bin/python3
import revpimodio
myrevpi = revpimodio.RevPiModIO()
myrevpi.devices.auto_refresh("RevPi Core")
myrevpi.devices["RevPi Core"].A1 = 1
myrevpi.devices["RevPi Core"].A2 = 2
for dev in myrevpi.devices:
print(dev)
______________________________________________________________________

Es läuft durch, zeigt mir auch meine devices namen an nur passiert mit A1 und A2 leider nix! :(

Gruß
Benny

Re: RevPiModIO - Python3 Direktzugriff auf IOs

Posted: 23 Feb 2017, 08:57
by RevPiModIO
Hi Benny!

Da hast du mir jetzt sehr geholfen einen Fehler zu finden!

Der Fehler steckt in dem Beispiel, das Programm ist für die automatische Prozessabbildsynchronisierung zu schnell vorbei :O Da muss ich das Modul noch mal etwas anpassen, damit auch solche "kurzen" Programme (vor allem wenn wir sie als Beispiel nennen) funktionieren!

Könntest du mir den Gefallen machen und diesen Code bei dir testen?

Code: Select all

#!/usr/bin/python3
import revpimodio
myrevpi = revpimodio.RevPiModIO()

myrevpi.devices["RevPi Core"].A1 = 1
myrevpi.devices["RevPi Core"].A2 = 2
myrevpi.devices.updateprocimg()

for dev in myrevpi.devices:
        print(dev)

print(myrevpi.devices["RevPi Core"].get_status())
Hier wird nun nicht mehr die automatische Synchronisierung (auto_refresh) verwendet, sondern die Daten mit updateprocimg() mit piControl ausgetauscht.

Da sollten die LEDs jetzt reagieren und am Ende sollte er dir, neben den Devicenamen, einen int() Wert größer 0 ausgeben.

Gruß, Sven

Re: RevPiModIO - Python3 Direktzugriff auf IOs

Posted: 23 Feb 2017, 09:41
by benjamin
Hallo Sven,

natürlich kann ich dienen Code testen. Wurde bereits erledigt, allerding immernoch ohne Erfolg beim ansteuern der LEDs.
Dies bekomm ich als Output:
__________
RevPi Core
RevPi DIO
0
__________


Gruß, Benny

Re: RevPiModIO - Python3 Direktzugriff auf IOs

Posted: 23 Feb 2017, 10:43
by RevPiModIO
Der Status 0 wundert mich.

Prüfe doch bitte einmal wie der Status mit piTest ist - müsste eigentlich auch 0 sein dann? Das würde jedoch bedeuten, dass piControl nicht läuft...

Code: Select all

piTest -r "RevPiStatus"
Generell kannst du den piControl Treiber neu starten mit

Code: Select all

/opt/KUNBUS/piControlReset
Und dann mal die Logzeilen prüfen:

Code: Select all

grep piControl /var/log/syslog | tail -n 30
Ich habe manchmal das Problem, wenn ich über piCtory die Konfiguration ändere und da "Reset Driver" mache, läuft er dennoch nicht...

Nustart von dem RevPi musste auch schon einmal sein...

Re: RevPiModIO - Python3 Direktzugriff auf IOs

Posted: 23 Feb 2017, 12:56
by benjamin
Also, nachdem ich die Konfiguration in PiCtory nochmal neu erstellt, gespeichert, die Treiber zurückgesetzt und den RevPi mal vom Stromnetz genommen habe läuft das zweite Program.
Die LEDs gehen an und meine devices werden auch aufgelistet.

Aber freut mich das ich beinem Fehler helfen konnte, der wahrschinlich nix mit meinem Problem zu tun hatte :D
Ich werde weiter testen ;)

Vielen Dank :D


Ich liebe diese Community :D

Re: RevPiModIO - Python3 Direktzugriff auf IOs

Posted: 26 Feb 2017, 12:38
by Ingo
Hi,
ich muss nun hier auch einmal eine Frage in den Raum werfen.
Es ist Zwar alles super beschrieben was ist wenn dann mache das oder jenes. Aber ich als nicht Fachmann oder der viel Ahnung von Phyton oder C hat, verstehe ich zurzeit nur Banhof. Sorry aber ich verstehe nicht ganz was das Prog. macht oder was ich damit anstellen soll/kann.
Ich habe es nur so verstanden das ich damit Eingänge setzen kann um zu sehen was am ausgang passiert und das ich sachen in Phyton übergebe. Ich bin leider etwas begriffstutzig in dieser Sache. Erklärung für "Dumme" wäre nun gut.
Ich will mich zwar nicht als Dumm bezeichen aber verstanden habe ich nichts oder nicht viel.
Leider musste ich mich bis zu diesem Zeitpunkt nicht damit befassen. Aber ich habe nach einer Mögklichkeit gesucht meinen Pool zu Automatisieren daher auch der RevPI. Die anderen Sachen wie Loxone und CO sind Preislich nicht Relevant da der Preis eine Entscheidener Faktor war. Also muss ich mich nun doch mit solchen Sachen ausseinander setzen. Daher auch die Frage. Was genau mache ich damit.
Ok ich habe mich nun die ganze Zeit mit Logicad befasst und habe dort schon viel gelernt aber die anderen Sachen sind noch Neuland für mich.

gruß