Weblog Tomasza Przechlewskiego [Zdjęcie T. Przechlewskiego]


scrum
random image [Photo gallery]
Zestawienie tagów
1-wire | 18b20 | 1wire | 2140 | 3rz | adamowicz | afera | alsamixer | amazon | amber | amman | anniversary | antypis | apache | api | applebaum | arm | armenia | astronomy | asus | atom.xml | awk | aws | bachotek | bakłażan | balcerowicz | balta | banan | bash | batumi | berlin | białowieża | białystok | bibtex | bieszczady | birzeit | biznes | blogger | blogging | blosxom | bme280 | bono | borne-sulinowo | breugel | bt747 | budapeszt | budyniowo | budyń | bursztyn | campagnolo | canon | cedewu | chaos | chello | chiller | chillerpl | chown | christophe dominici | chujowetaśmy | ciasto | cmentarz | contour | coronavirus | covi19 | covid | covid19 | cron | css | csv | cukinia | curl | cycling | d54250wykh | darkages | dbi | debian | dejavu | dhcp | dht22 | dia | docbook | dom | dp1500 | ds18b20 | duda | dulkiewicz | dulkiewiczowa | dyndns | dynia | ebay | economy | ecowitt | ekonomia | elka | elm | emacs | emacs23 | english | ep | erasmus | erasmusplus | ess | eu | eurostat | excel | exif | exiftool | f11 | fc | fc11 | fc15 | fc29 | fc5 | fc8 | fedora | fedora21 | fenix | ffmpeg | finepix | firefox | flickr | folau | fontforge | fontspec | fonty | food | fop | forms | foto | france | francja | fripp | froggit | fuczki | fuji | fuse | gammu | garden | garmin | gas | gawk | gazwyb | gdańsk | gdynia | gender | geo | geocoding | georgia | gft | ggplot | ghost | git | github | gmail | gmaps | gnokii | gnus | google | google apps script | googlecl | googleearth | googlemaps | gotowanie | gphoto | gphoto2 | gps | gpsbabel | gpsphoto | gpx | gpx-viewer | greasemonkey | gruzja | grzyby | gus | gw1000 | haldaemon | handbrake | helsinki | hhi | historia | history | hitler | holocaust | holokaust | hp1000se | hpmini | humour | iblue747 | ical | iiyama | ikea | imagemagick | imap | inkscape | inne | internet | j10i2 | javascript | jhead | jifna | jordania | k800i | kajak | kamera | karob | kibbeh | kleinertest | kml | kmobiletools | knuth | kociewie kołem | kod | kolibki | komorowski | konwersja | krutynia | krynki | kuchnia | kurski | kłamstwo | latex | latex2rtf | latex3 | lcd | legend | lenny | lesund | lewactwo | lgbt-folly | liban | liberation | linksys | linux | lisp | lisrel | litwa | lizbona | logika | ltr | lubowla | lwp | lwów | m2wś | malta | mapquest | mapsource | maradona | marchew | marimekko | marvell | math | mathjax | mazury | mbank | mediolan | mencoder | mevo | mex | mh17 | michalak | michlmayr | microsoft | monitor | mp4box | mplayer | ms | msc | mssql | msw | mswindows | mtkbabel | museum | muzyka | mymaps | mysql | mz | nafisa | nanopi | natbib | navin | neapol | nekrolog | neo | neopi | netbook | niemcy | niemieckie zbrodnie | nikon | nmea | nowazelandia | nuc | nxml | oauth | oauth2 | obituary | ocr | odessa | okular | olympus | ooffice | ooxml | opera | osm | otf | otftotfm | other | ov5647 | overclocking | ozbekiston | padwa | palestyna | panoramio | paryż | pdf | pdfpages | pdftex | pdftk | pedophilia | perl | photo | photography | pi | picasa | picasaweb | pim | pine | pis | pit | pizero | plain | plotly | pls | plugin | po | podcast | podlasie | podróże | pogoda | politics | polityka | polsat | portugalia | postęp | powerpoint | połtawa | prelink | problem | propaganda | pseudointeligencja | pstoedit | putin | python | pywws | r | r1984 | radio | random | raspberry | raspberry pi | raspberrypi | raspbian | refugees | relaxng | ridley | router | rower | rowery | roztocze | rpi | rsync | rtf | ruby | rugby | rumunia | russia | rwc | rwc2007 | rwc2011 | rwc2019 | ryga | rzym | salerno | samba | sds011 | selenium | sem | senah | sernik | sheevaplug | sienkiewicz | signature | sikorski | sks | skype | skytraq | smoleńsk | sqlite | srtm | sshfs | ssl | staszek wawrykiewicz | statistcs | statistics | stats | statystyka | stix | stretch | supraśl | suwałki | svg | svn | swanetia | swornegacie | szwajcaria | słowacja | tallin | tbilisi | terrorism | tesseract | tex | texgyre | texlive | thunderbird | tomato | totalnaopozycja | tourism | tramp | trang | transylwania | truetype | trzaskowski | ttf | turcja | turkey | turystyka | tusk | tv | tv5monde | tweepy | twitter | tykocin | typetools | ubuntu | uchodźcy | udev | ue | ukraina | umap | unix | upc | updmap | ups | utf8 | uzbekistan | varia | video | vienna | virb edit | virbedit | vostro | wammu | wdc | wdfs | weather | weathercloud | webcam | webdav | webscrapping | weewx | wenecja | wh2080 | wiedeń | wikicommons | wilno | win10 | windows | windows8 | wine | wioślarstwo | wojna | word | wordpress | wrt54gl | ws1080 | wtyczka | wunderground | ww2 | www | wybory | wybory2015 | włochy | węgry | xemex | xetex | xft | xhtml | xine | xml | xmllint | xsd | xslt | xvidtune | youtube | yum | zaatar | zakopane | zakupy | zawodzie | zdf | zdrowie | zeropi | zgarden | zgony | zprojekt | łeba | łotwa | świdnica | żywność
Archiwum
06/2023 | 02/2023 | 01/2023 | 11/2022 | 10/2022 | 09/2022 | 07/2022 | 06/2022 | 04/2022 | 03/2022 | 02/2022 | 12/2021 | 09/2021 | 03/2021 | 01/2021 | 12/2020 | 11/2020 | 10/2020 | 09/2020 | 08/2020 | 07/2020 | 04/2020 | 03/2020 | 02/2020 | 01/2020 | 12/2019 | 11/2019 | 10/2019 | 09/2019 | 08/2019 | 07/2019 | 06/2019 | 04/2019 | 02/2019 | 01/2019 | 12/2018 | 11/2018 | 10/2018 | 09/2018 | 08/2018 | 07/2018 | 05/2018 | 04/2018 | 03/2018 | 02/2018 | 01/2018 | 11/2017 | 10/2017 | 09/2017 | 08/2017 | 07/2017 | 06/2017 | 05/2017 | 04/2017 | 03/2017 | 02/2017 | 01/2017 | 12/2016 | 11/2016 | 10/2016 | 09/2016 | 08/2016 | 06/2016 | 05/2016 | 04/2016 | 02/2016 | 12/2015 | 11/2015 | 09/2015 | 07/2015 | 06/2015 | 05/2015 | 02/2015 | 01/2015 | 12/2014 | 09/2014 | 07/2014 | 06/2014 | 04/2014 | 02/2014 | 01/2014 | 12/2013 | 11/2013 | 10/2013 | 09/2013 | 08/2013 | 07/2013 | 05/2013 | 04/2013 | 03/2013 | 02/2013 | 01/2013 | 12/2012 | 11/2012 | 10/2012 | 09/2012 | 08/2012 | 07/2012 | 05/2012 | 03/2012 | 02/2012 | 01/2012 | 12/2011 | 11/2011 | 10/2011 | 09/2011 | 08/2011 | 07/2011 | 06/2011 | 05/2011 | 04/2011 | 03/2011 | 02/2011 | 01/2011 | 12/2010 | 11/2010 | 10/2010 | 09/2010 | 08/2010 | 07/2010 | 06/2010 | 05/2010 | 04/2010 | 03/2010 | 02/2010 | 01/2010 | 12/2009 | 11/2009 | 10/2009 | 09/2009 | 08/2009 | 07/2009 | 06/2009 | 05/2009 | 04/2009 | 03/2009 | 02/2009 | 01/2009 | 12/2008 | 11/2008 | 10/2008 | 09/2008 | 08/2008 | 07/2008 | 06/2008 | 05/2008 | 04/2008 | 03/2008 | 02/2008 | 01/2008 | 12/2007 | 11/2007 | 10/2007 | 09/2007 | 08/2007 | 07/2007 |
O stronie
wykorzystywany jest blosxom plus następujące wtyczki: tagging, flatarchives, rss10, lastbuilddatexhtmlmime. Niektóre musiałem dopasować nieco do swoich potrzeb. Więcej o blosxom jest tutaj
Subskrypcja
RSS 1.0
Aktualizacja raspberry na Zawodziu

