Hirdetés

Hozzászólok Aktív témák

  • cog777

    aktív tag

    Udv!

    Azert nyitottam a topikot mert a tema tobb teruletet erint, html5, javascript, python etc. es nem lehet egy technologiat kiemelni, viszont a koztuk levo kapcsolat fontos.

    Keszitek egy egyszeru "Hello World" tipusu projectet:
    Arduino megmeri a homersekletet, atkuldi a Raspberry Pi-be (a fejlesztes stadiumaban a laptopba) ahol egy futo python script beolvassa az adatot es tovabbitja a szervernek.
    A szerver egy dockerben futo python script ami flask-et hasznal, legeneral egy egyszeru weblapot es megjeleniti a homersekletet.

    Igy barhol a telefonom segitsegevel meg tudom nezni a homersekletet. A szervert nem toltottem fel egyelore a felhobe, csak az otthoni gepemen fut. Ezt majd kesobb tervezem megtenni.

    Eddig mukodik a dolog, viszont szeretnem ha a kommunikacio ket iranyu lenne, pl egy LED-et tudnek vezerelni, nyomogomb segitsegevel.
    Tehat weblap/nyomogomb -> szerver python script -> kliens python script RPi-n -> Arduino

    Szeretnek kerni otleteket, milyen iranyba induljak el. Lehet hogy az altalam hasznalt technologiak segitsegevel konnyeden meg lehet oldani, de nekem csak beagyazott rendszerek programozasarol van tapasztalatom, semmi egyeb, csak most tanulom a python-t, flask-et, html5-ot is.

    Itt a szerver kodja:
    [link]

    Generalt weblap(ok):
    [link]
    (illetve mivel ket helysegrol jovo homersekletet akarok megjeleniteni fuggetlen weblapon, itt van az egyiknek a weblapja. Valoszinuleg kulonbozo lesz a weblapjuk.)
    [link]

    Kliens python kodja ami az RPi-n fut:
    [link]

    Bar az Arduino-n futo kod trivialis (szamomra), a teljesseg kedveert kozze teszem:
    [link]

    Szoval, eddig egyiranyu a dolog, ebbol kellene ket iranyut csinalni. Valahogy a weblapnak ertesiteni kellene a szervert, az pedig a RPi-t hogy az Arduino a LED-et be/ki kapcsolja.

    Lattam peldakat ahol az RPi-n futott a szerver, es egyszerunek latszik az LED kapcsolasa, de az altalam vazolt helyzet mas mert a szerver a felhoben fut.

    Szivesen veszek barmilyen tanacsot!

    Lenovo T440s Thinkpad - Kubuntu 18.04

  • cannibal

    senior tag

    Üdvözlöm a topikot! Remélem egy jó társaság fog itt kialakulni!

  • cog777

    aktív tag

    :) Remelem en is.

    Az a baj, ha rakeresek webes technologiakra, rengeteg talalatot kapok a google-ban, viszont nem ismerem fel az elavultakat amelyeket nem kellene mar hasznalni.

    Gondolkodom hogy robot epitesben is kellene csinalnom egy topicot. Van egy elkezdett projektem, a motorok sajnos nem megfeleloek, rendelnem kell masikat de legalabb eljutottam valameddig.
    Tovabba izgat egy robot sumo verseny, a cegnel paran hevesen erdeklodnek mar, csak ott meg sehol nem tartok, illetve az alkatreszeket valogatom.

    Lenovo T440s Thinkpad - Kubuntu 18.04

  • cog777

    aktív tag

    Ennyi ido utan megvilagosodtam :D

    Tehat az eredeti cel hogy ketiranyu kapcsolatot hozzak letre a szerver es az Arduino kozott.
    Igy akar a mobiltelefonomrol is be tudok kapcsolni egy LED-et :), illetve latom a homersekletet a lakasban.

    Egyelore az egyiranyu kapcsolat tovabbfejlesztett valtozata::

    A szerveremet felkoltoztettem egy cloud szolgaltatohoz, vasaroltam domaint, ssl certificate-et. (Nagyon elegedett vagyok a szolgaltatoval, rengeteg pelda van az oldalukon mit es hogyan allitsak be)

    Az RPi folyamatosan olvassa a homerseklet adatokat az arduino-bol, majd feltolti sima post-al a szerveremre, amely legenerlja a weblapot.

    Ez egy "Hello world" szeru nagyon egyszeru megoldas (nincs jelszo keres stb, bar a szerverem https-t tudja mar.):

    Szerver python kodja: [link]
    Szerver html kodja: [link]
    RPi-n futo kliens kod: [link]
    Arduino kodja: [link]

    Lehet kesobb felteszem Bitbucket-ra vagy github-ra.

    Kovetkezo lepes.

    Most tanulom az MQTT-t es ez egy sokkal jobb megoldas mint a HTML post.
    Egyreszt maga az MQTT nagyon rugalmas.
    Kell egy kliens (RPi) ami kuldi az adatokat a brokernek, egy broker (RPi) ami tovabbitja az adatokat az en esetemben a felhobe. A felhoben futo szerveren fut egy masik broker ami fogadja az uzeneteket es kell melle egy masik kliens ami feldolgozza a kapott uzeneteket, pl megjeleniti azt vagy adatbazisba teszi stb.

    De pl a broker kuldhet tobb fele is adatot pl a helyi gepen egy naplozo kliensnek. Tehat broker-broker vagy broker-kliens kapcsolatokat is letre lehet hozni. Igy gyakorlatilag de-centralizalt rugalmas halozatot tudunk letrehozni. Persze akar titkositassal.

    Mivel az egyik opensource implementacio, nevezetesen mosquitto-nak van tamogasa c++-ban es python-ban is, igy ezt fogom felhasznalni.
    C++-ban irom meg az RPi-n futo klienst csak hogy ezt a temat is erintsem :), szerveren a kliens-t pythonban keszitem el.

    Ha az Raspberry-n futo kliensnek van "elofizetese" az adatokra, akkor ketiranyu is lehet a kapcsolat, azaz a weblaprol lehet vezerelni az Arduinot.

    Most ezen dolgozom. Szerintem max par heten belul jelentkezek egy futo verzioval, legittelem :) es megosztom.
    Ha van kerdesetek, megprobalom megvalaszolni.

    Lenovo T440s Thinkpad - Kubuntu 18.04

  • cog777

    aktív tag

    Talaltam egy eleg jo leirast hogyan kell kesz komponensekbol osszerakni egy IoT dashboard-ot sajat szerveren.
    Ezzel a megoldassal nincs bedrotozva egy szenzor sem, teljesen dinamikus, tehat egy uj szenzor grafikonjait nagyon konnyel lehet fosszerakni.

    [link]

    Dockerben fut, tehat nem piszkitja ossze a host rendszert.
    Negy szolgaltatas van:

    - mosquitto: fogadja az mqtt adatokat es tovabbitja a python scriptnek. Egyelore felhasznalonev/jelszo parost hasznal de at lehet allitani TLS-re kesobb.

    - Python script, elofizetese van a mosquittoval. A beerkezo adatokat Influxdb-ben tarolja, ami pont megfelelo analytics-re

    - Influxdb

    - Grafana framework, InfluxDB-bol olvassa a letarolt adatokat. Nagyon kenyelmes, konnyen lehet drag and drop modszerrel osszerakni a kivant dashboardot, kivalasztani a legordulo listabol az uj szenzorokat. Felbontashoz igazodik a megjelenites, tehat telefonon is jo a megjelenites

    Az adatokat a jol bevalt esp8266 kuldi.

    Lenovo T440s Thinkpad - Kubuntu 18.04

  • Ryu

    tag

    Sziasztok!

    Hátha valakinek segít, vagy ötlettel szolgálok. Amikor belevágtam a dolgokba, egész gyorsan rátaláltam a már emlegetett ESP8266 eszközökre, amiből én a Wemos D1 minit választottam, lévén sok shield van hozzá. Erre saját szoftvert írtam elsőnek, ami direktbe kommunikált a Google féle Firebase megoldással.

    Azóta felmerült az igény más eszközök használatára is, pl Aquara Water Leak sensor, Xiaomi Air Purifier 2, Broadlink rm3 mini. Emiatt átalakítottam az addigi rendszert. Az ESP-ken már Tasmota firmware van, ezek MQTT-vel kommunikálnak, mosca node.js alatt. A node.js adta magát a sok kész library-vel, így bármivel lehet szinte kommunikálni. Az MQTT saját szerveren van LINUX alatt, innét az adatok továbbra is Firebase-be mentődnek, mivel a szerver nem elérhető távolról.

    A megjelenítést kliensen Google Chrome Extension-el oldottam meg. Valahogy így néz ki jelenleg. Tud riasztásokat küldeni, bizonyos érték átlépése esetén, illetve mutatja amire szükség van.

    Nem mondom, hogy a legjobb, legszebb megoldás, amit tákoltam, de cél volt, hogy ingyenes legyen minden szoftver és én is dolgozzak benne, ne csak kész megoldást használjak.

    [ Szerkesztve ]

  • cog777

    aktív tag

    Koszi a leirast, nagyszeru hogy tobb megoldast is tartalmaz a topic.

    Nem ismertem a Firebase-t, megnezem.

    A cegnel mi New Relic-et hasznaltunk analitikara, de megvaltoztattak az arakat drasztikusan, ezert inkabb sajat megoldas utan nezunk. Ennek kapcsan csinaltam otthon egy prototipust, ahol a legkevesebb webes programozassal inkabb a szenzorokra, szerverre es a kommunikaciora koncentraltam, illetve arra hogy az osszes komponens ingyenes.

    Lenovo T440s Thinkpad - Kubuntu 18.04

  • cog777

    aktív tag

    Feldobok en is egy screenshot-ot.

    Lenovo T440s Thinkpad - Kubuntu 18.04

Hozzászólok Aktív témák