Um Kontakt zur seriellen Schnittstelle aufzubauen kann unter Mac OS X das Programm: screen
verwendet werden. Einfach auf der Kommandozeile aufrufen
screen [ -optionen] [ Kommando [Argumente]] wie hier gezeigt um die USB Schnittstelle anzusprechen:
screen /dev/cu.usbserial-A9YLHVRN
Es gibt für Arduino eine Kommando Shell mit Namen Bitlash. Auch eine Anleitung ist auf Hompage des Entwicklers zu finden.
Hier die nötigen Schritte, um ein Arduino (Nano) damit zu bestücken.
Zuerst einmal die neueste Version (2.0) von bitlash installieren, dazu in das Libraries Verzeichnis von Arduino wechseln und per git die Neueste Version holen:
cd ~/Documents/Arduino/Libraries
git clone https://github.com/billroy/bitlash.git
Dann die Arduino IDE (1.5.2) starten und über das Menü: Datei-Beispiele-bitlash-Bitlashdemo das Beispiel Sketch laden, compilieren und auf den Arduino hochladen.
Wenn dann der Serielle-Monitor aufgemacht wird, ist es bei mir mit dem Nano abgestürzt.
Deshalb habe ich die Geschwindigkeit auf 9600 geändert. Hier das angepasste Beispiel Sketch: /** twbitlash.pde Thomas Wenzlaff http://www.wenzlaff.de Version 1.0 vom 31.08.2013
Beispiel einen einfachen Kommandointerpreter für den Arduino Nano. Basis Beispielprogramm von:
Bitlash is a tiny language interpreter that provides a serial port shell environment for bit banging and hardware hacking.
This is an example demonstrating how to use the Bitlash2 library for Arduino 0015.
Bitlash lives at: http://bitlash.net The author can be reached at: bill@bitlash.net
Copyright (C) 2008-2012 Bill Roy
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **/
#include "bitlash.h"
voidsetup(void) {
// Initialisierung und setzen der Baud Rate 57000 bricht beim Nano ab // Startet den Kommandozeileninterpreter und führt den startup Makro aus
initBitlash(9600);
}
voidloop(void) {
runBitlash();
}
und dann läuft dieses Beispiel.
Nach öffnen des Seriellen Monitors in der IDE (1.5.2) erscheint: Bitlash Startbildschirm
Alle Kommandos lassen sich mit help anzeigen: Bitlash 2.0 Online Hilfe
Wie dann die erste Funktion erstellt wird, steht hier.
Kurz, um die LED 13 blinken zu lassen folgende Befehle eingeben:
function toggle13 {d13 = !d13;}
function startup {pinmode(13,1); run toggle13,1000;}
startup
boot
Funktionen lassen sich mit ls anzeigen: Erstes Beispiel
Kurz:
1. fhem.cfg ergänzen (siehe Kopiervorlage unten)
2. drei gnuplot Datein von Githup nach /fhem/www/gplot/ kopieren
3. fhem restarten
Zu 1.: Der Teil der in der fhem.cfg ergänzt werden muss für Langenhagen:
# Wetter von Yahoo (670178 = Langenhagen, 600=alle 600 Sekunden (10min) Yahoo abfragen, de=Sprache Deutsch)
define Wetter Weather 670178 600 de
attr Wetter event-on-update-reading temperature,humidity,pressure,wind_speed,wind_chill,wind_direction
attr Wetter group Umwelt
attr Wetter room 9.02_Steuerung
So sieht es nach den ersten Messwerten aus, ja es ist noch keine Kurve. Aber immerhin: Fhem Wetter Service von Yahoo im FhemDas sind diese Messwerte:Yahoo Wetterdaten Langenhagen in FhemUnd die beiden anderen Punkte mit der Steuerung und Logs:
Das geht mit dem Linux Befehl: top
der nach der Anmeldung per SSH eingegeben werden kann. Man sieht gut, das fhem das unter Perl läuft und am meisten (37%) virtuelle Prozessgröße in KB (VSZ) verbraucht. Linux Befehlt „top“ zum Anzeigen der Auslastung
free und ps geben auch noch einige Größen an.
Die Spalte STAT oder S zeigt den Prozesszustand an und bedeutet:
R – running (Prozess wartet auf den Prozessor)
S – sleeping (Prozess schläft)
D – Prozess ist in einem ununterbrechbaren Schlaf
I – idle (Prozess wird gerade erzeugt)
L – locked (eine Seite im Hauptspeicher wurde gesperrt)
O – Prozess, der gerade die CPU beansprucht
Z – Zombie (Prozess wurde beendet, aber Elternprozess hat noch nicht aufgeräumt)
Einloggen auf OpenWrt per SSL. Dann per Comandline:
telnet 192.168.1.111 7072 und Enter drücken.
Oder auch ohne per SSL einzuloggen und gleich per Telnet verbinden.
Nun erschein der fhem Prompt: fhem>
Mit update check
wird überprüft ob und welche aktualisierungen vorhanden sind.
Dann mit update force werden alle Aktualisierungen erzwungen. Das kann dann ein paar Minuten dauern. Wenn der update fertig ist, muss noch ein shutdown restart durchgeführt werden.
Nach dem erneuten einloggen kann kontroliert werden mit
fhem> update check
List of new / modified files since last update:
nothing to do...
ob alles aktuell ist.
Mit Version können die einzelnen Versions Nummern ausgegeben werden: fhem Versions Info
Die Länge ist 55 Zeichen lang.
Bei einer Messung alle 10 Sekunden mit 2 Sensoren ergibt das
55 x 6 x 2 = 660 pro Minute
das sind am Tag
660 x 60 x 24 = 959.400
im Monat
959.400 x 30 = 28.512.000
im Jahr
28.512.000 x 365 = 10406880000
das sind dann in MB
10.406.880.000 / 1.000.000 = 10406,88 MB
also in GB
10.406,88 MB / 1000 = 10,40688 GB im Jahr.
Das ist zuviel für einen 8 GB USB-Stick.
Wenn die Messzeit um den Faktor 100 verlängert wird, also alle 10 x 100 = 1000 Sekunden (alle 16 Minuten), müsste im Jahr
10,40688 GB im Jahr / 100 = 0,1040688 GB im Jahr anfallen,
das sind dann pro Monat:
0,1040688 GB / 12= 0,0086724 GB oder
0,1040688 GB / 1000 = 104,0688 MB pro Monat
Der Arduino (NANO) wird per USB an den TP-WR703N (12.09) angeschlossen. Wie kann nun von einem anderen Rechner darauf per TCP (Telnet) zugegriffen werden?
Dazu erst socat auf den WR703 installieren mit
opkg update
opkg install socat
Socate (Version 1.7.2.1) kann bidirektionale Verbindungen aufbauen. Es verbindet den USB Port mit dem TCP Port.
Dann das folgende Script erstellen start-temp.sh, und evl noch die Schnittstelle DEV und den PORT und BAUD anpassen.
#!/bin/bash
DEV=/dev/ttyUSB0
PORT=1234
BAUD=9600
while true; do
if [ -e $DEV ]
then
socat tcp-l:$PORT,reuseaddr,fork file:$DEV,nonblock,raw,echo=0,waitlock=/var/run/tty,b$BAUD
else
sleep 2
fi
done
und ausführbar machen mit
chmod +x start-temp.sh
Dann kann das Script mit ./start-temp.sh & im Hintergrund auf dem WR703N gestartet werden.
Nun kann von einem anderen Rechner mit telnet ip-adresse 1234 die Ausgabe ausgegeben werden.
Will man das das Script autom. beim hochfahren des WR703N startet, muss es noch in der /etc.rc.local eingetragen werden (aber vor exit 0). Das geht auch über Luci: Luci Startskripte
Mit nmap können die offenen Ports wie folgt ausgegeben werden (nur gegen localhost ausführen):
[root@OpenWrt ~]# nmap localhost
Ausgabe dann z.B.
Starting Nmap 6.01 ( http://nmap.org ) at 2013-08-22 08:20 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00030s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
Der Port 53 ist für den DNS Server. Details können auch mit
Netstat ausgegeben werden z.B.:
[root@OpenWrt ~]# netstat -plnt
Ausgabe:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1789/uhttpd
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 1820/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1771/dropbear
Die Gui von Luci kann auch in einer anderen Sprache eingestellt werden.
Dazu kann mit folgendem Befehl auf der Konsole die Liste der verfügbaren Sprachen ausgegeben werden.
[root@OpenWrt ~]# opkg list | grep luci-i18n-
Bis jetzt wurden folgende Sprachen übersetzt:
luci-i18n-catalan - 0.11.1-1 - Catalan (by Eduard Duran)
luci-i18n-chinese - 0.11.1-1 - Chinese (by Chinese Translators)
luci-i18n-english - 0.11.1-1 - English
luci-i18n-french - 0.11.1-1 - French (by Florian Fainelli)
luci-i18n-german - 0.11.1-1 - German
luci-i18n-greek - 0.11.1-1 - Greek (by Vasilis Tsiligiannis)
luci-i18n-hebrew - 0.11.1-1 - Hebrew
luci-i18n-hungarian - 0.11.1-1 - Hungarian
luci-i18n-italian - 0.11.1-1 - Italian (by Matteo Croce)
luci-i18n-japanese - 0.11.1-1 - Japanese (by Tsukasa Hamano)
luci-i18n-malay - 0.11.1-1 - Malay (by Teow Wai Chet)
luci-i18n-norwegian - 0.11.1-1 - Norwegian (by Lars Hardy)
luci-i18n-polish - 0.11.1-1 - Polish
luci-i18n-portuguese - 0.11.1-1 - Portuguese (by Jose Monteiro)
luci-i18n-portuguese-brazilian - 0.11.1-1 - Portuguese (Brazilian) (by Carlos Cesario)
luci-i18n-romanian - 0.11.1-1 - Romanian
luci-i18n-russian - 0.11.1-1 - Russian (by Skryabin Dmitry)
luci-i18n-spanish - 0.11.1-1 - Spanish (by Guillermo Javier Nardoni)
luci-i18n-ukrainian - 0.11.1-1 - Ukrainian
luci-i18n-vietnamese - 0.11.1-1 - Vietnamese (by Hong Phuc Dang)
Mit dem folgenden Zweizeiler wird Deutsch eingestellt.
opkg update
opkg install luci-i18n-german
Dann in der Luci-Web-Gui unter der Seite System/System -> Language and Style auf Deutsch schalten. In der Regel steht Sprache dort schon auf automatisch, dann wird Deutsch automatisch gewählt. Luci Gui in Deutsch
Für andere Sprachen analog vorgehen.
Die Einstellungen für Luci die automatisch eingestellt werden, sehen dann so aus:
[root@OpenWrt ~]# cat /etc/config/luci
Erst in OpenWrt einloggen und die Luci Themen downloaden mit:
opkg update
opkg install luci-theme-bootstrap
Dann in der Luci-Web-Gui unter der Seite System/System -> Language and Style auf das Design von OpenWrt auf Bootstrap stellen. Dann noch auf Save & Apply.
Nmap – Netzwerk Scanner
Tcpdump – Sniffer
Netcat – Daten kopieren über Netzwerk
aircrack Wireless – Netzwerk Analyse
kismet – WiFi Analyse
perl – Programmier Sprache Perl
openvpn – VPN Client und Server
dsniff – Sniffing und spoofing Tools, mit arpspoof
nbtscan – NetBIOS Netzwerk Scanner
snort – Sniffer, Packet Logger, Intrusion Detection System
samba2 client – Windows File Sharing Client
elinks – Text Based Web Browser
yafc – FTP Client
openssh-sftp-client – Secure File Transfer Client
mc – Dateimanager für Kommandozeilen und Mausunterstüzung
luci-theme-bootstrap – Sprachunterstüzung und Thema für Luci
htop – Prozessmanger zum anzeigen und kill von Prozessen und Resouren
iftop – Netzwerk Interface Anzeige
ettercap – Netzwerk Penetrations Tool
mdk3 – Netzwerk Penetrations Tool
aircrack-ptw – Netzwerk Penetrations Tool
Voraussetzung:
1. Ein formartierter USB-Stick mit drei Partitionen. Ich habe einen 8 GB Stick so formatiert:
sda1 - sys (80 MB oder mehr) ext2 primary
sda2 - swap (64 MB oder mehr) linux-swap primary
sda3 - data (der Rest des Speichers) ext2 primary
2. OpenWrt Version 12.09 (kein trunk) auf OpenWrt geflasht
downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/
Installation
1. Passwort setzen
2. Über WEB-Frontend Luci zu Network->WiFi gehen und das Netzwerk scannen. Auswählen des erkannten Homenetzwerk. Eingabe des Passwort und als Firewall-Zone WAN auswählen. Speichern.
Unter den erweiterten Einstellungen den Country Code auf DE und HT Mode setzen, wenn er nicht schon da ist.
Speichern.
es muss in einen der letzten Zeilen die Partitionen sda, sda1, sda2, sda3 angezeigt werden.
6. Die Datei /etc/config/fstab wie folgt bearbeiten damit der USB-Stick eingebunden wird.
config global automount
option from_fstab 1
option anon_mount 1
config global autoswap
option from_fstab 1
option anon_swap 1
Nach dem mounten ist /overlay die SYS Partition.
Das /home Verzeichnis ist die Daten-Partition die für alles was benötigt wird verwand werden kann.
7. Mounten des USB-Sticks und kopieren der SYS Partition auf den Stick:
mkdir /mnt/sda1 /home
mount /dev/sda1 /mnt/sda1
tar -C /overlay -cvf - . | tar -C /mnt/sda1 -xf -
8. Reboot
9. Per SSL verbinden und Testen ob der Stick eingebunden wurde mit
df
Testen ob der Swap funktioniert mit
swapon /dev/sda2
Wenn „swapon: /dev/sda2: swapon failed: Device or resource busy“ kommt, ist alles ok.
10. Instalation von dsniffer vom derbycon Repo und anderer Tools mit:
opkg update
opkg install http://minipwner.com/20120514/downloads.openwrt.org/snapshots/trunk/ar71xx/packages/dsniff_2.4b1-2_ar71xx.ipk
Wollte lange schon mal, zur Erinnerung an schöne Urlaube eine Markierung auf der Weltkarte anbringen wo wir waren. Als IT-Berater muss es dann aber schon eine Micro-Computer gesteuerte Version sein. Ein roter Punkt reicht da nicht.
Also hier das Ergebnis als Video, und weiter unten dann die Details:
Also so sieht die Weltkarte von vorne aus: Die Weltkarte in einem Bilderrahmen
Hier die Rückseite. Ein Arduino Mega wurde verwendet, weil der bis zu 60 Ausgänge hat, die einzeln angesteuert werden können.
Die ganze Rückseite, es fehlen noch die analogen Eingänge die als digitale Ausgänge geschaltet werden
An jedem besuchten Urlaubsort wurde ein 3 mm Loch gebohrt und eine LED reingesteckt. An einen Pin der LED wurde jeweils noch ein 220 Ohm Widerstand angelötet. Ja, es sieht etwas wild aus: An jede LED kommt noch ein Widerstand
Eine Nahaufnahme des Arduino Mega.
Ein Reed-Kontakt habe ich noch an einem Interrupt-Eingang des Arduino geschaltet, so kann man von vorne mit einem Magnet über den Null-Meridian fahren, und schon leuchten unsere TOP 3 Urlaubsorte (Hawaii, Tokio, Seychellen) permanent.
Reed-Kontakt für die TOP 3 Urlaubsorte
Hier das C-Programm, welches in den Arduino geflasht wird und die Ansteuerung durchführt.
Nach dem Installieren von OpenWrt ist die Almquist-Shell (ash) installiert. Da die ash im Vergleich zu anderen modernen Shells sehr geringe Ansprüche an Speichergröße und Rechnergeschwindigkeit stellt, wird sie in OpenWrt und anderen Embedded-Linux-Systemen verwendet.
Welche Shell aktiv ist kann mit
echo $SHELL
auf der Konsole angezeigt werden. Obwohl der Befehl ja nur den Inhalt der Variable SHELL ausgibt, und die muss ja nicht immer richtig gesetzt sein.
Es reicht auch ein echo $0
welches dann -bash
oder je nach Shell einen Wert ausgibt.
So nun wollen wir die bash installieren weil sie komfortabler und gebräuchlicher ist. opkg update
opkg install bash
in /etc/passwd
in der ersten Zeile, der root Zeile die bash eintragen: root:x:0:0:root:/root:/bin/bash
dann eine Datei .bash_profile anlegen mit folgenden Inhalt:
echo ". $HOME/.bashrc" > /root/.bash_profile
dann eine eigene .bashrc Datei mit den User-Einstellungen anlegen, oder diese verwenden:
Das geht mit scp – Secure copy to copy files to/from a remote computer.
Zum Beispiel wenn im aktuellen Verzeichnis die Datei TWSerial.jar lieg und die in das Root Verzeichnis des WR703N kopiert werden soll.
Wobei der User: root und die IP des WR703: 192.168.2.122 ist (evl. noch anpassen):
scp TWSerial.jar root@192.168.2.122:/root
Das Ergebnis: TWSerial.jar 100% 170KB 169.8KB/s 00:00
Über den Paketmanager jamvm installieren (jamvm_1.6.0-git-2_ar71xx.ipk).
Dazu ja* eingeben und suchen klicken. Anschließend das Paket installieren: Gui von OpenWrt – Luci – Paketverwaltung
Anschließend testen ob die Version richtig installiert ist mit: jamvm -version
es wird dann folgendes ausgebeben:
JamVM – Java VM – Ausgabe der Version mit: jamvm -version
Wie kann die Java VM verwendet werden: jamvm
ergibt folgendes: Verwendung von jamvm – Java VM
Fünf Tage Quicktest mit dem Gadget von Withings in der Tasche. Es wiegt nur ein paar Gramm und hat sogar einen Touch-Screen. So kann es bedient werden:
Bisher läuft der Datenaustausch mit dem iPhone gut. Die App ist auch gut.
Der Accu hielt aber nicht wie angegeben 2 Wochen. Evl. war er auch nicht ganz aufgeladen.
Es gab in den Tagen auch einen neue Firmware, die ohne Probleme installiert werden konnte.
Folgende wichtige Features fehlen meiner Meinung nach noch in der App. (Version 1.17, Firmware Pulse: 731) und in der Browser-Version und kommen hoffentlich in zukünftigen Versionen.
Reihenfolge der Wichtigkeit nach sortiert:
1. Warnung bzw. Hinweis wenn der Accu geladen werden muss. So kann es passieren, das der Puls einfach aus geht, und keine Daten erfasst, ohne das man es mit bekommt. Nachträglich können bisher ja auch die Werte nicht manuell nachgetragen werden.
2. CSV Export der Daten für Aktivität, Puls, Strecke und Schlaf. Das ist für externe bzw. eigene Auswertungen unbedingt nötig.
3. Manuelles löschen für gemessene Pulswerte. Dann können auch fremde Personen mal eine Messung durchführen, ohne das die eigenen Daten verfälscht werden. Schnelle Antwort vom Support. Das ist doch schon integriert. Nur nicht so leicht zu finden. In der App. Herzfrequenz auswählen, dann auf den Wert klicken und über den Papierkorb oben rechts den Wert löschen.
4. Manuelles erfassen von Schlaf, Aktivität, Puls und Strecke.
Der Support von Withings habe ich schon mal informiert. Der meldet sich sehr schnell. Super.
Das ist mir schon das 5. Mal passiert, das die drahtlose Mac Tastatur sich nicht mehr per Bluetooth verbinden ließ.
Das Bluetooth paaring klappte mit keinem Gerät, auch Ein/Aus-Schalten und neue Batterien haben nicht geholfen.
Dann bin ich nach dieser Anleitung vorgegangen, und die Tastatur wurde „wiederbelebt“.
Der „Trick“ ist also nach dem Ausschalten der Tastatur und „Bluethooth Geräte Konfigurieren“ muss der Ein/Aus-Schalter an der Tastatur solange gedrückt gehalten werden,
bis der Name der Tastatur angezeigt und dann auf „Weiter“ geklickt wird und dann erscheint einen neue Paaring-Nummer. Erst wenn die Nummer erscheint, kann die Taste losgelassen werden, und die Nummer über die Tastatur eingegeben werden.
Hochladen eines Testprogramms über einen „alten“ USB-Hub. Als Board muss in der IDE „Arduino Mega 2560 …“ ausgewählt werden und die Serielle-Schnittstelle muss ausgewählt werden. Die werden am Mac OS X nur angezeigt wenn das Gerät angeschlossen ist. Es ist auch eine andere wenn der USB-Hub angeschlossen ist, bei mir z.B. dev/cu.usbmodemfd1421, der ist aber auf jedem System anders.
Der Arduino Mega 2560
Der ATMega2560 R3 ist ein Microcontroller auf Basis des ATmega2560 mit diesen technischen Daten: Microcontroller ATmega2560
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
Digital I/O Pins 54 (of which 14 provide PWM output)
Analog Input Pins 16
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 256 KB of which 8 KB used by bootloader
SRAM 8 KB
EEPROM 4 KB
Clock Speed 16 MHz
Achtung! Nicht nachmachen! Lebensgefahr!
Wollte mal sehen wie das Netzteil (Eingang: 110-230 Volt, Ausgang: 5V, 1A an USB) so von innen aussieht. Das Gehäuse ist leider verschweißt, und musste mühsam mit der PUK-Säge geöffnet werden. Zuerst das Netzteil aus der Steckdose ziehen, also Spannungslos machen.Hier das Ergebnisse:
Auf beiden längst Seiten vorsichtig langgesägt:
Die Platine von oben:
Die Platine von unten:
Querschnitt, von der Seite. Links kann man gut den USB Ausgang erkennen:
Was kann die Ursache sein, das von OpenWrt kein Zugriff auf das Internet möglich ist?
Checken ob: ping wenzlaff.de geht, wenn nicht,
dann in der /etc/confi/network Datei überprüfen,
ob der folgende Eintrag mit dem DNS und Gateway vorhanden ist:
config interface ‚lan‘
option ifname ‚eth0‘
option type ‚bridge‘
option proto ’static‘
option ipaddr ‚192.168.2.122‘
option netmask ‚255.255.255.0‘
option ip6assign ’60‘ option dns ‚xxx.xxx.xxx.xxx‘ # IP-Adresse aus Router eintragen option gateway ‚192.168.2.1‘
Das Netzwerkkabel muss am Router angeschlossen werden und nicht an der Netzwerkkarte des Rechners.
Also kurz:
1. OpenWrt installieren
2. USB-Stick vorbereiten und an WR703N anschließen
3. Perl installieren
4. Fhem aus Subversion ausschecken
5. mit make install Fhem erstellen
6. nun kann Fhem gestartet werden in /usr/src/fhem mit: perl /opt/fhem/fhem.pl /opt/fhem/fhem.cfg
7. im Browser http://192.168.2.122:8083/fhem (ip anpassen) aufrufen, es kommt: Fhem Startbildschirm auf WR-703N mit OpenWrt
8. Autostart für Fhem einrichten. Datei /etc/init.d/fhem anlegen mit folgenden Inhalt:
#!/bin/sh /etc/rc.common
# FHEM Init Script
START=11
STOP=15
start() {
# cd /usr/src/fhem/
# perl /opt/fhem/fhem.pl /opt/fhem/fhem.cfg
# auf neue Verz. angepasst:
cd /etc/src/fhem/
perl /etc/src/fhem/fhem.pl /etc/src/fhem/fhem.cfg
}
stop(){
echo "shutdown" | nc localhost 7072
}
Dann noch die /etc/init.d/fhem Datei ausführbar machen und aktivieren. chmod +x /etc/init.d/fhem
/etc/init.d/fhem enable
/etc/init.d/fhem start
Nach reboot startet nun Fhem automatisch.
9. Fhem weiter konfigurieren
10. z.B. den ersten Plot anzeigen. Dazu z.B in das Verzeichnis /fhem/www/log die eine Test-Datei temp.log mit Messwerten kopieren. In der /etc/src/fhem.cfg
diese Anpassungen machen:
define Test dummy
define FileLog_Test FileLog /usr/src/fhem/log/temp.log Test
attr FileLog_Test logtype temp4:Plot,text
attr FileLog_Test room Test
define wlTest weblink fileplot FileLog_Test:temp4:CURRENT
attr wlTest room Test
Und schon wird dieses schöne Diagramm angezeigt. Es ist noch nicht viel, da die Testdaten nur ein paar Zeilen sind: 1. Test Plot
Wenn der TL WR703N mit OpenWRT 12.09 Attitude Adjustement und Luci 0.11.1 geflasht wurde, bleibt nur noch ca. 870 KB an Speicher frei.
Wie kann nun ein externer USB Stick an den WR703 angeschlossen werden?
1. USB-Stick vorbereiten
Der USB Stick muss vorher, mit ext4 an einen anderen Rechner formatiert werden, da der Speicher dafür nicht ausreicht.
Ich habe einen 8 GB Stick mit einer Partitionen wie folgt erstellt:
# ab jetzt ist auch in Luci der Tab vorhanden und zwar unter System – Mount Points
mkdir -p /mnt/sda1
mount /dev/sda1 /mnt/sda1
mkdir -p /tmp/cproot
mount – -bind / /tmp/cproot
tar -C /tmp/cproot -cvf – . | tar -C /mnt/sda1 -xf –
umount /tmp/cproot
umount /mnt/sda1
vi /etc/config/fstab
# in der config mount Sektion
option target /
option enabled 1
reboot
df # zeigt den Speicher an
Speicher ist nun genug vorhanden. Das kann auch unter Luci angezeigt werden:
Und die gemachten Änderungen aus der /etc/config/fstab werden so angezeigt:
Durch das flashen des TP-Link TL-WR703N mit einem Image unbekannter Herkunft,
hatte das schöne Teil leider seinen Geist aufgegeben.
Es kann aber wiederbelebt werden, aber nur über die Serielle-Schnittstelle die nicht nach draußen geführt ist.
Also musste ich doch die drei Kontakte nach draußen führen. Nach dem öffnen des Geräts, und freilegen der Platine,
sind die drei Kontakte (TX, RX, Masse) schnell lokalisiert, dank der guten Fotos auf http://forums.openpilot.org/blog/52/entry-92-unbrick-wr703n-wifi-router/
Das größte Problem dabei ist an die kleinen Kontakte, passende Drähte anzulöten. Die Kontakte sind wirklich nur ca. 0,4 mm klein. Gefühlt 0,0000001 mm.
Ein Kollege hatte noch den passenden Draht, der wirklich dünner als ein Haar ist und konnte mir einen Meter überlassen.
Also die Brille gesucht und es hat beim ersten Versuch geklappt.
Das war der komplizierteste Teil.
Um den Mac zu schonen, habe ich das flashen der neuen Firmware auf einen alten Windows-Rechner gemacht.
Was war nötig alles nötig?
1. Den seriellen to USB Adapter cf20… an den WR-703N anschließen:
PIN 4 TX an WR TX
PIN 5 RX an WR RX
PIN 6 GND an WR GND
Achtung! Nicht RX an TX und TX an RX .so wie sonst, dann klappt es nicht und das Terminal Fenster bleib schwarz.
2. Treiber für den cf20 von geladen.
Der Treiber richtet einen virtuell COM Port ein. Port in den Systemeinstellungen auf 115200/8/N/1/XON-XOFF stellen.
3. Putty laden und seriell Einstellungen auf: 115200/8/N/1/XON-XOFF
4. TFtp Server von laden und neue OpenWrt Firmware (openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin) in das Verzeichnis kopieren.
Habe den langen Namen noch gekürzt, in firm.bin. Install Verzeichnis des TFTP32 Server Einstellungen des TFTP Servers
5. Rechner IP Adresse setzten 192.168.1.100. Unter Netzwerkverbindungen-Lan-Verbindung-Allgemein-Eigenschaften-Internetprotokoll-Eigenschaften-Folgende-IP-Adresse verwedne-IP-Adresse.
Wichtig: Verbindung vom Rechner zum WR703N per Ethernet nicht vergessen!
6. Nach verbinden des WR-703N hat man max. 1 Sekunde zeit, im Terminal „tpl“ und Enter einzugeben um auf dem Prompt zu kommen.
Beim dritten Versuch hat es bei mir geklappt. Wenn hornet> angezeigt wird, hat man gewonnen.
Lösch Befehl
und warten bis alles abgeschlossen ist. Dann Enter drücken und der OpenWrt-Prompt mit OpenWrt-Logo erscheint.
8. Ethernet verbinden. Mit Telnet 192.168.1.1 verbinden und wenn der OpenWrt Prompt kommt,
das Passwort setzen mit passwd. Ab dann ist kein Telnet mehr möglich. Neu verbinden mit SSH.
9. Eine andere statische IP vergeben, die im Namensraum vom DNS Server des Internet Routers liegt vergeben.
10. Per SSH anmelden und das Netzwerk einstellen: /etc/config/network
config interface 'lan'
option ifname 'eth0'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.2.123' # feste statische Adresse des Routers
option netmask '255.255.255.0'
option ip6assign '60'
option dns '8.8.8.8' # Adresse des Google dns, oder anderen
option gateway '192.168.2.1' # Adresse des gateway
reboot
Ethernet Kabel an Router anschließen. ping wenzlaff.de
muss erfolgreich laufen
11. Dann die Web-Gui luci installieren opkg update
opkg install luci luci-i18n-german luci-theme-bootstrap
12. Web Server starten /etc/init.d/uhttpd start
und damit es beim nächsten start automatisch läuft: /etc/init.d/uhttpd enable
13. Im Browser die feste statische Adresse aufrufen und anmelden mit User: root und den vergebenen SSH Passwort anmelden.