Twitter i Python

Cały czas zależy mi na zdalnej kontroli

było parę opcji

1. Facebook massanger – niestety FB postanowiło całkowicie zmienić messangera  i praktycznie zablokowało dostęp spod lini komend (w tym pythona itp.)

2. Google talk (hangaut) – sprawa taka sama jak w przypadku FB

3. Pushbullet (pushbullet.com) – niby działa opisze to w jakimś przyszłym wpisie. Ale mało osób to posiada

4. brak pomsyłów

5. od jakiegoś czasu siedzę na twitterze https://twitter.com/xkawakx więc czemu nie 🙂

W CAŁOŚCI OPIERAŁEM SIĘ NA RÓŻNYCH PRZYKŁADACH ZNALEZIONYCH W INTERNECIE!!! ( CZĘŚĆ KODU JEST DLA MNIE NIE ZROZUMIAŁA – ALE DZIAŁA)

instalacja jest banalnie prosta

sprowadza się do 4 komend

sudo apt-get install python-pip sudo python-dev libffi-dev libssl-dev
sudo sudo pip install --upgrade pip
sudo pip install tweepy
sudo pip install 'requests[security]'


isntalacja to jakieś 5 minut na raspberry pi 2

Tweepy chyba najpopularniejszy klient twittera pod pythona. U mnie działa !!!

Skoro instalacja była prosta 🙂 to konfiguracja musi być zakręcona

Ja założyłem nowe konto na twitterze specjalnie dla Alfreda i tej aplikacji

Ty drogi czytelniku zrobisz jak uważasz.

 

1. wchodzimy na strone https://apps.twitter.com/ i klikamy w „Create New App

tw1

2. wypełniamy cały formularz … zgadzamy się na warunki i klikamy na „Create Yout Twitter Application”

tw2

2a. Trzeba pamiętać żeby w twitterze był dodany numer telefonu inaczej nic z tego (sam się męczyłem z tym parę dni)

3. Insteresuje nas Załadka Permissions i opcja „Read, Write and Access direct messages” – bez niej Alfred nie będzie miał dostępu do prywatnych wiadomości a tak chce nim sterować

tw3

4. Po kliknięciu w update settings przechodzimy do zakładki „Keys and Access Tokens

4a. Nie wiem czy to jest wymagane ale na nowo wygenerowałem klucze klikając w „Regenerate Consumer Key and Secret

tw4

5. Klikamy na samemy dole w „Create my access token”

Mamy już wygenerowane wszystkie dane które są nam potrzebne

tw4

czyli

Consumer Key (API Key)

Consumer Secret (API Secret)

Access Token

Access Token Secret

 

Konfig i odpalenie

kod jest prosty szybki i dla mnie nic a nic nie zrozumiały (poza paroma wątkami)

import tweepy
import json
import os
import sys
reload(sys)
sys.setdefaultencoding('UTF8')
consumer_key = 'A4t1'
consumer_secret = 'jgK9A'
access_token = '33407265'
access_token_secret = 't6CegQ5RN8C'
c = '"'
s= ' '
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
error = tweepy.error.TweepError
class CustomStreamListener(tweepy.StreamListener):
def on_direct_message(self,status):
decoded = json.dumps(status._json)
a = json.loads(decoded)
source = a['direct_message']['sender_id_str']
print a['direct_message']['sender_screen_name'] + "(" + a["direct_message"]["sender_id_str"] + ")" + ": " + a['direct_message']['text']
stream = tweepy.streaming.Stream(auth, CustomStreamListener())
streamuser = stream.userstream()
track_list = None
stream.filter( track_list)


 

Na początku importujemy to co potrzebujemy czyli

biblioteki

tweepy json os i sys

reload(sys)
sys.setdefaultencoding('UTF8')

to zmusza sprawia że polskie snaki są jako tako rozpoznawane

consumer_key = 'A4t1'
consumer_secret = 'jgK9A'
access_token = '33407265'
access_token_secret = 't6CegQ5RN8C'

 

 

uzupełniamy to naszymi danymi z twittera

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
error = tweepy.error.TweepError
class CustomStreamListener(tweepy.StreamListener):
def on_direct_message(self,status):

łączenie i ściaganie prywatnej wiadomości

decoded = json.dumps(status._json)
a = json.loads(decoded)

i tu niespodzianka która dla mnie do tej pory jest wielkim zaskoczeiem najpierw, najpierw musze zrzucić do dumpa status a nastepnie załadować go ponownie w json (zakręcone ale działą)

