Backup und Restore der SD-Card gepackt (gzip)

Edith: die gzip-Lösung dauert länger als ohne Packer, 600s contra 400s bei 8GB-SD

Normaler Weg

Backup

dd if=/dev/sdX bs=1M of=image.img

Restore

dd if=image.img of=/dev/sdX bs=1m

 

 

Backup GZ

dd if=/dev/sdX bs=1M | gzip > /pfad/image.gz

X=a/b/c/d… die Partition halt, herausfinden mit

cat /proc/partitions

oder

tail -f /var/log/syslog beim Einstecken

 

Restore

gzip -dc /pfad/image.gz | dd of=/dev/sdx bs=1M

 

gzip spart Platz, Zeit eher nicht, bs=1M spart Zeit, Lesen/Schreiben geht dreimal so schnell.

 

Edith zum folgenden Skript: geht nicht, die „neuen“ Images haben eine andere Partitionierung, leere Sektoren vor der ersten Partition.

Ein elegantes Skript zum nachträglichen Schrumpfen der erstellten Images gibt’s hier, die passen dann auch auf kleiner SD-Karten, die Images müssen auf der Festplatte liegen.

Script : Automatic RPi Image Downsizer

 

#!/bin/bash
# Automatic Image file resizer
# Written by SirLagz
strImgFile=$1


if [[ ! $(whoami) =~ "root" ]]; then
echo ""
echo "**********************************"
echo "*** This should be run as root ***"
echo "**********************************"
echo ""
exit
fi

if [[ -z $1 ]]; then
echo "Usage: ./autosizer.sh "
exit
fi

if [[ ! -e $1 || ! $(file $1) =~ "x86" ]]; then
echo "Error : Not an image file, or file doesn't exist"
exit
fi

partinfo=`parted -m $1 unit B print`
partnumber=`echo "$partinfo" | grep ext4 | awk -F: ' { print $1 } '`
partstart=`echo "$partinfo" | grep ext4 | awk -F: ' { print substr($2,0,length($2)-1) } '`
loopback=`losetup -f --show -o $partstart $1`
e2fsck -f $loopback
minsize=`resize2fs -P $loopback | awk -F': ' ' { print $2 } '`
minsize=`echo $minsize+1000 | bc`
resize2fs -p $loopback $minsize
sleep 1
losetup -d $loopback
partnewsize=`echo "$minsize * 4096" | bc`
newpartend=`echo "$partstart + $partnewsize" | bc`
part1=`parted $1 rm 2`
part2=`parted $1 unit B mkpart primary $partstart $newpartend`
endresult=`parted -m $1 unit B print free | tail -1 | awk -F: ' { print substr($2,0,length($2)-1) } '`
truncate -s $endresult $1

Grundlagen 1-wire

Lady Ada mal wieder, alles fertig:

Klicke, um auf adafruits-raspberry-pi-lesson-11-ds18b20-temperature-sensing.pdf zuzugreifen

Vorsicht 1, je nach PDF-Reader gehen die Einrückungen beim STRG-C, STRG-V verloren, dann tut das Skript nicht.

 VORSICHT 2 NEUER KERNEL mit „device tree“, alte hardwareabhängigen Anleitungen müssen oft modifiziert werden, siehe http://www.raspberrypi.org/forums/viewtopic.php?p=675658#p675658

Hier in /boot/config.txt hinten anfügen:

# 1-wire settings
dtoverlay=w1-gpio,gpiopin=4

So wie’s aussieht braucht man danach auch keine 1-wire-Module mehr in /etc/modules eintragen, die werden automatisch geladen.

PDF lokal, falls adafruit-Linkziel nicht mehr vorhanden: adafruits-raspberry-pi-lesson-11-ds18b20-temperature-sensing

wifi-Stick konfigurieren

Grundsätzlicher Eintrag in /etc/network/interfaces belassen:

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Konfiguriert werden die Zugangsdaten in /etc/wpa_supplicant/wpa_supplicant.conf und das sieht so aus:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid=“fingerwegsonstab“
psk=“hierdas WPA2-Passwort rein“
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
}

 

Einfaches „notify“, Zuordnung eines Ergeignisses zu einem anderen Ereignis.

Beispiel TasteD-Fernbedienung AN/AUS zu Steckdose Dose1

define alledosenschalten notify TasteD set Dose1 $EVENT

alledosenschalten => neuer virtueller Aktor

TasteD => Die vierte Taste der Fernbedienung

Dose1 => vorher definierte Steckdose, die mit der Fernbedienung schaltbar ist

set Dose1 $EVENT => Dose1 wird an-/ausgeschaltet, $EVENT ist die Variable, die automatisch die Zustände on/off annimmt

 

von hier: http://www.fhemwiki.de/wiki/Trick_der_Woche

Alles in FHEM, nichts in der Fernbedienung

Versuche in deiner FHEM Umgebung nicht, das Verhalten von Aktoren durch entsprechende Befehle aus Sensoren oder Fernbedienungen zu steuern. An Besten senden die nur ON und OFF oder DIM, den Rest möglichst immer in FHEM erledigen.

Wer eine Lampe immer für vier Minuten einschalten will, programmiert seinen Schalter (Fernbedienung) also so, das nur „on“ gesendet wird und erledigt den Rest in FHEM:

define act_on_Schalter notify Schalter set Lampe-on-for-timer 240

