Doorbell Extender: Unterschied zwischen den Versionen
K (→Fotos: gallery) |
|||
(9 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | {{Projekt|verantwortlich=Matthis|status= | + | {{Projekt|verantwortlich=Matthis|status=aktiv|beschreibung=Verlängerung der Türklingel, sowie des Türöffners in den Frickelraum, geht aber gerade nicht richtig|bild=|bildbeschreibung=|interessenten=[[Benutzer:Chrissi^|Chrissi^]]|source=[http://svn.tinyhost.de/stratum0/doorbell/ svn.tinyhost.de]|lizenz=netIO Firmware: GNU GPL|download=|version=}} |
− | == Ziel | + | == Ziel == |
Oft sitzt man gemütlich im Frickelraum und hängt seinen Problemen nach. Und dann passiert es: ''Es klingelt, aber niemand bekommt es mit.'' | Oft sitzt man gemütlich im Frickelraum und hängt seinen Problemen nach. Und dann passiert es: ''Es klingelt, aber niemand bekommt es mit.'' | ||
Das Problem: Mit N (N > 0) geschlossenen Türen oder halbwegs lauter Musik bekommt man von der Klingel im Frickelraum schlicht nichts mehr mit. | Das Problem: Mit N (N > 0) geschlossenen Türen oder halbwegs lauter Musik bekommt man von der Klingel im Frickelraum schlicht nichts mehr mit. | ||
Zeile 9: | Zeile 9: | ||
Zusätzlich scheint es sinnvoll nicht nur die Information einer Türklingel, sondern auch die Information eines betätigten Türöffners zu übertragen. Somit ist man <s>gewarnt</s> informiert, wenn jemand in den Space kommt. | Zusätzlich scheint es sinnvoll nicht nur die Information einer Türklingel, sondern auch die Information eines betätigten Türöffners zu übertragen. Somit ist man <s>gewarnt</s> informiert, wenn jemand in den Space kommt. | ||
− | == Idee | + | == Idee == |
* An der Tür wird ein [http://www.pollin.de/shop/dt/MTQ5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_AVR_NET_IO.html NetIO] eingesetzt, dass Schaltvorgänge an der Türklingel und am Türöffner überwacht. | * An der Tür wird ein [http://www.pollin.de/shop/dt/MTQ5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_AVR_NET_IO.html NetIO] eingesetzt, dass Schaltvorgänge an der Türklingel und am Türöffner überwacht. | ||
* Passiert auf einer der beiden Leitungen ein Event, wird dieses per IP Broadcast über Ethernet Broadcast und ein UDP auf einem lustigen Port ins LAN geblasen. | * Passiert auf einer der beiden Leitungen ein Event, wird dieses per IP Broadcast über Ethernet Broadcast und ein UDP auf einem lustigen Port ins LAN geblasen. | ||
* Dort können beliebige Slaves mithören und das anzeigen. | * Dort können beliebige Slaves mithören und das anzeigen. | ||
* Im Frickelraum gibt es dann ein weiteres netIO, dass auf diese Broadcasts wartet und diese, wenn sie eintreten, visualisiert. | * Im Frickelraum gibt es dann ein weiteres netIO, dass auf diese Broadcasts wartet und diese, wenn sie eintreten, visualisiert. | ||
− | * Ist es möglich einen | + | * Ist es möglich einen Befehl in der Art von "leuchte 30 sec." zu geben? --[[Benutzer:Matthis|Matthis]] 15:15, 18. Okt. 2012 (CEST) |
** Ja, ist möglich. Das Quell-Gerät sagt nur: Das Event ist passiert. Wie die anderen Geräte reagieren, kann auf denen jeweils festlegen. Eine Zeit ist dabei auf jeden Fall schon vorgesehen. --[[Benutzer:Chrissi^|Chrissi^]] 15:28, 18. Okt. 2012 (CEST) | ** Ja, ist möglich. Das Quell-Gerät sagt nur: Das Event ist passiert. Wie die anderen Geräte reagieren, kann auf denen jeweils festlegen. Eine Zeit ist dabei auf jeden Fall schon vorgesehen. --[[Benutzer:Chrissi^|Chrissi^]] 15:28, 18. Okt. 2012 (CEST) | ||
− | == Systemarchitektur | + | == Systemarchitektur == |
Die Abbildung ''Doorbell-Extender: Event Propagation'' veranschaulicht den Aufbau des Systems. | Die Abbildung ''Doorbell-Extender: Event Propagation'' veranschaulicht den Aufbau des Systems. | ||
[[Datei:Systemueberblick.svg|thumb|Doorbell-Extender: Event Propagation]] | [[Datei:Systemueberblick.svg|thumb|Doorbell-Extender: Event Propagation]] | ||
Zeile 24: | Zeile 24: | ||
Auf Client-netIOs können Events im LAN lokale Aktionen zugeordnet werden. Solche Aktionen können das toggeln eines Ausgangs, das Ein- oder Ausschalten eines Ausgangs, sowie das zeitgesteuerte Aktiveren eines Ausgangs sein. | Auf Client-netIOs können Events im LAN lokale Aktionen zugeordnet werden. Solche Aktionen können das toggeln eines Ausgangs, das Ein- oder Ausschalten eines Ausgangs, sowie das zeitgesteuerte Aktiveren eines Ausgangs sein. | ||
− | === UDP-Pakete | + | === UDP-Pakete === |
− | Doorbell-Extender Ereignisse werden per UDP als IP-Broadcast (Broadcast des lokalen Netzes) auf Port 31337 (''wir sind in einem Hackerspace; welcher Port auch sonst!) übertragen. Der Datenteil der Pakete hat dabei einen fixen Aufbau: | + | :''siehe: [[EVENTDISTR]]'' |
+ | |||
+ | Doorbell-Extender Ereignisse werden per UDP als IP-Broadcast (Broadcast des lokalen Netzes) auf Port 31337 (''wir sind in einem Hackerspace; welcher Port auch sonst!'') übertragen. Der Datenteil der Pakete hat dabei einen fixen Aufbau: | ||
<Proto ID>;<Event name>=<Event type> | <Proto ID>;<Event name>=<Event type> | ||
Den Feldern kommt dabei folgende Bedeutung zu: | Den Feldern kommt dabei folgende Bedeutung zu: | ||
Zeile 37: | Zeile 39: | ||
[[Datei:Beispiel UDP-Paket.jpg|thumb|Beispielhaftes UDP-Paket]] | [[Datei:Beispiel UDP-Paket.jpg|thumb|Beispielhaftes UDP-Paket]] | ||
− | == Fortschritt | + | == Fortschritt == |
[x] netIO kann Events senden. <br> | [x] netIO kann Events senden. <br> | ||
[x] netIO kann Events emfpangen. <br> | [x] netIO kann Events emfpangen. <br> | ||
Zeile 44: | Zeile 46: | ||
[x] <s>Eine Lampe für das empfangene netIO </s> Eine akustische Klingel zum Klingeln.<br> | [x] <s>Eine Lampe für das empfangene netIO </s> Eine akustische Klingel zum Klingeln.<br> | ||
[x] Eine elektrische Schnittstelle zwischen netIO und Lampe <br> | [x] Eine elektrische Schnittstelle zwischen netIO und Lampe <br> | ||
− | [ ] Es soll aus dem Frickelraum möglich sein, den Türöffner zu betätigen.<br> | + | [x] Es soll aus dem Frickelraum möglich sein, den Türöffner zu betätigen.<br> |
− | --> [ ] Einsetzen eines Tasters im Frickelraum incl. absetzen des entsprechenden Events <br> | + | --> [x] Einsetzen eines Tasters im Frickelraum incl. absetzen des entsprechenden Events <br> |
− | --> [ ] Entgegennehmen des Events an der Tür und Weitergabe an den Türöffner. (Wahrscheinlich am Einfachsten parallel zum bestehenden Handy-Türöffner ^^)<br> | + | --> [x] Entgegennehmen des Events an der Tür und Weitergabe an den Türöffner. (Wahrscheinlich am Einfachsten parallel zum bestehenden Handy-Türöffner ^^)<br> |
[x] Es wurde gewünscht die Klingel etwas leiser bzw. weniger störend zu machen. <br> | [x] Es wurde gewünscht die Klingel etwas leiser bzw. weniger störend zu machen. <br> | ||
[ ] Eventuell sollte man die Klingellautstärke an die Raumlautstärke anpassen. <br> | [ ] Eventuell sollte man die Klingellautstärke an die Raumlautstärke anpassen. <br> | ||
Zeile 63: | Zeile 65: | ||
== Fotos == | == Fotos == | ||
− | + | <gallery heigths="150" widths="200"> | |
− | + | Datei:2012-10-23 19.56.12.jpg|Geschlossene Klingel-Box | |
− | + | Datei:2012-10-23 19.56.32.jpg|Geöffnete Klingel-Box | |
+ | Datei:2012-10-23 19.57.59.jpg|netIO im Flur | ||
+ | </gallery> | ||
− | == | + | == Anwendungen == |
+ | |||
+ | === pyEventdistr === | ||
+ | [https://github.com/stratum0/pyEventdistr pyEventdistr] hat die Skripte <tt>s0ring</tt>, um Klingelgeräusche zu erzeugen (use reasonably!), und <tt>s0open</tt>, um die Tür unten zu öffnen. | ||
+ | |||
+ | === Java-Implementierung === | ||
Java-Klasse, mit der UDP-Events gesendet und empfangen werden können. | Java-Klasse, mit der UDP-Events gesendet und empfangen werden können. | ||
− | * Broadcast für den Space: 192.168. | + | * Broadcast für den Space: 192.168.179.255 |
* Events: siehe weiter oben | * Events: siehe weiter oben | ||
Zeile 81: | Zeile 90: | ||
stop_command = b"EVENTDISTRv1;DoorUnten=RISING" | stop_command = b"EVENTDISTRv1;DoorUnten=RISING" | ||
start_command = b"EVENTDISTRv1;DoorUnten=FALLING" | start_command = b"EVENTDISTRv1;DoorUnten=FALLING" | ||
− | ip = "192.168. | + | ip = "192.168.179.255" |
port = 31337 | port = 31337 | ||
Zeile 91: | Zeile 100: | ||
s.close() | s.close() | ||
</pre> | </pre> | ||
+ | |||
+ | |||
+ | [[Kategorie:Infrastruktur]] |
Aktuelle Version vom 13. April 2015, 17:56 Uhr
Doorbell Extender | |
---|---|
Beschreibung: | Verlängerung der Türklingel, sowie des Türöffners in den Frickelraum, geht aber gerade nicht richtig |
Kontakt: | Matthis |
Status: | aktiv (Was heißt das?) |
Quellcode: | svn.tinyhost.de |
Lizenz: | netIO Firmware: GNU GPL |
Inhaltsverzeichnis
Ziel
Oft sitzt man gemütlich im Frickelraum und hängt seinen Problemen nach. Und dann passiert es: Es klingelt, aber niemand bekommt es mit. Das Problem: Mit N (N > 0) geschlossenen Türen oder halbwegs lauter Musik bekommt man von der Klingel im Frickelraum schlicht nichts mehr mit.
Dies soll nun dadurch behoben werden, dass ein Klingeln an der Tür von einem Gerät erkannt und über ein Protokoll über das Netzwerk verteilt wird. Slaves sollen aufgrund einer solchen Information ein Klingeln erkennen und somit ihrerseits ein Klingelsignal auslösen.
Zusätzlich scheint es sinnvoll nicht nur die Information einer Türklingel, sondern auch die Information eines betätigten Türöffners zu übertragen. Somit ist man gewarnt informiert, wenn jemand in den Space kommt.
Idee
- An der Tür wird ein NetIO eingesetzt, dass Schaltvorgänge an der Türklingel und am Türöffner überwacht.
- Passiert auf einer der beiden Leitungen ein Event, wird dieses per IP Broadcast über Ethernet Broadcast und ein UDP auf einem lustigen Port ins LAN geblasen.
- Dort können beliebige Slaves mithören und das anzeigen.
- Im Frickelraum gibt es dann ein weiteres netIO, dass auf diese Broadcasts wartet und diese, wenn sie eintreten, visualisiert.
- Ist es möglich einen Befehl in der Art von "leuchte 30 sec." zu geben? --Matthis 15:15, 18. Okt. 2012 (CEST)
- Ja, ist möglich. Das Quell-Gerät sagt nur: Das Event ist passiert. Wie die anderen Geräte reagieren, kann auf denen jeweils festlegen. Eine Zeit ist dabei auf jeden Fall schon vorgesehen. --Chrissi^ 15:28, 18. Okt. 2012 (CEST)
Systemarchitektur
Die Abbildung Doorbell-Extender: Event Propagation veranschaulicht den Aufbau des Systems.
Das sendende netIO überwacht die digitalen Eingänge 1 .. 4. Tritt an einem dieser Eingänge eine positive und/oder eine negative Flanke auf, so wird das dem Eingang zugeordnete Event per UDP ins LAN übertragen. Im LAN können nun mehrere Clients nach Broadcast-Events lauschen.
Auf Client-netIOs können Events im LAN lokale Aktionen zugeordnet werden. Solche Aktionen können das toggeln eines Ausgangs, das Ein- oder Ausschalten eines Ausgangs, sowie das zeitgesteuerte Aktiveren eines Ausgangs sein.
UDP-Pakete
- siehe: EVENTDISTR
Doorbell-Extender Ereignisse werden per UDP als IP-Broadcast (Broadcast des lokalen Netzes) auf Port 31337 (wir sind in einem Hackerspace; welcher Port auch sonst!) übertragen. Der Datenteil der Pakete hat dabei einen fixen Aufbau:
<Proto ID>;<Event name>=<Event type>
Den Feldern kommt dabei folgende Bedeutung zu:
- Proto ID: String, der das genaue verwendete Protokoll beschreibt. Zunächst ist nur der String "EVENTDISTRv1" erlaubt!
- Event name: Name des Events. Maximal 10 Zeichen.
- Event type: Der Typ des Events. Gibt an, was genau Auslöser des Events war. Erlaubte Eigenschaften sind:
- RISING
- FALLING
Der Datenteil des UDP-Paketes darf eine maximale Länge von 100 Byte nicht überschreiten!
Fortschritt
[x] netIO kann Events senden.
[x] netIO kann Events emfpangen.
[x] Es gibt eine elektrische Schnittstelle, so dass ein netIO mitbekommt, wenn es klingelt.
[x] Netzwerkanbindung im Flur (z.B. über WLAN auf LAN Brücke)
[x] Eine Lampe für das empfangene netIO Eine akustische Klingel zum Klingeln.
[x] Eine elektrische Schnittstelle zwischen netIO und Lampe
[x] Es soll aus dem Frickelraum möglich sein, den Türöffner zu betätigen.
--> [x] Einsetzen eines Tasters im Frickelraum incl. absetzen des entsprechenden Events
--> [x] Entgegennehmen des Events an der Tür und Weitergabe an den Türöffner. (Wahrscheinlich am Einfachsten parallel zum bestehenden Handy-Türöffner ^^)
[x] Es wurde gewünscht die Klingel etwas leiser bzw. weniger störend zu machen.
[ ] Eventuell sollte man die Klingellautstärke an die Raumlautstärke anpassen.
Ereignisse und Reaktionen
Ereignisse
- DingDong
- Auf netIO an der Tür. Wird gesendet, so lang geklingelt wird. (RISING und FALLING)
Reaktionen
- DingDong
- Auf netIO mit Lampe im Frickelraum. Ein Ausgang wird für 20 Sekunden eingeschaltet.
Fotos
Anwendungen
pyEventdistr
pyEventdistr hat die Skripte s0ring, um Klingelgeräusche zu erzeugen (use reasonably!), und s0open, um die Tür unten zu öffnen.
Java-Implementierung
Java-Klasse, mit der UDP-Events gesendet und empfangen werden können.
- Broadcast für den Space: 192.168.179.255
- Events: siehe weiter oben
Verfügbar im SVN
kleines Python-Skript um die Tür unten zu öffnen
import socket as sock import time stop_command = b"EVENTDISTRv1;DoorUnten=RISING" start_command = b"EVENTDISTRv1;DoorUnten=FALLING" ip = "192.168.179.255" port = 31337 s = sock.socket(sock.AF_INET, sock.SOCK_DGRAM) s.setsockopt(sock.SOL_SOCKET,sock.SO_BROADCAST,1) s.sendto(start_command,(ip,port)) time.sleep(3) s.sendto(stop_command,(ip,port)) s.close()