Apr 11

Das Kind hat doch derbe Defizite mit dem kleinen 1×1. Macht sich jetzt so richtig bemerkbar, weil im Unterricht Division mit REST durchgenommen wird. Nun habe ich allerdings wenig Lust, mir alle Nasenlang neue Aufgaben aus den Fingern zu saugen. Also mal flux ein Perl-Script geschrieben, welches die Ergebnisse gleich mitliefert. Auf Excel-Output hatte ich gerade keine Lust, sollte aber mit “Spreadsheet::WriteExcel” (gibts beim CPAN Ihres Vertrauens) auch kein Thema sein.

Das folgende Script wirft also 60 Aufgaben mit 60 Ergebnissen aus. Wenn man den Output (Tab-getrennt) in Excel guttenbergt (CopyPaste), dann hat man auf dem “linken” Blatt, bei einem 18er Font, die Aufgaben, und auf dem rechten Blatt die Ergebnisse. Die machen es dann etwas leichter, den Kram den der Nachwuchs da hingepinselt hat, zu kontrollieren.

#!/usr/bin/perl
my $i=100;
my @erg,@aufg;
my $sollaufgaben=60;
while ($aufgaben<$sollaufgaben) {
  $i++;
  my $a=int(rand($i)%100);
  my $b=int(rand($i)%10);
  $b=1 if int($b)==0;
  $a=1 if int($a)==0;
  if (int($a/$b)<12) {
    $aufgaben++;
    push @aufg,$aufgaben."\t".$a."\t:\t".$b;
    push @erg,int($a/$b)." R ".($a % $b);
  }
}

for (my $i=0;$i<int($sollaufgaben/2);$i++) {
  print $aufg[$i*2]."\t\t".$aufg[$i*2+1]."\t\t";
  print $erg[$i*2]."\t".$erg[$i*2+1]."\n";
}
									

Tagged with:
Apr 01

Ein wenig herumgespielt mit dem Arduino habe ich ja schon bei dem Rauchmelder und dem BetaBrite-Display. Nicht gebloggt wurde bisher über die Funksteckdosen, die derweil per Webserver an- und ausgeschaltet werden können (Dank dieser Library).

Das müsste doch ansich auch mit dem Garagentoröffner funktionieren. Der tut doch auch auf 433,92MhZ. Letztes Jahr hatte ich mir bei Watterod einen 433er Sender und einen Empfänger, der bisher noch nicht zum Einsatz kam, geordert. Den Empfänger also fix mal startklar gemacht und an den Arduino angeflanscht. Allerdings ist das auslesen eines Senders, bei dem man keinen Schimmer hat welche Codierung genutzt wird, alles andere als trivial. Habe es dann ersteinmal mit der 433MhZ-Wetterstation von Tchibo probiert. Nach diversen Bitfriemeleien purzelte da dann auch tatsächlich die Temperatur heraus. Nungut – wir wollen ja einen Garagentoröffner simulieren, nicht Funkthemometer auslesen.

Aus dem ollen Code bin ich allerdings nicht schlau geworden. Hier mal ein oszillografierter Ausschnitt (due to security reasons :-) ) des Senders:

Man erkennt insgesamt 3 Arten von Pulsen – kurze, lange und mittlere (WTF ?). Habe erst auf einen Manchester-Code getippt. War mir dann aber irgendwie zu doof den zu analysieren. Also fix mit gtkwave die Pulslängen in ein Array gepackt, und fertig ist der Garagentoröffner per Arduino. Hier der (Draft !) des Sourcecodes mit dem Pulslängenarray (Negativ = LOW, Positiv = HIGH):


int garage[45]={  // Block 1 (21 x das gepulse)
               -16382,-16382, // Blocktrenner (2)
               // Block 2 (22 x das gepulse)
};


void setup() {
  pinMode(8,OUTPUT);
  pinMode(13,OUTPUT);
  digitalWrite(8,LOW);
}

void loop() {
  fire(garage,0);          // Garage Toggeln
  digitalWrite(8,LOW);
  digitalWrite(13,HIGH);
  delay(10000);
  digitalWrite(13,LOW);
}

void fire(int what[],int corr) {  // what: PositiverWert: Dauer des HIGHPulses, NegativerWert: Dauer des LowPulses; corr = Korrekturzeit pro Puls
    for (int i=0;i<26;i++) {
      int del=what[i]+corr;
      if (del>0) {
        digitalWrite(8,HIGH);
        delayMicroseconds(del);
      } else {
        del=del*(-1);
        digitalWrite(8,LOW);
        delayMicroseconds(del);
    }
  }
}
									