print a['direct_message']['sender_screen_name'] + "(" + a["direct_message"]["sender_id_str"] + ")" + ": " + a['direct_message']['text']

zabawa z wyświetlaniem sender_screen_name – wyświetlana nazwa osoby która do nas pisze , sender_id_str – id osoby i text jako tekst który się nam wyświetla

 

stream = tweepy.streaming.Stream(auth, CustomStreamListener())
streamuser = stream.userstream()
track_list = None
stream.filter( track_list)

pierdoły których nie rozumiem ale działają

Tak wygląda kod

twittwe

odpalamy normalnie

pyton plik.py

po odpaleniu wchodzimy na twittera i wysyłamy nową wiadomość do (bota) Alfreda

alfik

inalfi

To na tyle 🙂 w dalszych wpisach będzie rozwinięcie tematu

Samba

W życiu każdego użytkownika przychodzi moment kiedy trzeba wgrać pliki na malinę.

Ja chce to zrobić za pośrednictwem sieci lan i tzw. zasobów sieciowych

Na polskie – Malina udostępnia nam folder w sieci lokalnej (otoczenie sieciowe)

Możemy wgrywać i czytać(kopiować) pliki z tego folderu nie przejmując się systemem plików 😀

1

sudo apt-get install samba samba-common-bin

Edytujemy pliki konfiguracyjny

sudo pico /etc/samba/smb.conf

wpisujemy na końcu pliku

[pihome]
comment= Pi Home
path=/home/pi
browseable=Yes
writeable=Yes
only guest=no
create mask=0777
directory mask=0777
public=no

 

ustawiamy hasło żeby nikt nam się nie wbił

sudo smbpasswd -a pi

(Komputer Dorota wylogował się w trakcie pisania tutoriala z siebie )

2 3

Teraz możemy już wgrywać nasze pliki z komputera na malinę

ustawienia czyli ConfigParser po ludzku :-)

Zaczynamy z grubej rury 🙂 tworzymy plik konfiguracyjny „.conf”

a to jego zawartość

[live]
Slowo = Alfred
Dzialanie = calyczas
Powiedziano = tak
[lokalizacja]
kraj =  Polska
Woj = Lubuskie
Miasto =  Gorzowwielkospolski
[api]
Pushbullet =
Ivona =
wit.ai =
[Wlasciciel]
Imie = Łukasz
Nick = Kawak
Wiek = 30
[inne]



Oczywiście dane które wpiszecie zależą od was, ja dałem tylko swoje przykłady.

W nawiasach kwadratowych jest nazwa sekcji (tak dla ułatwienia ale musi być)

u mnie to są sekcje

[live]

[lokalizacja]

[api]

[Wlasciciel]

[inne]

A w środku są dane, które mogą być definiowane po : albo = (u mnie jest to  =  )

Aby odczytać dane posłużymy się modułem/biblioteką ConfigParser

import ConfigParser
config = ConfigParser.ConfigParser()
config.readfp(open(r'.conf'))
nazwa = config.get('live', 'Slowo')
kraj = config.get('lokalizacja','kraj')
owner = config.get('Wlasciciel','Nick')
print nazwa
print kraj
print owner


Tłumaczenie

import ConfigParser  – importujemy biblioteke

config = ConfigParser.ConfigParser() – nasza zmienna „config” jest plikiem knfiguracyjnym

config.readfp(open(r'.conf')) – otwieramy i czytamy nasz plik konfigurayjny (r’.conf” to ścieżka do pliku)

nazwa = config.get('live', 'Slowo') – pobieramy dane z konfiga i przypisujemy do zmiennej (z sekcji live opcja Slowo)

kraj = config.get('lokalizacja','kraj') – sekcji lokalizacja opcja kraj i

owner = config.get('Wlasciciel','Nick') – wekcja Wlasciciel opcja nick

no i

print nazwa
print kraj
print owner

na tym kończymy nasz plik 🙂

a oto wynik

odczyt


Modyfikacja danych

 

import ConfigParser
config = ConfigParser.ConfigParser()
config.read(r'.conf')
config.set('api','Ivona',r'kluczapidoivony')
config.set('Wlasciciel','Nick',r'jakisnick')
with open(r'.conf', 'wb') as configfile:
config.write(configfile)

