X-Git-Url: http://git.rohieb.name/stratum0-wiki.git/blobdiff_plain/d30db2a6078058c3e92f767c51cc509d7f24f7a6..a3cd615811f0467866ad24fba110a0efcb7dbb07:/Doorbell_Extender.mw?ds=sidebyside diff --git a/Doorbell_Extender.mw b/Doorbell_Extender.mw index edab3ce41..78ce85bd9 100644 --- a/Doorbell_Extender.mw +++ b/Doorbell_Extender.mw @@ -1,4 +1,4 @@ -{{Projekt|verantwortlich=Matthis|status=aktiv|beschreibung=Verlängerung der Türklingel, sowie des Türöffners in den Frickelraum|bild=|bildbeschreibung=|interessenten=[[Benutzer:Chrissi^|Chrissi^]]|source=[http://svn.tinyhost.de/stratum0/doorbell/ svn.tinyhost.de]|lizenz=netIO Firmware: GNU GPL|download=|version=}} +{{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: == Oft sitzt man gemütlich im Frickelraum und hängt seinen Problemen nach. Und dann passiert es: ''Es klingelt, aber niemand bekommt es mit.'' @@ -13,16 +13,18 @@ Zusätzlich scheint es sinnvoll nicht nur die Information einer Türklingel, son * 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? --[[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) == Systemarchitektur: == Die Abbildung ''Doorbell-Extender: Event Propagation'' veranschaulicht den Aufbau des Systems. -[[Datei:Doorbell-Extender Systemueberblick.png|thumb|Doorbell-Extender: Event Propagation]] +[[Datei:Systemueberblick.svg|thumb|Doorbell-Extender: Event Propagation]] 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: === -Doorbell-Extender Ereignisse werden per UDP als IP-Broadcast auf Port 1337 (''wir sind in einem Hackerspace; welcher Port auch sonst!) übertragen. Der Datenteil der Pakete hat dabei einen fixen Aufbau: +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: ;= Den Feldern kommt dabei folgende Bedeutung zu: * '''Proto ID''': String, der das genaue verwendete Protokoll beschreibt. Zunächst ist nur der String "''EVENTDISTRv1''" erlaubt! @@ -33,3 +35,58 @@ Den Feldern kommt dabei folgende Bedeutung zu: Der Datenteil des UDP-Paketes darf eine maximale Länge von 100 Byte nicht überschreiten! [[Datei:Beispiel UDP-Paket.jpg|thumb|Beispielhaftes UDP-Paket]] + +== 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
+[ ] Es soll aus dem Frickelraum möglich sein, den Türöffner zu betätigen.
+--> [ ] Einsetzen eines Tasters im Frickelraum incl. absetzen des entsprechenden Events
+--> [ ] 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 == +[[Datei:2012-10-23 19.56.12.jpg|thumb|Geschlossene Klingel-Box]] +[[Datei:2012-10-23 19.56.32.jpg|thumb|Geöffnete Klingel-Box]] +[[Datei:2012-10-23 19.57.59.jpg|thumb|netIO im Flur]] + +== Demonstrator-Anwendung == +Java-Klasse, mit der UDP-Events gesendet und empfangen werden können. +* Broadcast für den Space: 192.168.178.255 +* Events: siehe weiter oben + +Verfügbar im [http://svn.tinyhost.de/stratum0/doorbell/trunk/UDP_SEND_workspace_%28Java%29/UDP-Send/src/doorbell/ 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.178.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()
+