Fazit: Funktioniert perfekt. Wenn allerdings jemand ‘ne Ahnung hat welches Protokoll (bzw. Leitungscode) das sein könnte – immer her damit :-)

Tagged with:
Jan 20

Jetzt weiss ich auch warum netcat das “Schweizer Taschenmesser” der Netzwerktechnik genannt wird. Gewaltig das Ding.

Doch von vorne – Folgende Ausgangssituation:

Man hat eine Maschine (BOB), die irgendwo hinter einer (SOHO-)Firewall steht. Diese SOHO-Speedport-Dingsdas sind meist so konfiguriert das nix reindarf, aber alles raus. Jetzt möchten wir aber gerne von einer anderen Kiste (die irgendwo im Internet hinter einem etwas eleganter konfigurierten Linux-Router steht, und hier mal ALICE heissen soll) per ssh auf BOB zugreifen. Ferner nehmen wir an, wir hätten gerade (temporär) Zugriff auf BOB (lokal, wie auch immer) und könnten auch auf ALICE rumtoben.

Problem: Direkt von einem Client hinter ALICE gehts nicht, weil unserer Client (Nennen wir ihn PLUTO – der der hinter ALICE geNATted sitzt) zwar durch ALICE rauskommt, aber an BOB’s SOHO-Router scheitert. Wäre doch prima wenn wir irgendwie eine Remoteshell von BOB aus aufmachen könnten. Wir trauen BOB aber nicht, und wollen Ihm auch nicht den SSH-Key/Password für ALICE rausrücken. SSH von BOB nach PLUTO/ALICE ist also doof – Was tun ??

Man nehme: Netcat und Named Pipes. Im einzelnen sieht das dann wie folgt aus:

  1. Brücke auf ALICE bauen:
    netcat -v -l -p 4711 -c "/bin/nc -l -p 4712"
    ALICE wartet jetzt also auf Port 4711. Alles was sich dort verbindet, wird dann mit einem neuen Listener, der auf 4712 horcht verbunden.
  2. Auf BOB erzeugen wir ein Device (Pipe) damit wir bidirektional den ssh-Datenstrom ins Netcat rein und auch wieder rausbekommen:
    mknod backpipe p
  3. Nun nehmen wir das ganze von BOB aus in Betrieb:
    netcat -vv ALICE 4711 <backpipe |netcat -v localhost 22 >backpipe
  4. Wenn wir auf PLUTO nun ein ssh root@ALICE -p 4712 ausführen, sind wir auf BOB angekommen. Voila

Sehr elegant, wie ich finde.

User die auf BOB meinetwegen root-rechte haben und Memdumps machen können, kommen nicht weiter, weil die ja keinen Key oder ähnliches von PLUTO oder ALICE haben, das netcat auf ALICE ist schon dicht mit einer Connection – da kann also auch nichts passieren. Und wir können prima von PLUTO aus auf BOB weiterarbeiten/remote unterstützen/whatever bis jemand die Pipe oder den Netcat tötet…

 

Tagged with:
Dez 10


Seit geraumer Zeit sind Rauchmelder in Neubauten ja Pflicht. Macht ja auch durchaus Sinn. Gerade wenn man an solche USV-Aktionen denkt :-) Also muss ein Rauchmelder her. Der Otto-Normal-Nerd möchte aber mindestens irgendwas haben, was sich auch in die Standardhaustechnik integrieren lässt – am besten noch ein Set von mehreren Rauchmeldern. Da gibts es zig Varianten:

  1. Die Billigrauchmelder (um die 5-10 Euro)
  2. Die Billgrauchmelder die per 433MhZ miteinander sprechen (ab 60 Euro im Set mit 4 Stück)
  3. Die teueren Systemrauchmelder die nichts anderes als (2) machen, nur das G*ra oder sonstwas draufsteht.
  4. Die sündhaft teueren Rauchmelder mit eingebauten GSM-Modul (ab ca. 150 Euro aufwärts…)

Gelinde gesagt: Alles doof – da es entweder meinen Ansprüchen nicht genügt, oder massivst zu teuer ist.