import ConfigParser
config = ConfigParser.ConfigParser()
config.read(r'.conf')

wyjaśniłem wyżej.

config.set('api','Ivona',r'kluczapidoivony') – zapis do nazwy sekcji i opcji ostatnia wartość to to co chcemy zapisać

config.set('Wlasciciel','Nick',r'jakisnick') – zmieniamy nick właściciela z kawak na „jakisnick”

with open(r'.conf', 'wb') as configfile:
(w tym miejscu pare spacji, żeby był odstęp) config.write(configfile)

– zapisujemy nasz config

Działa 🙂

zapis

feedparser + python = wiadomości

Do poprawnego działania skryptu potrzebujemy pakietu feedparser i dobrej strony która daje swoje wpisy w rss’ie

sudo pip install feedparser

i

http://www.tvn24.pl/najnowsze.xml

i

http://feeds.feedburner.com/dobreprogramy/Aktualnosci

Kolejność i wybór są na prawdę losowe.

 

import feedparser
import sys
reload(sys)
sys.setdefaultencoding('UTF8')
feedparser._HTMLSanitizer.acceptable_elements.remove('img')
rss = feedparser.parse('http://www.tvn24.pl/najnowsze.xml')
newsfeed1 = rss.entries[0]['title'] + '. ' + rss.entries[0]['description'] + '. ' + rss.entries[1]['title'] + '. ' + rss.entries[1]['description'] + '. ' + rss.entries[2]['title'] + '. ' + rss.entries[2]['description'] + '. ' + rss.entries[3]['title'] + '. ' + rss.entries[3]['description'] + '. '
newsfeed = newsfeed1.replace('"', '')
print newsfeed

 

import feedparser importujemy feedparsera
import sys
reload(sys)
sys.setdefaultencoding('UTF8')
wymuszamy kodowanie!
feedparser._HTMLSanitizer.acceptable_elements.remove('img') ustawiamy,żeby nie było zdjęć – czyli wycinamy wszystko co będzie w znacznikach <img></img>
rss = feedparser.parse('http://www.tvn24.pl/najnowsze.xml') importujemy naszego rss’a
newsfeed1 = rss.entries[0]['title'] + '. ' + rss.entries[0]['description'] + '. ' + rss.entries[1]['title'] + '. ' + rss.entries[1]['description'] + '. ' + rss.entries[2]['title'] + '. ' + rss.entries[2]['description'] + '. ' + rss.entries[3]['title'] + '. ' + rss.entries[3]['description'] + '. '
jedna długa linijka 🙂 czyli wyciągamy 3 wpisy dokładniej to ich tytuły i zawartość
newsfeed = newsfeed1.replace('"', '') zastępujemy ” niczym czli ”
print newsfeed wyświetlamy to co otrzymaliśmy.

 

wiad

Tak wiem, kolejny skrypt który wyświetla wynik w jednej linijce.

 


Dobre programy

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import feedparser
import sys
reload(sys)
sys.setdefaultencoding(‚UTF8’)
feedparser._HTMLSanitizer.acceptable_elements.remove(‚img’)
rss = feedparser.parse(‚http://feeds.feedburner.com/dobreprogramy/Aktualnosci’)

newsfeeddp = rss.entries[0][‚title’] + ‚. ‚ + rss.entries[0][‚description’] + ‚. ‚ + rss.entries[1][‚title’] + ‚. ‚ + rss.entries[1][‚description’] + ‚. ‚ + rss.entries[2][‚title’] + ‚. $

newsfeeddp1 = newsfeeddp.replace(‚n’, ”)
newsfeeddp2 = newsfeeddp1.replace(‚&hellip;’, ”)

print newsfeeddp2

 

wiad2

 

Pythonowa pogoda :-)

Czas na prognozę pogody w pythonie.

To nie jest mój skrypt i cała chwała należy się użytkownikowi entat z dobrychprogramow – http://www.dobreprogramy.pl/Blog,entat,linux,179044,2.html

Na jego wpisie się oparłem http://www.dobreprogramy.pl/entat/Jezyki-skryptowe-na-co-dzien-cz.-4.-mala-stacja-meteo,52336.html ale to troszkę przerobiłem

Cały skrypt opiera się o stronę

http://www.meteoprog.pl/

Ściąga stronę w której jest wpisana nasza miejscowość, wyciąga z tej strony interesujące nas dane i je ładnie wyświetla.

Więc lecimy ze skrypcikiem

 

