Sdílení dat mezi dvěma RPi

Re:Sdílení dat mezi dvěma RPi
« Odpověď #30 kdy: 21. 02. 2017, 08:56:42 »
Ještě to hotové nemám, ale rozhodnutý už jsem. Půjdu cestou HTTP a jen read only. Každý RPi si na vlastím písečku vytvoří svoje soubory s datama a vystaví je na HTTP tomu druhýmu RPi.
Ještě jednou bych zalobboval za MQTT - fakt silně bych ti to doporučoval.

Není to "kanón na vrabce", je to jeden démon, který ti poběží na jednom RPi a můžeš na něj napojit kolik chceš klientů, sdílet data jakkoli napříč klienty, výpadky ti nevadí, slušná knihovna se sama reconnectne, můžeš sledovat dostupnost klientů (k tomu se používá ta retain zpráva) atd. atd. Provozu brokeru se nemusíš bát - např. mosquitto je nenáročný držák. Nainstaluješ, jedeš, zapomeneš, nikdy už nic neřešíš. Pokud nechceš ACLka, nemusíš ani nic konfigurovat, jenom spustíš a už nikdy na to nehrábneš.

Ale hlavně: je to už dneska dost standard. Možná se ti dneska zdá, že ty dvě RPi jsou definitivní stav na 30 let, ale za dva roky tě napadne, že bys to chtěl ovládat z mobilu. Za tři roky, že bys chtěl data zobrazovat na tabletu pověšených na ledničce a za tři a půl roku se začneš nudit, že to všechno funguje a budeš chtít přidat další sensory a zobrazovat to na displayi za zrcadlem ;)

To sdílení souborů je slepá ulička - teď ti to bude stačit, ale budeš s tím mít problémy (neconnectlo se, nenamountovalo, ...) a do budoucna to nijak nerozšíříš. UDP apod. může být fajn a robustní, ale s ničím to nepropojíš, bude to tvoje "proprietární" řešení a robustnost si musíš pohlídat sám. Zeromq vyloženě nedoporučuju, sexy myšlenka, ale v praxi mě hodně mě zklamalo. Http je v pohodě, ale bude se hůř ladit (nemáš žádnej jeden bod, kde bys mohl snadno sledovat veškerou komunikaci) a pokud bude časem funkcionalita růst, skončíš se špagetovým kódem volání různých API, ve kterým si musíš udržovat pořádek a systém. Budeš si úplně zbytečně lámat hlavu s kravinama ohladně detailů API.

S MQTT máš robustnost, můžeš veškerý provoz krásně sledovat, můžeš to snadno propojit s čímkoli, klient existuje i v javascriptu (pro připojení ti stačí statická html stránka s kouskem JS). A můžeš si na to napojit třeba NodeRed a udělat si během max půl hodiny domácí, soukromý IFTTT - a to se vyplatí! ;)

P.S. mqtt mám docela dost ošahaný, rád ti s tím případně pomůžu. Zaplatíš mně tím, že si proti sob2 zahrajem OpenTTD nebo jinou multiplayerovku podle tvýho výběru ;)


Re:Sdílení dat mezi dvěma RPi
« Odpověď #31 kdy: 21. 02. 2017, 08:58:22 »
Jo, ještě jsem nenapsal, že MQTT je samozřejmě jenom způsob, jak data posílat a "sdílet" v okamžiku, kdy jsou poslaná. Není to databáze.

ehmmm

Re:Sdílení dat mezi dvěma RPi
« Odpověď #32 kdy: 21. 02. 2017, 09:13:48 »
Relátkama budu spínat, ale přemýšlím trochu o nesystematickym řešení... Že relátkama budu spínat klasický stykače na DIN lištu. Pojede přes to několikrát 230V od 0,2A do 10A.

Spinat relatkem stykac neni nic nesystematickeho, to se tak nekdy dela. Ale obvykle ve vetsich kotelnach, nez mas ty doma. Tedy pokud netopis elektrikou, nebo nemas tepelne cerpadlo. 230 V krat 10 A jsou cca 2 kW a takovy elektricky prikon bezny plynovy kotel nema ani s cerpadlama dohromady. Takze tipuju, ze muzes stykac vynechat, protoze nejake rozumne rele takovych 230 V a 8A spinat zvladne.