Vielfach wird argumentiert, das eine dirkete Kopplung die Zuverlässigkeit erhöht, da bei einem Ausfall von FHEM der Aktor totzdem schaltbar sei. Überlege, ob es hier nicht weniger komplex ist, die Zuverlässigkeit der FHEM Instanz zu erhöhen.

LIRC

LIRC

Transistor Basis an GPI0 (Pin3), VCC an 3,3V und GND auf…GND!

in /etc/lirc/hardware.conf zuordnen

/etc/lirc/lircd.conf Codes rein, z.B. für vuplus

Module laden, in /boot/config.txt, nur /etc/modules reicht nicht => neuer Kernel

#lirc neu in config.txt VORSICHT, das ist GPIO25 an Pin 22
dtoverlay=lirc-rpi, gpio_out_pin=25

 

Vorsicht! Da in /etc/lirc/hardware.cfg uinput genutzt wird, muss das Modul uinput auch geladen werden! Fehlt in vielen Anleitungen

 

Nach dem Starten nochmal /etc/init.d/lirc restart, weiss der Teufel wieso, such ich noch.

Wichtiger Befehl, zeigt, was es fuer „remotes“ gibt (lircd.conf)

irsend LIST „“ „“

Senden mit:

irsend SEND_ONCE vuplus.conf KEY_OK

irsend SEND_START /etc/lirc/mvpin1 KEY_R

Gute Anleitung: http://www.spech.de/blog/article/universalfernbedienungrpi

 

Testbefehle:

mount -t debugfs debugfs /sys/kernel/debug
cat /sys/kernel/debug/gpio 

The output should be something like this (you should see two gpio pins allocated to the lirc_rpi driver):
GPIOs 0-53, bcm2708_gpio:
 gpio-16  (led0                ) out hi
 gpio-17  (lirc_rpi ir/out     ) in  lo
 gpio-18  (lirc_rpi ir/in      ) in  hi

Bluetooth-Grundlagen

Erstmal die Blauzahnunterstützung installieren:

apt-get install bluetooth => Monsterpacket

 

hcitool

hciconfig => zeigt Interfaces

hcitool hci0 up => Interface wird aktiviert

hcitool scan => Paarungswillige Geräte anzeigen

root@kali:~# hcitool scan
Scanning ...
00:12:11:28:05:63 linvor
bluez-simple-agent hci0 00:12:11:28:05:63 => Pairing, Key 1234 wird abgefragt

Um die Schnittstelle /dev/rfcomm0 nutzen zu können muss man /etc/bluetooth/rfcomm.conf editieren:

rfcomm0 {
 # Automatically bind the device at startup
 bind yes;
 # Bluetooth address of the device
device 00:12:11:28:05:63;
 # RFCOMM channel for the connection
channel 1;
 # Description of the connection
comment "Example Bluetooth device"; }

 

 

rfcomm => Status der Verbindungen

root@kali:~# rfcomm l
rfcomm0: 00:19:7E:F7:AC:4A -> 00:12:11:28:05:63 channel 1 connected [reuse-dlc tty-attached]

 

Kompletter 1-wire-Arduinocode auf dem Nano:

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

void setup(void)
{
  // start serial port
  Serial.begin(9600);
   // Start up the library
  sensors.begin();
}

void loop(void)
{ 
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.print("Temperature is: ");
  Serial.print(sensors.getTempCByIndex(0));  
  Serial.println(" degrees Celsius ");
  delay(1000);
}

			

Bluetooth und 1-wire DS18B20 Arduino -> Pi

http://dwightreid.com/blog/2014/09/24/arduino-bluetooth-temperature-sensor/

Link wackelt, deshalb hier ein Snapshot

Bluetoothcommunikcation wie hier:

Bluetooth Communication between Raspberry Pi and Arduino

cat /dev/rfcomm

 

Disseminating Technology

dwightreid.com Search

Main menu

Post navigation

Arduino Bluetooth Temperature Sensor

This Arduino based temperature sensor measures the temperature via the DS18B20 integrated digital temperature sensor and makes it available via bluetooth. The temperature reading is then transmitted via the Arduino’s serial port (pin 0 and pin 1) to the bluetooth module. An assembled sensor is shown in figure 1 and the system block digram in figure 2, both below.

AssembledKitFigure 1: Bluetooth Temperature Sensor, Battery Powered

The DS18B20 digital temperature sensor is a three pin integrated sensor that provides  its readings digitally via a one-wire interface. It has an accuracy of ±0.5°C in the measurement range -10°C to +85°C (14°F to +185°F) making it ideal for hobbyist and some industrial applications. The Arduino community already has libraries to interface with this sensor making it easier to integrate this sensor into projects.

BlockDiagFigure 2: Sensor Block Diagram

The bluetooth module acts as a transparent link and simply relays what is sent to its serial port to a paired bluetooth receiver.Default settings:

  • Default pairing code: 1234
  • Default baudrate: 9600

The bluetooth receiver can be a pc, laptop, table, smartphone, etc and the readings displayed via a standard bluetooth terminal app.

ScreenshotTablet7inchFigure 3: Example Bluetooth Receiver Software (Android App)

Arduino Code:

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into port 2 on the Arduino
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);

void setup(void)
{
  // start serial port
  Serial.begin(9600);
   // Start up the library
  sensors.begin();
}

void loop(void)
{ 
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.print("Temperature is: ");
  Serial.print(sensors.getTempCByIndex(0));  
  Serial.println(" degrees Celsius ");
  delay(1000);
}