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

Rund um die Software von Revolution Pi
Post Reply
TheBlackBird
Posts: 12
Joined: 22 Nov 2018, 21:40

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

Post 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



Eduard
KUNBUS
Posts: 209
Joined: 18 Jun 2018, 16:16

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

Post 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
TheBlackBird
Posts: 12
Joined: 22 Nov 2018, 21:40

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

Post by TheBlackBird »

Guten Morgen,
ja, ich verwende ein DIO Modul zusätzlich zu meinem RevPi Core 3.
TheBlackBird
Posts: 12
Joined: 22 Nov 2018, 21:40

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

Post 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
User avatar
dirk
KUNBUS
Posts: 2174
Joined: 15 Dec 2016, 13:19

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

Post by dirk »

Hi, schau dir einfach kurz mal das Tutorial 12 – Ansteuerung der I/O-Module über die PiBridge an, dann wird alles klar.
TheBlackBird
Posts: 12
Joined: 22 Nov 2018, 21:40

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

Post 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
User avatar
dirk
KUNBUS
Posts: 2174
Joined: 15 Dec 2016, 13:19

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

Post 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
Eduard
KUNBUS
Posts: 209
Joined: 18 Jun 2018, 16:16

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

Post 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 12350 times
Den Python Script kannst du mit „ python3 scriptname“ ausführen.
User avatar
RevPiModIO
KUNBUS
Posts: 335
Joined: 20 Jan 2017, 08:44
Contact:

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

Post 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
python3-RevPiModIO - https://revpimodio.org/ || Der RevPi ist das Beste, was passieren konnte!
TheBlackBird
Posts: 12
Joined: 22 Nov 2018, 21:40

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

Post 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.
Post Reply