Nun denn erstmal Dinge sichten – also ab zum Baumarkt und mal einen Rauchmelder der Kategorie “1″ gekauft. Schimpft sich RM120 und hat schlappe 8,- gekostet. Laut ist das Ding ja, wenn man Zigarettenrauch reinbläst, oder mal den Testknopf drückt – bringt nur nix, wenn niemand zu hause ist :-( Nach dem öffnen des Geräts, schaut einen ein wenig SMD-Technik (Oha) an, darunter ein IC mit der Aufschrift “CS2105go“. Wie sollte es anders sein, dazu gibts leider kein Datenblatt. Aber Moment, vielleicht ist der CS2105GO-M12 ja Pinkompatibel mit dem MC145010 – Bingo, ist er ! Der MC145010 (manchmal auch MC145012) wird in fast allen Rauchmeldern der Kategorie 1 und 2 (teilweise auch 3) verkauft.

Der aufmerksame Leser merkt was: Bei 2 ist doch eine Vernetzung möglich ! Korrekt, so ist es. Mit anderen Worten: In den Rauchmeldern der Kat.1 ist derselbe IC verbaut, wie in 2, nur das in 1 halt das 433MhZ Modul fehlt. Brauch ich (zumindest jetzt zum Testen) eh erstmal nicht –  doch dazu später. Der MC145010 verfügt über einen sog. I/O Pin, der bei 2er Rauchmeldern dann das 433MhZ-Modul per TTL-High triggert, sobald es qualmt. Beim 1er liegt PIN7 (I/O) tot herum. Perfekt. Also fix den Ground (-) und PIN7 per Kabel rausgeführt und an den Arduino geklemmt:

 

Links (Schwarz) die Masse – Also GND direkt mit dem GND des Arduino’s verbinden,

Recht (Rot), etwas fuckeliger, den PIN7 (I/O) des CS2105GO-M12 auf einen Analogen Input-PIN des Mikrocontrollers legen.

Auf dem Arduino selbst habe ich derzeit die gute Wohnzimmerinfo-Anzeige am laufen, da ist also schon ein “Ethernet-Shield” drauf. Da dort noch diverse Analoge Ports frei sind, und der Rauchmelder auch direkt deben dem Display wohnen soll, also optimal. Vom Code her gestaltet sich das ganze relativ simpel (siehe unten). Das allerfeinste ist jedoch, dass man nichtmal gegen irgendwelche Vorschriften verstösst, wenn man sich anstelle von Variante 1 für einen Rauchmelder der Variante “2″ entscheidet. Denn alle Rauchmelder bleiben so wie sie sind (sprich: Die piepen trotzdem). Nur einen, in dem 433MhZ-”Netz”, muss man dann an den Arduino anklemmen. Der verbaute Standalone-RM120 piept übrigens auch noch – denn genau dafür ist PIN7 gedacht: I/O !


#include
#include

#define SmokePIN 0

int Smoke=0;
boolean mailsent=false;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,0, 100 };

void setup () {
Ethernet.begin(mac,ip);
}

void loop() {
// Read Smokedetector
Smoke=analogRead(SmokePIN);

// GGf. RESET der Variable mailsent

if (Smoke > 900) {
if (mailsent==false) {
firemail();
mailsent=true;
}
}
}

void firemail() {
// IP des Mailservers
byte mserver[] = {192,168,0,101};
Client Mail(mserver,25);
if (Mail.connect()) {
Mail.println(“HELO arduino.domain.tld”); /* say hello (statement after helo is needed but irrelevant)*/
Mail.println(“MAIL From: et_brennt@domain.tld”); /* identify sender, this should be the same as the smtp server you are using */
Mail.println(“RCPT To: et_brennt@domain.tld”); /* identify recipient */
Mail.println(“DATA”);
Mail.println(“To: et_brennt@domain.tld”); /* identify recipient */
Mail.println(“Subject: Burning down the House”); /* insert subject */
Mail.println(“WARNING – Smoke detected !”); /* insert body */
Mail.println(“.”); /* end email */
Mail.println(“QUIT”); /* terminate connection */
Mail.println();
Mail.stop();
}
}

Tagged with:
Dez 06

Args. Was ein pfu. Doch von vorne:

Am Freitag letzter Woche ging es los. Meine gute SmartUPS 1500RM hatte auf einmal Hitzewellen. Woher die kamen ? Keine Ahnung. Entdeckt habe ich das ganze eher durch Zufall, da ich ab und an dann doch mal einen Blick ins cacti werfe. Da sah das ganze dann so aus:Hitzewellen in der APC 1500 Interessant in dem Zusammenhang: Die USV wirft erst einen Alert ab ca. 60 Grad Celsius. Meiner Meinung nach – die sollte sich später noch bestätigen – viel zu spät. Das Rack, indem sich die APC 1500 befindet, hat übrigens direkte Aussenbelüftung – im “Serverraum” waren es also die ganze Zeit über so um die 16 Grad. Bei den Peaks bin ich dann doch mal ‘runter gegangen und hab die Schranktür des Racks aufgemacht, und siehe da: Temp wieder normal.

