Ansteuerung I2C Bus mit App oder Sprache

achim S.

Mitglied
16 Jan 2010
622
9
18
Berlin Biesdorf
Sprachen
  1. ANSI C
Hallo
Hat schon jemand versucht den I2C Bus mit einer App anzusteuern oder sogar mit der Sprache zu steuern, z.B. mit Alexa? Es geht mir dabei nicht um den Einsatz von einem ESP oder Rasperry. Mehr etwas einfaches was man relativ leicht programmieren kann.
Erhahrung oder wie am besten machen.
achim
 

LotadaC

Sehr aktives Mitglied
22 Jan 2009
3,469
65
48
Marwitz
Sprachen
  1. BascomAVR
  2. Assembler
Welchen I²C-Bus meinst Du denn konkret?
Welche/was für eine App (Windows/Android?)?
Und worauf willst Du mit "relativ leicht programmieren können" hinaus?

I²C ist selbst schon relativ komplex, wenn das zu Fuß gemacht werden muß. Bietet das eingesetzte System Hardware, die das nativ unterstützt, wirds natürlich einfacher. Auf der anderen Seite gibts natürlich auch Programmierumgebungen, die Dir entsprechende Sachen erleichtern/abnehmen (BASCOM, die Arduino-IDE (die auch die ESPs unterstützt),...).

Und dann kommts auch noch darauf an, was Dein I²C-Bus können soll - I²C betrifft ja nur den eigentlichen Bus; für Displays, Speicher, Sensoren usw bieten sich ggf unterschiedliche Protokoll-Umsetzungen an.