#!/usr/bin/python -*- coding: utf-8 -*-

import urllib, re, time
import sys
import os
www = urllib.urlopen('http://www.meteoprog.pl/pl/weather/' + sys.argv[1] )
www_tekst = www.read()
wyrazenie = '<meta property="og:description" content="(.+?)" />'
pogoda = re.findall(wyrazenie, www_tekst)
print pogoda[0]

No i teraz tłumaczenie skryptu 😀

import czyli importujemy biblioteki/moduły

www = urllib.urlopen('http://www.meteoprog.pl/pl/weather/' + sys.argv[1] ) – python otwiera sobie stronę http://www.meteoprog.pl/pl/weather/ z wpisanym argumentem sys.argv[1]

wyrazenie = '<meta property="og:description" content="(.+?)" />' ustawia nam nasze wyrażenie regularne które potrzebujemy.

pogoda = re.findall(wyrazenie, www_tekst)  teraz łączenie otwartej strony z wyrażeniem regularnym

no i wyświetlamy wynik

print pogoda[0]

 

Jeśli wszystko mamy ładnie zapisane w moim przypadku plik nazywa sie pogoda.py

teraz dajemy komende

python pogoda.py nazwa miasta – nazwa miasta musi być bez spacji i znaków specjalnych np:

Gorzów Wielkopolski – gorzowwielkopolski

Poznań – poznan

Suwałki – suwalki

itp

a u mnie tak to wszystko wygląda

pogoda

Prognoza jest w takim formacie(troszkę nie fajnym – jedno linijkowym).

To nam się przyda na przyszłość do tts’u

Zaufajcie mi 🙂

Python – pierwszy skrypt

Pora zacząć małą instrukcje z programowaniem.

Zacznę troszkę z grubej rury.

będziemy się bawić pythonem

python

http://kidfocused.com/wp-content/uploads/2013/01/python.jpg

 

Oczywiście chodzi o język programowania a nie puchowe zwierzątko domowe (jak na obrazku wyżej)

jak podaje wikipedia

Pythonjęzyk programowania wysokiego poziomu ogólnego przeznaczenia[3], o rozbudowanym pakiecie bibliotek standardowych[4], którego ideą przewodnią jest czytelność i klarowność kodu źródłowego. Jego składnia cechuje się przejrzystością i zwięzłością[5][6].

Python wspiera różne paradygmaty programowania: obiektowy, imperatywny oraz w mniejszym stopniu funkcyjny. Posiada w pełnidynamiczny system typów i automatyczne zarządzanie pamięcią, będąc w tym podobnym do języków Perl, Ruby, Scheme czy Tcl. Podobnie jak inne języki dynamiczne jest często używany jako język skryptowy. Interpretery Pythona są dostępne na wiele systemów operacyjnych.

 

http://pl.wikipedia.org/wiki/Python

 

jeśli coś z tego rozumiecie to świetnie 🙂 ja dość mało. A tylko i wyłącznie bawię się pythonem bo.. Jarrod (mój mentor IT) w szybkiej rozmowie wybił mi z głowy node.js i powiedział żebym zajął się pythonem.Więc jeśli coś będzie nie tak albo coś się wam nie będzie podobało 🙂 to niżej jest jego blog 😛 (wszystko to jego wina!)

http://jarrodvs.blogspot.com/

 

Do poprawnego działania pythona(na raspberry pi) praktycznie nic nie potrzebujemy. Posiadamy na pokładzie dwie wersje Pythona

python -V
Python 2.7.3

i

python3.2 -V
Python 3.2.3

 

Osobiście nie mam pojęcia czym się różnią wszystkie wersje od siebie (i jakoś nie chce mi się tego szukać)

python korzysta z bibliotek (tak napisali w wiki, więc tak jest) czasami jednak zestaw bibliotek standardowych nam nie wystarcza. I do tego potrzebujemy programu „pip” aby go zainstalować wystarczy komenda:

sudo apt-get install python-pip -y

Całej instalacji nie będę wklejał – wszystko idzie automatycznie i trwa jakieś 30 sekund.

Do pierwszego skryptu potrzebujemy bibliotekę/modół  requests

http://docs.python-requests.org/pl/latest/ (opis jest genialny 😀 )

więc instalujemy ją poleceniem

sudo pip install requests

I tu chciał bym się na chwile zatrzymać. apt-get jest menadżer pakietów dla całego systemu natomiast pip jest menadżerem pakietów tylko dla pythona.

