Temat: Oregon Scientific RMS300 -> OpenWrt

Próbuję podłączyć stację Oregon Scientific RMS300 do routera Asus Wl-500gp z Attitude Adjustment 12.09.
Próbowałem fowsr, wview bez sukcesu. Powodem jest, jak się okazuje, specyfika komunikacji z tą akurat stacją. Znalazłem kilka projektów, które obejmowały obsługę RMS300. Niestety w każdym przypadku potrzebna jest kompilacja pakietów, których nie ma w OpenWrt. W miarę dokładny opis procedury znalazłem tutaj http://www.raspberrypi.org/phpBB3/viewt … mp;t=27728

$ sudo apt-get install subversion git libusb-dev automake libtool
$ svn co svn://svn.debian.org/libhid/trunk libhid-svn
$ cd libhid-svn
$ ./autogen.sh
$ make -k
$ sudo make -k install
$ cd ..
$ git clone git://github.com/barnybug/wmr100.git
$ cd wmr100
$ make

Zacząłem od polecenia:

opkg install subversion git libusb-dev automake libtool

w odpowiedzi:
Collected errors:
* opkg_install_cmd: Cannot install package subversion.
* opkg_install_cmd: Cannot install package libusb-dev.
* opkg_install_cmd: Cannot install package automake.
* opkg_install_cmd: Cannot install package libtool.

Czyli nie zna bibliotek j.w.

Czy opisaną w linku procedurę można przeprowadzić w OpenWrt?

2

Odp: Oregon Scientific RMS300 -> OpenWrt

Na OpenWRT nie skompilujesz pakietu, ten system tego nie umie, musiałbys uzyc kroskompilatora na PC. Do tego musisz mieć Linuksa, wiecej tu: http://eko.one.pl/?p=openwrt-kompilacja

