Uit Hack42
Ga naar: navigatie, zoeken
Regel 11: Regel 11:
 
== Hardware ==
 
== Hardware ==
 
De SpaceStateSwitch is een tweepolige maakschakelaar die gekoppeld is aan de tweede ethernetpoort van een [http://www.soekris.com Soekris 4511] accesspoint. Sluiten van de schakelaar verbindt tx+/rx+ en tx-/rx-, waardoor eth1 de link up detecteert.
 
De SpaceStateSwitch is een tweepolige maakschakelaar die gekoppeld is aan de tweede ethernetpoort van een [http://www.soekris.com Soekris 4511] accesspoint. Sluiten van de schakelaar verbindt tx+/rx+ en tx-/rx-, waardoor eth1 de link up detecteert.
 +
 +
[[image:Soekris_ap.jpg|thumb|right|300px]]
  
 
== Software ==
 
== Software ==

Versie van 8 mrt 2011 17:13

Project: SpaceStateSwitch
Schroefje24.png
Schroefje24.png
Schroefje24.png
Schroefje24.png
SpaceStateSwitch Picture.jpg

SpaceStateSwitch

Naam SpaceStateSwitch
Door RickDeckardt
Status Afgerond
Madskillz madhacks
Doel / Omschrijving
Een coole schakelaar die de spacestate twittert/irc/etc met rudimentaire api
Alle Projecten - Project Toevoegen
File:SpaceStateSwitch_Picture.jpg noez

Nederlands

Om te weten te komen of de hackerspace open is of niet moet dit snel op te vragen zijn. Sowieso zichtbaar op een webpagina, liefst de voorpagina van hack42.nl, maar twitter en irc zou ook een mooie lokatie zijn om aan te geven wat de status van de space is. Vandaar de SpaceStateSwitch. Hoe dit te doen? In ieder geval met een schakelaar die Mad Scientist Lab-waardig is. Hieronder de implementatie van de rest van de schakelaar.

Hardware

De SpaceStateSwitch is een tweepolige maakschakelaar die gekoppeld is aan de tweede ethernetpoort van een Soekris 4511 accesspoint. Sluiten van de schakelaar verbindt tx+/rx+ en tx-/rx-, waardoor eth1 de link up detecteert.

Soekris ap.jpg

Software

Het Access Point draait linux. Met behulp van cron wordt iedere minuut een statecheck script gestart. wat met ethtool kijkt of eth1 link heeft.

Pseudocode van het statecheck.sh script:

IF connection_state_eth1 eq connected AND laststate eq closed;
  curl http://user@pass:host/spacestate/setstate.php?state=open
  IF curl_success; set laststate open
 
IF connection_state_eth1 eq disconnected AND laststate eq open;
  curl http://user@pass:host/spacestate/setstate.php?state=closed
  IF curl_success; set laststate closed

'API'-mogelijkheid voor externe apps

Tweets

De koppeling naar twitter wordt vanuit het setstate.php script gedaan: Het phpscript twittert de spacestate op @hack42 en past de volgende lokale files aan: - http://hack42.nl/spacestate/index.html

setstate.php gebruikt de twitteroauth module van Abraham https://github.com/abraham/twitteroauth.

Koppeling naar IRC

Op irc://irc.hack42.nl/#hack42 draait een gozerbot met rss-feed plugin Een van de rss-feeds die hij volgt is die van http://twitter.com/hack42, elke minuut kijkt hij naar nieuwe tweets van hack42 en bij een nieuwe tweet hoest hij deze het irckanaal in.

XSS in je eigen webpagina!

Plak deze code in je webpagina voor de hack42 spacestate-bar

<iframe width="390" height="50" scrolling="no" style="border: none;" src="https://hack42.nl/spacestate/"></iframe>

Growlnotifier door jvhaarst

Knippen en plakken naar hack42notify.sh

#!/bin/bash
# Scriptje om een Growl notify te krijgen bij openen (en sluiten) van de space
# jvhaarst, 13/2/2011 8h47
# Aangepast door Deckardt
# Aangepast jvhaarst 13/2/2011 15h03
# Aangepast jvhaarst 13/2/2011 21h20 (datum van statuswijziging toegevoegd)
# Aangepast jvhaarst 13/2/2011 21h50 (datum van statuswijziging uit state.time)
# Nodig:
# bash
# curl
# Growl (http://growl.info/)
# growlnotify (in extras directory van de Growl dmg)
# plaatje van https://hack42.nl/wiki/index.php/Huisstijl
# Start debugging from here
#set -o xtrace
#set -o verbose
# variabelen
DEBUG=false
OLDSTATE="closed"
IMAGE=~jvhaarst/bin/code/42/Hack42_white.png

# Oneindige loop, iedere 60 sec draait ie
while TRUE; do
	# check op state, ignore 404's, but returm error state
	CURRENTSTATE=`curl -f -s http://hack42.nl/spacestate/state`
	CURL_ERROR=$?
	# debug
	$DEBUG && echo $CURRENTSTATE

	# check op verandering
	if [[ "$CURRENTSTATE" != "$OLDSTATE" && $CURL_ERROR -eq 0 ]];then
		# Haal tijd van verandering op
		TIME=`curl -s http://hack42.nl/spacestate/state.time`
		# Growl de state !
		growlnotify -s -m "#42 is $CURRENTSTATE! ("$TIME")" --image $IMAGE
		# De huidige is de oude, zodat bij we een nieuwe state dat merken (lekker cryptisch, niet ?)
		OLDSTATE=$CURRENTSTATE
	fi
	sleep 60
done

Het icon staat hier :

Hack42 white.png

Opties

Het doorverbinden van tx+/rx+ en tx-/rx- kan ook met een tweepolig maakrelais. Dit kan gestuurd worden met een handmatige (enkelpolige) schakelaar, gekoppeld met de ruimteverlichting, een toegangssysteem of bewegingsmelders.








English

For members and potential guests of the hackersspace who'd like to know if the space is opened or closed before they pop by, we needed a simple method of indicating this. Preferably on the main site http://hack42.nl/, but also on twitter and in our irc channel. The simple method chosen was a SpaceStateSwitch, based on a mad-scientist-lab worthy switch, as depicted above. This is the story of the rest of the technical implementation.

Hardware

The SpaceStateSwitch is a DPST switch connected to the second ethernet port of a Soekris 4511 accesspoint. Closing the switch connects tx+/rx+ and tx-/rx-, causing eth1 to detect link up.

Software

The Access Point runs linux. Using cron the statecheck script is executed each minute; it uses ethtool to check for eth1 link up.

statecheck.sh script in pseudocode:

IF connection_state_eth1 eq connected AND laststate eq closed;
  curl http://user@pass:host/spacestate/setstate.php?state=open
  IF curl_success; set laststate open
 
IF connection_state_eth1 eq disconnected AND laststate eq open;
  curl http://user@pass:host/spacestate/setstate.php?state=closed
  IF curl_success; set laststate closed

rudimentary 'API' for external apps

Tweets

Twittering the status change to @hack42 is done using setstate.php on the external webserver. It also modifies http://hack42.nl/spacestate/index.html , a very bare page which can be quickly and easily accessed via almost any phone with internet capabilities.

setstate.php uses Abrahams twitteroauth module https://github.com/abraham/twitteroauth.

Interface to IRC

irc://irc.hack42.nl/#hack42 runs a gozerbot with rss-feed plugin. One of the feeds is http;//twitter.com/hack42, which is checked every minute and echoed into the channel

XSS in your own webpage!

Paste this code in your webpage to show the hack42 spacestate-bar

<iframe width="390" height="50" scrolling="no" style="border: none;" src="https://hack42.nl/spacestate/"></iframe>

Growlnotifier by jvhaarst

cut and paste to hack42notify.sh

#!/bin/bash
# Scriptje om een Growl notify te krijgen bij openen (en sluiten) van de space
# jvhaarst, 13/2/2011 8h47
# Aangepast door Deckardt
# Aangepast jvhaarst 13/2/2011 15h03
# Aangepast jvhaarst 13/2/2011 21h20 (datum van statuswijziging toegevoegd)
# Aangepast jvhaarst 13/2/2011 21h50 (datum van statuswijziging uit state.time)
# Nodig:
# bash
# curl
# Growl (http://growl.info/)
# growlnotify (in extras directory van de Growl dmg)
# plaatje van https://hack42.nl/wiki/index.php/Huisstijl
# Start debugging from here
#set -o xtrace
#set -o verbose
# variabelen
DEBUG=false
OLDSTATE="closed"
IMAGE=~jvhaarst/bin/code/42/Hack42_white.png

# Oneindige loop, iedere 60 sec draait ie
while TRUE; do
	# check op state, ignore 404's, but returm error state
	CURRENTSTATE=`curl -f -s http://hack42.nl/spacestate/state`
	CURL_ERROR=$?
	# debug
	$DEBUG && echo $CURRENTSTATE

	# check op verandering
	if [[ "$CURRENTSTATE" != "$OLDSTATE" && $CURL_ERROR -eq 0 ]];then
		# Haal tijd van verandering op
		TIME=`curl -s http://hack42.nl/spacestate/state.time`
		# Growl de state !
		growlnotify -s -m "#42 is $CURRENTSTATE! ("$TIME")" --image $IMAGE
		# De huidige is de oude, zodat bij we een nieuwe state dat merken (lekker cryptisch, niet ?)
		OLDSTATE=$CURRENTSTATE
	fi
	sleep 60
done

The icon is here:

Hack42 white.png

Options

Connecting tx+/rx+ and tx-/rx- can also be done using a DPST relay. This can be controlled by a SPST switch, an access system, motion sensors or simply hooked up to the room lighting.