Re: RevPiModIO - Python3 Direktzugriff auf IOs
Posted: 26 Feb 2017, 19:35
Hi Ingo!
Das Modul ist an sich kein eigenständiges Programm, sondern eine Bibliothek. Sie stellt dir Funktionen zur Verfügung um den RevolutionPi mit python3 "bequem" zu programmieren.
Wenn du logiCAD zum programmieren verwendest, brauchst du das Modul nicht!
Python ist eine Alternative zu logiCAD. Du kannst auf dem RevPi ein Python-Programm schreiben um deinen Pool zu steuern, müsstest dich dann aber, neben der eigentlichen Logik der Poolsteuerung, auch noch damit beschäftigen die Daten aus dem Prozessabbild zu lesen und zu schreiben. Mal angenommen du hast ein Thermometer, welches bei 23 °C ein 24V Signal auf einen Eingang gibt, dann ist die Temperatur okay. Wenn das Signal nicht anliegt willst du die Heizung einschalten.
Also konfigurierst du in piCtory einen Eingang mit dem Namen "tempok" und einen Ausgang "heizung_an".
Dann müsste man das mit Python ganz grob und unschön so ungefähr machen:
viewtopic.php?f=10&t=32
Man muss also wissen, wo in den 4096 Bytes des Prozessabbilds jetzt das Bit ist vom Eingang "tempok" ist und wo das Bit für den Ausgang "heizung_an"... Obwohl du die Ein- und Ausgänge in piCtory so benannt hast... Natürlich gibt es dafür auch Funktionen, die dir das piControl zur Verfügung stellt um die Adressen zu finden... aber ja...
Wenn du nun das Modul hier verwendest, sieht das Programm, was du in Python schreibst so aus:
Der Ausgang "heizung_an" ist dann True, wenn der Eingang "tempok" NICHT Ture ist, also deine Temperatur unter 23 °C fällt... Hier kannst du direkt die piCtory-Namen verwenden!
Um das ganze lesen, schreiben und finden der Bits und Bytes kümmert sich RevPiModIO im Hintergrund.
Und wenn du weitere Fragen hast, immer raus damit! Dafür ist unser Forum doch da
Gruß, Sven
Das Modul ist an sich kein eigenständiges Programm, sondern eine Bibliothek. Sie stellt dir Funktionen zur Verfügung um den RevolutionPi mit python3 "bequem" zu programmieren.
Wenn du logiCAD zum programmieren verwendest, brauchst du das Modul nicht!
Python ist eine Alternative zu logiCAD. Du kannst auf dem RevPi ein Python-Programm schreiben um deinen Pool zu steuern, müsstest dich dann aber, neben der eigentlichen Logik der Poolsteuerung, auch noch damit beschäftigen die Daten aus dem Prozessabbild zu lesen und zu schreiben. Mal angenommen du hast ein Thermometer, welches bei 23 °C ein 24V Signal auf einen Eingang gibt, dann ist die Temperatur okay. Wenn das Signal nicht anliegt willst du die Heizung einschalten.
Also konfigurierst du in piCtory einen Eingang mit dem Namen "tempok" und einen Ausgang "heizung_an".
Dann müsste man das mit Python ganz grob und unschön so ungefähr machen:
Code: Select all
import time
fh = open("/dev/piControl0", "r+b", 0)
while True:
fh.seek(2)
mybyte = fh.read(1)
int_byte = int.from_bytes(mybyte, byteorder="little")
tempok = bool(int_byte & 1 << 3)
if not tempok:
# Jetzt wieder springen, bytes einlesen, ändern... umwandeln... schreiben... - Volker hat dazu mal ein Beispiel gemacht...
...
...
time.sleep(1)
Man muss also wissen, wo in den 4096 Bytes des Prozessabbilds jetzt das Bit ist vom Eingang "tempok" ist und wo das Bit für den Ausgang "heizung_an"... Obwohl du die Ein- und Ausgänge in piCtory so benannt hast... Natürlich gibt es dafür auch Funktionen, die dir das piControl zur Verfügung stellt um die Adressen zu finden... aber ja...
Wenn du nun das Modul hier verwendest, sieht das Programm, was du in Python schreibst so aus:
Code: Select all
import revpimodio
import time
rpi = revpimodio.RevPiModIO(auto_refresh=True)
while True:
rpi.devices["DIO1"]["heizung_an"].value = not rpi.devices["DIO1"]["tempok"].value
time.sleep(1)
Um das ganze lesen, schreiben und finden der Bits und Bytes kümmert sich RevPiModIO im Hintergrund.
Und wenn du weitere Fragen hast, immer raus damit! Dafür ist unser Forum doch da
Gruß, Sven