Kategoriarkiv: Teknik

Startracker prototype

Så blev min tracker (barndoor) endelig færdig. Der er brugt:

En gammel 18V power supply fra en bærbar PC.
En gammel 10W Nokia oplader. Den kan give 2A ved 5V.
En Raspberry Pi B.
En steppermotor fra et plotterbord.
Trækrem og diverse hjul fra en defekt printer.
En bukket 6mm gevindstang.
En mikroswitch.

Programmering er i HTML5, php, javascript og perl. Styringen foregår fra en lille enkel webside, som vist i ovenstående galleri.

Det jeg skal have lavet om, er blandt andet monteringen på stativet. Denne del er ikke stiv nok. Der skal ikke meget til før kameraet begynder at gynge.

Recovery af SD kort eller andet medie

De fleste fotointeresserede kender situationen: Et eller andet går galt under overførsel af data fra SD-kortet til PC,- eller Mac’en. Derefter bruger man flere timer på at søge efter et program der kan redde ens (røv) uvurderlige billeder. Det viser sig ret hurtigt at 99% af programmerne kan redde dine data, hvis du lige donerer 300-500kr.

 

Tør dine tårer. Der findes et gratis alternativ. Det er godt nok uden grafisk interface men det virker, og det virker rigtigt godt endda.

Værktøjet hedder PhotoRec og testdisk og kan findes på PhotoRec’s hjemmeside. Brugsvejledning er enkel, men lidt teknisk/nørdet:

Håber i kan bruge ovenstående. Jeg har reddet røven og dagen med værktøjerne.

Autofirewall på port 25

Jeg har skrevet et perl program, der beskytter Linux mailservere på port 25.

Programmet kigger på det der bliver skrevet i /var/log/mail. Hvis hosts forsøger noget som ikke tillades vil hosten blive firewallet i 24 timer.

Strategien er 3 “ulovlige” forespørgsler på 20 minutter medfører en drop aktion i iptables.

Opsætning:

  1. Hent programfil autofirewall.pl
  2. Ret user og password for adgang til mysql i ovenstående fil
  3. Hent sql definitions fil autofirewall.sql
  4. udfør “chmod 555 autofirewall.pl”
  5. udfør autofirewall.sql i mysql eller MariaDB
  6. Læg “*/10 * * * * /sti/til/autofirewall.pl > /sti/til/en/log.fil” ind i roots crontab
  7. Din MTA er nu effektivt beskyttet mod brute force angreb

Update 2016/01/14:

Mindre fixes og ny funktion gør at firewallregler reetableres efter firewall genstart eller at systemet er blevet rebootet.

Min Raspberry Pi B+ med lcd

I julen købte jeg en raspberry Pi B+. Jeg har nu rodet lidt med den og fået den til at køre hæderligt.

Raspberry Pi B+ med lcd
Raspberry Pi B+ med lcd

Den er blevet overklokket til 1GHz og der er sat lcd display (HD44780) på. Yderligere har jeg fået wifi til at virke.

Raspberry pi indefra
Raspberry pi indefra

For at få displayet til at virke, har jeg programmeret i perl.

#!/usr/bin/perl

use strict;
use warnings;

use Device::BCM2835;
use Device::BCM2835::LCD;
use Sys::Hostname;
use Net::Interface;
use Socket;
use File::Touch;

# Init display, specifying the GPIO pin connections 
my $lcd = Device::BCM2835::LCD->new();

my $inetaddr;
my $lockfile = "/tmp/lcd.locked";
my @lock = ($lockfile);
my $dato;
my $tid;
my $host;
my @raatid;
my @linier = qw(1 2 3 4);
my $ip;
my $int;
my $lcdlin;
my $update = 0;

my %interfaces = ();

