Ein kurzes Update zum Beitrag vom 23.05.2015 http://sebastianhemel.blogspot.de/2015/05/raspberry-pi-raspbian-wheezy.html, die aktuelle Raspbian Version ist "Jessie".
Die Installation bliebt, wie in dem oben genannten Beitrag, gleich. Benötigt man keine "Benutzeroberfläche (GUI)", genügt die "LITE" Version.
Download unter: https://www.raspberrypi.org/downloads/raspbian/
Seiten
▼
Freitag, 30. Dezember 2016
Donnerstag, 22. Dezember 2016
Raspberry Pi - Enviro pHAT
Verschiedene Umweltdaten messen und das mit nur einer Platine? Dies geht mit dem Enviro pHAT. Zum Beispiel sind Temperatur, Luftdruck, Lichtstärke und Bewegeungen mit nur dieser einer einzigen Platine messbar.
Eine Verbindung zum Pi ist über die GPIO-Pins möglich. Um die Sensordaten abfragen zu können ist die Python-Bibliothek enviro-phat notwendig.
Funktionen des Sensors:
Eine Verbindung zum Pi ist über die GPIO-Pins möglich. Um die Sensordaten abfragen zu können ist die Python-Bibliothek enviro-phat notwendig.
Funktionen des Sensors:
- BMP280 temperature/pressure sensor
- TCS3472 light and RGB colour sensor
- Two LEDs for illumination
- LSM303D accelerometer/magnetometer sensor
- ADS1015 4-channel 3.3v, analog to digital sensor (ADC)
- Compatible with Raspberry Pi 3, 2, B+, A+, and Zero
Freitag, 2. Dezember 2016
Raspberry Pi - Konsolen Projekt: NESPi
Vor kurzem habe ich ein sehr cooles Retro-Konsolen Projekt im Netz gefunden. Der NESPi ist ein nachgebautes NES im Maßstab 1:2,5 also ca. 40 Prozent der original Größe des Nintendo Entertainment System.
Hier einige Fakten zum Projekt:
Hier einige Fakten zum Projekt:
- Nachbau mit Hilfe eines 3D-Druckes im Maßstab 1:2,5.
- Spiele werden mit Hilfe von Kassetten geladen (enthalten ein NFC-Tag), worüber der Raspberry Pi automatisch das entsprechende Spiel lädt.
- Die Buttons am Gehäuse sind durch einen Arduino mit dem Pi verbunden, so dass man den Nachbau ein- und ausschalten kann wie das original NES.
- Als Betriebssystem wird RetroPi verwendet.
- Link zum Projekt: http://www.daftmike.com/2016/07/NESPi.html
Dienstag, 29. November 2016
Raspberry Pi 3 vs Raspberry Pi Zero
In diesem Artikel möchte ich euch kurz die Unterschiede zwischen den beiden neuen PI´s erklären und auf eine jeweils passende Amazon Einkaufsliste verweisen.
Neu hinzugekommen sind WLAN (802.11 b/g/n) und Bluetooth 4.1 (classic & LE), somit kann man endlich ohne zusätzliche Adapter Drahtloseverbindungen aufbauen
Weiterhin gibt es, wie von den Vorgängern gewohnt, einen Ethernet- und HDMI-Port. Tastatur, Maus und weitere Gerät können über die USB-Ports angeschlossen werden.
Raspberry Pi 3
Hierbei handelt es sich um das aktuellste Modell. Mitlerweile bietet der PI einen Quad-Core ARM-Prozessor mit 1,2 GHz, 1 GByte Arbeitsspeicher.Neu hinzugekommen sind WLAN (802.11 b/g/n) und Bluetooth 4.1 (classic & LE), somit kann man endlich ohne zusätzliche Adapter Drahtloseverbindungen aufbauen
Weiterhin gibt es, wie von den Vorgängern gewohnt, einen Ethernet- und HDMI-Port. Tastatur, Maus und weitere Gerät können über die USB-Ports angeschlossen werden.
Einkaufliste:
- Raspberry Pi 3 Model B - http://amzn.to/2gFXbSP
- Aukru 5V 3A Netzteil Ladegeräte für Raspberry Pi 3 Model B -3000mA- 150cm - http://amzn.to/2fz4pdZ
- Raspberry Pi 3 Modell B gehäuse,iBetter® Raspberry Pi 3 gehäuse Premium Case 2er Set Kühlkörper für Raspberry Pi 3 Modell B Quad Core und Raspberry Pi 2 Modell B + (B PLUS)-Transparent - http://amzn.to/2gG2Hoo
- SanDisk Ultra Android microSDHC 16GB bis zu 80 MB/Sek, Class 10 Speicherkarte + SD-Adapter FFP - http://amzn.to/2g2BYBl
Raspberry Pi Zero
Der kleine Pi Zero bietet zwar deutlich weniger Anschlüsse wie sein großer Bruder, doch man kann auch mit Ihm erstaunlich viel anfangen. Zum Anschließen von einem Monitor gibt es nur eine Mini-HDMI-Buchse, daher braucht man in der Regel einen Adapter auf den regulären HDMI-Port. Gleiches betrifft auch den USB-Anschluss, dies ist ein Micro-USB und somit benötigt man auch hier in der Regel ein Adapterkabel für den Betrieb von Tastatur und Maus.Einkaufliste
- Raspberry Pi Null und Kabel Bundle - http://amzn.to/2fNEihM
- Hochwertiges schwarzes Gehäuse für Raspberry Pi Zero mit Kühlkörper - http://amzn.to/2fNBhhE
- tinxi® USB Micro-B männlich OTG Adapter-Stecker auf USB-A Buchse 2.0 3.0 - http://amzn.to/2gG5OwB
Sonntag, 13. November 2016
Windows 10 - Cortana vollständig deinstallieren
Möchte man die Sprachsteuerung "Cortana" vollständig deinstallieren, weil diese zum Beispiel gar nicht genutzt wird, geht dies mittlerweile sehr einfach mit dem folgenden Tool:
Folgende Schritte sind dann zu tun:
Folgende Schritte sind dann zu tun:
- Cortana-Uninstaller herunterladen.
- ZIP-Datei entpacken.
- Datei "Uninstall Cortana.cmd" mit der Option "Als Administrator ausführen".
- Die Deinstallation startet jetzt. Warten bis die "Cortana should be uninstalled" erscheint.
Sonntag, 30. Oktober 2016
Amazon Fire-Tablet - Spezialangebote (Werbung) entfernen
Immer Somme diesen Jahres habe ich mir ein günstiges Tablet von Amazon Fire-Tablet (7 Zoll) mit Spezialangeboten gekauft. Ich nutze es aktuell vorwiegend um Filme in Bus oder Bahn zu schauen.
Auf dem Fire-Tablet´s von Amazon läuft eine angepasst Android 5 Version. Somit ergeben sich hier viele Möglichkeiten Änderungen an dem Gerät vorzunehmen.
Hinweis: Sollte das Tablet neue Updates von Amazon installieren, muss man die Schritte evtl. wiederholen.
Auf dem Fire-Tablet´s von Amazon läuft eine angepasst Android 5 Version. Somit ergeben sich hier viele Möglichkeiten Änderungen an dem Gerät vorzunehmen.
Spezialangebote (Werbung) entfernen
- Entwickleroptionen aktivieren
- "Einstellungen" => "Geräteoptionen" => 7 X auf die Seriennummer tippen.
- USB-Debugging aktivieren
- "Entwickleroptionen" => "ADB aktivieren"
- Für die folgenden Schritte wird ADB (Android Debug Bridge) benötigt
- Dies bekommt man mit der Installation des Android Studio (C:\Users\BENUTZERNAME\AppData\Local\Android\sdk\platform-tools) oder als Download von XDA-Developers: ADB-Installer
- Starten der ADB-Shell:
- adb shell
- Cache der App löschen
- pm clear com.amazon.kindle.kso
- App deaktivieren
pm hide com.amazon.kindle.kso- pm disable-user --user 0 com.amazon.kindle.kso
- Shell verlassen
- exit
- Gerät neustarten
- adb reboot
Hinweis: Sollte das Tablet neue Updates von Amazon installieren, muss man die Schritte evtl. wiederholen.
Samstag, 15. Oktober 2016
WLAN-Profile unter Windows per Konsole löschen
Möchte man bei WLAN-Problemen sein Profil oder evtl. ältere nicht mehr genutzte Profile löschen, geht dies schnell und einfach per cmd-Befehl (Konsole). Aufruf per [Windows] + [R] => Ausführen => cmd .
Mit dem Befehl netsh wlan show profiles kann man sich alle auf dem Rechner befindlichen Profile anzeigen lassen.
Mit dem Befehl netsh wlan show profiles kann man sich alle auf dem Rechner befindlichen Profile anzeigen lassen.
Mit dem Befehl "netsh wlan delete profile name="xxx" kann einzelne WLAN-Profile löschen.
Mittwoch, 12. Oktober 2016
Werbung und Usertracking per DNS unterbinden
Möchte man Werbung oder Usertracking direkt unterbinden, ohne auf jedem Gerät einen "AdBlocker" installieren zu müssen, kann dies schnell über einen anderen DNS-Server realisiert werden. Hierfür bietet sich zum Beispiel "Alternate DNS" an https://alternate-dns.com/:
Hier ein Beispiel, wie die Konfiguration per AVM FRITZ!Box möglich ist:
"Alternate DNS offers a free, global Domain Name System (DNS) resolution service, that you can use to block unwanted ads."Die "normalen" DNS-Server ermitteln IP-Adressen, aber der Service von "Alternate DNS" blockiert zusätzlich Trackdienste und Werbung. Den DNS kann man entweder in jedem Gerät einzelen hinterlegen oder man trägt diesen direkt in seinem Router ein.
Hier ein Beispiel, wie die Konfiguration per AVM FRITZ!Box möglich ist:
Montag, 26. September 2016
Code Recherche? searchcode.com
Jeder der selber entwickelt kennt mit Sicherheit Stack Overflow, hier erhält man zu schwierigen Programmierproblemen sehr schnell Antworten.
Als Pendant für die Code Recherche bietet sicht zusätzlich auch noch searchcode.com an. Mit der Suchmaschine kann mittlwerweile mehr als 20 Billionen Zeilen Code durchsuchen. Verwendet man zum Beispiel eine bestimmte Library findet man hier sicher einen passenden Code-Aufruf. Searchcode.com durchsucht dabei die Plattformen Bitbucket, GitHub, Google Code und noch viele weitere.
Als Pendant für die Code Recherche bietet sicht zusätzlich auch noch searchcode.com an. Mit der Suchmaschine kann mittlwerweile mehr als 20 Billionen Zeilen Code durchsuchen. Verwendet man zum Beispiel eine bestimmte Library findet man hier sicher einen passenden Code-Aufruf. Searchcode.com durchsucht dabei die Plattformen Bitbucket, GitHub, Google Code und noch viele weitere.
Sonntag, 4. September 2016
Windows 10 - Anniversary Update sofort installieren
Gehört man noch nicht zu den glücklichen Windows 10 Usern, die das "Anniversary Update" per Windows Update Funktion erhalten haben, kann man dies mit Hilfe des "Media Creation Tool" auch sofort installieren.
Hier für das Media Creation Tool (für Windows 10) verwendet werden. Hiermit kann man wahlweise den PC, auf dem es gestartet wird, auf Windows 10 Version 1607 aktualisieren, oder ein Installationsmedium dafür erstellen.
Download: http://go.microsoft.com/fwlink/?LinkId=691209
Anschließend den folgenden Schritt ausführen:
Hier für das Media Creation Tool (für Windows 10) verwendet werden. Hiermit kann man wahlweise den PC, auf dem es gestartet wird, auf Windows 10 Version 1607 aktualisieren, oder ein Installationsmedium dafür erstellen.
Download: http://go.microsoft.com/fwlink/?LinkId=691209
Anschließend den folgenden Schritt ausführen:
- "Jetzt Upgrade für diesen PC ausführen"
Mittwoch, 10. August 2016
Kommandozeile (cmd) aus Explorer-Verzeichnis aufrufen
Möchte man schnell per Kommandozeile Aktionen durchführen und nicht erst nach dem Ausführen des cmd-Befehls in das richtige Verzeichnis navigieren, kann man dies auch direkt aus dem Explorere heraus tun.
Dafür einfach im Explorer in das gewünschte Verzechnis navigieren und den cmd-Befehl in der Adressleiste ausführen:
Anschließend öffnet sich die Kommandozeile mit dem vorher ausgewählten Ordner:
Dafür einfach im Explorer in das gewünschte Verzechnis navigieren und den cmd-Befehl in der Adressleiste ausführen:
Anschließend öffnet sich die Kommandozeile mit dem vorher ausgewählten Ordner:
Sonntag, 24. Juli 2016
iOS Xcode - Location Services unter iOS 8
Nach dem neusten Xcode Update dürfen iOS Apps nur noch mit iOS 8 kompiliert werden. Nach dieser Umstellung funktionierte anschließend der intern verwendete LocationManager nicht mehr.
Mit iOS 8 haben sich die Berechtigungen verändert. Diese müssen jetzt zwingend in der Info.plist als Schlüssel definiert werden:
Zusätzlich muss auch folgende Funktion hinzugefügt werden:
Mit iOS 8 haben sich die Berechtigungen verändert. Diese müssen jetzt zwingend in der Info.plist als Schlüssel definiert werden:
- NSLocationAlwaysUsageDescription
- NSLocationWhenInUseUsageDescription
Beispiel:
<key>NSLocationAlwaysUsageDescription</key>
<string>This application requires location services to work</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This application requires location services to work</string>
Zusätzlich muss auch folgende Funktion hinzugefügt werden:
- requestAlwaysAuthorization (for background location) oder
- requestWhenInUseAuthorization (location only when foreground)
Beispiel:
- (void)viewDidLoad
{
[super viewDidLoad];
// instance of the CLLocationManager class
[super viewDidLoad];
_locationManager = [[CLLocationManager alloc] init];
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
_locationManager.delegate = self;
[_locationManager startUpdatingLocation];
[_locationManager requestWhenInUseAuthorization]; // Notwendig ab iOS8
...
iOS Xcode - UIWebView readyState richtig abfangen
Ruft man innerhalb einer App (in diesem Beispiel Apple iOS) eine Webseite auf und möchte anschließend JavaScript Operationen ausführen muss man wissen, wann die Webseite in dem WebView fertig geladen wurde (readyState).
In dem nachfolgenden Beispiel wird der readyState abgefragt, bis dieser auf "complete" steht. Anschließend wird mittels JavaScript (JSBridge) eine Funktion innerhalb der fertig geladenen Webseite im WebView aufgerufen.
Ich verwenden dies in der App simplyEat.de (www.simplyeat.de) um per JSBridge über den LocationManager die aktuelle Position des Nutzers zu setzen. Danach werden Angebote aus seiner Umgebung in der WebView angezeigt.
Hier ein Beispiel wie dies unter iOS (Xcode) richtig funktioniert:
In dem nachfolgenden Beispiel wird der readyState abgefragt, bis dieser auf "complete" steht. Anschließend wird mittels JavaScript (JSBridge) eine Funktion innerhalb der fertig geladenen Webseite im WebView aufgerufen.
Ich verwenden dies in der App simplyEat.de (www.simplyeat.de) um per JSBridge über den LocationManager die aktuelle Position des Nutzers zu setzen. Danach werden Angebote aus seiner Umgebung in der WebView angezeigt.
Hier ein Beispiel wie dies unter iOS (Xcode) richtig funktioniert:
- (void)viewDidLoad {
[super viewDidLoad];
offerUrl.delegate = self;
self.title = offer.name;
NSString *urlAddress = offer.url;
//Create a URL object.
NSURL *url = [NSURL URLWithString:urlAddress];
//URL Requst Object
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
//Load the request in the UIWebView.
[self.offerUrl loadRequest:requestObj];
}
- (void)webViewActuallyFinished {
_webViewLoads--;
if (_webViewLoads > 0) {
return;
}
//Actually done loading
if ([[self.offerUrl stringByEvaluatingJavaScriptFromString:@"document.readyState"] isEqualToString:@"complete"]) {
// UIWebView object has fully loaded.
NSString *param1 = [NSString stringWithFormat:@"{coords:{'latitude':%@", latitudeString];
NSString *param2 = [NSString stringWithFormat:@",'longitude':%@", longitudeString];
NSString *param3 = @"}}";
NSString *param123 = [NSString stringWithFormat:@"%1$@ %2$@ %3$@", param1, param2, param3];
NSString *param = [param123 stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]];
NSString * jsCallBack = [NSString stringWithFormat:@"geoCallBackSuccess(%@);",param];
[self.offerUrl stringByEvaluatingJavaScriptFromString:jsCallBack];
//NSLog(@"viewDidLoad - javascriptString: %@", jsCallBack);
[self.offerUrl stringByEvaluatingJavaScriptFromString:jsCallBack];
}
}
- (void)webViewDidFinishLoad:(UIWebView *)offerUrl {
//NSLog(@"webViewDidFinishLoad");
// Identify the “last” webViewDidFinishLoad message
[NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(webViewActuallyFinished) userInfo:nil repeats:NO];
}
- (void)webViewDidStartLoad:(UIWebView *)offerUrl {
//NSLog(@"webViewDidStartLoad");
_webViewLoads++;
}
-(void)webView:(UIWebView *)offerUrl didFailLoadWithError:(NSError *)error {
NSLog(@"No internet connection");
_webViewLoads--;
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"error.html" ofType:nil]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.offerUrl loadRequest:request];
}
Sonntag, 17. Juli 2016
Schlüssel zur Produktivität? Konzentrieren Sie sich auf eine Aufgabe!
In der heutigen Zeit sollen uns technische Kommunikationsmittel wie zum Beispiel E-Mail oder auch Instant Messanger den Arbeitsalltag vereinfachen. Leider ist dies oft nicht der Fall, denn diese zusätzlichen Kanäle müssen von uns ständig beobachtet und kontrolliert werden. Kommen dann noch weitere Kanäle wie zum Beispiel das Social Intranet oder ein Firmen internes Wiki hinzu sind wir überfordert und lassen uns schnell von der eigentlichen Arbeit ablenken.
Folge, das E-Mail-Programm ist immer geöffnet und für jede eingehende E-Mail gibt es eine sofortige Benachrichtigung. Hieraus resultiert eine sofortige Ablenkung und man ist nicht mehr fokussiert bei der Arbeit. Anschließend benötigt es dann wieder mehrere Minuten, bis der ursprüngliche Zustand (Was wollte ich jetzt eigentlich tun, damit ich meine Aufgabe erledigen kann?) wiederhergestellt ist.
Konzentrieren Sie sich auf eine Aufgabe!
Auch wenn die Kommunikationskultur in Ihrem Unternehmen eine andere ist (Jeder muss immer für den Anderen da sein!), versuchen Sie sich auf immer nur auf eine Aufgabe zu konzentrieren.- Möchten Sie ungestört arbeiten, schließen Sie Ihre Bürotür. So können Sie Ihren Kollegen deutlichen machen, dass Sie aktuell nicht gestört werden möchten.
- In Großraumbüros sollten Sie in der Konzentrationsphase Gespräche mit anderen Kollegen vermeiden. Bei störenden Geräuschen, nehmen Sie z.B. Kopfhörer mit Geräuschunterdrückung (Bose QuietComfort 15).
Beispiel: E-Mail
Dies ist eigentlich ein asynchrones Medium. E-Mails sollten nur dann bearbeitet werden, wenn man Zeit hat. Dies wird in den Unternehmen aber häufig ignoriert. Man erwartet, dass E-Mails sofort gelesen und auch beantwortet werden müssen.Folge, das E-Mail-Programm ist immer geöffnet und für jede eingehende E-Mail gibt es eine sofortige Benachrichtigung. Hieraus resultiert eine sofortige Ablenkung und man ist nicht mehr fokussiert bei der Arbeit. Anschließend benötigt es dann wieder mehrere Minuten, bis der ursprüngliche Zustand (Was wollte ich jetzt eigentlich tun, damit ich meine Aufgabe erledigen kann?) wiederhergestellt ist.
Tipps zum Thema E-Mail
- Lösen Sie das Problem zusammen mit Ihren E-Mail Partnern.
- Machen Sie deutlich, dass Sie nicht sofort auf E-Mails antworten.
- Lassen Sie sich nicht von Kollegen ablenken (Hey, hast du schon die Mail von XYZ gelesen?).
- Setzen Sie sich feste Zeitblöcke, in denen Sie E-Mails beantworten (morgens, mittags, nachmittags...).
- Sprechen Sie mit Ihrem Vorgesetzten und entwickeln Sie zum Beispiel einen "E-Mail freien Tag" oder "Slow E-Mail".
Sonntag, 3. Juli 2016
WLAN langsam? Funkkanal optimieren!
Immer häufiger kommt es gerade in Ballungszentren vor, dass viele Router auf dem gleichen Kanal (Channel) senden. Wenn das eigene WLAN sehr langsam ist, kann man durch den richtig eingestellten Kanal deutlich mehr Datendurchsatz erzielen.
Dies geht z.B. mit dem folgenden Tool:
http://www.chip.de/downloads/Acrylic-WiFi-Free_84415105.html
Hinweis: Vorher oben rechts in den Einstellungen den "Advanced Mode" aktivieren, anschließend stehen die "Channel" Reiter zur Verfügung.
Mit der Analyse sollten man an einem Ort beginen, wo das WLAN am schwächsten ist.
Es werden dann grafisch die Kanäle anhand von hohen Kurven angezeigt, welche am häufigsten in der Umgebung von anderen Routern verwendet werden.
Zum Einstellen des am wenigsten verwendten Kanals, muss dann der eigene Router aufgerufen werden. Z.B. für FritzBox: http://fritz.box (oder IP-Adresse) => WLAN => Funkkanal.
Hintergrund zu den WLAN-Kanälen:
Dies geht z.B. mit dem folgenden Tool:
http://www.chip.de/downloads/Acrylic-WiFi-Free_84415105.html
Hinweis: Vorher oben rechts in den Einstellungen den "Advanced Mode" aktivieren, anschließend stehen die "Channel" Reiter zur Verfügung.
Mit der Analyse sollten man an einem Ort beginen, wo das WLAN am schwächsten ist.
Es werden dann grafisch die Kanäle anhand von hohen Kurven angezeigt, welche am häufigsten in der Umgebung von anderen Routern verwendet werden.
Zum Einstellen des am wenigsten verwendten Kanals, muss dann der eigene Router aufgerufen werden. Z.B. für FritzBox: http://fritz.box (oder IP-Adresse) => WLAN => Funkkanal.
Hintergrund zu den WLAN-Kanälen:
2,4 GHz:Quelle: http://praxistipps.chip.de/wlan-einrichten-welchen-kanal-waehlen_34273
Die meisten Router senden im 2,4 GHz Band. Die Kanäle reichen von 1 bis 13. In jeweils 3 Kanälen überlappen sich die Frequenzen. Wenn sich in Ihrer Nähe ein weiterer Router befindet, wählen Sie einen um 3 Kanälen höheren oder niedrigeren WLAN-Kanal. In Europa gibt es drei Kanäle, die überlappungsfrei sind (Kanal 1, 6 und 11). Verzichten Sie lieber auf die Kanäle 9 und 10, da Mikrowellenherde mit derselben Frequenz betrieben werden.
5 GHz:
Nicht alle Geräte unterstützen das 5 GHz Band. Während es im 2,4 GHz Band nur 3 überlappungsfreie Kanäle gibt, so sind es im 5 GHz Band 28. Das 5 GHz Band ist weniger anfällig auf Störungen
Mittwoch, 29. Juni 2016
Wortwolken schnell und einfach generieren
Wortwolken (Schlagwortmatrix oder Stichwortwolke) lassen sich mittlerweile sehr schnell und einfach direkt per Browser generieren. Vorteil von Wortwolken ist, dass Wörter unterschiedlich gewichtet oder auf andere Weise hervorgehoben dargestellt werden können. Es lassen sich somit zwei Dimensionen gleichzeitig betrachten.
Der Vorteil von www.wortwolken.com ist, dass keine weiteren Plugins notwendig sind und der Einstieg sehr einfach ist.
Der Vorteil von www.wortwolken.com ist, dass keine weiteren Plugins notwendig sind und der Einstieg sehr einfach ist.
Sonntag, 5. Juni 2016
Schutz vor Kickstarter Abzocke
Crowdfunding wird immer beliebter und so investieren auch immer mehr Privatpersonen in solche Projekte. Viele vergessen dabei, dass man bei solch einer Investition immer auch ein Risiko eingeht.
Eine bekannte Plattform ist z.B. Kickstarter.com hier heißt es
Ein guter Anlaufpunkt ist die Seite KICKSCAMMED.COM, hier werden fragwürdige Projekte gesammelt bzw. man kan auch selber welche melden.
Beispiel "Coolest Cooler" - Rekordprojekt Coolest Cooler ist pleite, Kickstarter-Backer sind sauer
Eine bekannte Plattform ist z.B. Kickstarter.com hier heißt es
"Kickstarter leistet keine Rückerstattungen. Die Verantwortung für den erfolgreichen Abschluss eines Projekts liegt vollständig bei dem jeweiligen Projektgründer. Kickstarter agiert nicht als Treuhänder im Namen von Projektgründern, gewährt keine Garantien auf die Arbeit der Projektgründer und leistet keine Rückerstattungen für gezahlte Projektbeiträge." siehe auch NutzungsbedingungenDeshalb sollte man sich vorab gut informieren, ob es sich auch wirklich um ein glaubwürdiges Projekt handelt, bevor man dieses mit seinem privaten Geld ünterstützt.
Ein guter Anlaufpunkt ist die Seite KICKSCAMMED.COM, hier werden fragwürdige Projekte gesammelt bzw. man kan auch selber welche melden.
Beispiel "Coolest Cooler" - Rekordprojekt Coolest Cooler ist pleite, Kickstarter-Backer sind sauer
Samstag, 14. Mai 2016
Raspberry Pi - CPU Temperatur ermitteln
Wenn man wissen möchte, wie die aktuelle CPU Temperatur des (passiv gekühlten) PI ist, kann man dies über die Konsole mit dem folgenden Befehl anzeigen lassen:
vcgencmd measure_temp
Donnerstag, 18. Februar 2016
Soap UI - SSL Konfiguration und anderes JRE (Java Runtime) verwenden
In einem früheren Beitrag habe ich beschrieben, wie man einen Webservice abfragen kann. Siehe auch http://sebastianhemel.blogspot.de/2015/11/webservice-abfrage-per-konsole-mit-wget.html .
Hier beschreibe ich, wie man bei Soap UI einen eigenen SSL Zertifikatsspeicher verwenden kann und auch die interne Java Runtime von Soap UI durch eine eigene installierte Java Runtime (JRE) zu ersetzen.
Hier beschreibe ich, wie man bei Soap UI einen eigenen SSL Zertifikatsspeicher verwenden kann und auch die interne Java Runtime von Soap UI durch eine eigene installierte Java Runtime (JRE) zu ersetzen.
- Eigenen Zertifikatsspeicher erstellen
- "C:\Program Files\Java\jre7\bin\keytool" -genkey -alias testcert -keyalg RSA -keystore beispiel.jks
- Beliebige Werte für das selbstgenerierte Zertifikat eingeben und das Passwort "changeit" verwenden.
- Das gewünschte Zertifikat in den soeben angelegten Speicher importieren
- common-name-test.de.crt
- "C:\Program Files\Java\jre7\bin\keytool" -import -alias common-name -keystore "D:\Schnittstellen\keystore\beispiel.jks" -file D:\Schnittstellen\ssl-zert\common-name-test.de.crt
- SOAP-UI Konfig anpassen
- C:\Program Files\SmartBear\SoapUI-5.1.3\bin\soapui.bat
- Keystore setzen und lokales jre verwenden
- set CLIENT_CERT=D:\Schnittstellen\keystore\beispiel.jks
- rem set JAVA=%SOAPUI_HOME%..\jre\bin\java
- set JAVA=C:\Program Files\Java\jre7\bin\java
- set JAVA_OPTS=-Djava.net.preferIPv4Stack=true -Djavax.net.ssl.keyStore=%CLIENT_CERT% -Djavax.net.ssl.keyStorePassword=changeit -Djavax.net.ssl.trustStore=%CLIENT_CERT% -Djavax.net.ssl.trustStorePassword=changeit
- SSL-Debug aktivieren
- set JAVA_OPTS=%JAVA_OPTS% -Djsse.enableSNIExtension=false
- set JAVA_OPTS=%JAVA_OPTS% -Djavax.net.debug=ssl,trustmanager
- SOAP-UI mit "soapui.bat" starten
Dienstag, 19. Januar 2016
Spion im Wohnzimmer - Offene Webcams finden
Viele Webcams sind über das Internt frei zugänglich und haben oft gar keinen oder nur einen sehr einfachen Schutz vor fremden Zugriffen.
Es gibt Möglichkeiten diese mit einigen Suchbegriffen über Google zu finden oder man verwendet spezielle Suchmaschinen für diesen Fall. Eine davon ist zum Beispiel SHODAN.
Es gibt Möglichkeiten diese mit einigen Suchbegriffen über Google zu finden oder man verwendet spezielle Suchmaschinen für diesen Fall. Eine davon ist zum Beispiel SHODAN.
https://www.shodan.io/search?query=webcamHier findet man schnell tausende Webcams ohne Passwortschutz und viele lassen sich mit einem einfachen Angriff hacken. Zum Beispiel:
- User: admin PW: admin
- User: admin PW: 1234
Mittwoch, 13. Januar 2016
Raspberry Pi - Monitoring mit MRTG und Temperatursensor DS18B20
Mit Hilfe des Programms MRTG (Multi Router Traffic Grapher) und RRD (Round-Robin-Database) lassen sich unter Linux sehr schnell grafische Auswertungen und Darstellungen von Messwerten erstellen. Es können HTML Seiten mit Grafiken erstellt werden.
Falls man direkten Zugriff über den Browser auf die Dateien haben möchte, sollte vorher auf dem Pi noch ein Webserver installiert werden. Dafür kann man den Apache2 oder auch den Lighttpd verwenden.
Siehe hierzu auch http://sebastianhemel.blogspot.de/2015/09/raspberry-pi-webserver-installieren.html
Installation der benötigten Pakete für MRTG und RRD.
Anschließend muss ein Verzeichnis angelegt werden, in dem die RRD Datenbank und die PNG-Grafiken abgelegt werden können. Dies muss im öffentlichen WWW-Ordner vom Webserver erfolgen.
#!/bin/sh
# Temperatur von Sensor auslesen
# (c) Sebastian Hemel
sensor="/sys/bus/w1/devices/28-00000511590a/w1_slave"
if [ -f $sensor ]
then
sensorraw=`cat $sensor`
crc=`echo $sensorraw | cut -f2 -d= | cut -c4-6`
if [ "$crc" = "YES" ]
then
tempraw=`echo $sensorraw | cut -f3 -d=`
temp=`echo "scale=3; $tempraw / 1000" | bc`
#temp=`echo "scale=2; $tempraw / 1000" | bc`
# Update database
#echo $temp
printf "%04.2f" $temp
echo 0
echo 0
echo temperature
fi
fi
Die Datei muss ausführbar sein:
Das Script sollte die folgenden Werte liefern:
Zu Beginn muss eine neue mrtg.cfg erstellt werden, dies erfolgt mit dem Befehl:
### Global Config Options
# for UNIX
# WorkDir: /home/http/mrtg
# for Debian
HtmlDir: /var/www/mrtg
WorkDir: /var/www/mrtg
Imagedir: /var/www/mrtg
# or for NT
# WorkDir: c:\mrtgdata
### Global Defaults
# to get bits instead of bytes and graphs growing to the right
# Options[_]: growright, bits
EnableIPv6: no
Options[_]: growright
IconDir: /mrtg
WriteExpires: Yes
Language: german
RunAsDaemon: yes
EnableIPv6: no
LogFormat: rrdtool
Interval: 1
#####################################################################
# System: DS18S20 Temperatur Sensor
# Contact: root
# Location: attached to Raspberry Pi
#####################################################################
### DS18S20 Temperatur SensorIngolstadt
TimeStrPos[temp_ingolstadt]: RU
Target[temp_ingolstadt]: `/home/pi/graph/temp-mrtg-update.sh`
Options[temp_ingolstadt]: gauge,growright,nopercent,expscale,transparent
Title[temp_ingolstadt]: Temperatur Ingolstadt
PageTop[temp_ingolstadt]: <h1>Temperatur Ingolstadt</h1>
MaxBytes[temp_ingolstadt]: 60
#Unscaled[temp_ingolstadt]: ymwd
Step[temp_ingolstadt]: 60
Legend1[temp_ingolstadt]: Gemessene Temperatur in Ingolstadt
LegendI[temp_ingolstadt]: Aussentemperatur
LegendO[temp_ingolstadt]:
YLegend[temp_ingolstadt]: Grad Celsius
ShortLegend[temp_ingolstadt]: Grad °C
Die restlichen Einträge habe ich auskommentiert, da ich nur das Temperatur Diagramm haben möchte.
Bei Bedarf können noch die MRTG-Icons in den WWW Ordner vom Webserver kopiert werden:
Der Aufruf des Diagramms erfolgt über den Browser http://192.168.1.110/cgi-bin/mrtg-rrd.cgi
Hinweise: Kommt es beim Aufruf der Datei zu einem "500 - Internal Server Error", wurden die Rechte chmod +x nicht gesetzt. Führte dies nicht zum Erfolg, sollte man die syslog Datei auslesen. Dies geht mit dem Befehl /var/log $ tail -f syslog . Erscheint hier die Meldung "Can't locate CGI.pm in @INC (you may need to install the CGI module)", muss noch das folgenden Paket installiert werden: sudo apt-get install libcgi-pm-perl
Achtung es gibt ein Fehler im mrtg-rrd Package: https://bugs.launchpad.net/ubuntu/+source/mrtg-rrd/+bug/1618800
Nov 1 13:49:34 raspberrypi lighttpd[538]: Can't use an undefined value as an ARRAY reference at /var/www/cgi-bin/mrtg-rrd.cgi line 499.
Ich musste folgende Zeilen der "mrtg-rrd.cgi" anpassen:
Hinweis: Vorher am Besten den MRTG Prozess wieder beenden (siehe oben).
Aug 7 21:49:01 raspberrypi-zero lighttpd[461]: Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at /var/www/cgi-bin/mrtg-rrd.cgi line 499.
# return @{$target->{args}} if defined @{$target->{args}};
return @{$target->{args}} if ($target->{args} && @{$target->{args}});
Aug 7 21:52:28 raspberrypi-zero lighttpd[461]: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?) at /var/www/cgi-bin/mrtg-rrd.cgi line 525.
# %{$target->{options}} = ()
# unless defined %{$target->{options}};
%{$target->{options}} = ()
unless ($target->{options} && %{$target->{options}});
Aug 7 21:58:11 raspberrypi-zero lighttpd[461]: Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at /var/www/cgi-bin/mrtg-rrd.cgi line 914.
# if (defined @{$directories{$dir}{subdir}}) {
# $subdirs_printed = 1
if ($directories{$dir}{subdir} && @{$directories{$dir}{subdir}}) {
$subdirs_printed = 1;
Aug 7 22:01:35 raspberrypi-zero lighttpd[461]: Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at /var/www/cgi-bin/mrtg-rrd.cgi line 929.
# if (defined @{$directories{$dir}{target}}) {
if ($directories{$dir}{subdir} && @{$directories{$dir}{subdir}}) {
Bei Bedarf kann das Diagramm noch auf einen anderen Server hochgeladen werden:
crontab -e: Aufruf per localhost, damit die temp_ingolstadt-day.png Datei erstellt wird (alle 7min).
*/7 * * * * curl http://localhost/cgi-bin/mrtg-rrd.cgi/temp_ingolstadt.html >/dev/null 2>&1
temp.sh: anpassen, siehe auch http://sebastianhemel.blogspot.de/2015/01/temperatursensor-ds18b20-raspberry-pi.html
ncftpput -f /home/pi/ftp.cfg /temp /var/www/mrtg/temp_ingolstadt-day.png
Danke an das Tutorial von http://kopfkino.irosaurus.com/tutorial-monitoring-mit-mrtg-rrd-support-auf-raspberry-pi-debian-wheezy, welches als Basis für diesen Eintrag diente.
Falls man direkten Zugriff über den Browser auf die Dateien haben möchte, sollte vorher auf dem Pi noch ein Webserver installiert werden. Dafür kann man den Apache2 oder auch den Lighttpd verwenden.
Siehe hierzu auch http://sebastianhemel.blogspot.de/2015/09/raspberry-pi-webserver-installieren.html
Installation & Konfiguration von MRTG/RRD/SNMP:
Installation der benötigten Pakete für MRTG und RRD.
sudo apt-get install mrtg mrtg-rrd rrdtool snmp snmpdAnschließend kommt die Frage, ob root der Eigentümer der Datei /etc/mrtg.cfg sein soll. Hier sollte NEIN ausgewählt werden.
Anschließend muss ein Verzeichnis angelegt werden, in dem die RRD Datenbank und die PNG-Grafiken abgelegt werden können. Dies muss im öffentlichen WWW-Ordner vom Webserver erfolgen.
/var/ $ sudo mkdir wwwAnschließend hat man die folgende Ordner-Struktur:
/var/www $ sudo mkdir mrtg
/var/www/mrtgJetzt müssen wir noch das cgi-bin Verzeichnis erstellen, auch dieses liegt im WWW-Ordner. Nun kann ein Symlink (https://de.wikipedia.org/wiki/Symbolische_Verknüpfung) zur mrtg-rrd.cgi erstellt werden. Hierrüber kann dann später die generierte HTML-Seite aufgerufen.
sudo mkdir -p /var/www/cgi-binIm Nachgang müssen nun die Rechte für den Lighttpd-Benutzer und die Gruppe gesetzt werden:
sudo ln -s /usr/lib/cgi-bin/mrtg-rrd.cgi /var/www/cgi-bin/mrtg-rrd.cgi
sudo chown -R www-data:www-data /var/www/*Da es bei SNMP noch einen Fehler gibt, siehe auch http://penguinbliss.com/?p=239, muss noch die folgende Datei angepasst werden:
sudo sed -i 's|import Socket6;|Socket6->import(qw(inet_pton getaddrinfo));|' /usr/share/perl5/SNMP_Session.pmBevor wir mit der Erstellung des Diagramms starten, sollte von der "alten" mrtg.cfg eine Sicherheitskopie angelegt werden.
sudo mv /etc/mrtg.cfg /etc/mrtg.cfg.bak
Temperaturwerte für RRD bereitstellen
Hierzu wird ein Skript benötigt. Diese kann man z.B. im Home-Verzeichnis ablegen.mkdir ~/graphtemp-mrtg-update.sh (wget https://www.shemel.de/download/raspberry/temp-mrtg-update.sh)
#!/bin/sh
# Temperatur von Sensor auslesen
# (c) Sebastian Hemel
sensor="/sys/bus/w1/devices/28-00000511590a/w1_slave"
if [ -f $sensor ]
then
sensorraw=`cat $sensor`
crc=`echo $sensorraw | cut -f2 -d= | cut -c4-6`
if [ "$crc" = "YES" ]
then
tempraw=`echo $sensorraw | cut -f3 -d=`
temp=`echo "scale=3; $tempraw / 1000" | bc`
#temp=`echo "scale=2; $tempraw / 1000" | bc`
# Update database
#echo $temp
printf "%04.2f" $temp
echo 0
echo 0
echo temperature
fi
fi
Die Datei muss ausführbar sein:
chmod 750 /home/pi/graph/temp-mrtg-update.shEs ist zu beachten, dass die ID eures Sensors hinterlegt werden muss!
Das Script sollte die folgenden Werte liefern:
pi@pi-ingolstadt ~/graph $ ./temp-mrtg-update.sh
3.560
0
temperature
Erstellen des Diagramms vom Temperatursensor:
Zu Beginn muss eine neue mrtg.cfg erstellt werden, dies erfolgt mit dem Befehl:
sudo cfgmaker --global "Options[_]: growright" --global "IconDir: /mrtg" --global "WriteExpires: Yes" --global "Language: german" --global "RunAsDaemon: yes" --global "EnableIPv6: no" --global "LogFormat: rrdtool" --global "Interval: 1" '--if-filter=$if_admin && $default_iftype' --output /etc/mrtg.cfg public@localhostJetzt kann der folgende Teil in die sudo nano /etc/mrtg.cfg übernommen werden:
### Global Config Options
# for UNIX
# WorkDir: /home/http/mrtg
# for Debian
HtmlDir: /var/www/mrtg
WorkDir: /var/www/mrtg
Imagedir: /var/www/mrtg
# or for NT
# WorkDir: c:\mrtgdata
### Global Defaults
# to get bits instead of bytes and graphs growing to the right
# Options[_]: growright, bits
EnableIPv6: no
Options[_]: growright
IconDir: /mrtg
WriteExpires: Yes
Language: german
RunAsDaemon: yes
EnableIPv6: no
LogFormat: rrdtool
Interval: 1
#####################################################################
# System: DS18S20 Temperatur Sensor
# Contact: root
# Location: attached to Raspberry Pi
#####################################################################
### DS18S20 Temperatur SensorIngolstadt
TimeStrPos[temp_ingolstadt]: RU
Target[temp_ingolstadt]: `/home/pi/graph/temp-mrtg-update.sh`
Options[temp_ingolstadt]: gauge,growright,nopercent,expscale,transparent
Title[temp_ingolstadt]: Temperatur Ingolstadt
PageTop[temp_ingolstadt]: <h1>Temperatur Ingolstadt</h1>
MaxBytes[temp_ingolstadt]: 60
#Unscaled[temp_ingolstadt]: ymwd
Step[temp_ingolstadt]: 60
Legend1[temp_ingolstadt]: Gemessene Temperatur in Ingolstadt
LegendI[temp_ingolstadt]: Aussentemperatur
LegendO[temp_ingolstadt]:
YLegend[temp_ingolstadt]: Grad Celsius
ShortLegend[temp_ingolstadt]: Grad °C
Die restlichen Einträge habe ich auskommentiert, da ich nur das Temperatur Diagramm haben möchte.
Bei Bedarf können noch die MRTG-Icons in den WWW Ordner vom Webserver kopiert werden:
sudo cp /usr/share/mrtg/* /var/www/mrtg/Jetzt kann durch Starten von MRTG überprüft werden, ob die Konfiguration erfolgreich durchgeführt wurde.
sudo env LANG=C /usr/bin/mrtg /etc/mrtg.cfgMöchte man MRTG erneut starten, muss vorher der bestehende Prozess (Prozess-ID siehe auch /etc/mrtg.pid) beendet werden:
ps -aux | grep mrtg
sudo kill -9 16391
sudo env LANG=C /usr/bin/mrtg /etc/mrtg.cfg
Probleme mit negativen Temperaturwerten beheben
Da MRTG keine negativen Werte erlaubt, kann man diese nachträglich (mit rrdtool) mit dem folgenden Befehlen im Verzeichnis /var/www/mrtg anpassen.sudo rrdtool tune temp_ingolstadt.rrd --minimum ds0:-20Jetzt werden Temperaturen bis - 20 Grad Celsius unterstützt.
sudo rrdtool tune temp_ingolstadt.rrd --minimum ds1:-20
Der Aufruf des Diagramms erfolgt über den Browser http://192.168.1.110/cgi-bin/mrtg-rrd.cgi
Hinweise: Kommt es beim Aufruf der Datei zu einem "500 - Internal Server Error", wurden die Rechte chmod +x nicht gesetzt. Führte dies nicht zum Erfolg, sollte man die syslog Datei auslesen. Dies geht mit dem Befehl /var/log $ tail -f syslog . Erscheint hier die Meldung "Can't locate CGI.pm in @INC (you may need to install the CGI module)", muss noch das folgenden Paket installiert werden: sudo apt-get install libcgi-pm-perl
Achtung es gibt ein Fehler im mrtg-rrd Package: https://bugs.launchpad.net/ubuntu/+source/mrtg-rrd/+bug/1618800
Nov 1 13:49:34 raspberrypi lighttpd[538]: Can't use an undefined value as an ARRAY reference at /var/www/cgi-bin/mrtg-rrd.cgi line 499.
Ich musste folgende Zeilen der "mrtg-rrd.cgi" anpassen:
Hinweis: Vorher am Besten den MRTG Prozess wieder beenden (siehe oben).
Aug 7 21:49:01 raspberrypi-zero lighttpd[461]: Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at /var/www/cgi-bin/mrtg-rrd.cgi line 499.
# return @{$target->{args}} if defined @{$target->{args}};
return @{$target->{args}} if ($target->{args} && @{$target->{args}});
Aug 7 21:52:28 raspberrypi-zero lighttpd[461]: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?) at /var/www/cgi-bin/mrtg-rrd.cgi line 525.
# %{$target->{options}} = ()
# unless defined %{$target->{options}};
%{$target->{options}} = ()
unless ($target->{options} && %{$target->{options}});
Aug 7 21:58:11 raspberrypi-zero lighttpd[461]: Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at /var/www/cgi-bin/mrtg-rrd.cgi line 914.
# if (defined @{$directories{$dir}{subdir}}) {
# $subdirs_printed = 1
if ($directories{$dir}{subdir} && @{$directories{$dir}{subdir}}) {
$subdirs_printed = 1;
Aug 7 22:01:35 raspberrypi-zero lighttpd[461]: Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at /var/www/cgi-bin/mrtg-rrd.cgi line 929.
# if (defined @{$directories{$dir}{target}}) {
if ($directories{$dir}{subdir} && @{$directories{$dir}{subdir}}) {
Bei Bedarf kann das Diagramm noch auf einen anderen Server hochgeladen werden:
crontab -e: Aufruf per localhost, damit die temp_ingolstadt-day.png Datei erstellt wird (alle 7min).
*/7 * * * * curl http://localhost/cgi-bin/mrtg-rrd.cgi/temp_ingolstadt.html >/dev/null 2>&1
temp.sh: anpassen, siehe auch http://sebastianhemel.blogspot.de/2015/01/temperatursensor-ds18b20-raspberry-pi.html
ncftpput -f /home/pi/ftp.cfg /temp /var/www/mrtg/temp_ingolstadt-day.png
Danke an das Tutorial von http://kopfkino.irosaurus.com/tutorial-monitoring-mit-mrtg-rrd-support-auf-raspberry-pi-debian-wheezy, welches als Basis für diesen Eintrag diente.