Alexa: kommuniziert mMn mit verbundenen ...äh... was auch immer über (W)LAN - Deine I²C-Hardware müßte also über (W)LAN-Anbindung verfügen. Das wird bei den hier meist eingesetzten AVR schon recht tricky (natürlich gibt's Möglichkeiten mit entsprechenden Interface-Chips (ENC28J60, WIZ812MJ u.ä.)), aber selbst dann...

Das ganze muß dann auch softwaretechnisch in Alexa eingebunden werden. Du benötigst also irgend'n Skin (oder wie das da auch immer heißt). Die ESP kann man als Philips HUE-Gerät nutzen.

Ich würde eher versuchen, ein offenes Hausautomationssystem wie FHEM (in Verbindung mit Alexa) auszunutzen, und da dann eigene Hardware anzuschließen. Auch hier muß Deine Hardware natürlich das zugrunde liegende Kommunikationsnetz unterstützen ((W)LAN, dieses 433MHz-Netz oder was auch immer, auch da gibts entsprechende Lösungen auf Raspi/ESP-Basis, und auch da kann man natürlich weitere eigene primitivere Hardware (AVR etc) anbinden.
Sind aber alles erstmal nur Ansätze fixer Ideen...
 

achim S.

Mitglied
16 Jan 2010
622
9
18
Berlin Biesdorf
Sprachen
  1. ANSI C
Verwende ja selbst den I2C Bus für die verschiedensten Anwendungen, Aktoren, Sensoren und Displays. Schön währe es wenn man eine App nehmen kann und damit eine selbstgebaute Hardware steuern kann. Je nach der App kann das ja dann auch Alexa machen. Möchte aber keine komplizierte Hardware oder Treiber dazu nehmen. Bei einem entsprecehnden Aufwand ist sicher viel möglich. Bleibt nur die Frage ob ich das mit meinem Wissen auch hinbekomme.
 

LotadaC

Sehr aktives Mitglied
22 Jan 2009
3,469
65
48
Marwitz
Sprachen
  1. BascomAVR
  2. Assembler
Wie ich schon oben gefragt habe: Für welche Hardware-Plattform und für welches Betriebssystem suchst Du denn die App?

Und wie soll das System mit der App mit Deinem I²C-Bus verbinden werden? An den meisten PCs und am Smartphone hast Du üblicherweise keinen I²C-Anschluß.
(Also den SM-Bus hast Du zwar in fast jedem PC, und es gibt auch Software, die den ansteuern kann (Speedfan kann so zB Temperaturdaten des PCs und Festplatten auslesen, und nebenbei auch die ICs vom Arbeitsspeicher), aber ohne Bastelei kommst Du nicht wirklich an den Bus ran (ok, Du kannst direkt am Arbeitsspeicher was entsprechende Leitungen ranlöten, oder Du entwirfst 'ne eigene Platine die das im DIMM-Slot abgreift)

Bei Einplatinencomputern ist der Bus hingegen oft verfügbar (RasPi, LattePanda usw).

Ich hatte hier auch schon mal irgendwo sowas ähnliches angesprochen:
Analog zu den USB-TTL-UART-Wandlern gibt es auch universelle Schnittstellenwandler, die variabel auf SPI, I²C, paralleles Bitbanging usw eingestellt werden können. Entsprechend konfiguriert verhalten die sich PC-seitig dann wie 'ne serielle Schnittstelle. Und es gibt Bibliotheken, die in zB. VisualStudio eingebunden werden können.
Damit könntest Du Dir recht einfach 'n I²C-Terminal für den Windows-PC zurechtstricken und auf das eigentliche I²C Dein gewünschtes Protokoll draufsetzen (I²C definiert ja eigentlich nur den Bus und die Byte-weisen Zugriffe)
 

achim S.

Mitglied
16 Jan 2010
622
9
18
Berlin Biesdorf
Sprachen
  1. ANSI C
Als Hardware wollte ich mein System verwenden. Also einen Atmega 1284p und alles in C machen. Vom Raspi bin ich ziemlich enttäuscht. Wird hochgejubeld was er alles kann und ist dabei auch nur ein Stück Silicon mit einer hohen Frequenz. Python ist auch nur eine Programmiersprache die angeblich sooo viel besser ist. Ist zwar anders aber nicht grundsätzlich besser.
Bleibe deshalb wohl lieber bei meinem C.
Hatte mir vorgestellt das man Befehle per Alexa angeben kann und eine Ausführung auf C Prozessor weiter geleitet wird. Heutzutage ist doch oft der Begriff "Bridge" im Gespräch. Gibt es da nich was passendes?
 

Hero_123

Mitglied
17 Sep 2010
165
3
18
Sprachen
  1. ANSI C
Hallo achim S.

Verstehe ich das korrekt - Du willst mittels z.B Alexa Sprachbefehle an den ATMega1284p senden und dieser soll mittels I2C (den Du ja schon implementiert hast) dann Aktoren, Sensoren etc ansteuern bzw abfragen.
Also benötigst Du eine Kommunikationsebene Alexa <-> ATMega1284p, um diesem mitzuteilen, was er machen soll.
Du müsstest also herausfinden, wie und in welche Signale Alexa die Sprache wandelt und mit dieser Info eine Kommunikation Alexa <-> Atmega1284p aufzubauen (USART, XBEE, etc)
Und Du müsstest evtl Alexa "pimpen"

Die Frage die sich mir stellt - wozu das Ganze, wenn's das schon gibt?

mfg

Hero_123
 

Hero_123

Mitglied
17 Sep 2010
165
3
18
Sprachen
  1. ANSI C
Na, mit Alexa/Echo/Siri/App kann man doch inzwischen alles Mögliche steuern - Licht, Heizung, Hausautomatisierung incl Überwachung etc ...

Über kurz oder lang wird mal der Kühlschrank an Netto/Aldi/Norma melden, dass nicht genügend Milch (oder Toilettenpapier ;)) vorhanden ist - "Smart Home"
 

achim S.

Mitglied
16 Jan 2010
622
9
18
Berlin Biesdorf
Sprachen
  1. ANSI C
Über kurz oder lang wird mal der Kühlschrank an Netto/Aldi/Norma melden, dass nicht genügend Milch (oder Toilettenpapier ;)) vorhanden ist
Ist doch ein alter Hut. Kann mich daran erinnern, das vor ... Jahren bereits Kühlschränke mit eingebauten Display verkauft oder besser angepriesen wurden. Da konnte man Rezepte abrufen oder was bestellen.
Habe selber vor über 15 Jahren Kühlschränke von Samsung repariert, die ein eingebautes Modem hatten. Wurde aber in Deutschland nicht genutzt. Leider ist die Digitaliesierung in DE auch heute nicht viel weiter.
 

achim S.

Mitglied
16 Jan 2010
622
9
18
Berlin Biesdorf
Sprachen
  1. ANSI C
So habe es geschafft. Kann über mein Handy oder Alexa bis zu 8 Befehle übertragen und damit den I2C Bus steuern. Kann z.B. dadurch verschiedene LEDs schalten oder Anzeigen auf einem Display schalten.
Es geht relativ einfach. Verwende dazu ein Modul HomematicIP HmIP MOD OC8 das ich in mein HomematicIP System eingebunden habe. Das Modul schaltet einen MCP23008 (I2C) und steuert damit den Bus. Kann damit auch noch andere Module einbinden und viel mehr übetragen. Das Programm ist auch simpel. Brauche nur die Eingänge des MCP auslesen und im Bus verarbeiten.
Damit ist eine Steuerung eigener Projekte per App oder Sprache ohne Probleme möglich. Zusätzlich können damit auch andere Systeme gesteuert werden.
achim
 

LotadaC

Sehr aktives Mitglied
22 Jan 2009
3,469
65
48
Marwitz
Sprachen
  1. BascomAVR
  2. Assembler
Und was hat das jetzt mit:
den I2C Bus mit einer App anzusteuern oder sogar mit der Sprache zu steuern,
zu tun?

Dein Sprachkommando steuert da doch gar nichts an - Bus-Master ist Dein ATmega, und der liest lediglich (ok, über I²C) den Portexpander aus.

Wenn ich Dich richtig verstanden habe, hast Du:

Alexa <--> HomematicIP-CCU (bzw. FHEM o.ä. auf einem Raspi/AVM-Router + HmIP-Interface) <--> HmIP-auf-8bit-parallel-Wandler (HmIP MOD OC8) <--> 8bit-parallel-auf I²C-Wandler (MCP23008) <--> ATmega

Im Prinzip kannst Du immer nur ein Byte übertragen (bzw 8bit), stelle ich mir jetzt z.B. zum ansteuern eines I²C-Displays nicht grad performant vor...

Alexa plus HmIP-CCU/Derivat hast Du(!) sicher eh zu hause, Deine Lösung beinhaltet also die beiden Wandler, der I²C-Portexpander ist finanzielle vernachlässigbar, den HmIP scheints (wegen des proprietären Protokolls) nur von ELV (ggf Resellern) zu geben. Kostet etwa 25€.

Ein ESP2866 kostet etwa ein drittel/die hälfte davon, und den kannst Du (als Philips HUE) direkt mit Alexa anteuern. Auch mit mehr als 8bit. Und in vielen Fällen kann der ESP selbst die Hardware ansteuern, ohne weiteren Controller dahinter (natürlich kannst Du das auch via I²C, SPI, 1wire, parallel, Bitbanging usw weitergeben).

Mehr etwas einfaches was man relativ leicht programmieren kann.
Ok, der ESP ist natürlich zu programmieren (wobei sich das auch auf heute oft übliches C&P aus irgendwelchen Repositories reduziert) - Deine einfachere(?) Programmierung erkaufst Du Dir halt mit komplizierterer Hardware (von hinten durch die Brust ins Auge über die zusammengeschalteten Portexpander).

Beim HmIP-MOD-OC8 hat Dir halt der Hersteller die Programmierung des HmIP-Interfaces abgenommen (und läßt sich das bezahlen).
Beim ESP hat Dir "die Community" die Programmierung des HUE-Interfaces abgenommen.

Beide Wege sind nicht exakt das, was Du eigentlich willst - beide Wege bieten Dir workarounds dazu...
 

achim S.

Mitglied
16 Jan 2010
622
9
18
Berlin Biesdorf
Sprachen
  1. ANSI C
HUE kenne ich bisher als Lichtsteuerung. Da ich aber die komplette Heizungssteuerung für meinen Fussboden über HomematicIP steuere bietet sich das an. Einen ESP .. oder ähnliches kann ich nicht so einfach verwenden. HomematicIP wird über eine Frequenz von ca. 868MHz übertragen, ESP läuft doch mit 2,4GHz. Bei HomematicIP wird der Befehl zur Kontrolle noch mal zurück gesendet. Erst wenn das stimmt wird der Befehl ausgeführt. Es sind immer Sender und Empfänger dabei.
Mir geht es nicht um die Programmierung von Alexa ähnlichen Teilen oder die Nutzung von frei wählbaren Texten und der Anzeige, sondern um die Einbindung der Sprache zur Bedienung in einem einfachen Aufbau. Damit es jeder nutzen kann und seine eigenen Projekte damit steuern kann. Kompliziert geht immer.
 

LotadaC

Sehr aktives Mitglied
22 Jan 2009
3,469
65
48
Marwitz
Sprachen
  1. BascomAVR
  2. Assembler
HUE kenne ich bisher als Lichtsteuerung.
Richtig, und Alexa kann die direkt ansteuern. Wie bereits angedeutet, gibts für die ESPs 'ne Bibliothek, mit der der ESP als HUE-"Lampe" im Netz (und damit auch für Alexa ansteuerbar) erscheint. Wenn Du die dann statt "Rote Schlafzimmerlampe" "Quantensingularitätswerfer im Vorgarten" nennst, kannst Du halt Dein Nachbarskatzen-Abwehrgeschütz damit verdrahten und ansteuern.
Grundsätzlich kannst Du die "Lampe" an bzw ausschalten und dimmen (wobei dann statt der Prozente 'ne Bytevariable übergeben wird 50% sind wohl 128).

Und meiner Meinung nach kannst Du mehrere "Lampen" in einem ESP umsetzen.

An Deinen HmIP-8fach-Schalter hatte ich wegen der hier umzusetzenden Beleuchtung auch schon gedacht - aber ich hätte zwei "Leuchten" mit je zwei LED-Streifen drin (einer warm, einer kalt), also vier Kanäle. Für jede der beiden Leuchten einen eigenen Mod8, und beide Kanäle mit je sieben Bit wäre zwar machbar, aber mir dann doch zu umständlich.
(also je Leuchte ein ESP, die ihre jeweiligen beiden Kanäle direkt ansteuern)

Einen ESP .. oder ähnliches kann ich nicht so einfach verwenden.
Mußt Du ja auch nicht - trotzdem die Frage: Warum nicht?
HomematicIP wird über eine Frequenz von ca. 868MHz übertragen, ESP läuft doch mit 2,4GHz.
HmIP nutzt irgendein proprietäres Protokoll im 868MHz Bereich, kann sein...
die ESPs laufen (wie auch Alexa) über Dein WLAN...
Aber wenn Du Dein HmIP mit Alexa verbindest, muß auch HmIP auf Dein WLAN kommen...

Mir geht es nicht um die Programmierung von Alexa ähnlichen Teilen oder die Nutzung von frei wählbaren Texten und der Anzeige, sondern um die Einbindung der Sprache zur Bedienung in einem einfachen Aufbau.
meine Hardware empfinde ich nicht als kompliziert.
...
Deine einfachere(?) Programmierung erkaufst Du Dir halt mit komplizierterer Hardware
Dein Hardware-Aufbau mit zwei(!) Portexpandern ist meiner Meinung nach komplexer als ein(!) ESP, der sehr wahrscheinlich sogar die Funktion Deines ATmega miterledigen könnte.
 

achim S.

Mitglied
16 Jan 2010
622
9
18
Berlin Biesdorf
Sprachen
  1. ANSI C
Zu der Nutzung ist noch ein Access Point notwendig. Dieser hängt am LAN und darüber läuft auch Alexa. Über den Access Point läuft die ganze Verbindung. Man kann auch Gruppen programmieren, dann läuft alles ohne den Access Point.
Wie soll eine Verbindung zwischen 868MHz und 2,4GHz laufen? Programmtechnisch wahrscheinlich kein Problem, aber mir der Frequenz?
Mit dem Atmega kann man eine Menge machen, ist klar, bloss die Anbindung des ESP schaffe ich nicht so einfach. Und wo in der Kette soll man eingreifen.
HmIP nutzt irgendein proprietäres Protokoll im 868MHz Bereich, kann sein...
Ja das stimmt. Jeder Hersteller hat sein eigenes System. Dieser Hersteller (eQ3) produziert noch für ca. 20 verschiedene Vertreiber. Einige kenne ich schon, bei anderen glaubt man es kaum, z.B. Telekom, Heimeier, Vaillant, RWE usw. Egal welcher Hersteller, manche laufen auch mit anderen Verbindungen z.B. Zbee oder habe eine andere Zentrale dran. Jedenfalls passt kein Hersteller oder System zusammen. Deshalb nutze ich für sowas eQ3, ist nach eigenen Angaben der Markführer in Europa mit 40%.
Wieso 2 Portexpander, der MCP 23008 ist einer und der andere HmIP MOD OC8? Dachte bisher das er weit mehr drauf hat als nur Portexpander, so wie das ganze mit Empfang und Senden, die Kodierung, Auswertung.
Es ist mir klar, das ich den einfachsten Weg nehme um die Sachen zu verbinden, warum eigentlich nicht? Mein Ziel ist es auch Teile oder eben Baugruppen zu verbinden die man im Grunde nicht zusammen sieht. Daraus entstehen neue Anwendungen, die sich jeder relativ bauen und leisten kann.
Für dein Problem mit den LEDs kommt wahrscheinlich zum Jahresende auch es passendes raus. Das heisst es in der Zukunftsvorschau, ohne genaues zu nennen.
Arbeite gerade auch an einer Version mit RC8, dann kann ich per Tastendruck an meinem 128 Gedönns auch Homematic schalten.
Man kann dann auch eine Art "Sprachausgabe" (MP4) per Bus schalten.

achim
 

LotadaC

Sehr aktives Mitglied
22 Jan 2009
3,469
65
48
Marwitz
Sprachen
  1. BascomAVR
  2. Assembler
Wieso 2 Portexpander, der MCP 23008 ist einer und der andere HmIP MOD OC8?
Portexpander ist sicher nicht der richtige Ausdruck, aber letzten Endes macht er genau das.
Der MCP stellt Dir acht I/Os bereit, die Du mit irgendeinem Controller über I²C ansteuern/auslesen kannst.
Der MOD OC8 stellt Dir acht I/Os bereit, die Du über Dein SmartHome-System ansteuern/auslesen kannst.

Ursprünglich hattest Du aber geschrieben, daß Du von Alexa (bzw Deinem SmartHome-System) her Deinen I²C-Bus ansteuern wolltest.
Tatsächlich war eigentlich Dein Ziel, eigene Hardware (in Form eines ATmega) an das SmartHome anzubinden.
Das hast Du auf Deinem Weg realisiert, Du kannst acht Bit übertragen/auslesen. Bzw einen Byte-Wert. Oder zwei Nibbles.

Grundsätzlich könntest Du auch einen 868MHz Transceiver (Hoperf RFM12, SiliconLabs 442x,...) an Deinen ATmega spaxen, und direkt mit HmIP kommunizieren - wenn Du deren Protokoll kennst. Da das ganze nicht open source ist...

Für dein Problem mit den LEDs kommt wahrscheinlich zum Jahresende auch es passendes raus.
Als wir hier vor (inzwischen schon, Asche auf mein Haupt) anderthalb Jahren eingezogen sind, und die Küche fällig war, hatte ich zur Beleuchtung der beiden Arbeitsplatten (je etwa anderthalb Meter) 12V-LED-Streifen (nebst Aluschienen und Diffusor) organisiert.
Die erste Idee war, da dann einfach einen ATtiny25 als Hirn (nebst Ausgangstreiber) hinzubasteln, und die über 'ne IR-Fernbedienung einzustellen.
Wäre natürlich nicht "Smart" - also hab ich auch bei HmIP gesucht - es gibt zwar einige Schalter, aber zum übertragen irgendwelcher Daten hab ich nichts gefunden (Dein MOD OC8 hatte ich da auch schon im Blick).

Jedenfalls hatte ich zwar die Leiste über der Arbeitsplatte, aber die war nicht angeschlossen. Dann kam der Herbst, die Tage wurden kürzer - es mußte 'ne schnelle Lösung her...
Seit anderthalb Jahren steht also mein PeakTech 6010D auf dem Hängeschrank, und befeuert eine der Leisten (ein Kanal für warm, einer für kalt, WAF-abgemischt).
Wie das halt so mit Provisorien ist...

Da meine bessere Hälfte hier mit Alexa von der anderen Seite her mit SmartHome (ok, Beleuchtungssteuerung) angefangen hat, hab ich jetzt mal 'n Dreierpack von den Espressif-Modulen geordert.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)