Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Dom + fatek + arduino + modbus +C#

doran5 19 Lis 2018 16:51 6006 42
  • #31 19 Lis 2018 16:51
    doran5
    Poziom 3  

    Arduino DUE jest 32 bitowym prockiem z zegarem 84 MHz. Program przegrasz bez żadnych zmian i do razu zobaczysz różnicę.
    Co do Malinki to trafiłem na niesamowicie fajny przykład. Pokazuje krok po kroku użycie malinki, bazy danych, serwera i wykresu.
    Spróbuj Link
    Wiem ze malinka ma kłopoty z kartą , można zrobić wirtualny dysk ale ja po prostu sklonuję kartę na zapas. (gdzieś widziałem przykład, ale bardziej przydałby mi się przykład jak podłączyć stary dysk z laptopa)

    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz pendrive 32GB.
  • #32 20 Lis 2018 10:12
    ditomek
    Poziom 20  

    @doran5 i właśnie o ta różnice w prędkości pytam.
    Na Arduino mega napisałem stronkę która wspierała AJAXa i uruchomiłem to na 4 klientach jednocześnie.
    Działało ale to nie to. Dlatego właśnie pytam o prędkość bo użycie tego samego programu bez konieczności zmian naprawdę mi pasuje

  • #33 20 Lis 2018 18:21
    Bojleros
    Poziom 15  

    ditomek napisał:
    Mailem to kiedyś oprogramowane ma malinie ale po uszkodzeniu karty (ramdyski, specjalne serwery www) jakoś trudno mi się przemóc i dać jej ponownie szanse...


    Mi też się zdarzało że karta padała. Najczęściej jak kombinuje i przepinam. Jak nie ruszam to jest ok.

    doran5 napisał:
    Co do Malinki to trafiłem na niesamowicie fajny przykład. Pokazuje krok po kroku użycie malinki, bazy danych, serwera i wykresu.
    Spróbuj Link
    Wiem ze malinka ma kłopoty z kartą , można zrobić wirtualny dysk ale ja po prostu sklonuję kartę na zapas. (gdzieś widziałem przykład, ale bardziej przydałby mi się przykład jak podłączyć stary dysk z laptopa)


    Ogólnie są ludzie który twierdzą, że ostatnie serie Rpi 2 były już zdolne do bootowania z usb. Moje RPI 3b+ bootuje się bez problemu z dysku talerzowego. Niezależnie od tego o ile zasilanie pozwoli to także i do starszych wersji można podpiąć talerzowca na usb i sobie odpowiednio podmontować. Wykończenie karty mmc to nie jest jakiś wielki wyczyn :)

    Kłopoty z kartą można też obejść poprzez opisanie swojej instalacji w Ansible. Po awarii instaluje się ten sam system operacyjny na nowej karcie i odpala playbook. Trzeba tylko zadbać o dane o ile nam na nich zależy.

    W tej skali różnicy może nie być ale baza sql nie jest najlepszym wyborem jeżeli idzie o dane pod rysowanie wykresów. Kiedyś fajną opcją było RRD , teraz chyba raczej Influxdb albo baza której domyślnie używa Prometheus.

    PS. Nie widzę wspomnienia że wbudowany serwer http Flaska jest przeznaczony tylko do developmentu ;)

  • #34 20 Lis 2018 20:25
    doran5
    Poziom 3  

    ditomek : widać było "gołym okiem" szybsze ładowanie strony ale nie umiem powiedzieć jak.
    Bojleros: znalazłem dzisiaj przykład w którym zmieniasz botowanie z SD na USB i chyba tak zrobię dzięki za podpowiedź.

  • #35 20 Lis 2018 21:19
    Bojleros
    Poziom 15  

    @doran5 Widziałem jakiś opis który się tyczył zmian w pamięci OTP . Moja malina 3b+ nie wymagała tego . Wystarczyło zostawić gniazdo karty pamięci nieobsadzone. Z tym opisem z OTP to się zastanów bo to chyba jest operacja w jedna stronę :(

  • #38 22 Lis 2018 20:04
    Bojleros
    Poziom 15  

    Ten opis tyczy się metody która zadziała też na starszych malinach (o ile zasilanie dysku pozwoli). Jak zrekonfigurujesz bootloader na /dev/sda to jeszcze musisz na tym dysku poprawić /etc/fstab , bo inaczej podmontuje Ci roota z karty mmc a dysk usb będzie tylko na pokaz.

    https://wiki.ubuntu.com/ARM/RaspberryPi#USB_booting

    Tu masz sporo opisów , część z nich nie jest już niestety aktualna ale nie znalazłem do tej pory nic lepszego. Na RPI3 karty w ogóle nie potrzebujesz , przetestuj to sobie na ubuntu skompilowanym pod armhf. Jedyne co robisz to wrzucasz ich obraz na dysk usb , poprawiasz konfig bootloadera i /etc/fstab tak samo jak w Twoim przykładzie.

    Pamiętaj że jak użyjesz statycznej definicji urządzenia dysku (/dev/sda) to każdy pendrive pozostawiony na czas reboota w malinie może po restarcie zamienić tą kolejność. Lepiej po uuid o ile bootloader to wspiera , fstab powinien wspierać zawsze.

  • #41 24 Lis 2018 15:07
    doran5
    Poziom 3  

    Dzięki za przykład - przetestuję.

    Dodano po 58 [minuty]:

    Mam pytanie :
    robię najprostszy przykład hello world i po wyłączeniu programu i ponownym załączeniu wyskakuje mi błąd zajęty port obojętnie czy nie pisze adresu hosta czy dodaje :
    app.run(host='0.0.0.0', port=5000, debug=True) jeśli zmienię nr portu to przy następnej kompilacji wywala mi błąd i znowu muszę zmieniać nr portu na inny.
    Czy gdzieś w aplikacji muszę zwalniać port kiedy wyłączam serwer i stronkę ?

  • #42 24 Lis 2018 19:16
    Bojleros
    Poziom 15  

    Pokaż co zwracają następujące polecenia gdy problem występuje:

    Code:
    ps aux


    (z roota)
    Code:
    netstat -plant


    Bez kodu to generalnie wróżenie z fusów.

  • #43 25 Lis 2018 16:02
    doran5
    Poziom 3  

    Okazało się że problemem jest program Thonny.
    Na malince mam taki program (ponizej)
    Załączałem program zmieniałem drobiazg i uruchamiałem go na nowo wtedy i dostawałem komunikat : s.bind((hostname, port))
    OSError: [Errno 98] Address already in use, czyli zajęty port o adresie 5000.

    Zmieniłem adres w Geany na 5001 odpaliłem program , wyłączyłem , drobna korekta i znowu odpaliłem i okazało się ze pracuje.
    Wygląda na to że Thony nie zamyka za sobą serwera i zostaje już uruchomiony na danym adresie aż do restartu malinki. Geany przy wyłączeniu zamyka serwer i na nowo go otwiera przy starcie.
    Teraz jest wszytsko OK



    Code:

    from flask import Flask, render_template
    import datetime
    app = Flask(__name__)

    @app.route('/')
    @app.route('/index')
    def index():
        user = {'nickname': 'Michael'}
        posts = [
            {
                'author': {'nickname': 'Fred Post 1'},
                'body': 'This is the body of the first post.'
            },
            {
                'author': {'nickname': 'Craig Post 2'},
                'body': 'This is the body of the second post.'
            }
        ]
        return render_template('index.html',
                               title='Home',
                               user=user,
                               posts=posts)

    @app.route('/about')
    def about():
        return render_template('about.html',
                               title='About')

    if __name__ == "__main__":
       app.run(host='0.0.0.0', port=5000, debug=True)