Am Wochenende stand das gute Stück also erstmal unter Beobachtung. Wie man oben erkennt, war es jedoch ruhig. Pünktlich zum Wochenbeginn fing die USV dann aber wieder an zickig zu werden. Da mir dass ganze (wörtlich !) zu heiss wurde, habe ich mich dann entschlossen das Batterypack (ist in so einer Cartridge) zumindest abzuklemmen. Da die Notstromversorgung Hot (!)-Pluggable ist, also kein Problem.

Sofern die angeschlossenen Geräte in diesem Zustand (Batterien abgezogen / disconnected) noch laufen, sollte man es tunlichst unterlassen der USV den Strom zu klauen. Nicht nur, dass dann alles aus ist – das wäre zu einfach – man bekommt auch keinen Saft wieder auf die USV. Die lässt sich nämlich nur mit angepömpelten Akkus starten (FAIL !!).

Also erstmal Ersatzakkus bestellen. Aber € 520,- für ‘ne Cartridge (RBC24) mit 4 Moppedakkus ? Ja sind die wahnsinnig bei APC ? Das muss doch günstiger gehen. Geht es: Diverse Händler verkaufen die Akkus einzeln zum Stückpreis von € 20,- . Da die Akkus bisher noch nicht eingetroffen sind, spreche ich da noch keine Empfehlung aus :-)

Demontage:

Ansich nett gedacht. Frontblende der UPS entfernen, 4 Schrauben lösen und dann einfach die Cartridge mit den 4 Bleigelakkus rausziehen. Was aber tun, wenn die Dinger aufgequollen sind ? Mit Gewalt ziehen, hat geholfen. Hier das Resultat:

Nun “nur noch” die 4 Akkus aus der Blechwanne entfernen. Haha ! Kein Tutorial, keine versteckte Klammer mit der die Dinger da gehalten werden – nix. Fühlt sich an wie festgeklebt. So war es auch. Jeder Akku ist mit einem dusseligen doppelseitigem Klebestreifen an der Wanne festgeklebt. (2ter FAIL !!) Also auch hier wieder Gewalt anwenden, und die Dinger vorsichtig mit dem Schraubenzieher anhebeln – irgendwann kommen die von alleine :-) Der Sicherheit halber, habe ich die Anschlüsse mal zusammengetaped, isoliert, und mit Nümmerchen versehen. Jeder Platz in der Aluwanne hat dann die korrespondierende Nummer bekommen. Jetzt heisst es warten auf die Ersatzlieferung, und hoffen das der Strom nicht ausfällt.

PS: Vor ca. 6 Jahren ist mir mal eine 750er Desktop-SmartUPS unterm Schreibtisch hochgegangen. War nicht lustig. Die musste ich mit dem Topflappen auf den Balkon befördern… Von daher: Wenn Euch die Akku-Temperatur (Internal Temperature bei APC) komisch vorkommt – lieber heute als morgen die Akkus wechseln.

Tagged with:
Nov 11

Ab und an schaue ich mal bei “derWesten” vorbei um die neuesten Dinge aus meiner alten Heimat zu lesen. Seit ca. 3 Wochen hat man bei dW das alte Newsportal durch ein neues ersetzt.

Zur Erinnerung: Das alte WebPortal machte einen auf “blog”. Es gab dort bspw. (lieblos funktionierende) Trackbacks, die zwar in den Kommentaren hier und da auftauchten, bei denen man aber krampfhaft nach der Trackback-URL suchen musste. Ferner hatte ich den Eindruck, dass nichtmal die (Lokal-)Redakteure selbst wussten, wann und wie ein Beitrag im Inhaltsverzeichnis geranked wurde. So waren z.B. Artikel, die auf ein Event am nächsten Tag hinwiesen, sogar nach Monaten noch prominent auf der (Lokal-)Titelseite sichtbar. Andere, durchaus kontrovers diskutierten, Artikel schon nach 5h wieder verschwunden. (Irgendwie muss es der CvD also doch beeinflussen können)

Wie sich das ganze mit dem neuen Online-Redaktionssystem auswirkt, mag ich noch nicht beurteilen, zumal ich, wie oben erwähnt, nur alle Jubelwochen dort mal vorbeischaue. Sämtliche gesetzte Bookmarks und Trackbacks sind mit dem Softwareupdate allerdings ungültig geworden, da man bei derWesten anscheinend den Begriff permalink nicht begriffen hat.

