mr_door_status

Dezember 8th, 2011 § 3 comments § permalink

Schloss, Schalter, Arduino, Ethernet-Shield, Twitter
www.twitter.com/mr_door_status
http://mrdoor.paddd.de/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CODE:

#if defined(ARDUINO) && ARDUINO > 18
#include <SPI.h>
#endif
#include <Ethernet.h>
#include <EthernetDNS.h>
#include <EthernetDHCP.h>
#include <Twitter.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
const char* ip_to_str(const uint8_t*);
int state = 1; //door will be open at boot!!!
int sensorValue = 0;

Twitter twitter("your-token-here");

void setup() {
  Serial.begin(9600);
  network();
}

void network() {
  Serial.println("attempting to obtain DHCP lease...");
  EthernetDHCP.begin(mac);

  const byte* ipAddr = EthernetDHCP.ipAddress();
  const byte* gatewayAddr = EthernetDHCP.gatewayIpAddress();
  const byte* dnsAddr = EthernetDHCP.dnsIpAddress();
  
  Serial.println("DHCP lease has been obtained.");

  Serial.print("IP address is ");
  Serial.println(ip_to_str(ipAddr));
  
  Serial.print("gateway IP address is ");
  Serial.println(ip_to_str(gatewayAddr));
  
  Serial.print("DNS IP address is ");
  Serial.println(ip_to_str(dnsAddr));
}


// Just a utility function to nicely format an IP address.
const char* ip_to_str(const uint8_t* ipAddr) {
  static char buf[16];
  sprintf(buf, "%d.%d.%d.%d", ipAddr[0], ipAddr[1], ipAddr[2], ipAddr[3]);
  return buf;
}

void loop() {
  door_status();
  EthernetDHCP.maintain();
  randomSeed(millis());
}

void door_status() {
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue);
  
  if(sensorValue>915 && state==1){
    delay(3000);
    int sensorValue = analogRead(A0);
    if(sensorValue>915 && state==1){
      delay(3000);
      int sensorValue = analogRead(A0);
      if(sensorValue>915 && state==1){
        state=0;
        tweet(state);
      }
    }
  } 
  if(sensorValue<916 && state==0) {
    delay(3000);
    int sensorValue = analogRead(A0);
    if(sensorValue<916 && state==0) {
      delay(3000);
      int sensorValue = analogRead(A0);
      if(sensorValue<916 && state==0) {
        state=1;
        tweet(state);
      }
    }
  }
  //update margin
  delay(10000);
}

void tweet(int state) {
  if(state==1) {
    
    int rand = random(5000);
    char txt [120];
    sprintf(txt, "der maschinenraum ist offen No. %d", state);
    
    Serial.println("connecting to twitter...");
    if (twitter.post(txt)) {
      int status = twitter.wait();
      if (status == 200) {
        Serial.println("status tweet OPEN sent.");
      } else {
        Serial.print("tweet failed : code ");
        Serial.println(status);
      }
    } else {
    Serial.println("connection to twitter failed.");
    setup();
    }
    
  }  
  
  if(state==0) {
    
    int rand = random(5000);
    char txt [120];
    sprintf(txt, "der maschinenraum ist geschlossen No. %d", state);
    
    
    Serial.println("connecting to twitter...");
    if (twitter.post(txt)) {
      int status = twitter.wait();
      if (status == 200) {
        Serial.println("status tweet CLOSED sent.");
      } else {
        Serial.print("tweet failed : code ");
        Serial.println(status);
      }
    } else {
    Serial.println("connection to twitter failed.");
    setup();
    }
  }
}

Retro-Party

März 23rd, 2011 § 1 comment § permalink

in der M18 (Marienstraße 18 Weimar) am 2.4.11 21.00 Uhr.
Die Retro-Party wird eine Mischung aus 8-/16-Bit-Zockerei und Chiptunes-Livemusik. 

Mit dabei:

