Duomenų rašymas į nutolusį influxdb naudojant Redis

Pradinė schema.
Raspberry pi surenka termometrų duomenis ir PHP bei CURL’o pagalba (rašiau čia) keliauja į dvi influxdb bazes. Viena yra lokaliai pačioje avietėje, kita yra nutolusiam VPS serveryje.

Problema pažymėta raudona rodykle. Kartais dingsta namuose interneto ryšys (vis dar 5GHz antena, 100mbs planas, laukiu kada suvirins šviesolaidį). To pasekoje išsiskiria duomenys tarp abiejų influxdb.

Senesnės influxdb versijos turėjo clustering funkcionalumą, bet šitas malonumas dabar mokamas.

Taip pat yra tokie sprendimai kaip influx-relay, bet This retry logic is NOT sufficient for for long periods of downtime as all data is buffered in RAM.

Problemos sprendimo schema:

Duomenys rašomi lygiagrečiai į lokalų influxdb ir redis.

Į redis’ą patogiai rašyti galima su phpredis. Archlinux’e pkgbuild’as yra AUR’e, nutolusiam VPS’e yra Centos 7 tad ten teko susikompiliuoti iš source. Abiem atvejais reikia paredaguoti php.ini ir pridėti extension=redis.so.

Tad palyginimui kodas tarp CURL’inimo į influxdb ir redis:

//Post to influxDB
$ch = curl_init("http://127.0.0.1:8086/write?db=termometrai");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,"temperaturos ".$daviklioHWID."=".$tempvalue);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
//Post to redis
date_default_timezone_set("UTC"); 
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->rPush('VPS1',"temperaturos ".$daviklioHWID."=".$tempvalue." ".strval(time()));
$redis->close;

Į redis rašau POST duomenis, tam kad kitam gale aklai galėčiau juos vėl pakišti CURL’ui. Vienas skirtumas, kad pridedu šio momento timestamp’ą. Jis reikalingas tam, kad duomenys iš redis’o iki nutolusio serverio, ryšio dingimo metu, gali keliauti ir kelias valandas. Atsiradus ryšiui ir surašius duomenis be timestamp’o į influxdb duomenys sukristu ne su laiku kada jie buvo įrašyti į redis, o su laiku kada buvo įrašyti į influxdb. Tad šiuo atveju duomenis atkeliauja jau atsinešdami ir laiką kada buvo nuskaityti.

Nutolusiam VPS serveryje duomenis iš redis’o skaito PHP skirptas. Redis duomenis skaitau su:

$redis->lPop('VPS1');

Ši funkcija paima vieną įrašą iš nurodytos “eilės” (kuri šiuo atveju yra VPS1) ir iškarto ta įrašą ištrina. Sekančiu kartu paimama kita reikšmė ir pašalinama. Tokiu būdų gaunamas duomenų FIFO.

Rezultate turime labai greitai ir labai mažai resursu naudojančia redis. Avietė pildo duomenis naudodama RPUSH, nutolęs serveris duomenis tuo pačiu metu skaito ir trina su LPOP.

Dingus ryšiui, (nutolęs serveris nemato Rasbery Pi) consumer’is kas 10 sekundžių kartoja prisijungimo procedūrą tol kol prisijungia. Po viena ima visus duomenis tol kol ištuštėja eilė. Kai eilė ištuštėja “užmiega” dešimčiai sekundžių po kurių vėl pasitikrina ar yra duomenų. Jei nėra, toliau “miega” 10 sekundžių, jei yra “sukramto” tai kas yra.

Consumer’io (php skripto) veikimą užtikrina Supervisord. Tai labai nedidelis servisas kuris gali užtikrinti bet kokio skriptuko ar programos nenutrūkstama veikimą. Jei skriptas dėl kažkokios priežasties nulūžtu arba jį tiesiog nu kill’inus, supervisord pasirūpina jo paleidimu.

Rezultatas

Per dvi valandas dirbtinio ryšio nebuvimo, duomenys sukrito per ~15 sekundžių.

