Ankündigung

Einklappen
Keine Ankündigung bisher.

i2c aus Logic heraus beschreiben ??

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    i2c aus Logic heraus beschreiben ??

    Hallo Zusammen,

    steinigt mich, wenn ich mich jetzt zu deppert anstelle!

    Ich habe gerade ein Verständnisproblem der Linux-Welt, was die Umgebung angeht, in der ein Skript läuft.
    Ich möchte gerne einen i2c Baustein beschreiben.

    Code:
    #!/usr/bin/env python
    
    
    import smbus
    print "rennt"
    address = 0x20
    
    display = smbus.SMBus(1)
    
    
    #data = read_byte_data(address)
    
    display.write_byte_data(address,0x00,0x6A) # Bank A Output
    
    logger.info(data)
    Starte ich das Skript über den Aufruf mit "python volume.py", wird der Baustein beschrieben. Dann kann ich in der Shell über i2c_get den Wert korrekt auslesen, erhalte aber bezüglich des "logger" eine Fehlermeldung

    Traceback (most recent call last):
    File "volume.py", line 15, in <module>
    logger.info(data)
    NameError: name 'logger' is not defined


    Wenn ich das ganze nun als Logik ausführen möchte, geht es schon damit los, dass beim Print Befehl klammern fehlen. Schlimmer aber:

    ImportError: No module named 'smbus'

    Was muss ich nun ändern, um das Modul auch für das Python-Skript verfügbar zu machen, wenn es als Logik innerhalb von sh.py läuft ???

    Verzeiht die wahrscheinlich doofe Frage, aber ich habe für google nicht ganz die passenden Suchbegriffe gefunden, um dieses Konstrukt zu verstehen. Gerne auch nur einen Link.

    Viele Grüße
    Martin


    #2
    Da zum Logging: Das ist ein Python Modul, dass Du importieren musst. Bevor Du logger.info aufrufen kannst, musst Du so was wie:
    Code:
    import logging
    logger = logging.getLogger(__name__)
    im Skript aufrufen.

    Zum Print: print 'irgendwas' ohne klammern funktioniert nur mit Python 2.7 In Python 3 musst Du print('irgendwas') aufrufen. Wenn Du nur Python <skript>.py aufrufst, wird Python 2.7 gestartet. Du solltest es mit Python3 <skript>.py aufrufen, dann wird das Skript auch ausserhalb von SmartHomeNG mit Python3 ausgeführt.
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Verdammte Axt... Und in Python 3 erkennt er dann auch den SMBus nicht mehr.
      Das war auf jeden Fall der Schubser in die richtige Richtung! Danke!
      Joa, dann muss ich jetzt nur noch dafür eine Lösung finden

      Kommentar


        #4
        Ja ein 'sudo pip3 install smbus' könnte da helfen ...

        Ein 'pip3 search smbus' liefert:
        Code:
        Adafruit-PureIO (0.2.1)  - Pure python (i.e. no native extensions) access to Linux IO including I2C and SPI.  Drop in replacement for smbus and spidev modules.
        smbus-cffi (0.5.1)       - This Python module allows SMBus access through the I2C /dev interface on Linux hosts. The host kernel must have I2C support, I2C device interface
                                   support, and a bus adapter driver.
        pyblinkm (0.1.0)         - Drive a BlinkM with Python via I2C using python-smbus on Raspberry Pi.
        pysmbus (0.1)            - Pure Python implementation of the I2C SMBus protocol.
        smbus2 (0.2.0)           - smbus2 is a drop-in replacement for smbus-cffi/smbus-python in pure Python

        Kommentar


          #5
          Ein sudo apt-get install python3-smbus war ebenso erfolgreich
          Danke!

          Kommentar

          Lädt...
          X