– Timescratch (www.myspace.com/timescratchinyourhead)
– Bikecore (www.soundcloud.com/bikecore)
– Mister Triac (www.myspace.com/mistertriac)

Unter anderem stehen folgende Konsolen und Rechner bereit, um ausgiebig bespielt zu werden: NES, C64, KC85, Atari 2600, Master System, Atari 7800, MSX(2), Interton VC4000, MB Vectrex, SNES, Mega Drive, Amiga und einiges mehr.

Zu trinken gibt es SpaßMate!
be there or be square

youtube-dl-agent

Januar 22nd, 2011 § 3 comments § permalink

youtube-dl-agent laedt eine liste von youtube-videos mit youtube-dl runter, konvertiert sie mit ffmpeg und fuegt sie mit mencoder zusammen. gedacht fuer splited youtube-videos.

usage:

$ youtube-dl-agent http://www.youtube.com/watch?v=Qpwj5k0zYDs \
http://www.youtube.com/watch?v=XCyXY4jLxo8 \
http://www.youtube.com/watch?v=BwJUV8vvGyA \
http://www.youtube.com/watch?v=xQuyiMravE4 \
--output="Weimar nach der Wende.avi"
#!/bin/bash

case "$1" in

  "" )
      exit $E_PARAM ;
  ;;

  * )
    TEMPPATH=$PWD"/youtube-dl-agent.swap/";
    mkdir $TEMPPATH;
    cd $TEMPPATH;

    for i in "$@"
    do
      case "$i" in
        http://* )
            URL=`echo $i`;
            echo " * * * "$URL" * * *";

            ###
            # DOWNLOAD FLV WITH YOUTUBE-DL
            /usr/local/bin/youtube-dl -t $URL

            ###
            # FIND DOWNLOADED FLV FILE BY ID
            ID=`echo $URL | /bin/sed -r 's/.*v=(.*)$/\1/'`;
#            echo $ID;
            IDS=$IDS$ID" ";

            FLV=`/usr/bin/find $PWD"/" -maxdepth 1 -name "*$ID.flv"`;
#            echo $FLV;
            FLVS=$FLVS$FLV" ";

            ###
            # COVERT FLV TO AVI
            /usr/bin/ffmpeg -i $FLV -vcodec copy \
            -acodec libmp3lame -ab 128k $FLV".avi"

            AVI=`/usr/bin/find $PWD"/" -maxdepth 1 \
            -name "*$ID*.avi"`;
#            echo $AVI
            AVIS=$AVIS$AVI" ";
        ;;

        # STRINGS WITH WHITESPACES HAVE TO BE
        # ENCAPSULATE WITH DOUBLE QUOTES
        --output=* )
            OUTPUT=`echo $i | sed 's/--output=//'`;
        ;;

        * )
            exit $E_PARAM ;
        ;;

      esac
    done
  ;;

esac

###
# MERGE SPLIT AVIS
/usr/bin/mencoder -ovc copy -oac copy $AVIS -o $OUTPUT

###
# MOVE FROM TEMP-DIR TO $USERS PWD
/bin/mv -v $OUTPUT ..

###
# CLEAN UP
/bin/rm -rv $TEMPPATH

exit 0

so habe ich das aber nicht abgespeichert…

Januar 10th, 2011 § 3 comments § permalink

da hat mir ein jemand mit dem gemeinschaftlichen root die daten manipuliert und mich mir selber den holzschuh ins getriebe werfen lassen.

ed@mediathek:~$ cat manipulatevote
#!/bin/bash
while true;
do curl
-F "chosenanswer=4" \
-F "poll_id=355599" \
-A 'Mozilla/4.0'
http://www.snappoll.com/act_vote.php;
sleep 2; done

habe ICH sicherlich nicht so abgespeichert! als das script zwischendurch mal einen fehler warf und ich es neu starten musste, haette ich eigentlich stutzig werden muesen. niemanden kann man hier mehr trauen!