Honda Accord atbulinės eigos kamera

Šis aprašymas tinka Honda Accord 7gen gamintam nuo 2006 metų. Nuo 2006 (Facelift) modeliui buvo pakeistas navigacijos (DVD) blokas. Šis atnaujintas blokas jau turi 7 kontaktų jungtį prie kurios ir galima pajungti kamerą.

Visa salono plastikų ardymo eiga kažkiek aprašyta čia

Magnetolos išiminėti nereikia, taip pat ir dangčio virš jos. Tikslas yra išimti DVD įrenginį esantį po navigacijos ekranu.

Prieš montuojant bet kurią kamerą, reikia prisijungti prie DVD/navigacijos įrenginio. Kad tai padaryt patogiai, aš pilnai išsiėmiau visą modulį. Aparato nugaroje yra septinių kontaktų žalia jungtis.

Kontaktai iš kairės:
1 – nejungiam
2 – minusas (kabeliuko iš kameros šarvas)
3 – nenaudojam
4 – nenaudojam
5 – video signalas (vidinė gysla iš kameros)
6 – 7 užtrumpinam

Spėju, kad nenaudojami kontaktai, greičiausiai gali būt garso įvestis.

Aišku tokios jungties aš neturiu, bet turiu iš senų kompiuterio korpusų pasilikęs USB, power, led laidukus kurie labai puikiai tiko šioje vietoje.

Netgi trumpiklis (jumperis) jau buvo padarytas 🙂

Gale prilitavau femail tulpę. Po ranka papuolė pati pigiausia kokia tik turbūt gali būt, gaila kitos ir neturėjau.

Pati kamera atkeliavo iš Aliexpress’o per 5-6 savaites. Kainavo 8.07€

Laidą iš priekio vedžiau keleivio puse. Prasivedė patogiai, nereikėjo atlupti nė vienos plastikinės dalies, kabeliukas plonas, todėl visur palindo be didesnių problemų.

Prieš gręžiojant ir vedant iki pat bagažinės, patikrinau ar tikrai viskas veikia.

Maitinimą pasijungiau nuo atbulinės eigos lemputės. Nelabai norėjau pjauti laido įzoliacijos ar išviso jį karpyti, todėl prie kameros maitinimo laidelio prilitavau storesnius laido galus. Gavosi tokios lyg dvi adatos (nuotraukos nepadariau). Aptraukiau termo izoliacija ir galus sukiškau į lemputės jungtį. Viską sutvirtinau dirželiu. Laikosi tikrai labai stipriai ir įlenda labai standžiai, tad tarnaus manau ilgai. Tikrai labai nenorėjau karpyti originalaus laido.

Toliau matuojam, žymim, gręžiam, tvirtinam.

Kaip viskas sumontuota, statau konteinerius ir testuojam 🙂

Tos linijos ekrane yra piešiamos pačios kameros ir savaime suprantama jos nesisukinėja sukinėjant vairą. Bet šiokios tokios naudos jos vis dėlto turi. Pagal spalva maždaug galima spręsti atstumą. Mintyse jas reiktu suprojektuoti ant kelio ir tolimiausia šalios linijos vieta yra maždaug ~1 metras. Geltonos linijos paskutinė sekcija, kur linija eina kampu, ties ta vieta iki kliuties ~50 cm. Raudonos spalvos kampas, yra maždaug ten kur prasideda kablys.

Beje labai nustebau, kad į vaizdą telpa ir kablys. Kas yra labai geras orientyras.

Dabar galima sustoti ir taip 🙂

Galutinis rezultatas

Honda Accord bluetooth instaliacija

