Page 1 of 1

Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge

Posted: 22 Nov 2018, 21:48
by TheBlackBird
Hallo zusammen,
ich bin jetzt vom normalen Pi auf das RevPi Core 3 umgestiegen, leider funktuniert meine Bashprogrammierung nicht.
Ich lese 2 Taster ein und möchte bei einem bestimmten Zustand eine LED leuchten lassen. Hardware passt soweit alles (alles richtig angeschlossen und getestet) also liegt es nur noch an der Software.
Am besten würde ich die Bash Programmierung beibehalten.
Vermutlich ist die Lösung ganz einfach aber ich komme nicht dahinter !

Hier mein altes Programm:

Code: Select all

#!/bin/sh
# Version: 1.0

# GPIO setzen
echo "23" > /sys/class/gpio/export
echo "24" > /sys/class/gpio/export

echo "GPIO setzen"

# GPIO als Eingang deklarieren
echo "in" > /sys/class/gpio/gpio23/direction
echo "in" > /sys/class/gpio/gpio24/direction

echo "GPIO deklarieren"

# Dauerschleife starten
while [ true ]
do
	# GPIO abfragen
	stoer=$(cat /sys/class/gpio/gpio23/value)
	gas=$(cat /sys/class/gpio/gpio24/value)
echo $stoer
echo $gas
	# Dauerschleife für GPIO abfrage
	if [ $stoer = 0 ] && [ $gas = 0 ]
	then

echo "kein Alarm"
# -----Hier soll: Betriebslampe Output_1 gleich 1!!!!!
sleep 1
	fi

	# Störungsalarm schalten
	if [ $stoer != 0 ]
                then
                 
echo "Störung"
# -----Hier soll: Betriebslampe Output_1 gleich 0!!!!!
              
sleep 1
        fi

	# CO²-Alarm schalten
        if [ $gas != 0 ]
                then
echo "Gasalarm"
# -----Hier soll: Betriebslampe Output_1 gleich 0!!!!!
sleep 1

        fi
done




Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge

Posted: 23 Nov 2018, 07:34
by Eduard
Hallo,
das wird so nicht funktionieren. Der RevPi hat doch keine Eingänge, nur in Verbindung mit einem DIO oder DI hast du Eingänge.
Wo hast du deine Taster angeschlossen?
Wie du auf das Prozessabbild zugreifen kannst findest du zum Beispiel hier.
Gruß
Eduard

Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge

Posted: 23 Nov 2018, 09:10
by TheBlackBird
Guten Morgen,
ja, ich verwende ein DIO Modul zusätzlich zu meinem RevPi Core 3.

Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge

Posted: 26 Nov 2018, 13:59
by TheBlackBird
Hallo,
leider werde ich aus dem Beispiel aus dem Prozessabbild nicht schlau.

Ich verwende das Core 3 mit einem DIO-Erweiterungsmodul
Vll können Sie mir ja weiterhelfen.
Gruß
Jörg

Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge

Posted: 26 Nov 2018, 15:51
by dirk
Hi, schau dir einfach kurz mal das Tutorial 12 – Ansteuerung der I/O-Module über die PiBridge an, dann wird alles klar.

Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge

Posted: 26 Nov 2018, 20:29
by TheBlackBird
Leider hat mir bisher nichts weitergeholfen !!!

Ich habe oben mein bisheriges Programm vom Raspi mit Bash reingestellt. Dort funktuniert es.

Wie muss ich den für Das RevPi Änderungen vornehmen damit ich ohne Probleme in dieses laufende Programm meine Eingänge und Ausgänge einlesen/ausgeben kann?? Natürlich über das DIO-Modul.

Vll können Sie mir ja auch ein einfaches Bash oder Python Programm zukommen lassen für einen Eingang und Ausgang.
Damit ich sehen kann welche Bibs und sonstige Sachen einbinden muss.

Aus den Videos und den Beispielprogrammen werde ich bisher nicht schlau.

Vielen Dank

Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge

Posted: 28 Nov 2018, 07:46
by dirk
Hallo,
du kannst das "piTest" Programm verwenden zum Lesen der Eingänge und Schreiben der Ausgänge. Bitte schau im PiCtory nach, wie die Ein- und Ausgänge deines DIOs benannt sind.
Ich habe hier "I_1" und "O_1" verwendet. Viel Erfolg.

Code: Select all

#!/bin/sh
# Version: 1.0

# Dauerschleife starten
while [ true ]
do
	# GPIO abfragen
	stoer=$(piTest -1 -q -r I_1)
	gas=$(piTest -1 -q -r I_2)
echo $stoer
echo $gas
	# Dauerschleife für GPIO abfrage
	if [ $stoer = 0 ] && [ $gas = 0 ]
	then

echo "kein Alarm"
# -----Hier soll: Betriebslampe Output_1 gleich 1!!!!!
piTest -w O_1,1
sleep 1
	fi

	# Störungsalarm schalten
	if [ $stoer != 0 ]
		
                then
                 
echo "Störung"
# -----Hier soll: Betriebslampe Output_1 gleich 0!!!!!
piTest -w O_1,0
sleep 1
        fi

	# CO²-Alarm schalten
        if [ $gas != 0 ]
                then