Zaczniemy od czegoś bardzo prostego.

Tworzymy plik
touch wyszukaj.py

edytujemy go

pico wyszukaj.py

i wklejamy

import requests
import sys
r = requests.get('http://searx.me/?format=json&q=%3Apl%20' + sys.argv[1])
z = r.json()
print z["results"][0]["content"]

teraz skrót klawiszowy ctrl+x i „t” potem enter

gdybyśmy chcieli odpalić ten skrypt taki będzie wynik

python wyszukaj.py "Jan Matejko"

i otrzymamy odpowiedź

Jan Alojzy Matejko (ur. 24 czerwca [a] 1838 r. w Krakowie , zm. 1 listopada 1893 r. w Krakowie) – polski malarz , twórca obrazów historycznych i batalistycznych ...

a teraz krok po kroku
co robimy 🙂 (jak już pisałem nie znam się na programowaniu więc większość robię na czuja 🙂

import requests
import sys

Importujemy moduł

requests jest opisana wyżej, ale służy do obsługi informacji z i do internetu( www)

sys  opis jest tu – ale nam jest potrzebne tylko do tego żeby przekazać informacje z linii komend dokładniej chodzi o fragment sys.argv[1] który pobiera informacje z linii komend.

r = requests.get('http://searx.me/?format=json&q=%3Apl%20' + sys.argv[1])

r = – czyli przypisanie zmiennej

requests.get – żądanie pobrania w naszym przypadku
http://searx.me/?format=json&q=%3Apl%20 – Wykorzystujemy genialna wyszukiwarkę searx.me która wyszukuje w wynikach innych wyszukiwarek ( o tym napisze w innym wpisie)

+ sys.argv[1] – wyciąga z lini komend drugi argument który jest w cudzysłowie „Jan Matejko”.

z = r.json()- pokazuje ze to co odbieramy jest w formacie json (chyba)

https://searx.me/?format=json&q=%3Apl%20jan%20matejko  <– takie coś przechodzi do maliny i trzeba to jakoś przetlumaczyć na nasz język

print z["results"][0]["content"] - tłumaczymy i wyciągamy pierwszy wynik do tego nam to wypisuje na ekranie.

 

 

 

Oczy – mój creative

Pora dać wzrok naszej malinie.

Po podłączeniu kamery do portu usb. Nic nam sie nie instaluje i niestety magicznie nie robi.

komenda

lsusb

Bez tytułu

pokazuje że nasze „oczy” są w systemie

Bus 001 Device 004: ID 041e:4095 Creative Technology, Ltd

No dobra to teraz trzeba zobaczyć czy coś widać 🙂

1: doinstalujemy potrzebny soft

sudo apt-get install fswebcam

Bez tytułu

Sprawdzamy czy wszystko nam działa

fswebcam --save Desktop/foto.png
Zrobiło nam zdjęcie ale co dalej …

Trzeba je gdzieś i jakoś wysłać 🙂

więc korzystamy z genialnego serwisu https://transfer.sh/

curl --upload-file Desktop/foto.png https://transfer.sh/foto1.png
i otrzymujemy link
https://transfer.sh/11qp9U/foto1.png

foto1

A oto wynik … Zdjęcie troszkę małe, więc je powiększymy .-

do naszej komendy musimy dodać opcje  -r 640x480 która odpowiada za rozdzielczość.

Cała komenda wygląda tak

fswebcam -r 640x480 --save Desktop/foto.png

No i oczywiście wysyłamy całość na serwer

curl --upload-file Desktop/foto.png  https://transfer.sh/foto1.png

https://transfer.sh/bdzlc/foto1.png

 

foto1 (1)

Tak to ja :-P.

 

TP-Link TL-WN725N – czyli dostęp do świata.

Wifi – TP-Link TL-WN725N – Jedna z najtańszych kart wifi (najtańszych i najmniejszych).

Niestety nasza malinka nie posiada potrzebnych sterowników

komendy:

lsusb – pokazuje co mamy podłączone do Maliny
nas interesuje coś czego nie widać czyli
Bus 001 Device 005: ID 0bda:8179 Realtek Semiconductor Corp. Teraz w miejscu 005 niema nic (nawet samo miejsce się nie wyświetla, ale po instalacji sterowników będzie to wyglądało tak jak tu

iwconfig – pokazuje bezprzewodowe karty sieciowe

ifconfig – pokazuje polączenia internetowe

Bez tytułu

jak widać to nic nie widać.

Połączenie

eth0 – jest to połączenie po kabelku

pora zainstalować sterowniki!

Z pomocą przychodzi nam wspomniany już wcześniej sklep botland, który posiada nie tylko sprzęt ale też instrukcje do tego co sprzedają. Nas interesuje dokładnie to http://botland.com.pl/content/70-konfiguracja-wifi. Więc lecimy w/g tego co tam napisali

komenda

uname -a
Otrzymamy
Linux Alfred 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux

Pokazuje nam jaką wersje jądra (zboczuszki) mamy 🙂 u mnie na dzień 30 maja 2015 roku jest to wersja 3.18.11-v7+

w/g tego co napisali na stronie botlandu (delikatnie zmodyfikowany), musimy wkleić następujący kod

sudo wget https://github.com/lwfinger/rtl8188eu/raw/master/rtl8188eufw.bin -O /lib/firmware/rtlwifi/rtl8188eufw.bin

a wygląda to mniej więcej tak

Bez tytułu

Teraz musimy ponownie uruchomić Raspberry Pi

sudo reboot

Teraz Polecenia iwconfig i ifconfig już coś nam pokazują 🙂

Bez tytułu

Teraz łączymy się do wifi 🙂 Opisze tylko i wyłącznie jedną metodę która jest tą łatwiejszą 🙂 (dla mnie).

1. Łączymy się przez program vnc do nasze maliny (opis jak to zrobić jest troszkę niżej)

2. klikamy w ikonke która jest pomiędzy VNC , głośnikiem i zegarem

Bez tytułu

jest to klient sieci – tych przewodowych i bez przewodowych

Bez tytułu

3.Klik w naszą sieć

i

4.wpisujemy swoje hasło

Bez tytułu

5. Jeśli wszystko przebiegło pomyślnie i nic nie skopaliśmy ani nie pomyliliśmy hasła, ikonka komputerów powinna się zmienić na ikonke wifi

Bez tytułu

6. sprawdzamy czy wszystko przebiegło po naszej myśli.

Zamykamy okienko VNC ( już nie będzie nam potrzebne), wyniki komend iwconfig i ifconfig wyglądają całkiem inaczej

Bez tytułu

w ifconfig teraz widać dwa adresy IP

przy eth0 – addr:192.168.1.135

i przy wlan0 – addr:192.168.1.54

Od teraz można się łączyć na oba adresy 🙂 albo po prosty odłączyć się od kabelka i przenieść Raspberry pi w bezpieczne ukryte miejsce 🙂

Hardware – sprzęt

Niestety, samo raspberry pi mi nie wystarczy.
Więc musiałem troszkę zainwestować.

Wifi – TP-Link TL-WN725N 

tplink1 tplink2

Jest to mała karta wifi która niestety nie działa Out of box (trzeba doinstalować sterowniki – opis w następnych wpisach)


Bluetooth – OMEGA USB BLUETOOTH BT-160 NANO v2.0 EDR VISTA BRO

bt1 bt2

Działa bez instalacji sterowników (ale trzeba doinstalować soft – opis w następnych wpisach)


Malina nie posiada wbudowanego głośnika

Głos – Nokia MD-9

Nokia-Mini-Speaker-MD-9

Działa tak jak natura chciała.

Wielkiej filozofii nie ma w tym. wkładamy dwie baterie no i działa.


Oczy i uszy – czyli mikforon i kamera

Tu miałem zagwozdkę.

Malina nie posiada swojego mikrofonu (w jacku też), po prostu komuś nie chciało się upychać karty muzycznej do tego malutkiego komputerka.

Na początku zastanawiałem się nad kartami na usb, ale z czasem ta propozycja przestała być aktualna

Ale spokojnie podobno te najtańsze karty działają całkiem dobrze.

Wpadłem na genialny pomysł połączenia mikrofonu i kamery – więc szukałem kamer na usb z mikrofonem 🙂

i trafiłem … jak kulą w płot

Trust Primo Webcam

kamera

Na opakowaniu był ładny znaczek USB był tez napis ze ma wbudowany mikrofon więc się pokusiłem (cena była zachęcająca)

Wszystko było pięknie do momentu aż dotarłem do domu i zobaczyłem kabel

trust

No kurde jack 3.5 .. Przewertowałem opakowanie i stronę internetową

http://trust.com/en/all-products/17405-primo-webcam i nie był o nim ani słowa… Gdzie ja mam go sobie wsadzić ? do telefonu ??

ehh smuteczek 🙁

Teraz postanowiłem zaszaleć !!

Pojechałem do sklepu nie dla idiotów, uzbroiłem się w telefon z internetem, i zacząłem szukać.

Trafiłem na ściankę z kamerami (na całe szczęście był dostęp do kabli) i okazało się że większość tanich kamer z mikrofonem ma to samo co ma moja (kupna dupna) kamera. W trackie przeglądania kamer i opakowań cena znacząco rosła, koniec końców trafiłem na kamerę która miała tylko USB( o co mi chodziło) i miała wbudowany mikrofon.  No to wyszukiwarka i sprawdzamy czy działa z raspberry pi

http://elinux.org/RPi_USB_Webcams

Creative

Live! Cam Sync HD

041e:4095

raspbian/wheezy 2013-04-11 1280×720

Works out of the box. Autoexposure works well both indoors and outdoors. By default the image is bit too software enhanced (they call it „sharpness”), but this „sharpness” level can be set to a lower level via fswebcam tool.

Pierwszy sukces !! będzie działała !! 🙂

cre cre2

Więc podsumowując mam Raspberry Pi a do niego oczy i uszy czyli kamerę z mikrofonem, komunikacje po wifi no i bluetooth

Cen nie podaje … każdy może znaleźć sobie je sam 🙂

Konfiguracja wszystkiego będzie w następnym wpisie 🙂

VNC czyli obraz w obrazie.

Czasami coś łatwiej zrobić za pomocą GUI (Graphical User Interface) jako , iż nie mam podłączonego monitora i go raczej nie będę podłączał.

Postanowiłem zainstalować VNC a dokładniej realvnc o którym było gość głośno parę tygodni temu.

Cała instrukcja jest spolszczenie tego wpisu.

ściągamy program poleceniem

curl -L -o VNC.tar.gz https://www.realvnc.com/download/binary/latest/debian/arm/

następnie rozpakowujemy plik

tar xvf VNC.tar.gz

Kolejne polecenie zainstaluje nam wszystkie pliki z rozszerzeniem deb

sudo dpkg -i *.deb

do pełnego działania potrzebujemy jedynie klucza, którego zdobycie jest bardzo proste.

trzeba wjeść na strone https://www.realvnc.com/purchase/activate/

teraz musimy się zarejestrować wybierając tryb licencji

Free license only, without premium features.

Owa licencja która przychodzi na maila, pozwoli nam na uruchomienie 5 serwerów do których możemy się łączyć.

Licencje dodajemy po przez komende

sudo vnclicense -add XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

(w miejsce XXX wstawiamy to co przyszło nam na maila)

No i ostatnia komenda to

vncserver

Podczas niej zostaniemy poproszeni o podanie hasła (i to dwa razy).

Hasło jest potrzebne żeby nikt inny nam się nie wbił na malinę 🙂

całość wygląda tak

vnc1

I tu kończymy tutorial związany z wpisywaniem znaczków w malinę.


Trzeba ściągnąć program dzięki któremu połączymy się z raspberry.

W tym celu udajemy się na strone https://www.realvnc.com/download/viewer/

i wybieramy klienta który nas interesuje( u mnie był to VNC Viewer for Windows
ZIP 64-bit 5.2.3)

Po kliknięciu w zielony przycisk Download, zostaniemy przeniesieni do formularza który trzeba wypełnić(Oczywiście swoimi danymi 😉 )

i zacznie się ściąganie

Po ściągnięciu i rozpakowaniu moim oczom ukazał się plik VNC-Viewer-5.2.3-Windows-32bit.exevnc1

 

Uruchomiony program wygląda tak

vnc1

 

w pole VNC Server: wpisujemy adres IP naszej maliny (w moim przypadku 192.168.1.135) :1 ten „dwukropek i jeden” oznaczają port (te dane są też napisane w malinie ( na samym dole tego dużego czarnego screenu który dałem wcześniej)

Po wciśnięciu Connect zostaniemy poproszeni o nasze hasło (podawaliśmy je po komendzie vncserver)

vnc1

Sukces !! jesteśmy zdalnie na Malinie!

 

Reszta konfiguracji VNC zależy już od was i jest dobrowolna (czyli możemy ją olać)