Beim letzten Aufruf von derWesten traf mich jedoch ein leichter Schlag. Jetzt muss ich vorher allerdings etwas ausholen: Ich habe hier zu hause, zusätzlich zum AdBlocker, einen Privoxy installiert. Der springt bei diversen Keywords und suspekten Seiten an, und blockiert dann, Serverseitig (also im Proxy), den entsprechenden Request. Ich rufe also derWesten, über mein nicht aktualisiertes Bookmark, auf, um dann direkt mal auf den erstbesten Artikel zu springen. In diesem Moment meldet mein Privoxy sinngemäss “Nee, ist nicht, weil da was mit ads (Werbung) vorkommt”.

Der Link, der mir da entgegensprang, sah schon suspekt aus (irgendwas mit xiti.com), sodass ich mir das mal näher angesehen habe. Im HTML der Seite steht noch ein normales href, also ein “Deeplink” auf den Artikel. Ein Redirect findet auch nicht statt. Woher kam also dieses “xiti.com” gedönse. Des Rätsels Lösung findet man in einem mitgeladenen Javascript, mit dem sprechenden Namen “click.js”. Die “Entwickler” von derWesten haben sich einfach in den onClick Handler vom Link eingeklinkt. Jedesmal wenn von dieser Seite ein Link aufgerufen wird, manipuliert ein Stück Code von derWesten die Umleitung via “xiti.com” darein. Na Toll !!

Der Erste Gedanke war: Gibt’s jetzt schon Werbeanbieter die das anclicken im eigenen Angebot incentivieren ? Nein, gibt es natürlich nicht. xiti.com ist ein Anbieter der, festhalten – und jetzt versteht Ihr warum ich oben so weit ausgeholt habe – die Struktur einer Site optimieren soll. Mit anderen Worten läuft das wie folgt, wenn ich es richtig verstanden habe: derWesten schaltet dieses xiti.com immer dann dazwischen, wenn der User einen vermeintlich toten Link aufgerufen hat, um herauszufinden, was der Anwender denn wollte.

Das muss man sich mal vorstellen. Da lässt sich dieses WAZ-Blättchen ein komplett individualisiertes CMS zusammenbretzeln, dass vor Javascript-Foo nur so strotzt, und dann nehmen die für Analysen einen 302er Redirect über einen Amiland-Anbieter in Kauf ? So ein include, o.ä. hätte es sicher auch getan.

Naja, wenn dann xiti.com abraucht, dann zieht’s derWesten halt gleich mit.

Tagged with:
Okt 18

Muss man ja auch erstmal wissen, wie das ohne iTunes geht: Einfach in der “Music-App” auf dem Podcast von links nach rechts “wischen”, und schon erscheint der Deletebutton.

Man lernt halt nie aus…

Tagged with:
Sep 29

Maschine by int2k
Maschine, a photo by int2k on Flickr.

Das “Riesenrad” auf Zeche Zollverein war dann dochmal in Betrieb.

Tagged with:
Sep 26

Festung Ehrenbreitstein by int2k
Sieht schon etwas surreal aus, mit den Wasserwerfern im Vordergrund.

Blöd, dass Koblenz, aufgrund der BuGa 2011, nahezu überall “Umleitungen” für den Standardbesucher eingerichtet hat. Sprich: Um bspw. zum Deutschen Eck zu kommen, muss man einiges am Umweg auf sich nehmen…

Tagged with:
Aug 16

Vorsicht an der Gangway by int2k
Vorsicht an der Gangway, a photo by int2k on Flickr.

Perfektes Licht in Ostholland…

Tagged with:
Aug 12

Auf so eine Idee muss man erstmal kommen.

Mit 50er Rollern die Alpen hoch … lol

Tagged with:
Aug 11

Elektrifiziertes Bokeh by int2k
Elektrifiziertes Bokeh, a photo by int2k on Flickr.

Mal ein wenig mit Focus-Stacking herumgespielt…

Aug 10

WTF ? by int2k
WTF ?, a photo by int2k on Flickr.

Ist die Katze gesund, dann ist die Tasche voll :-)

Tagged with:
Aug 02

Geplündertes Lohnbüro by int2k
Geplündertes Lohnbüro, a photo by int2k on Flickr.
Tagged with:
Jul 28

Vorsicht am Bahnsteig by int2k
Vorsicht am Bahnsteig, a photo by int2k on Flickr.
Tagged with:
preload preload preload