sub getInterfaces {
 my $intRef = shift;

 my @int;
 my $ip;
 my $iface;

 @int = Net::Interface->interfaces();
 foreach $iface (@int) {
 next if ( "$iface" eq "lo" );
 open IP, "/sbin/ip addr show $iface|" or die "Kunne ikke udfore \'ip\'\n";
 while (<IP>) {
 next if ( ! /inet / );
 s/.*inet (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\/.*/$1/;
 $$intRef{$iface} = $1;
 last;
 }
 close IP;
 }
 
}

unlink $lockfile if ( -e $lockfile);
$lcd->init (
 Display => 2004,
 pin_rs => &RPI_GPIO_P1_24,
 pin_e => &RPI_GPIO_P1_23,
 pin_d4 => &RPI_GPIO_P1_07,
 pin_d5 => &RPI_GPIO_P1_11,
 pin_d6 => &RPI_GPIO_P1_13,
 pin_d7 => &RPI_GPIO_P1_15,
);
$host = hostname;
while ( 1 == 1) {
 if ( ! -e $lockfile ) {
 # Lås display
 touch(@lock);
 
 # Find tid, dato, hostnavn
 $host = hostname if ($host eq "raspberry");
 
 @raatid = localtime(time);
 $tid = sprintf "%02s:%02s:%02s", $raatid[2], $raatid[1], $raatid[0];
 $dato = sprintf "%02s/%02s/%02s", $raatid[3], $raatid[4]+1, $raatid[5]-100;

 $linier[0] = sprintf "%-11s %8s", $host ,$dato;
 $linier[1] = sprintf " %8s", $tid;
 
 $lcd->SetPos(1, 0);
 $lcd->PutMsg($linier[0]);
 $lcd->SetPos(2, 0);
 $lcd->PutMsg($linier[1]);
 $lcdlin = 4;
 if ( $update == 0 ) {
 %interfaces = ();
 getInterfaces(\%interfaces);
 $lcd->SetPos(3, 0); $lcd->PutMsg(" ");
 $lcd->SetPos(4, 0); $lcd->PutMsg(" ");
 foreach $int ( keys %interfaces ) {
 $linier[$lcdlin-1] = sprintf "%-5s%15s", "$int", $interfaces{$int};
 print "$linier[$lcdlin-1]\n";
 $lcd->SetPos($lcdlin, 0);
 $lcd->PutMsg($linier[$lcdlin-1]);
 $lcdlin--;
 }
 }
 if ( $update == 15 ) {
 $update = 0;
 } else {
 $update++;
 }
 
 unlink $lockfile if ( -e $lockfile );
 }
 sleep 1;
}

Hvis der findes en fil der hedder /tmp/lcd.locked, vil der ikke ske noget på displayet.

Programmet skal udføres som root. Enten med sudo eller logget ind som root.

For at få displayet til at virke, skal der indstalleres flere pakker. Et c-lib og to perl-moduler:
libbcm2835 fra http://www.airspayce.com/mikem/bcm2835/
Device::BCM2835 fra cpan
Device::BCM2835::LCD også fra cpan

I Device::BCM2835::LCD er der et par fejl, som nemt rettes.

I filen /urs/local/share/perl/5.14.2/Device/LCD.pm er der et par linier der skal rettes.
RPI_GPIO_P1_23 11
RPI_GPIO_P1_24 8

# init: set up LCD lines.
# Defaults are the "common" GPIO pins, and 20x4 screen
sub init {
  my $self = shift;
  my %defaults = qw(
        Display 2004
        pin_rs RPI_GPIO_P1_24
        pin_e RPI_GPIO_P1_23
        pin_d4 RPI_GPIO_P1_07
        pin_d5 RPI_GPIO_P1_11
        pin_d6 RPI_GPIO_P1_13
        pin_d7 RPI_GPIO_P1_15
        );
  my %args = (%defaults, %_);

I afsnitet med initialize the device skal følgende rettes:
Device::BCM2835::gpio_write($e,0);      # start with EN low
nibbleToLines(3);               # high nibble 0x03
&strobe_E;                      # strobe EN
usleep(5000);
nibbleToLines(3);               # low nibble 0x03
&strobe_E;                      # strobe EN

Vinfremstilling – anden del

Vinen er nu færdig med at gære. Den er noget uklar. På nuværende tidspunkt smager den allerede godt.

Vin før gærstop

 

Efter et par dages klaring, dvs. de døde gærceller bundfæller, er vinen klar til at blive hældt om til yderligere klaring og udskildelse af CO2.Førsteklaring og omhældning

 

Vinen stikkes om til en ren beholder.Omhældning

Vinen er nu klaret og CO2’en er rystet ud.Minus CO2

Flasker er rengjorte og sterilliserede. De tørrer på et hjemmegjort tørrestativ.Flasker tørres

Vinen fyldes på flasker.Vin hældes på

Så er propperne kommet i. Det er ikke helt nemt. Nogle flasker er lidt snævre i halsen og kraven kan være glat.Vin Færdig

Den færdige flaske Med etikette

 

Så er det bare at vente en måned eller to på at vinen modner.

 

Firewall kan give lange svartider

Update: 20140119
Så ser det ud til at firewallen er justeret så de fleste sider kommer frem uden at “falde i søvn” eller med manglende elementer 🙂

Justerer pt. på min firewall, så websiden kan godt have lidt lange svartider. Send mig et hint hvis det er helt tosset på min mail.

Mvh
Tomas