Mam na działce trzy raspberry pi, każde wyposażone w standardową kamerę oraz czujnik BME 280 (temperatura/ciśnienie/wilgotność/.)




Ponieważ czujnik czasami szwankował co być może było spowodowane kiepskim montażem, a kamera robiła zdjęcia kiepskiej jakości, to sobie wymyśliłem upgrade. Konkretnie, że zmienię kamerę na OV5647/5MP z szerokokątnym obiektywem (175 stopni), a do BME 280 dodam niezawodny DS18B20, który wprawdzie mierzy tylko temperaturę ale za to dokładnie.

Połączenia wtyki czujników/GPIO są następujące:

Podłączyłem wszystko tym razem porządniej (a przynajmniej tak mi się wydaje.) Nowa kamera wymagała większej dziury i innego sposobu umocowania na pokrywie obudowy.

Dla przypomnienia: BME 280 testuje się czy działa wydając polecenie:

i2cdetect -y 1

Co powinno skutkować wypisaniem kilkudziesięciu kresek i liczby 76. Jeżeli są same kreski coś nie działa.

Czujnik DS18B20 z kolei powinien być widoczny tutaj:

ls -l /sys/bus/w1/devices/w1_bus_master1/

Tam powinien być numer czujnika, moim przypadku jest to 28-4680e30264ff. Temperaturę się czyta po prostu