Jinak to s tou DIN listou jsem nepochopil. Ja mam na DIN liste i to OvocePi i to rele.

dustin

Re:Sdílení dat mezi dvěma RPi
« Odpověď #33 kdy: 21. 02. 2017, 09:57:18 »
S tím lobbingem pro MQTT souhlasím. Ošetřování všech možných chybových stavů vlastního řešení bývá opruz plný chyb, navíc se problémy vyskytují postupně, až po čase, v nestandardních situacích, které se špatně simulují a člověka často ani nenapadnou.

Pokud je něco hotové, standardizované a stále vyvíjené, way to go.

Pavouk106

  • *****
  • 2 400
    • Zobrazit profil
    • Můj blog
    • E-mail
Re:Sdílení dat mezi dvěma RPi
« Odpověď #34 kdy: 21. 02. 2017, 12:04:09 »
Teda vy mě ale serete ;D

Pravda - nabídka na pomoc s MQTT a na oplátku multiplayer OpenTTD zní velmi lákavě, je to jednoznačný win-win scénář. Alespoň pro mě ;D

Vzhledem k tomu, že teď se můj čas a pozornost soustředí na zkompilování jádra pro Toshiba AC100, tak tahle otázka ještě není zcela uzavřená. V době kompilace jádra (cca 58 minut) se mrknu na MQTT, něco si počtu a ještě se tady ozvu.

Pořád je to kanon na vrabce, protože já chci udělat zcela uzavřenej systém, kterej bude nezávislej a neovlivnitelnej čímkoliv zvenku - zde vynecháme odcizení klíčů SSH/wifi, bugy v použitých programech apod., ano? Já to myslím tak, že nepřijde brácha s mobilem v ruce a nezačne mi vrtat do nastavení... Výstupem budou vždy jen readonly data. Jediný zápisy půjde dělat buď přímo na úrovni filesystemu (přes SSH) nebo klikáním na ikonky na displeji nebo vypínačema (v kotelně, mechanický spínače).

Info ke kotelně: Solární ohřev vody (teplota teplé a vracečka), automat kotel na uhlí (větrák + šnek -> ovládání ale jen pro jejich odpojení v případě, že kotel z nějakého důvodu vyhasnul -> to zjistí teplotní čidlo v komínu), teplá voda do topnýho systému + vracečka z topnýho systému, ohřev TV ze soláru nebo z kotle (ovládání ventilu) nebo elektrikou (tady je těch 10A), okruh teplý vody do domu (teplota do domu + vracečka + ovládání čerpadla), teplota ve 250l bojleru nahoře a dole.

Celkem bude v kotelně pokud dobře počítám 8 Dallas čidel a 1x thermocouple (komín) a budu chtít spínat (nebo rozpínat) minimálně 5 věcí.

Na příští zimu chci mít hotový minimálně:
1. ruční zapnutí (na LCD nebo vypínačem přímo v kotelně) ohřevu TV z kotle
2. automatický koloběh TV do domu (aby se čerpadlo spínalo v nějakých intervalech podle teploty vracečky)
3. termostat (RPi v obýváku měří teplotu v bytě a taky venku)
4. ruční zapnutí (na LCD nebo vypínačem v kotelně) ohřevu TV elektrikou

RPi si mezi sebou budou předávat:
z kotelny do obýváku teploty (k zobrazení) a stavy (např. čerpadlo běží)
z obýváku do kotelny topit/netopit a ruční ovládání zmíněných věcí

Předávat se budou jen čísla, ať už teploty nebo 1 a 0 pro různý stavy.

Pokud se něco podělá (chcípne nějaký RPi nebo nějakej skript), tak buď:
v obýváku neuvidím údaje
v kotelně se odpojí relé deska (napájení) a systém se uvede do stavu bez dozoru RPi -> pro tuto možnost bude v kotelně na krabici s RPi vypínač, kterej bude sloužit jako manuální spínač termostatu - totální override všeho "chytrýho" (když nebudu doma, něco se posere a manželka chce mít doma teplo)

