Eigene Schaltserver local erstellen durch shell_exec zugriff?

    • Eigene Schaltserver local erstellen durch shell_exec zugriff?

      Hallo liebe team ich habe nun meine neuen Wohnung und muss die GPoi´s vom Raspberry erweitern dafür habe ich die MCP23017-S gewählt. Nun meine frage hat einer von euch schon erfahrungen gemacht mit dem mcp23017?

      BZw wie kann ich die zusätzlichen GPio´s in SHC einbinden um diese auch zu nutzen?

      Liebe grüße jannek
    • Ich würde gern als Server einen Neuen ersten wo ich halt mein Script pfad angebe und den bekomm ich 16 neue GPIO am Raspi in meinen fall den natürlich 4x 16 Neue da ich ja Eingänge und Ausgänge brauche.

      Also ich stelle mir das so vor:

      Schaltserver Neu -> MCP2300XX auswählen -> Adresse eintragen (pfad zum script) -> neuer Server wird angelegt -> so das ich im SHC nun mehr gpios zur Auswahl hab. so schwer dürfte das ja nicht sein man sollte nur die Schalt server Daten dazu anpassen müssen. oder sehe ich das falsch??
    • Einen MCP230XX als weiteren Schaltserver in SHC wird in der Model Auswahl nicht verwaltet.
      Eventuell kann agent47 dazu etwas sagen.
      Was ich mir vorstellen kann den MCP230XX an einem ESP anzuschliessen.
      Den könnte man als weiteren Schaltserver dann nutzen.
      Wenn das hinhaut dann können beliebig weitere Schaltserver verwaltet werden.
      Solange es SHC 2.xxx mitmacht.

      Wenn man nur einen ESP z.b.12 nimmt, dann haste doch auch noch weitere
      Gpio zur Verfügung.
    • premo wrote:

      Werde heute abend mal ein Testaufbau machen.
      Testaufbau wurde mit dieser Anleitung erstellt.
      Raspberry Pi GPIOs mittels I2C Port Expander erweitern - Teil 1

      Unbenannt.JPG

      Anschalten der Leds ok mit
      sudo i2cset -y 1 0x20 0x15 0x07
      Ausschalten mit
      sudo i2cset -y 1 0x20 0x15 0x00
      Nun habe ich mal in SHC einen Schaltausgang "Led An" als Skript angelegt (ohne Kommando für An/Aus).Danach mit "php index.php app=shc -sw -l" die ID vom Schaltausgang ermittelt sie lautet "3".Mit folgenden Befehl werden die Leds angeschaltet.

      Source Code

      1. pi@raspberrypi:/var/www/shc $ php index.php app=shc -sw id=3 --on
      2. Element erfolgreich geschalten


      Mit diesem Befehl ausgeschaltet

      Source Code

      1. pi@raspberrypi:/var/www/shc $ php index.php app=shc -sw id=3 --off
      2. Element erfolgreich geschalten
      Jetzt wurden für für den Schaltausgang "An" die Kommandozeile
      "php index.php app=shc -sw id=3 --on"und "Aus""php index.php app=shc -sw id=3 --off"eingetragen.Leider können damt nicht die Leds an oder aus geschaltet werden.Es passiert nur dass SHC nicht mehr richtig funktioniert und der RPi sich aufhängt.
    • Also erstmal mit der MCP23017 auf den hex wert 20 eingestellt werden.

      danach kann man die zusätzlichen GPIO pins durch das Script hier sehr einfach steuern.


      Source Code

      1. #! /usr/bin/python
      2. # A simple Python command line tool to control an MCP23017 I2C IO Expander
      3. # By Nathan Chantrell http://nathan.chantrell.net
      4. # GNU GPL V3
      5. import smbus
      6. import sys
      7. import getopt
      8. bus = smbus.SMBus(1) # For revision 1 Raspberry Pi, change to bus = smbus.SMBus(1) for revision 2.
      9. address = 0x20 # I2C address of MCP23017
      10. bus.write_byte_data(0x20,0x00,0x00) # Set all of bank A to outputs
      11. bus.write_byte_data(0x20,0x01,0x00) # Set all of bank B to outputs
      12. # Let them know how it works
      13. def usage():
      14. print 'Usage: mcp23017.py -b <bank> -o <output> -s <high|low>'
      15. # Handle the command line arguments
      16. def main():
      17. try:
      18. opts, args = getopt.getopt(sys.argv[1:],"hb:o:s:",["bank=","output=","state="])
      19. if not opts:
      20. usage()
      21. sys.exit(2)
      22. except getopt.GetoptError:
      23. usage()
      24. sys.exit(2)
      25. for opt, arg in opts:
      26. if opt == '-h':
      27. usage()
      28. sys.exit()
      29. elif opt in ("-b", "--bank"):
      30. bank = arg
      31. elif opt in ("-o", "--output"):
      32. output = int(arg)
      33. elif opt in ("-s", "--state"):
      34. state = arg
      35. # Set the correct register for the banks
      36. if bank == "a" :
      37. register = 0x12
      38. elif bank == "b" :
      39. register = 0x13
      40. else:
      41. print "Error! Bank must be a or b"
      42. sys.exit()
      43. # Read current values from the IO Expander
      44. value = bus.read_byte_data(address,register)
      45. # Shift the bits for the register value, checking if they are already set first
      46. if state == "high":
      47. if (value >> output) & 1 :
      48. print "Output GP"+bank.upper()+str(output), "is already high."
      49. sys.exit()
      50. else:
      51. value += (1 << output)
      52. elif state == "low":
      53. if (value >> output) & 1 :
      54. value -= (1 << output)
      55. else:
      56. print "Output GP"+bank.upper()+str(output), "is already low."
      57. sys.exit()
      58. elif state == "read":
      59. if (value >> output) & 1 :
      60. print "high"
      61. else:
      62. print "low"
      63. sys.exit()
      64. else:
      65. print "Error! state must be high or low"
      66. sys.exit()
      67. # Now write to the IO expander
      68. bus.write_byte_data(address,register,value)
      69. # Tell them what we did
      70. print "Output GP"+bank.upper()+str(output), "changed to", state
      71. if __name__ == "__main__":
      72. main()
      Display All
      dazu muss man nur

      # SUDO mcp/20/mcp23017.py -b a -o 0 -s high

      oder

      # SUDO mcp/20/mcp23017.py -b a -o 0 -s low

      eingeben (rechte per chmod richtig vergeben)

      geht das ohne Probleme muss man die auszuführende Datei in der sudoers Datei eintragen.

      in meinem Beispiel hab ich mehre MCP23017 dran daher muss ich mehre Daten eintragen (solltet ihre mehr als eine MCP betreiben wollt müsst ihr unter Ordner anlegen und das Script in Zeile 12 anpassen)

      Bildschirmfoto 2017-02-25 um 11.57.21.png

      wenn das geschafft ist.

      kann es los gehen alle Ausgänge ins SHC einzutragen das geht ganz einfach.

      Schaltbare Elemente verwalten -> Elemente erstellen -> Script auswählen -> danach alles eintragen was man braucht in meinem Fall sieht das den so aus

      Bildschirmfoto 2017-02-25 um 12.00.02.png


      und wenn Ihr das geschafft habt habt ihr an 2 GPiO pins nun weitere 16 oder sogar 128 GPIO Ausgänge dran.

      Wie ihr den MCP23017 oder MCP 23S17 anschießt und alles was gebraucht wird findet ihr unter diesen Beiden LINKS ->

      raspi.tv/how-to-set-up-i2c-in-raspbian-on-the-raspberry-pi

      raspi.tv/2013/using-the-mcp230…new-gpio-ports-part-3#top