I2C-Relaiskarten in Webinterface einbinden

  • Hallo zusammen,


    ich hatte mich schon mal hier zum meinem aktuellen Projekt gemeldet. Ich habe vor über ein Webinterface auf dem Pi 2 I2C-Relaiskarten zu steuern. Jede Karte hat 8 Relais. Jedes möchte ich über ein Webinterface ein- und ausschalten können.


    In Python kann nach Importieren der SMBus Libary die Karten über


    Code
    bus.write_byte(0x26,XXX)

    ansprechen. Bei XXX kann man eine Zahl eingeben, bei 0 werden alle Relais geschlossen bei 255 alle geöffnet. Das ganze soll jetzt erstmal über Buttons über ein Webinterface einfach gesteuert werden. Das Design soll später kommen.


    1. Mein Problem ist nur das ich es nicht hinbekommen habe allgemein sowas in PHP bzw. HTML einzubinden. Hat da jemand evtl. ein Beipsielcode. Ich habe schon den Tipp mit "bottle" bekommen, ich habe es allerdings nicht zum laufen bekommen.


    2. Das zweite Problem ist das ich nicht weiß wie ich es machen soll, da ja nicht nur ein Relais immer an sein soll. Wenn jetzt beispielsweise Relais 1 geschlossen ist und ich Relais 2 ebenfalls schließen will, während 1 noch offen bliebt, was muss ich dann genau machen das beide anbleiben. Später soll es dann noch einen "ALL OFF" Button geben, wobei das ja mit einem Befehl

    Code
    bus.write_byte(0x26,255)

    gut machbar ist.


    Beste Grüße
    Florian

  • Hallo Florian,


    diesem Satz habe ich auch nach 5maligen aufmerksamen Lesen keinen Sinn abringen können:



    Wenn jetzt beispielsweise Relais 1 geschlossen ist und ich Relais 2 ebenfalls schließen will, während 1 noch offen bliebt, was muss ich dann genau machen das beide anbleiben.



    Später soll es dann noch einen "ALL OFF" Button geben, wobei das ja mit einem Befehl

    Code
    bus.write_byte(0x26,255)

    gut machbar ist.


    Ich würde es mal mit bitweisen Verknüpfungen probieren
    - Umschalten des Status durch Exklusiv-ODER-Verknüpfung der Bitmuster (jedes Relais, dessen zugeordnetes Bit auf 1 gesetzt ist, wird umgeschaltet)
    - Ausschalten durch ODER-Verknüpfung der Bitmuster (jedes Relais, dessen zugeordnetes Bit auf 1 gesetzt ist, wird ausgeschaltet)
    - Einschalten durch UND-Verknüpfung der Bitmuster (jedes Relais, dessen zugeordnetes Bit auf 0 gesetzt ist, wird eingeschaltet)


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited once, last by Andreas ().

  • Ja der Satz habe ich blöd formuliert. Ich will damit sagen das wenn ich ein Bestimmtes Relais eben geöffnet habe sodass Strom fließen kann und ich mit einem neuen Befehl ein anderes ebenfalls öffne, das das Bitmuster sich so ändert das beide anbleiben

  • Hallo,


    hier mal das Grundgerüst für Bottle:



    Was du halt noch selber implementieren musst ist der Code zum Generieren des Bitmusters und das Schalten der Relais.
    Und wenn alles läuft solltest du aus dem Python-Code noch das `bottle.debug(True) und das `reloader=True` entfernen.



    Gruß, noisefloor

  • Code
    bus.write_byte(0x26,XXX)

    ansprechen. Bei XXX kann man eine Zahl eingeben, bei 0 werden alle Relais geschlossen bei 255 alle geöffnet.


    Hallo,
    sieht nach binärer codierung aus


    0000 0000 entspricht 0 im Dezimalsystem
    0000 0001 entspricht 1 im Dezimalsystem
    0000 0010 entspricht 2 im Dezimalsystem
    0000 0011 entspricht 3 im Dezimalsystem
    0000 0100 entspricht 4 im Dezimalsystem
    0000 0101 entspricht 5 im Dezimalsystem
    0000 0110 entspricht 6 im Dezimalsystem
    0000 0111 entspricht 7 im Dezimalsystem



    1111 1111 entspricht 255 im Dezimalsystem


    Wertigkeit der Bitpositionen:


    128, 64, 32, 16, 8, 4, 2, 1


    die Summe der Wertigkeit der Bitpositionen entscheidet, welche Relais angesteuert werden.


    https://de.wikipedia.org/wiki/Dualsystem


    Gruss
    Kurti

    Die beste Funkverbindung ist immer noch ein Kabel.

  • Danke Kurti, das Ganze hilft mir schon sehr viel weiter. Ein Problem hätte ich noch. Die Wertigkeiten habe ich gerade durchprobiert. Es ist so das sie quasi gerade andersrum sind. Das heißt bei 1 haben alle Relais Durchgang, außer Relais 1 (so nenn ich es jetzt mal das Relais). Somit sind die anderen Relais (2-8) durchgeschaltet. Hast du die andere Wertigkeit auch so noch zufällig im Kopf?


    Danke auch an noisefloor, dass hat mir alles ebenfalls sehr geholfen. Ich werde jetzt und morgen alles mal versuchen und melde mich auf jeden Fall nochmal ob es funktioniert hat!


    Beste Grüße
    Florian