So, nun sind wir mal wieder so weit.
Für die Kommunikation zwischen RPi und µC, brauche ich eine Art Verbindungsmanager.
Das Ganze wird wohl zunächst ziemlich rudimentär ausfallen, aber einiges dabei ist mir noch nicht klar, und da es noch genügend anderes zu tun gibt, wäre es hilfreich wenn der eine oder andere von Euch da vielleicht einen Einwand, eine Idee oder einen weiteren offenen Punkt beisteuern würde.
Alles was ich als kritisch oder offen im Hinterkopf behalte, lässt sich berücksichtigen oder lösen. Alles was sich erst im Nachherein rausstellt ist ein Problem.
Also:
In meiner Vorstellung repräsentiert sich das Ganze wie ein Netzwerk, vergleichbar mit dem Internet oder dem Heimnetzwerk.
In diesem Netz exisitieren einzelne "µNodes" - also Knotenpunkte, wobei es jetzt erst einmal egal ist, ob es sich dabei um einen µController, einen RPi oder einen Sensor handelt.
Jede dieser µNodes hat einen Namen und eine eindeutige Id.
Zusätzlich gibt es Informationen darüber, wie diese µNode erreichbar ist.
Beispiel lokaler Modus:
µNode Name "Temperatur_Gewächshaus"
µNode Id 0x1fddffee7866
µNode Type Sensor
µNode Master "local"
µNode Master Id 0x45678
Nun weiss ich, dass dieser Sensor über die Master µNode "local" erreichbar ist, und dass es sich um einen Sensor handelt.
In einer Verbindungstabelle steht jetzt wiederum
µNode Id 0x1fddffee7866
µNode Address 0x123456
µNode Connection 1Wire
Und damit kann ich vom lokalen RPi den Sensor mit der Adresse 0x123456 über 1Wire abfragen.
Beispiel remote Modus:
µNode Name "Temperatur_Orchideen"
µNode Id 0x1fddffee7788
µNode Type Sensor
µNode Master "Garten"
µNode Master Id 0x4567899
µNode Name "Garten"
µNode Id 0x1fddffee7998
µNode Type ATMEGA16
µNode Master "local"
µNode Master Id 0x1fddffee7998
Nun weiss ich, dass dieser Sensor über die Master µNode "Garten" erreichbar ist, und dass "Garten" ein ATMEGA16 ist.
In einer Verbindungstabelle steht jetzt wiederum
µNode Id 0x1fddffee7788
µNode Address 0x47
µNode Connection I2C
µNode Id 0x1fddffee7998
µNode Address 0x01
µNode Connection rs232
Jetzt weiss ich, dass der MEGA16 am seriellen "Bus" hängt und dass ich ihn über die Addresse 0x01 erreichen kann.
Und damit kann ich der µNode "Garten" die Aufforderung schicken, über I2C den Sensor mit der Slave Addresse 0x47 auszulesen.
Bis hierher denke ich, ist alles so weit klar und ich glaube, ihr könnt auch noch folgen.
Für eine rudimentäre Verbindung reicht das alles erstmal aus.
Am elegantesten ist natürlich eine Verbindung per TCP/IP, weil da keine Rumhampelei notwendig ist.
Aber die meisten anderen Verbindungen gestalten sich etwas problematisch.
USB und RS232: da gibt es die Möglichkeit verschiedener Bezeichnungen und eine Verbindung mal umzustecken.
Wenn ich mir jetzt /dev/ttyUSB0 für eine Verbindung merke und dann aber der das kabel auf z.B. /dev/AMA0 umgesteckt wird, greife ich ins Leere.
Das kann man durch manuelles Editiieren lösen ... besser wäre eine Automatik
So, nun wäre es, wie gesagt, schön, wenn der eine oder andere sich da mal äussern würde. Auch wenn keine Programmierkenntnisse vorhanden sind, dann sind Tipps die vom gesunden Menschenverstand herrühren, sicher auch sinnvoll.
Ich hab' sicherlich noch irgendwas übersehen, vergessen oder nicht berücksichtigt.
Ich wünsche Euch noch einen schönen Tag,
-ds-