Jau pora mėnesiu vairuoju, pilnas pavadinimas: Honda Accord 2.4L 2006 gen7 Facelift Executive CL9 automatas, juodas sedanas. Esu labai patenkintas šiuo automobiliu. Nuo 2006 metų buvo gaminamas atnaujintas, taip vadinamas, Facelift’intas modelis. Be grotelių, žibintų, navigacijos, sėdynių (keleivio tapo elektra valdoma), veidrodėlių ir t.t. atnaujinimų buvo ir bluetooth įdiegimas. Bėda tame, kad jis skirtas tik kalbėjimui telefonu, o tam aš turiu ir esu labai patenkintas Jabra Cruiser2 (jau nebegaminamas). Bet šiais technologijų ir interneto laikais būtų visai smagu groti muziką tiesiai iš telefono atminties, spotify, youtube ar panašiai, kaip beje galima daryti automobiliuose pagamintuose per pastaruosius, turbūt, penkis metus. USB/SD interfeiso pas Accord’ą taip pat nėra.

Pasigooglinus radau bent keleta “priedelių” kurių pagalba buvo galima prie gamyklinės magnetolos pajungti išorinį šaltinį. Apsistojau ties Yatour. Paieškojęs radau, kad šiuos ir panašius daigtus pardavinėja http://www.audiomedia.lt. Pagalvojau, kad bus ir greičiau ir jei netyčia kas nutiktu su garantija bus paprasčiau, jei pirksiu iš lietuviško puslapio, tuo labiau, kad kaina daugiau mažiau panaši.

Pas mane yra sumontuota Premium Sound System su 6 disku keitikliu ir navigacija. Bet jei neklystu šis mano užsakytas priedelis tinka magnetolai ir su paprasta audio sistema (be navigacijos). Jei kas pirksit pasidomėkit, neesu garantuotas.

Video kurie padėjo salono/panelės ardymo klausimu:
USB Audio car kit install for Android/Iphone – Honda Accord
How to Remove Radio / CD Changer from 2007 Honda Accord for Repair
Honda accord VII navi instalacja zmieniarki yatour
Yatour YT-M06 Honda Accord 04′ PSS + Navi

Įrankiai reikalingi visam darbui:
Lopetėlė (foto žemiau nuotraukose) salono plastmasėm “atkabinti”. Net nepradėkit darbo jei tokios neturit.
Kryžminis atsuktuvas
10mm galvutė. Kilpinis raktas čia netiks, nebus priėjimo

Viską pradedam ardyti nuo apačios, nuo pavarų svirties. Ir einam po vieną detalę į viršų. Pati magnetola (jei su navigacija kaip pas mane) pritvirtinta trim varžtais viršuje, dviem apačioje giliai ir dviem apačioje, priekyje iškarto už vėjelio valdymo mygtukų. Pastarųjų varžtu galvutės žiūri į variklio pusę.

Išimam magnetolą, nugaroje randame baltą jungti (laidas tiks tik į ją), sujungiam visus laidus, įjungiam degimą ir išbandom ar viskas veikia. Surenkam atgal ir nepamirštam visko prisukti!!! Nes vėl lupti tas plastmases bent man tai labai skaudu, o tai daryt teko, nes ne viską prisukau iš pirmo karto 🙂

Atsargiai reikia elgtis su DVD (navigacijos) grotuvu, jo šonuose yra laikikliai su aštrokais kraštais kurie braižo plastiką. Aš truputi pabraižiau ten kur nereikia 🙁

Kad nereiktų jungti degimo norint pastumti svirtį (automato), vienoje nuotraukoje pažymėjau, virš P raidės, kairiau yra kamštukas, kurį išėmus su atsuktuvu, rakteliu nuspaudus ten esančia svirtelę, pavaras galima perjungti ir neįjungus degimo. O kaip visi laidai atjunginėti, tai gal taip ir saugiau.

Taip pat atjungiau gamyklinį Bluetooth modulį, nes jis labai mėgsta sugesti ir to pasekoje labai iškraudinėja akumuliatorių. Jis yra po viršutiniu dangteliu virš magnetolos. Juoda dėžutė su rožiniu lipduku. Nuotraukos žemiau. Taip pat kažkiek matosi ir nuotraukose viršuje.

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close