#!/bin/bash
# Odczyt temperatury z zapisem do loga  
LOG_DIR=/home/pi/Logs/Digitemp

SENS="28-4680e30264ff"
TIME="`date "+%Y%m%d%H%M%S"`"
TEMP="`cat /sys/bus/w1/devices/${S1}/w1_slave | tr '\n' ' '`"

echo "$TIME;$SENS;$TEMP" >> $LOG_DIR/digitemp.log

Przy okazji przetestowałem też AHT10 (temperatura/wilgotność), który działa ale z obsługą jest już słabo. Znalazłem mianowicie skrypt w Pythonie drukujący temperaturę z dokładnością do stopnia a innych skryptów, które by podawały dokładniej, nie udało mi się uruchomić. W google zresztą podejrzanie mało informacji na temat AHT10+raspberry.

Przy okazji też przetestowałem patent na skonfigurowanie rpi z wieloma sieciami WiFi:

 /etc/wpa_supplicant/wpa_supplicant.conf
##====
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
        ssid="network1"
        psk="password1"
        id_str="id-string1"
}

network={
        ssid="network2"
        psk="password2"
        id_str="id-string2"
}

Teraz mogę sobie przynieść pi z działki, włączyć i mi się połączy z WiFi w domu też:-)

url | Tue, 31/01/2023 06:34 | tagi: , , , , ,
Moja nowa stacja pogody: podsumowanie

HP1000SE_PRO.jpg

Ersatz konsola

SDS011

DP200