Pokud chcete, můžeme to tu převést na obecnější HW debatu o provedení celýho systému. SW stránka věci je víceméně podchycená (až se rozhodnu zda HTTP nebo MQTT).


Re:Sdílení dat mezi dvěma RPi
« Odpověď #35 kdy: 21. 02. 2017, 12:32:59 »
Pravda - nabídka na pomoc s MQTT a na oplátku multiplayer OpenTTD zní velmi lákavě, je to jednoznačný win-win scénář. Alespoň pro mě ;D
Super :)

se mrknu na MQTT, něco si počtu a ještě se tady ozvu.
Koukni na https://www.youtube.com/watch?v=WLIlDGiXpJY dobrej uvod.

JirSoft

Re:Sdílení dat mezi dvěma RPi
« Odpověď #36 kdy: 21. 02. 2017, 13:51:48 »
Ještě to hotové nemám, ale rozhodnutý už jsem. Půjdu cestou HTTP a jen read only. Každý RPi si na vlastím písečku vytvoří svoje soubory s datama a vystaví je na HTTP tomu druhýmu RPi.

Všem moc děkuju za podněty a návrhy, cením si jich. Zevšeobecním trochu důvod, proč jsem ty které nevyužil - pracuju s tím, co znám a v čem jsem schopný to udělat za rozumný čas. A to i za situace, kdy to třeba není to nejlepší řešení z některého hlediska.

HTTP pro mě má výhody - vytáhnu mobil, mrknu do prohlížeče a mám data před sebou. To je neocenitelná věc při debugování na dálku. Teď nemyslím debug skriptu, ale debug situace v kotelně... ;-) V kotelně se bude měřit víc věcí a na některé bych nerad čekal (třeba) několik minut, než dostanu novou hodnotu.

SNMP je jen pro zajímavost, jsem statistickej magor. Loguju, co se dá. Kromě samotných systémových logů. Takže teploty, otáčky, využití CPU/RAM, ... a to u všeho, co to umí, kromě Windows PC. S tím tady nikdo nic neuděláte :-)

Relátkama budu spínat, ale přemýšlím trochu o nesystematickym řešení... Že relátkama budu spínat klasický stykače na DIN lištu. Pojede přes to několikrát 230V od 0,2A do 10A.

Ještě jednou díky za vaše názory a nápady!

Jen k těm relátkům - pokud tam bude sepnutí v řádu minut a ne jen hodin a více, opravdu bych použil ta SSR. Jedno sepnutí za 10 minut je víc než 50 000/rok...

PetrM

Re:Sdílení dat mezi dvěma RPi
« Odpověď #37 kdy: 21. 02. 2017, 14:11:27 »
Jen k těm relátkům - pokud tam bude sepnutí v řádu minut a ne jen hodin a více, opravdu bych použil ta SSR. Jedno sepnutí za 10 minut je víc než 50 000/rok...

Ale stačí trocha přepětí v kabelech a nevhodný souběh...

Spečený kontakt u relé v patici na DINce je za 60Kč, SSR za pár stovek až tisíc a zbytečně. Nehledě na to, že SSR má další nectnosti - potřebu chlazení, větší rozměry,...

Pavouk106

  • *****
  • 2 400
    • Zobrazit profil
    • Můj blog
    • E-mail
Re:Sdílení dat mezi dvěma RPi
« Odpověď #38 kdy: 21. 02. 2017, 14:25:45 »
Jen k těm relátkům - pokud tam bude sepnutí v řádu minut a ne jen hodin a více, opravdu bych použil ta SSR. Jedno sepnutí za 10 minut je víc než 50 000/rok...
Bude tam na vysokoproud (bojler) sepnutí v řádu 2x za den (noční proud), když ten den nebude ohřejvat kotel nebo soláry. Vidím to řádově na 100 - 300 sepnutí ročně. Sáhnu po klasickym stykači. Důvod napsal PetrM, je to hlavně jeho cena, která vyváží i případnou výměnu 1x za XY let.

