Techlog

The biggest battle with the code…

Raspberry Pi I SPI

Instalacja potrzebnych modułów

lang=bash
1
echo 'HandleLidSwitch=ignore' >> /etc/systemd/logind.conf

Resetowanie Hasła W XEN Guestcie

lang=bash
1
2
3
4
5
6
7
8
mkdir /tmp/a
mount -o loop /xen/images/domains/xyz/disk.img /tmp/a
chroot /tmp/a
 
passwd root
exit
 
umount /tmp/a

Automatyczne Zasłanianie I Odsłanianie Okien

Automatycznie zasłania i odsłania okna w oparciu o fotorezystor.

zaslanianie

Wyprowadzenia pinów D2 i D3 powinny sterować przekaźnikami, które sterują silnikiem elektrycznym.

c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include 


const unsigned long engineTime = 5000;


const byte engine1Pin = 2;
const byte engine2Pin = 3;

const byte sunPin = 0;
const byte sunReferencePin = 1;


void setup() {
  Serial.begin(38400);

  pinMode(engine1Pin, OUTPUT);
  digitalWrite(engine1Pin, HIGH);

  pinMode(engine2Pin, OUTPUT);
  digitalWrite(engine2Pin, HIGH);
}


unsigned long engine = 0;
unsigned long time = 0;


void loop() {
  Serial.print("Sun: "); Serial.println(analogRead(sunPin));
  Serial.print("Sun ref: "); Serial.println(analogRead(sunReferencePin));
  Serial.println();


  if (analogRead(sunPin) >= analogRead(sunReferencePin)) {
    if (engine != 1) {
      engine = 1;
      time = millis();
    }
  } else {
    if (engine != 2) {
      engine = 2;
      time = millis();
    }
  }


  if (millis() > time + engineTime) {
      digitalWrite(engine2Pin, HIGH);
      digitalWrite(engine1Pin, HIGH);

  } else if (engine == 1) {
      digitalWrite(engine1Pin, LOW);delay(20);
      digitalWrite(engine2Pin, HIGH);
      delay(15 * 60 * 1000);

  } else if (engine == 2) {
      digitalWrite(engine2Pin, LOW);delay(20);
      digitalWrite(engine1Pin, HIGH);
      delay(15 * 60 * 1000);
  }


  delay(1000);
}

Schemat wykonany w 123d.circuits.io

Alarm Domowy Na Arduino - Założenia

Baza:

  • klawiatura 4x4

  • RFID do łatwego rozbrajania

  • wyświetlacz LCD 2x16

  • możliwość zmiany konfiguracji

  • bezprzewodowa komunikacja z modułem zapasowym

  • beeper

Wykrywanie zdarzeń:

  • czujniki magnetyczne do drzwi

  • dwa czujniki magnetyczne do okien (otwarcie i uchylenie)

  • czujniki ruchu (PIR)

Powiadamianie:

  • przekazywanie informacji o alarmie do modułu zapasowego

  • syrena alarmowa

Moduł zapasowy:

  • powiadamianie GSM

  • syrena alarmowa

Zdalne Wykonywanie Poleceń Po SSH

bash
1
ssh user@server 'command'
bash
1
2
3
4
5
ssh user@server << EOF
command 1
command 2
command 3
EOF
bash
1
ssh user@server 'bash -s' < local_script.sh

Time Capsule Na RaspberryPi

Instalacja oprogramowania

bash
1
apt-get install hfsplus hfsutils hfsprogs netatalk

Przygotowanie partycji

bash
1
2
3
4
5
dd if=/dev/zero of=/var/timecapsule.disk bs=1M count=250000
mkfs.hfs -s -v 'TimeCapsule' /var/timecapsule.disk
echo '/var/timecapsule.disk /var/timecapsule hfsplus defaults 0 0' >> /etc/fstab
mount /var/timecapsule
chmod -R 777 /var/timecapsule

Konfiguracja

bash
1
2
echo '/var/timecapsule "Time Machine RaspberryPi" allow:pi options:tm,usedots' >> /etc/netatalk/AppleVolumes.default
/etc/init.d/netatalk restart

Sesje PHPa W Memcache/memcached

Trzeba mieć zainstalowany odpowiedni moduł, postawiony serwer memcache(d) oraz wprowadzić jedną z poniższych zmian w php.ini.

Wersja dla memcache:

1
2
session.save_handler = memcache
session.save_path = "tcp://localhost:11211"

Wersja dla memcached:

1
2
session.save_handler = memcached
session.save_path = "localhost:11211"