echo "Gasalarm"
# -----Hier soll: Betriebslampe Output_1 gleich 0!!!!!
piTest -w O_1,0
sleep 1

        fi
done

Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge

Posted: 28 Nov 2018, 09:43
by Eduard
Hallo,
hier ist noch ein einfaches Python Programm. Das Programm fragt nach dem Eingang (I1) des DIOs und setzt den Ausgang (O1) wenn der Eingang(I1) „high“ ist.
In diesem Programm musst du noch die Offsets (INPUT und OUTPUT) anpassen.

Code: Select all

import struct
import time

class RevPiDIO():

  # Central process iamge offset values...
  INPUT = 0
  OUTPUT = 70 

  f = None # piControl access device
          
  def __init__(self):
    self.f=open("/dev/piControl0","wb+",0)
    return

  #.-----------------------------------------------
  def getInput(self):
    self.f.seek(self.INPUT)
    x = self.f.read(2)
    s = struct.unpack('H',x)
    i = s[0]
    return i
      
  def getOutput(self):
    self.f.seek(self.OUTPUT)
    x = self.f.read(2)
    s = struct.unpack('H',x)
    i = s[0]
    return i  
      
  def setOutput(self, OUT):
    self.f.seek(self.OUTPUT)
    x = struct.pack('H', OUT)
    self.f.write(x)
    return       
          
  def run(self):
         
    while True:
      
      time.sleep(1)
              
      input_temp = self.getInput()
      input_temp = input_temp & 0x0001 
        
      if (input_temp==0x0001):
        output_temp = self.getOutput()
        output_temp = output_temp | 0x0001
        self.setOutput(output_temp)
      else:
        output_temp = self.getOutput()
        output_temp = output_temp & 0xFFFE
        self.setOutput(output_temp)

RevPi = RevPiDIO()
RevPi.run()   
Die Offsets kannst du mit „piTest –d“ abfragen siehe Bild.
piTest -d.png
piTest -d.png (12.31 KiB) Viewed 12349 times
Den Python Script kannst du mit „ python3 scriptname“ ausführen.

Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge

Posted: 30 Nov 2018, 15:35
by RevPiModIO
Na, wenn man auf Python geht, kann man es noch einfacher und weniger abschreckend machen :P

Man müsste nur eben die Namen der IOs aus piCtory im Code Ändern. Ich verwende I_1 + I_2 und als Ausgang O_1.

Und in der Funktion "zyklus" eben die Bedingungen, bei welchen Zuständen von I_1 + I_2 der Ausgang O_1 gesetzt oder zurückgesetzt werden soll:

Code: Select all

#!/usr/bin/python3
# -*- coding: utf-8 -*-
u"""Kleines Programm um zwei Eingänge zu prüfen und einen Ausgang zu sezten."""
import revpimodio2

# RevPiModIO instanziieren
rpi = revpimodio2.RevPiModIO(autorefresh=True)
rpi.handlesignalend()


def zyklus(ct):
    u"""Zyklusfunktion für Steuerung."""

    # Ausgang setzen wenn I_1 und nicht I_2
    if rpi.io.I_1.value and not rpi.io.I_2.value:
        rpi.io.O_1.value = True

    # Ausgang rücksetzen wenn I_2 und nicht I_1
    if rpi.io.I_2.value and not rpi.io.I_1.value:
        rpi.io.O_1.value = False


print("gehe in loop")
rpi.cycleloop(zyklus)
print("programm ende")

Als einzige Abhängigkeit müsste das "python3-revpimodio2" Modul auf dem System installiert werden:

Code: Select all

pi@RevPi ~/ $ sudo apt-get update

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

Möchte man bei der bash bleiben, ist das von Dirk schon ganz cool :idea:

Gruß, Sven

Re: Umstieg Raspi auf Core 3, Problem mit Bash + Abfrage Eingänge

Posted: 10 Dec 2018, 14:45
by TheBlackBird
dirk wrote: 28 Nov 2018, 07:46 Hallo,
du kannst das "piTest" Programm verwenden zum Lesen der Eingänge und Schreiben der Ausgänge. Bitte schau im PiCtory nach, wie die Ein- und Ausgänge deines DIOs benannt sind.
Ich habe hier "I_1" und "O_1" verwendet. Viel Erfolg.

Code: Select all

#!/bin/sh
# Version: 1.0

# Dauerschleife starten
while [ true ]
do
	# GPIO abfragen
	stoer=$(piTest -1 -q -r I_1)
	gas=$(piTest -1 -q -r I_2)
echo $stoer
echo $gas
	# Dauerschleife für GPIO abfrage
	if [ $stoer = 0 ] && [ $gas = 0 ]
	then

echo "kein Alarm"
# -----Hier soll: Betriebslampe Output_1 gleich 1!!!!!
piTest -w O_1,1
sleep 1
	fi

	# Störungsalarm schalten
	if [ $stoer != 0 ]
		
                then
                 
echo "Störung"
# -----Hier soll: Betriebslampe Output_1 gleich 0!!!!!
piTest -w O_1,0
sleep 1
        fi

	# CO²-Alarm schalten
        if [ $gas != 0 ]
                then
echo "Gasalarm"
# -----Hier soll: Betriebslampe Output_1 gleich 0!!!!!
piTest -w O_1,0
sleep 1

        fi
done
Vielen Dank. So funktioniert es.