RB760iGS + RB260GS / Ryzen 5 2660 / 16G DDR4 / MiniITX - Inea 1G (https://i.imgur.com/TLbJVDw.png)
RB951-2HnD / Celeron J1900 / 4G DDR3 / MiniITX - Satpol 100M

3

Odp: Oregon Scientific RMS300 -> OpenWrt

Zainstalowałem Ubuntu i zgodnie z opisem  http://eko.one.pl/?p=openwrt-kompilacja przeprowadziłem kompilację OpenWrt Attitude Adjustment  na moją platformę - poszło dość gładko i po ok. godzinie miałem gotowy obraz. Następnie postępując wg opisu

$ sudo apt-get install subversion git libusb-dev automake libtool
$ sudo apt-get install libzmq1
$ sudo apt-get install libzmq-dev
$ wget "https://alioth.debian.org/frs/download. … .16.tar.gz"
$ gunzip libhid-0.2.16.tar.gz
$ tar xvf libhid-0.2.16.tar
$ cd libhid-svn
$ ./configure
$ make -k
$ sudo make -k install
$ cd ..
$ git clone git://github.com/barnybug/wmr100.git
$ cd wmr100
$ make


dotarłem do linii make -k i zaczęły się błędy:

gcc -DHAVE_CONFIG_H -I. -I..    -I../include -I../hidparser -O0 -g -Wall -W -Werror -MT lshid.o -MD -MP -MF .deps/lshid.Tpo -c -o lshid.o lshid.c
lshid.c: In function ‘device_iterator’:
lshid.c:32:87: error: parameter ‘len’ set but not used [-Werror=unused-but-set-parameter]
cc1: all warnings being treated as errors
make[2]: *** [lshid.o] Błąd 1
make[2]: Obiekt `all' nie został wykonany z powodu błędów.

Zrozumiałem z tego, że w pliku lshid.c znalazł nieużywaną zmienną 'len' i zgłosił ostrzeżenie, które w wyniku ustawienia opcji kompilatora, jest traktowane jako błąd - co kończy moja przygodę z biblioteką lshid. Krytyczny fragment pliku lshid.c wygląda tak:

bool device_iterator (struct usb_dev_handle const* usbdev, void* custom, unsigned int len)
{
  bool ret = false;
  int i;
  char current_dev_path[10];
  const struct usb_device *device = usb_device((struct usb_dev_handle *)usbdev);
 
  /* only here to prevent the unused warning */
  /* TODO remove */
  len = *((unsigned long*)custom);

Czyli fragment kodu mający zapobiec powyższej sytuacji jednak nie zadziałał...
Co można z tym zrobić?

4

Odp: Oregon Scientific RMS300 -> OpenWrt

Odpowiedź na to pytanie: http://www.raspberrypi.org/phpBB3/viewt … p;p=207967

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5 (edytowany przez piotrkaz 2014-01-18 18:56:30)

Odp: Oregon Scientific RMS300 -> OpenWrt

Pomogło!. W pliku lshid.c wprowadziłem poprawki:

//len = *((unsigned long*)custom);
len=len;
custom = custom;

i dalej poszło gładko.

polecenie

$ sudo bash -c 'LD_LIBRARY_PATH=/usr/local/lib ./wmr100'

uruchamia komunikację ze stacją pogody RS300.
Mam więc to co chciałem ale skompilowane dla platformy Ubuntu. Teraz chciałbym zrobić to samo dla routera.
W artykule http://eko.one.pl/?p=openwrt-kompilacja jest opis jak skompilować pakiet. Zrobiłem tak:
Skopiowałem katalog  libhid-0.2.16 do przygotowanego wcześniej środowiska /opt/attitude_adjustment/package
i wydałem polecenie

make V=s package/libhid-0.2.16/compile
make[1]: Entering directory `/home/jola/opt/attitude_adjustment'
make[1]: *** No rule to make target `package/libhid-0.2.16/compile'.  Stop.
make[1]: Leaving directory `/home/jola/opt/attitude_adjustment'
make: *** [package/libhid-0.2.16/compile] Błąd 2

Czyli "No rule to make target `package" pakiet nie jest dostosowany do tego środowiska. Zatem nie tędy droga.
Druga opcja to Kompilacja programu z kodu źródłowego.
"Oczywiście należy podać wszystkie opcje kompilacji i linkowania niezbędne do stworzenia danego programu."
No i tu ściana! Jak powinny wyglądać te polecenia w moim przypadku?

6

Odp: Oregon Scientific RMS300 -> OpenWrt

piotrkarz, a nie próbowałeś tego https://code.google.com/p/wmr/  na liście wspieranych stacji pogodowych jest RMS300

7

Odp: Oregon Scientific RMS300 -> OpenWrt

Żebyś skompilował pakiet którego nie ma w repo musisz Makefile zrobić (to co jest w archiwum to Makefile do kompilacji samego programu, nie pakietu dla openwrt). Zrobiłeś taki makefile?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

8

Odp: Oregon Scientific RMS300 -> OpenWrt

Nie. Jak się do tego zabrać?

9

Odp: Oregon Scientific RMS300 -> OpenWrt

Przykłady takich makefile znajdziesz w źródłach openwrt. Zobacz sobie jak są inne liby kompilowane, jak makefile do nich wyglądają.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

10

Odp: Oregon Scientific RMS300 -> OpenWrt

Znalazłem jeszcze jedną opcję dla Oregon Scientific RMS300 - projekt Weewx.
Przetestowałem to na platformie Ubuntu i działa! Wymagania to python i cheetah. Zainstalowałem Pythona z pakietu w OpenWrt ale zostało mi tylko 12 kb wolnego miejsca!!! Jest jeszcze opcja python-mini ale czy to wystarczy?
Kolejny problem co z cheetah'em? Nie widzę takiego pakietu w repozytorium.
Jakaś podpowiedź?

11

Odp: Oregon Scientific RMS300 -> OpenWrt

Gdzieś od artura krąży makefile do niego - ale tak czy siak musisz sobie pakiet zrobić.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

12

Odp: Oregon Scientific RMS300 -> OpenWrt

Zrobiłem extroota, tak że jest mjejsce. Zainstalowałem wszystko po kolei zgodnie z opisem ze strony <html>http://www.weewx.com/docs/setup.htm</html>. Podczas uruchamiania pojawia się błąd:
<quote>root@OpenWrtv2:/home/weewx# ./bin/weewxd weewx.conf
Traceback (most recent call last):
  File "./bin/weewxd", line 68, in <module>
    weewx.wxengine.main(options, args)
  File "/home/weewx/bin/weewx/wxengine.py", line 892, in main
    engine = EngineClass(config_dict)
  File "/home/weewx/bin/weewx/wxengine.py", line 70, in __init__
    self.loadServices(config_dict)
  File "/home/weewx/bin/weewx/wxengine.py", line 124, in loadServices
    self.service_obj.append(weeutil.weeutil._get_object(svc)(self, config_dict))
  File "/home/weewx/bin/weewx/wxengine.py", line 435, in __init__
    self.setupArchiveDatabase(config_dict)
  File "/home/weewx/bin/weewx/wxengine.py", line 533, in setupArchiveDatabase
    self.archive = weewx.archive.Archive.open_with_create(config_dict['Databases'][archive_db], archive_schema)
  File "/home/weewx/bin/weewx/archive.py", line 91, in open_with_create
    archive = Archive.open(archive_db_dict, table)
  File "/home/weewx/bin/weewx/archive.py", line 73, in open
    _connect = weedb.connect(archive_db_dict)
  File "/home/weewx/bin/weedb/__init__.py", line 42, in connect
    __import__(db_dict['driver'])
  File "/home/weewx/bin/weedb/sqlite.py", line 16, in <module>
    import sqlite3
  File "/usr/lib/python2.7/sqlite3/__init__.py", line 24, in <module>
    from dbapi2 import *
  File "/usr/lib/python2.7/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: No module named _sqlite3 </quote>
Mam zainstalowany pakiet python-sqlite3 więc o co chodzi?

13

Odp: Oregon Scientific RMS300 -> OpenWrt

[OpenWrt-Tickets] [OpenWrt] #12239: Sqlite3 missing in python
_sqlite3.so was missing in 12.09
To chyba źródło moich problemów.
Czy taki plik gotowy można gdzieś znaleźć?

14

Odp: Oregon Scientific RMS300 -> OpenWrt

piotrkaz napisał/a:

[OpenWrt-Tickets] [OpenWrt] #12239: Sqlite3 missing in python
_sqlite3.so was missing in 12.09
To chyba źródło moich problemów.
Czy taki plik gotowy można gdzieś znaleźć?


Tutaj opisany problem z Sqlite3 http://eko.one.pl/forum/viewtopic.php?id=4194

Zrobiłem też tak, użyłem pakietu z trunk i problem znikł.

15

Odp: Oregon Scientific RMS300 -> OpenWrt

Pomogło! Przeinstalowałem python-sqlite3 i ruszyło. W terminalu widzę logi kolejnych pomiarów. Niestety w momencie gdy ma wygenerować rekord do bazy wyrzuca ostrzeżenie i potem wyłącza proces.

LOOP:   2014-01-21 18:00:12 ??? (1390323612) {'inTempBatteryStatus': 0, 'inHumidity': 34.0, 'inTemp': 20.6, 'usUnits': 16, 'dateTime': 1390323612}
LOOP:   2014-01-21 18:00:16 ??? (1390323616) {'inTempBatteryStatus': 0, 'inHumidity': 34.0, 'inTemp': 20.6, 'usUnits': 16, 'dateTime': 1390323616}
REC:    2014-01-21 18:00:00 ??? (1390323600) {'interval': 5, 'heatindex': 19.8, 'dewpoint': 5.4391234340913987, 'outHumidity': 39.0, 'outTempBatteryStatus': 0.0, 'dateTime': 1390323600, 'outTemp': 19.8, 'inHumidity': 34.0, 'inTemp': 20.600000000000012, 'inTempBatteryStatus': 0.37931034482758617, 'usUnits': 16}
/usr/lib/python2.7/site-packages/Cheetah-2.4.4-py2.7.egg/Cheetah/Compiler.py:1509: UserWarning:
You don't have the C version of NameMapper installed! I'm disabling Cheetah's useStackFrames option as it is painfully slow with the Python version of NameMapper. You should get a copy of Cheetah with the compiled C version of NameMapper.
  "\nYou don't have the C version of NameMapper installed! "

No i teraz pytanie gdzie szukać właściwej wersji Cheetah'a?

16

Odp: Oregon Scientific RMS300 -> OpenWrt

Skompiluj...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

17

Odp: Oregon Scientific RMS300 -> OpenWrt

...To już wygląda poważnie. Cezary, gdzie mogę o tym poczytać? Jak na razie mam przygotowane środowisko w Ubuntu i skompilowałem AA dla mojego routera. Jak teraz w tym środowisku skompilkować Cheetah'a? Potrzebny jest dokładniejszy opis bo nigdy tego nie robiłem...

18

Odp: Oregon Scientific RMS300 -> OpenWrt

Musisz mieć Makefile żeby skompilować jakiś pakiet. Poszukaj po sieci go. Później robisz w katalogu package nowy katalog np. cheetah, wkładasz tam ten Makefile ew inne pliki które ten makefile wymaga i kompilujesz pakiet.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

19 (edytowany przez Alter Ego 2014-01-22 14:41:47)

Odp: Oregon Scientific RMS300 -> OpenWrt

Cezary, mam ten sam problem z Cheetah. - You don't have the C version of NameMapper installed!

Chociaż zaintalowana ostatnia i wlasnie C wiercja. Ale python nie widzi ze to jest C.

Od developera WeeWx dostałęm taką odpowiedź:

Let me be explicit: you are using a very unusual, nonstandard setup. You are going to have to do your own sleuthing.

All I can say is that your version of Python is not finding the version of Cheetah that you installed. You're going to have to find it yourself and include it in PYTHONPATH. The rest is up to you.

20

Odp: Oregon Scientific RMS300 -> OpenWrt

Jak napisał. Jeżeli uważasz że masz faktycznie zainstalowaną dobrą wersję to konfiguracja systemu się kłania.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

21 (edytowany przez Alter Ego 2014-01-22 21:01:30)

Odp: Oregon Scientific RMS300 -> OpenWrt

Cezary napisał/a:

to konfiguracja systemu się kłania.

niestety nie wiem gdzie i co zmieniać.

22 (edytowany przez piotrkaz 2014-01-22 22:35:00)

Odp: Oregon Scientific RMS300 -> OpenWrt

Zabrałem się za kompilację. Program helloworld zadziałał.
Próba z cheetah'em wyrzuciła błąd, że nie ma pliku Python.h. Próbowałem znaleźć go "ręcznie" ale rzeczywiście nie ma! Nie wiem skąd go wziąć.
Dokładniej rzecz ujmując myślę, że skompilować trzeba plik _namemapper.c w podkatalogu c cheetaha. W nim właśnie jest odwołanie do Python.h.

23

Odp: Oregon Scientific RMS300 -> OpenWrt

Skompiluj wcześniej sam pakiet python.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

24

Odp: Oregon Scientific RMS300 -> OpenWrt

Pythona pobrałem z repozytorium już skompilowanego.

25

Odp: Oregon Scientific RMS300 -> OpenWrt

Musisz też go skompilować bo wtedy do sdk zostaną dodane od niego pliki nagłówkowe.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.