Dla przypomnienia moja nowa stacja to konsola WiFi o symbolu DP1500 kupiona u Niemca (czyli w sklepie froggit.de): ze standardowym zestawem czujników + czujnik pyłu zawieszonego DP200 (też Froggita). BTW DP1500 to to samo co GW1000 firmy Ecowitt. Zaś DP 200 Froggita to WH41 Ecowitta (http://www.ecowitt.com/wifi_weather/83.html), albo nawet PM25 firmy AcuWeather (https://www.ambientweather.com/ampm25.html)

Zamiast konsoli kupiłem na OLX 5 calowy ekran (110 PLN) i podłączyłem do Raspberry Pi (bezproblemowo).

# konfiguruję (logowanie bez hasła)
Boot Options -> Desktop/CLI -> Desktop Autologin/Desktop GUI
#
# start chromium-browser załadowanie pliku
vi ~/.config/lxsession/LXDE-pi/autostart
## wpisuję
@/usr/bin/chromium-browser --disable-restore-session-state \
  file:///var/www/html/DP1500_live.html

Ekran jest dotykowy. Jak chcę obejrzeć dane pogodowe to dotykam i się wyświetla.

Że jednak brakowało konsoli, to w końcu jednak kupiłem Froggit HP 1000SE PRO (która jest klonem Ecowitt HP 2551). Froggit sprzedaje konsolę jako ersatz, bez niezbędnego specjalnego czujnika temperatury/wilgotności/ciśnienia. Sama stacja jest bowiem dumb -- nic nie mierzy. Ja miałem czujnik temperatury/wilgotności DP50, ale on nie mierzy ciśnienia. Musiałem dokupić oddzielnie ten specjalny, bo się nie dogadałem a dokumentacja/informacja jest w tym aspekcie mało jasna.

Konfigurowanie HP 1000SE PRO to już nie był żaden problem, bo stacja ma aż 8 klawiszy. Połączyłem ją z routerem a potem z dwoma serwisami: ecowitt.net (www.ecowitt.net; oglądanie wymaga zarejestrowania się w sieci ecowitt.net) oraz z WOW ( wow.metoffice.gov.uk)

Kiedyś kupiłem też inny czujnik pyłu zawieszonego (Nova SDS011) i też go podłączyłem do raspberry (bezproblemowo). Teraz przykręciłem go na ścianie obok DP 200 z zamiarem porównania odczytów.

Reasumując posiadam: starą stację WH 2080 działającą od +10 lat. Nową stację DP1500/WH1000SE PRO oraz czujnik SDS101. WH 2080 podłączona jest przez kabel USB do Sheevaplug (to też zaszłość, planuję docelowo przejść na Raspberry) a obsługiwania jest przez pywws. DP1500/WH1000SE podłączona jest przez router, przy czym DP1500 skonfigurowana jest na serwer lokalny/weewx, a WH1000SE wysyła dane od razu do WOW/ecowitt.net.

Całość kosztował ponad 2500 PLN (wliczając starą stację WH2080). W sumie mogłem kupić HP1000SE PRO + DP200 za 330 EUR, a kupiłem na raty powyższe plus dodatkowy czujnik DP50/DP200 za 450 EUR. Przepłaciłem...

url | Sun, 08/03/2020 06:56 | tagi: , , , , , , , , ,
Moja nowa stacja pogody: DP 1500 Froggit

DP 1500

DP 200

All-in-One outdoor sensor

All-in-One outdoor sensor

Po długich namysłach kupiłem nową stację (trzeba się rozwijać) pn DP 1500 SmartHub wifi Gateway (za 50 EUR). Jest to konsola bez ekranu z czujnikiem temperatury/ciśnienia i wilgotności (na metrowym kablu); przedmiot wielkości dużego pudełka od zapałek. Do tego pudełka dokupiłem:

Cenowo to wyszło tak (por www.froggit.de), że maszt + DP 1500 jest w zestawie za 135 EUR (czyli sam maszt kosztuje 85 EUR); czujnik DP 50 to następne 13 EUR (kupiłem dwa na wszelki wypadek); czujnik DP 200 aż 90 EUR. Razem wyszło około 250EUR czyli ponad 1100 PLN z wysyłką i płatnością przez PayPal, bo innej opcji nie ma (nikt nie mówił że będzie tanio)

Wszystko w niemieckiej firmie Froggit. BTW Froggit to klon produktów bardziej znanej firmy Ecowitt. To co Froggit sprzedaje jako DP1500 u Ecowitta nazywa się GW 1000. Są jeszcze inne firmy, które robią ten sprzęt pod inną marką.

W stacjach pogodowych standardem jest teraz wysyłanie danych w chmurę. Nie ma natomiast możliwości bezpośredniego pobierania danych z urządzenia. Co najwyżej można wysłać na własną chmurę. Do tego konfiguruje się urządzenie przez smartfona za pomocą dedykowanej aplikacji pn. WSView. Ot tak to sobie branża wymyśliła. Średnio mi się to podoba, ale po prostu urządzeń, z których można pobrać bezpośrednio dane w starym stylu się nie produkuje (no nie do końca jest to prawdą: produkuje się to co mam od 10 lat, ale ja nie chę kupować jeszcze raz tej samej stacji). Skoro trzeba mieć własną chmurę, to trzeba ją założyć. Na szczęście ponieważ potrzeba jest matką wynalazków, to w tej sprawie inni ludzie już przygotowali stosowne rozwiązania.

Program weewx, który tradycyjnie obsługiwał stacje, że tak powiem kablowe został uzupełniony o weewx-interceptor, który przechwytuje dane wysyłane na (pseudo) własną chmurę.

No więc rozpakowałem to co przyszło z Niemiec. Skręciłem maszt z czujnikami wiatru/deszczu, nasłonecznienia. Czujnik PM2.5 przykręciłem do ściany we wnęce okiennej, żeby deszcz na niego nie kapał. Czujnik DP 50 wstawiłem do klatki meteo. Maszt umieściłem na dachu budynku 3 kondygnacyjnego (nie ma żadnych problemów z zasięgiem, a mieszkam na parterze.)

Ściągnąłem przez Google Play aplikację WSView. Postępując zgodnie z procedurą (opisaną w podręczniku) połączyłem się z konsolą, która zaczęła pokazywać dane z czujników (na smartfonie). Uwaga: WSView dość wolno się łączy i na dokładkę wysyła mylące komunikaty o odrzuconych połączeniach, co powoduje pewien niepokój. Nie należy w tym momencie wykonywać nerwowych ruchów, tylko poczekać...

Instalowanie weeWX (na RaspberryPi)

Mając ustawione połączenie konsola-router można pójść dalej. Znowu jest to dokładnie opisane i co więcej opis jest zgodny ze stanem faktycznym (cf github.com/weewx/weewx/wiki/gw1000-recipe):

Instalujemy weeWX (wybierając 'Simulator' jako 'station type'). Później należy zmienić 'station type' na 'Interceptor' uruchamiając wee_config --reconfigure:

wget -qO - http://weewx.com/keys.html | sudo apt-key add -
wget -qO - http://weewx.com/apt/weewx.list | sudo tee /etc/apt/sources.list.d/weewx.list
sudo apt-get update
sudo apt-get install weewx

# shut down weeWX
sudo /etc/init.d/weewx stop

# install weewx-interceptor extension and enable the driver
git clone https://github.com/matthewwall/weewx-interceptor.git
sudo wee_extension --install weewx-interceptor
sudo wee_config --reconfigure

Sprawdzenie czy interceptor przechwytuje dane. W oknie terminala uruchamiamy interceptor.py ze wskazaniem na port 8000:

PYTHONPATH=/usr/share/weewx python /usr/share/weewx/user/interceptor.py \
 --device=fineoffset-bridge --port 8000 --debug

Uruchamiamy przeglądarkę, wpisujemy następujący URL (192.168.xx.xx to IP komputera z weeWXem):

http://192.168.xx.xx:8000/data/report?PASSKEY=XXX&stationtype=GW1000B_V1.5.5
 &dateutc=2019-12-29+16:27:27&tempinf=67.1&humidityin=39
 &baromrelin=30.138&baromabsin=30.138&freq=915M&model=GW1000

W oknie terminala z uruchomionym interceptor.py powinno się pojawić:

raw data: PASSKEY=XXX&stationtype=GW1000B_V1.5.5&dateutc=2019-12-29+16:27:27&tempinf=67.1
&humidityin=39&baromrelin=30.138&baromabsin=30.138&freq=915M&model=GW1000
raw packet: {'humidity_in': 39.0, 'temperature_in': 67.1, 'barometer': 30.138, 'usUnits': 1,
'dateTime': 1577636847} mapped packet: {'inHumidity': 39.0, 'barometer': 30.138, 'inTemp': 67.1,
'usUnits': 1, 'dateTime': 1577636847} 

Konfigurowanie GW1000

W aplikacji WSView przechodzimy do strony 'Weather Services'. Klikamy 'Next' aż wyświetli się 'Customized'. Na tej stronie wpisujemy IP komputera z zainstalowanym weeWXem jako wartość pola 'Server IP/Hostname'. Wpisujemy '/' jako wartość pola 'Path' oraz 8000 jako wartość pola 'Port'. Domyślny upload jest ustawiony na 60 sekund (zmieniłem na 300).

Ustawienia weeWX są w pliku /etc/weewx/weewx.conf. W szczególności sekcja Interceptor powinna wyglądać następująco:

[Interceptor]
    driver = user.interceptor
    device_type = fineoffset-bridge
    port = 8000

Uruchamianie/zatrzymanie/sprawdzanie usługi:

# Start weewx (as daemon)
sudo /etc/init.d/weewx start
# Stop weewx
# sudo /etc/init.d/weewx stop
# Check status
# /etc/init.d/weewx status
# systemctl status -l weewx
# ls -l /etc/rc2.d

WeeWX zapisuje dane do bazy /var/lib/weewx/weewx.sdb. Można je oglądać uruchamiając:

sqlite3 /var/lib/weewx.sdb

## wyświetl wszystkie tabele
.tables
## wyświetl schemat tabeli archive
.schema archive
PRAGMA table_info(archive);
## zawartość archive
select * from archive;
## zakończ
.q

Główną tabelą danych weeWXa jest archive:

sqlite> PRAGMA table_info(archive);
select * from archive

0|dateTime|INTEGER|1||1
1|usUnits|INTEGER|1||0
2|interval|INTEGER|1||0
3|barometer|REAL|0||0
4|pressure|REAL|0||0
5|altimeter|REAL|0||0
6|inTemp|REAL|0||0
7|outTemp|REAL|0||0
8|inHumidity|REAL|0||0
9|outHumidity|REAL|0||0
10|windSpeed|REAL|0||0
11|windDir|REAL|0||0
12|windGust|REAL|0||0
13|windGustDir|REAL|0||0
14|rainRate|REAL|0||0
15|rain|REAL|0||0
16|dewpoint|REAL|0||0
17|windchill|REAL|0||0
18|heatindex|REAL|0||0
19|ET|REAL|0||0
20|radiation|REAL|0||0
21|UV|REAL|0||0
22|extraTemp1|REAL|0||0
23|extraTemp2|REAL|0||0
24|extraTemp3|REAL|0||0
25|soilTemp1|REAL|0||0
26|soilTemp2|REAL|0||0
27|soilTemp3|REAL|0||0
28|soilTemp4|REAL|0||0
29|leafTemp1|REAL|0||0
30|leafTemp2|REAL|0||0
31|extraHumid1|REAL|0||0
32|extraHumid2|REAL|0||0
33|soilMoist1|REAL|0||0
34|soilMoist2|REAL|0||0
35|soilMoist3|REAL|0||0
36|soilMoist4|REAL|0||0
37|leafWet1|REAL|0||0
38|leafWet2|REAL|0||0
39|rxCheckPercent|REAL|0||0
40|txBatteryStatus|REAL|0||0
41|consBatteryVoltage|REAL|0||0
42|hail|REAL|0||0
43|hailRate|REAL|0||0
44|heatingTemp|REAL|0||0
45|heatingVoltage|REAL|0||0
46|supplyVoltage|REAL|0||0
47|referenceVoltage|REAL|0||0
48|windBatteryStatus|REAL|0||0
49|rainBatteryStatus|REAL|0||0
50|outTempBatteryStatus|REAL|0||0
51|inTempBatteryStatus|REAL|0||0

Nie ma kolumny PM2.5 w szczególności.

Wysyłanie danych na ecowitt.net

To się samo robi. Trzeba tylko zarejestrować stację na ecowitt.net podając MAC-adres urządzenia, ale ecowitt.net nie udostępnia danych publicznie. Żeby oglądać zawartość ecowitt.net trzeba się zalogować. No a żeby się zalogować, to trzeba mieć konto. Inna sprawa że nie trzeba mieć stacji, żeby mieć konto. Jest też stronka pod adresem www.weewx.com/stations.html z wykazem zarejestrowanych stacji obsługiwanych przez WeeWX. Żeby tam zaistnieć trzeba wstawić do /etc/weewx/weewx.conf:

register_this_station = True
station_url = http://pinkaccordions.homelinux.org/

Co jest opisane w dokumentacji WeeWXhttp://www.weewx.com/docs/usersguide.htm#station_registry

Dodanie czyjnika PM2.5

Nie ma kolumny PM2.5, ale interceptor.py pobiera co trzeba bo na ecowitt.net są dane dotyczące PM2.5 tylko lokalnie nie są rejestrowane w bazie. Wychodzi na to, że to WeeWx 'nie widzi' ekstra danych.

Jest oficjalny sposób na rozszerzenie schematu bazy (http://www.weewx.com/docs/customizing.htm#add_archive_type) ale ja póki co zrobiłem to na szybko w ten sposób, że zmodyfikowałem działanie /usr/share/weewx/user/interceptor.py, który nie tylko wypisuje co przechwycił (co zapewne przetwarza dalej weeWX), ale także zapisuje przechwycony rekord do pliku tekstowego. W tym celu dodałem takie coś:

def genLoopPackets(self):
    last_ts = 0
    while True:
      try:
        data = self._device.get_queue().get(True, self._queue_timeout)

        logdbg('raw data: %s' % data)

        ## LOG every 15 minutes
        nowMM = time.strftime("%M", time.gmtime())
        if (nowMM == '00' or nowMM == "15" or nowMM == "30" or nowMM == "45"):
          ffex = open("/var/log/weewx_exlog.txt", "a+")
          ffex.write ('[WEEWX#RAW] %s\n' % data)
          ffex.close()
          ##loginf('[WEEWX#RAW]: %s' % data)

Co 15 minut, a dokładniej w 15/30/45 oraz zerowej minucie każdej godziny zapisywany jest rekord danych do pliku /var/log/weewx_exlog.txt.

cp  interceptor.py interceptor_orig.py
## po zmodyfikowaniu interceptor.py w wyżej opisany sposób
python -m py_compile interceptor.py

Prezentacja wyników

Standardowe raporty WeeWXa są w katalogu: /var/www/html/weewx. W sumie z nich nie korzystam, robię raport po swojemu z pliku /var/log/weewx_exlog.txt

Dokładniej raport jest tworzony na komputerku bez dostępu do internetu a następnie co godzinę kopiowany na ten, który dostęp ma czyli na pinkaccordions.homelinux.org

W planach jest zakup ekranu LCD 5--7 cali do raspberry co będzie robił za wyświetlacz mojej stacji.

Różne rzeczy

Minimalizowanie liczby zapisów (przeciwdziałanie zużyciu się karty SDHC) https://github.com/weewx/weewx/wiki/Minimize-writes-on-SD-cards.

url | Wed, 12/02/2020 22:07 | tagi: , , , , , , ,
Instalowanie selenium na raspberry pi

W moim rpi mam Debiana w wersji Buster:

$sudo apt install python-selenium python3-selenium chromium-browser

Uruchamiam prosty skrypt, którego używam do pobierania zasobów z Internetu:

$selenium_get_www_page.py https://www.google.pl
chrome not reachable

Po konsultacji z google znalazłem (radykalne) rozwiązanie. Należy zrobić downgrade relewantnych pakietów:

# Jakie są wersje dostępne:
apt-cache madison chromium-chromedriver chromium-browser

Nie ma żadnych innych poza tymi, które mam zainstalowane, więc trzeba doinstalować z wersji Stretch:

# Należy dodać deb http://archive.raspberrypi.org/debian/ stretch main
# do /etc/apt/sources.list

apt-get update

# Jakie są wersje dostępne teraz:
apt-cache madison chromium-chromedriver chromium-browser

chromium-chromedriver | 74.0.3729.157-rpt5 | \
http://archive.raspberrypi.org/debian buster/main armhf Packages
...

Instaluję stare wersje:

apt-get install chromium-chromedriver=72.0.3626.121-0+rpt4
  chromium-browser=72.0.3626.121-0+rpt4
  chromium-codecs-ffmpeg-extra=72.0.3626.121-0+rpt4
  chromium-browser-l10n=72.0.3626.121-0+rpt4

apt-mark hold
     chromium-chromedriver chromium-browser
     chromium-codecs-ffmpeg-extra chromium-browser-l10n

Teraz skrypt selenium_get_www_page.py działa.

url | Sun, 06/10/2019 08:06 | tagi: , , , ,
Nafisa: instalowanie debiana

Nafisa to arabskie imię żeńskie (i restauracja uzbecka w Elblągu, którą polecam) oraz nazwa mojego nowego serwerka uruchomionego na Raspberry Pi 3.

Do tej pory moje domowe serwery działały (od lat prawie 10) na sheevaPlug i cechowały się wysoką niezawodnością (uptime idący w setki dni; rekord 650 dni). Kiedyś już chciałem je przenieść na RPi, ale ówczesne modele RPi okazały się niedostatecznie reliable. Po nastu dniach następował zwis albo coś w tym stylu, więc dałem sobie spokój. Daję teraz RPi drugą szansę mając nadzieję, że nowe modele są bardziej niezawodne.

Instalacja przebiegła standardowo: ze strony https://www.raspberrypi.org/downloads/raspbian/ pobieram Raspbian Buster with desktop and recommended software. Pobieram też zalecany program balenaEtcher (https://www.raspberrypi.org/documentation/installation/installing-images/README.md) do utworzenia bootowalnej karty SDHC. Klikam, wybieram, zapisuje się. Nawet szybko. Teraz teoretycznie jak się utworzy plik (z dowolną zawartością) o nazwie ssh w partycji boot to można już wkładać kartę do komputerka i startować, ale ja chcę po WiFi więc i tak muszę hasło podać (też można pewnie podać grzebiąc w plikach na karcie ale ja nie wiem jak), więc podłączam RPi do telewizora, łączę z ruterem, zmieniam hasło i włączam SSH (które jest domyślnie zablokowane)

Konfiguruję router i wszystko działa. Teraz standardowo apt update.

Pora na zaistalowanie wszystkiego co używam na starym serwerze, więc sprawdzam co ja tam zainstalowałem:

sudo dpkg-query -l | awk '{print $2}' 

Wybieram z listy te, które wyglądają na doinstalowane:

apt-get install sshfs vim mc
## Digitemp bo planuję podłączyć termometry 18B20  
apt-get install digitemp flickcurl-utils \
     flickrbackup fonts-texgyre fuse gpsbabel gphotofs
apt-get install r-base r-base-core r-base-dev \
     r-base-html r-cran-boot r-cran-class r-cran-cluster \
     r-cran-codetools r-cran-foreign r-cran-kernsmooth r-cran-lattice
     r-cran-mass r-cran-matrix r-cran-mgcv r-cran-nlme r-cran-nnet \
     r-cran-rpart r-cran-spatial r-cran-survival r-doc-html r-recommended
apt-get install imagemagick imagemagick-6-common \
     imagemagick-6.q16
## tweepy używam do zdalnego wysłania twitów 
apt install python3-tweepy python-tweepy
## net::twitter używam do pobierania twitów
apt install libnet-twitter-perl
apt install texlive-base texlive-binaries \
     texlive-extra-utils texlive-font-utils \ 
     texlive-fonts-recommended texlive-generic-extra \
     texlive-generic-recommended texlive-latex-base texlive-latex-extra \
     texlive-latex-recommended texlive-xetex

Potem się okazuje, że jeszcze trzeba doinstalować

apt install apache2
apt install r-cran-gg1plot2 r-cran-reshape2 r-cran-reshape
apt install libgeo-distance-perl libjson-perl libgeo-distance-perl

Sprawdzam czy apache działa (łącząc się z nafisa/). Działa... Kopiuję skrypty ze starego serwera. Modyfikuję. Testuję niektóre i nawet działają...

Plan jest taki żeby teraz mocno potestować RPi i zobaczyć czy działa niezawodnie (BTW testowana z pewnym skryptem w R okazała się prawie 2 razy szybsza.)

url | Wed, 18/09/2019 08:01 | tagi: , , ,