Hausbus: Unterschied zwischen den Versionen
HKay (Diskussion | Beiträge) (Einfach mal ein Botschaften Schema Definiert) |
HKay (Diskussion | Beiträge) (Funkwerk) |
||
(18 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
= |
= Werksbus = |
||
Wir haben einen CAN-Bus Hausbus. Die Baudrate beträgt 500 kbit/s |
Wir haben einen CAN-Bus Hausbus. Die Baudrate beträgt 500 kbit/s |
||
Zeile 6: | Zeile 6: | ||
Die CAN Ids haben eine bestimmte Struktur, damit die wichtigsten Adressen einzelner Geräte( z.B. reset ) offensichtlich sind. |
Die CAN Ids haben eine bestimmte Struktur, damit die wichtigsten Adressen einzelner Geräte( z.B. reset ) offensichtlich sind. |
||
Ausserdem lässt sich aus der Struktur der Id erkennen, zu welcher Art von Gerät die Botschaft gehört. |
Ausserdem lässt sich aus der Struktur der Id erkennen, zu welcher Art von Gerät die Botschaft gehört. |
||
==== Aufbau(Ids) ==== |
==== Aufbau(Ids) ==== |
||
Hier ist noch keine Nachrichten Struktur festgelegt. Allerdings sind die Botschaften fuer Signale gedacht, die allgemeine Informationen verbreiten(z.B. ob die Tür verschlossen, oder das Licht eingeschaltet ist). |
Hier ist noch keine Nachrichten Struktur festgelegt. Allerdings sind die Botschaften fuer Signale gedacht, die allgemeine Informationen verbreiten(z.B. ob die Tür verschlossen, oder das Licht eingeschaltet ist). |
||
==== Aufbau(extended Ids) ==== |
==== Aufbau(extended Ids) ==== |
||
Zeile 16: | Zeile 20: | ||
* Gerätespezifisch: Diese 12 Bits sind frei wählbar. |
* Gerätespezifisch: Diese 12 Bits sind frei wählbar. |
||
Ausnahme: Die Botschaft 0x0****FFF ist bestimmt für die Reset-Botschaft mit der man das Gerät zum Reset zwingen kann. |
Ausnahme: Die Botschaft 0x0****FFF ist bestimmt für die Reset-Botschaft mit der man das Gerät zum Reset zwingen kann. |
||
Ausnahme: Die Botschaft 0x0****000 ist bestimmt für die Heartbeat-Botschaft mit der das Gerät seinen Status und seine Anwesenheit meldet. |
|||
;Beispiel |
;Beispiel |
||
Zeile 23: | Zeile 29: | ||
:Die Geräteklasse ist 1(Licht) |
:Die Geräteklasse ist 1(Licht) |
||
:0x00102FFF ist die Reset-Botschaft fuer dieses Gerät |
:0x00102FFF ist die Reset-Botschaft fuer dieses Gerät |
||
== Aufbau heartbeat == |
|||
Die Heartbeat Nachricht ist die niedrigste ID, die ein Busteilnehmer nutzen darf. Sie endet auf 0x0****000 |
|||
Beispiel Aufbau: <Zeit seit boot in Millisekunden[32]> |
|||
==== Reservierter Adressraum ==== |
==== Reservierter Adressraum ==== |
||
Zeile 29: | Zeile 42: | ||
* Extended MessageIds unter 0x00001000 sind reserviert (verwechslungsgefahr) |
* Extended MessageIds unter 0x00001000 sind reserviert (verwechslungsgefahr) |
||
* Extended MessageIds über 0x10000000 sind reserviert (bootloader) |
* Extended MessageIds über 0x10000000 sind reserviert (bootloader) |
||
* Gerätespezifische Botschaft 0x0****FFF ist fuer den Reset Befehl bestimmt(siehe oben). |
|||
==== Spezielle Adressen im Verfügbaren Adressraum ==== |
|||
* Gerätespezifische Extended Botschaft 0x0****FFF ist fuer den Reset Befehl bestimmt(siehe oben). |
|||
* Gerätespezifische Extended Botschaft 0x0****000 ist die Heartbeat-Botschaft. Sie wird mindestens 1 mal pro Sekunde gesendet und enthält Informationen über den allgemeinen Status des Geräts(siehe oben). |
|||
== Bus Geräteklassen == |
|||
{| class="wikitable" |
|||
! Id |
|||
! Name |
|||
! Beschreibung |
|||
|- |
|||
| 0x01 || Licht || Geräte, die Licht steuern. |
|||
|- |
|||
| 0x02 || Sensoren || Geräte die für alle anderen Busteilnehmer Messwerte zur Verfügung stellen. |
|||
|- |
|||
| 0x03 || Displays || ansteuerbare Displays |
|||
|- |
|||
| 0x04 || Input Devices || Eingabegeräte |
|||
|- |
|||
| 0x05 || Transmitters || Dinge die Signale Abstrahlen(Funk, IR, ...) |
|||
|- |
|||
|} |
|||
== BusNutzer == |
|||
[[Datei:Hausbus_layout.png|400px|bytewerk CAN bus Layout]] |
|||
=== Geräte Botschaften === |
|||
{| class="wikitable" |
|||
! Projektname |
|||
! Start-Adresse |
|||
! End-Adresse/ Reset-Id |
|||
! Beschreibung |
|||
! Verantwortlich |
|||
|- |
|||
| [[Beleuchtetes_Fassadenschild | Beleuchtetes Fassadenschild]] || 0x00101000 || 0x00101FFF || Blinkenlichten an der Fassade || [[Benutzer:HKay|hk]] |
|||
|- |
|||
| [[Dummrumleuchte]] || 0x00102000 || 0x00102FFF || Dummrumleuchte || [[Benutzer:Cfr34x|cfr34k]] |
|||
|- |
|||
| [[Hitzeflimmern | Hitzeflimmern]] || 0x00201000 || 0x00201FFF || Heatmap des Vereinsheims'''(OFFLINE)''' || [[Benutzer:HKay|hk]] |
|||
|- |
|||
| Sperrwerk || 0x00202000 || 0x00202FFF || Sperr- und Schliesszustand des der Eingangstür'''(OFFLINE)''' || [[Benutzer:HKay|hk]] |
|||
|- |
|||
| Feuchtwerk_1 || 0x00211000 || 0x00211FFF || Luftfeuchte- Temperatur und Helligkeit 1 (runder Tisch)'''(OFFLINE)''' || [[Benutzer:Xor|xor]] |
|||
|- |
|||
| Feuchtwerk_2 || 0x00212000 || 0x00212FFF || Luftfeuchte- Temperatur und Helligkeit 2 (Raum mit den Sofas)'''(OFFLINE)''' || [[Benutzer:Xor|xor]] |
|||
|- |
|||
| Feuchtwerk_3 || 0x00213000 || 0x00213FFF || Luftfeuchte- Temperatur und Helligkeit 4 (Mate-Lager) || [[Benutzer:Xor|xor]] |
|||
|- |
|||
| Feuchtwerk_4 || 0x00214000 || 0x00214FFF || Luftfeuchte- Temperatur und Helligkeit 3 (Werkstatt)'''(OFFLINE)''' || [[Benutzer:Xor|xor]] |
|||
|- |
|||
| oledwerk_1 || 0x00301000 || 0x00301FFF || OLED-Display 1, 128x64px'''(OFFLINE)''' || [[Benutzer:Xor|xor]] |
|||
|- |
|||
| ledkeys_1 || 0x00401000 || 0x00401FFF || 8 LED-Taster'''(OFFLINE)''' || [[Benutzer:Xor|xor]] |
|||
|- |
|||
| IRWerk || 0x00501000 || 0x00501FFF || Strahle IR-Signale anstatt der Fernbedienungen '''(OFFLINE)''' || [[Benutzer:HKay|hk]] |
|||
|- |
|||
| FunkWerk || 0x00502000 || 0x00502FFF || Sende/Empfange Funksigale bis 4FSK auf 433 MHz '''(OFFLINE)''' || [[Benutzer:HKay|hk]] |
|||
|- |
|||
|} |
|||
=== Allgemeine System Botschaften === |
|||
{| class="wikitable" |
|||
! Botschaft |
|||
! CAN-Id |
|||
! Zykluszeit |
|||
! byte[0] |
|||
! byte[1] |
|||
! byte[2] |
|||
! byte[3] |
|||
! byte[4] |
|||
! byte[5] |
|||
! byte[6] |
|||
! byte[7] |
|||
! Beschreibung |
|||
! Sender |
|||
|- |
|||
| Zeitbasis || 0x101 || 1000 ms || UnixTime[0] || UnixTime[1] || UnixTime[2] || UnixTime[3] || 0x00 || 0x00 || 0x00 || 0x00 || Unixtime in Liddle Endian || Hausbus Pi |
|||
|- |
|||
|} |
|||
== Steckerbelegung == |
== Steckerbelegung == |
||
Zeile 43: | Zeile 135: | ||
* Pin 9: +12V |
* Pin 9: +12V |
||
== BusNutzer == |
|||
{| class="wikitable" |
|||
! Projektname |
|||
! Start-Adresse |
|||
! End-Adresse |
|||
! Beschreibung |
|||
! Verantwortlich |
|||
|- |
|||
| [[Beleuchtetes_Fassadenschild | Beleuchtetes Fassadenschild]] || 0x00010100 || 0x000101FF || Blinkenlichten an der Fassade || [[Benutzer:HKay|hk]] |
|||
|- |
|||
| [[Hitzeflimmern | Hitzeflimmern]] || 0x00020100 || 0x000201FF || Heatmap des Vereinsheims || [[Benutzer:HKay|hk]] |
|||
|- |
|||
|} |
|||
== SocketCan auf dem Pi == |
== SocketCan auf dem Pi == |
Aktuelle Version vom 4. März 2017, 00:17 Uhr
Werksbus
Wir haben einen CAN-Bus Hausbus. Die Baudrate beträgt 500 kbit/s
Botschaften-Schema
Die CAN Ids haben eine bestimmte Struktur, damit die wichtigsten Adressen einzelner Geräte( z.B. reset ) offensichtlich sind. Ausserdem lässt sich aus der Struktur der Id erkennen, zu welcher Art von Gerät die Botschaft gehört.
Aufbau(Ids)
Hier ist noch keine Nachrichten Struktur festgelegt. Allerdings sind die Botschaften fuer Signale gedacht, die allgemeine Informationen verbreiten(z.B. ob die Tür verschlossen, oder das Licht eingeschaltet ist).
Aufbau(extended Ids)
0x0<Geräte Klasse[8]><GeräteId[8]><Gerätspezifisch[12]>
- Geräte Klasse: Die Geräte Klasse gibt Auskunft ueber die Art des Geräts. Sie ist 8 bit lang.
- GeräteId: Die Geräte Id ist eine Fortlaufende Nummer, die fuer jeden Busteilnehmer in seiner Klasse einzigartig ist. Sie ist 8 bit lang.
- Gerätespezifisch: Diese 12 Bits sind frei wählbar.
Ausnahme: Die Botschaft 0x0****FFF ist bestimmt für die Reset-Botschaft mit der man das Gerät zum Reset zwingen kann.
Ausnahme: Die Botschaft 0x0****000 ist bestimmt für die Heartbeat-Botschaft mit der das Gerät seinen Status und seine Anwesenheit meldet.
- Beispiel
- 0x00102003
- Dritte Botschaft des Geräts
- Das Gerät hat die Id 2
- Die Geräteklasse ist 1(Licht)
- 0x00102FFF ist die Reset-Botschaft fuer dieses Gerät
Aufbau heartbeat
Die Heartbeat Nachricht ist die niedrigste ID, die ein Busteilnehmer nutzen darf. Sie endet auf 0x0****000
Beispiel Aufbau: <Zeit seit boot in Millisekunden[32]>
Reservierter Adressraum
- MessageIds unter 0x100 sind reserviert
- MessageIds über 0x700 sind reserviert
- Extended MessageIds unter 0x00001000 sind reserviert (verwechslungsgefahr)
- Extended MessageIds über 0x10000000 sind reserviert (bootloader)
Spezielle Adressen im Verfügbaren Adressraum
- Gerätespezifische Extended Botschaft 0x0****FFF ist fuer den Reset Befehl bestimmt(siehe oben).
- Gerätespezifische Extended Botschaft 0x0****000 ist die Heartbeat-Botschaft. Sie wird mindestens 1 mal pro Sekunde gesendet und enthält Informationen über den allgemeinen Status des Geräts(siehe oben).
Bus Geräteklassen
Id | Name | Beschreibung |
---|---|---|
0x01 | Licht | Geräte, die Licht steuern. |
0x02 | Sensoren | Geräte die für alle anderen Busteilnehmer Messwerte zur Verfügung stellen. |
0x03 | Displays | ansteuerbare Displays |
0x04 | Input Devices | Eingabegeräte |
0x05 | Transmitters | Dinge die Signale Abstrahlen(Funk, IR, ...) |
BusNutzer
Geräte Botschaften
Projektname | Start-Adresse | End-Adresse/ Reset-Id | Beschreibung | Verantwortlich |
---|---|---|---|---|
Beleuchtetes Fassadenschild | 0x00101000 | 0x00101FFF | Blinkenlichten an der Fassade | hk |
Dummrumleuchte | 0x00102000 | 0x00102FFF | Dummrumleuchte | cfr34k |
Hitzeflimmern | 0x00201000 | 0x00201FFF | Heatmap des Vereinsheims(OFFLINE) | hk |
Sperrwerk | 0x00202000 | 0x00202FFF | Sperr- und Schliesszustand des der Eingangstür(OFFLINE) | hk |
Feuchtwerk_1 | 0x00211000 | 0x00211FFF | Luftfeuchte- Temperatur und Helligkeit 1 (runder Tisch)(OFFLINE) | xor |
Feuchtwerk_2 | 0x00212000 | 0x00212FFF | Luftfeuchte- Temperatur und Helligkeit 2 (Raum mit den Sofas)(OFFLINE) | xor |
Feuchtwerk_3 | 0x00213000 | 0x00213FFF | Luftfeuchte- Temperatur und Helligkeit 4 (Mate-Lager) | xor |
Feuchtwerk_4 | 0x00214000 | 0x00214FFF | Luftfeuchte- Temperatur und Helligkeit 3 (Werkstatt)(OFFLINE) | xor |
oledwerk_1 | 0x00301000 | 0x00301FFF | OLED-Display 1, 128x64px(OFFLINE) | xor |
ledkeys_1 | 0x00401000 | 0x00401FFF | 8 LED-Taster(OFFLINE) | xor |
IRWerk | 0x00501000 | 0x00501FFF | Strahle IR-Signale anstatt der Fernbedienungen (OFFLINE) | hk |
FunkWerk | 0x00502000 | 0x00502FFF | Sende/Empfange Funksigale bis 4FSK auf 433 MHz (OFFLINE) | hk |
Allgemeine System Botschaften
Botschaft | CAN-Id | Zykluszeit | byte[0] | byte[1] | byte[2] | byte[3] | byte[4] | byte[5] | byte[6] | byte[7] | Beschreibung | Sender |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Zeitbasis | 0x101 | 1000 ms | UnixTime[0] | UnixTime[1] | UnixTime[2] | UnixTime[3] | 0x00 | 0x00 | 0x00 | 0x00 | Unixtime in Liddle Endian | Hausbus Pi |
Steckerbelegung
Wir setzen einen SUB-D 9 ein.
- Pin 1: -
- Pin 2: CAN Low
- Pin 3: GND
- Pin 4: Klemme 15 (GND wenn Hauptstom aktiv, sonst hohe Impedanz)
- Pin 5: -
- Pin 6: -
- Pin 7: CAN High
- Pin 8: -
- Pin 9: +12V
SocketCan auf dem Pi
Raspian installieren und updaten
$ sudo apt-get update $ sudo apt-get install linux-image-rpi-rpfv $ ls /boot/*-rpi /boot/config-3.18.0-trunk-rpi /boot/initrd.img-3.18.0-trunk-rpi /boot/System.map-3.18.0-trunk-rpi /boot/vmlinuz-3.18.0-trunk-rpi
Die version des installiertem kernel Image merken und an das Ende der folgenden Datei anhaengen:
$ sudo nano /boot/config.txt
Beispiel
kernel=vmlinuz-3.18.0-trunk-rpi initramfs initrd.img-3.18.0-trunk-rpi followkernel