U těch slabých proudů (řádově do 0,5A, je to víceméně jen čerpadlo, větrák a šnek na kotli) bych teoreticky mohl použít klasická malá relé na 230V/10A. To by skrz ně mělo projít v pohodě. Ale asi dám stykače i na tohle. U stykače věřím, že bude fungovat bez problémů.

Do DIN lišty to celý nedám. Rozvaděč mám totiž víceméně plný (vše by se nevešlo) a je zbytečně daleko. Dám do do nový bedny přímo do kotelny.

Mirek: Na video mrknu, něco počtu a pak dáme OpenTTD. Hraješ to nějak alespoň trochu (víc)?

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Sdílení dat mezi dvěma RPi
« Odpověď #39 kdy: 21. 02. 2017, 16:30:29 »
Bude tam na vysokoproud (bojler) sepnutí v řádu 2x za den (noční proud), když ten den nebude ohřejvat kotel nebo soláry.

To je mozna zbytecne. Bojler ma prece termostat a tak z elektriky akorat dorovna teplotu podle toho, jak moc to jiz vytopil kotel ci solarni panel. Zalezi na tom, jak moc vam vadi, ze budete mit chladnejsi vodu v pripade, ze to bojler nedotopi nad teplotu z kotle/solaru, pokud mu v tom zabranite odeprenim nocniho proudu. Ale vzhledem k tomu, ze topna voda z kotle nebude 90°C a ze solaru asi take obvykle ne, tak bych tipoval, ze mate velky bojler a jedete na nizsi teplotu. V tom pripade termostat bojleru stejne obvykle nesepne, protoze uz bude vytopeno a vy si usetrite stykace, dratovani a programovani.

No, pokud na tom trvate, tak si tam aspon dejte rucni vypinac. Aby vam jednou neodeslo RPi a vy jste nemusel tyden ohrivat vodu na sporaku.

JirSoft

Re:Sdílení dat mezi dvěma RPi
« Odpověď #40 kdy: 21. 02. 2017, 17:52:02 »
Jen k těm relátkům - pokud tam bude sepnutí v řádu minut a ne jen hodin a více, opravdu bych použil ta SSR. Jedno sepnutí za 10 minut je víc než 50 000/rok...

Ale stačí trocha přepětí v kabelech a nevhodný souběh...

Spečený kontakt u relé v patici na DINce je za 60Kč, SSR za pár stovek až tisíc a zbytečně. Nehledě na to, že SSR má další nectnosti - potřebu chlazení, větší rozměry,...

Nesouhlas. Používám toto:
http://www.dx.com/p/solid-state-high-level-4-channel-5v-dc-relay-module-black-blue-435617#.WKxtUhjMzOQ
Cena 210 Kč za 4 SSR, pripojeno přímo k rPI v tuto chvíli ca rok. A mám to připojeno jako "pseudo PWM" na topných panelech u psů - topím na 0- 100% s rozlišením 10%.
Udělal jsem si zjednodušení, protože nepotřebuji rychlost (setrvačnost desek), takže hodnota=(procenta/10 - 1) topí vždy když jednotky sekund jsou  <=hodnota.
Např. 20% (hodnota = 1) ... topím v 0., 1., 10., 11., 20., 21., 30., 31., 40., 41., 50. a 51. sekundu, v ostatní ne.
Znamená to, že spínám docela často - při jakémkoliv požadovaném výkonu (kromě 0% a 100%) 17280 sepnutí a rozepnutí za den! Relátka by to asi dlouho nedala...

Re:Sdílení dat mezi dvěma RPi
« Odpověď #41 kdy: 21. 02. 2017, 19:53:31 »
Mirek: Na video mrknu, něco počtu a pak dáme OpenTTD. Hraješ to nějak alespoň trochu (víc)?
Dřív jsem to hrával vášnivě, teď už nějakou dobu ne. Ale tebe vyklepnu, to si piš!  ;D