Malinowo, php, PIR HC-SR501, python

2016-03-13 12.10.02Sobota była pracująca, ale nie przeszkodziło to aby podłączyć i oprogramować czujnik ruchu PIR HC-SR501! :) Python w zależności od odczytów z czujnika generuje pliczek .json, który to jest zaciągany  przez jquerową komendę i steruje przeźroczystością warstwy mojego zegarka. W skrócie: wykryje ruch – rozjaśnia ekran, nie wykrywa ruchu przez zadany czas – ekranik się ściemnia. Poniżej trochę kodu:

ruch.py


(...)
try:
while True:
time.sleep(1)
val = GPIO.input(PIR)
if (val == True):
i = 0
f = open("/var/www/data/ruch.txt","w")
f.write("{ \"opacity\": \"1\" }")
f.close()
if (state == False):
state = True
else:
i = i + 1
if i == 10:
f = open("/var/www/data/ruch.txt","w")
f.write("{ \"opacity\": \"0.1\" }")
f.close()
if (state == True):
state = False

Część pliku “zegarka”

<script type = "text/javascript" language = "javascript">
function czytaj() {
$.getJSON('data/ruch.txt', function(jd) {
$('#opacity').fadeTo('2000', jd.opacity, function() {});
});
setTimeout('czytaj()', 500);
};
</script>

ADS-B, Flightradar, Malinowo, php

Na szybko, bo ostatnio jestem w domu zbyt nieobecny. :) Rozdzielczość “plansz” dopasowana do rozdzielczości planowanego ekranu do malinki (320×240 px), jest animacja plansz w jquery, jest wyświetlanie godziny, daty oraz aktulanej pogody z Yahoo (wraz z ikonkami!), jest też wyświetlanie samolotów z radaru. Tutaj trochę pokombinowałem i nie wystarczyło mi przerobienie wizualne wyników pracy programu “DUMP1090” tak aby zmieścić się na malutkim ekraniku. Zamiast kolumny “hex” – czyli sześcioznakowego symbolu samolotu postanowiłem że zegarek będzie wyświetlał przynajmniej znaki rejestracyjne samolotu. :) Zadanie w sumie łatwe. Wystarczyło postawić bazę danych mysql, zaimportować kilka kolumn z bazy danych “Virtual Radar”, zaprzęgnąć php do pracy i zmodyfikować “jsona” na podstawie którego DUMP1090 wyświetla dane. :) Tyle zrobione. Teraz trzeba dorobić plansze z pogodą na następny dzień i… zamówić wreszcie ekranik!

Plansze pi-zegarka
Plansze pi-zegarka

 

ADS-B, Flightradar, Malinowo

Antena 1090 MHz
Antena 1090 MHz

Zapomniałem wspomnieć o pierwszej malince, która od ponad roku dzielnie dekoduje dane z transponderów samolotowych i prezentuje na ekranie, oraz wysyła na serwery flightradar (stacja T-EPWA85). Dodatkowo stoi tam transmission i kilka innych pierdół. :) Podstawą projektu jest własnej roboty antena na 1090 MHz, tuner DVB-T RTL2832U oraz 10 metrowy przewód aktywny usb (aby dekoder był “za oknem” i kabel pomiędzy anteną a dekoderem był jak najkrótszy). Całość śmiga na dump1090 i fr24feed i pozwala na odbiór sygnału z samolotów oddalonych o około 400km od anteny w kierunkach bez przeszkód terenowych.

Zasięg stacji T-EPWA85
Zasięg stacji T-EPWA85
Malinowo, php

Na szybko. Dodałem kod czytający z yahoo pogodę i wyświetlający ją na moim wirtualnym ekranie. :)

<?php
$result = file_get_contents('http://weather.yahooapis.com/forecastrss?w=523920&u=c');
$xml = simplexml_load_string($result);
$xml->registerXPathNamespace('yweather', 'http://xml.weather.yahoo.com/ns/rss/1.0');
$location = $xml->channel->xpath('yweather:location');
foreach($xml->channel->item as $item){
$current = $item->xpath('yweather:condition');
$forecast = $item->xpath('yweather:forecast');
$current = $current[0];
$output = <<<END
<span>{$current['text']},&nbsp;{$current['temp']}&deg;C</span>
END;
}
echo $output;
?>

Oczywiście plik zaciąga dane pogodowe dla Warszawy, a odpowiada za to parametr w=523920 w pierwszej linii. Dla innego miasta trzeba to zmienić! :)

Malinowo

Zegarek - wersja alpha
Zegarek – wersja alpha

Docelowo – ma być lustro interaktywne w łazience zbudowane na pizero (wczoraj przyszło!), wyświetlające aktualną pogodę i newsy. Z czujnikiem ruchu i takie tam… Ale aby zdobyć pierwsze szlify, postanowiłem wykonać coś prostszego –  “zegarek na szafkę” ze stacją pogodową, ze starego raspberry B, ekranu LCD i paru czujników. Malinka i czujniki (BMP180) już są. Czekam nie jeszcze zakup wyświetlacza (chcę coś w okolicy 5″), oraz oprogramowanie tego. :) Na chwilę obecną na mailnce hula lightpdd (zainstalowany zgodnie z instrukcją z http://malinowepi.pl/post/40685427538/serwer-www-i-php), a całość ma być deczko przerobionym kioskiem multimedialnym (http://krzysztofjelonek.net/raspberry-pi-2-jako-ekran-infokiosku/). Ekran, ma prezentować w kilkusekundowych interwałach aktualny czas, datę, temperaturę wewnętrzną (czujnik), ciśnienie oraz jego gradient (czy spada, czy rośnie), oraz pogodę za oknem z accuweather yahoo. Jak na razie “malinka” prezentuje na wirtualnym ekranie czas i datę… :)