WIR WERDEN ALLE STERBEN!!!!!11111 LOL?!

WLAN-BUW vpn on arch linux

November 18th, 2010 § 4 comments § permalink

Habs endlich geschafft auf meinem arch linux den vpn zu konfigurieren und will euch nicht vorenthalten wie es geht.

Zu allererst brauchen wir den vpnc.

sudo pacman -S vpnc

Dann gehts in die config von vpnc. Die liegt in /etc/vpnc/default.conf

# example vpnc configuration file
# see vpnc --long-help for details

#Interface name tun0
#IKE DH Group dh2
#Perfect Forward Secrecy nopfs

# You may replace this script with something better
#Script /etc/vpnc/vpnc-script
# Enable this option for NAT traversal
#UDP Encapsulate

IPSec gateway 172.18.254.252
IPSec ID GROUP-WLAN
IPSec secret v2oeff
Xauth username DEINNUTZER
Xauth password DEINPW

Da in der config dein vpn passwort plaintext liegt, kannst du zumindest mit chmod die rechte aendern, sodass nur root das file lesen kann.

chmod 700 /etc/vpnc/default.conf

Jetzt koennt ihr euch ins uni wlan einloggen und vpnc ausfuehren.

sudo vpnc

Weil ich ein fauler mensch bin und auf networkmanager stehe... gibs dazu auch noch was auf die augen:

Wicd haelt hierfuer die moeglichkeit bereit scripts fuer jede einzelne verbindung auszufuehren. Es gibt pre- und post connection scripts und pre- und post disconnection scripts. Weil wir nach dem connecten zum uni wlan vpnc ausfuehren wollen erstellst du dir /etc/wicd/scripts/postconnect/uniwlan.sh mit folgenden inhalt:

#!/bin/bash

script="$(basename "$0")"
script_name="${script/.sh/}"

echo "Running ${script}" >"/var/log/wicd/${script_name}.log"
exec 2>>"/var/log/wicd/${script_name}.log"
exec 1>&2

connection_type="$1"
echo "Connection type: ${connection_type}"

if [ "${connection_type}" == "wired" ]; then
profile="$3"
echo "Profile: ${profile}"
elif [ "${connection_type}" == "wireless" ]; then
essid="$2"
bssid="$3"
echo "ESSID: ${essid}"
echo "BSSID: ${bssid}"
else
echo "Unknown connection type: ${connection_type}" >&2
exit
fi

if [ "${essid}" == "WLAN-BUW" ]; then
killall vpnc
vpnc

else
exit
fi

Das killall vpnc ist nur ein reset,  falls da noch reste aus ner andern verbindung laufen... das else exit ist eventuell auch redundant... aber sicher ist sicher.

Wenn ihr aus dem uni wlan zu einem anderen netzwerk wechselt sollte natuerlich der vpnc wieder gekillt werden. Deshalb gibts /etc/wicd/scripts/postdisconnect/uniwlan.sh

#!/bin/bash

script="$(basename "$0")"
script_name="${script/.sh/}"

echo "Running ${script}" >"/var/log/wicd/${script_name}.log"
exec 2>>"/var/log/wicd/${script_name}.log"
exec 1>&2

connection_type="$1"
echo "Connection type: ${connection_type}"

if [ "${connection_type}" == "wired" ]; then
profile="$3"
echo "Profile: ${profile}"
elif [ "${connection_type}" == "wireless" ]; then
essid="$2"
bssid="$3"
echo "ESSID: ${essid}"
echo "BSSID: ${bssid}"
else
echo "Unknown connection type: ${connection_type}" >&2
exit
fi

killall vpnc
fi

There u have it... vergesst nicht die wicd scripts ausfuehrbar zu machen.
Ergebniss: Verbinden zum uniwlan incl. vpn mit einem click... bzw bei auto-connect total automatisiert und es ist nicht noetig dein pw einzutippen.

Where Am I?

You are currently browsing the Spass am Gerät category at maschinenraum.