Kā es darbā regulēju radiatorus

Jānis Rubļevskis (koko) // 2016. gada 18. februārī, 16:51 // #Tehnoloģijas // 6 komentāri 

Šis ir stāsts par to, ka, ja mētājas visādas tehniskās lietiņas un gribās arī nedaudz paeksperimentēt, tad jāizdomā tikai, ko tad īsti beigās gribi panākt. Tā nu divi radiatori birojā dzīvo savu dzīvi (ja vien apkopēja neizdomā, ka tā tam nav jābūt).

Šoreiz raksts būs ļoti tehnisks un diezi vai vienkāršais lasītājs visu uztvers, bet varbūt iedvesmo arī kaut ko pamācīies. Aprakstīju to, kādā veidā es esmu automatizējis noteiktas temperatūras uzturēšanu vienā no biroja telpām. Tas nav pareizais (optimālais būtu īstais vārds) veids kā to darīt, jo es esmu savācis visus sev pa rokai esošos līdzekļus, lai to panāktu. Un tomēr tas ir uzskatāms piemērs, kā var ar minimāliem (šoreiz gan tie ir maksimāli) līdzekļiem panākt tik pat minimālu rezultātu.

Manis izmantotās lietas:

  • raspbery PI (der jebkura paaudze - man ir viena no pirmajām);
  • wifi Plug (der jebkura paaudze - man ir aizvēsture);
  • caur USB vadāms relejslēdzis (nu te ir brīva interpretācija);
  • digitālais termosensors (Manā gadījumā DHT11, bet var dabūt arī precīzākus, taču par lielākām naudiņām)
  • 10 KOhm rezistors (itkā ar 270 omiem pietiek šim termosensoram, bet ar 10 kiloomiem strādā daudz precīzāk);
  • parastais tīkla vads;
  • radiatori.

Sākšu jau ar to, ka stāsts šoreiz ir par automātisku elektrības padeves ieslēgšanu un/vai izslēgšanu atkarībā no istabas temperatūras. Manā gadījumā sensors spēj mērīt arī mitrumu, tāpēc var mēģināt izmantot arī šo parametru. Šis nekādā gadījumā nav optimālais vai ieteicamais veids konkrēto darbību veikšanai... Un tomēr - kāpēc gan ne, ja jau es varu?

Bezvadu elektrības pārslēgšana

WIFI Plug

Ir viens verķis, kuru var pieslēgt istabas wifi tīklam. Šim verķim ir divi režīmi: ieslēgtās strāvas un izslēgtās strāvas režīms. Izstrādātājs ir paredzējis verķa darbināšanu no mobilajām aplikācijām. Sagadījās tā, ka apakšā ir ķīniešu detaļas un, ja ir motivācija un nedaudz smadzeņu, tad var pierunāt darboties arī no citām ierīcēm. To, kā es to izdarīju, esmu aprakstījis nedaudz senāk. Ja negribās lasīt, tad te ir GITHub repozitorijs ar gatavo JAVA kodu un pat nokompilētu aplikāciju. 

Elektrības pārslēgšana caur USB

Es kaut kā nejauši biju nopircis USB daiktu, kurš reāli satur divus relejslēdžus, kuri, savukārt, spēj panest katrs 10A jaudu (es pirku šeit). Lai varētu tikt galā ar šo slēdzi, uzrakstīju mazu programmiņu pitonā. Programmiņa izmanto pitona HID API, kas ar usb iekārtām strādā pat ļoti labi. Grūtākais, protams, bija izpīpēt signālus, bet, cik atceros, tad tos es palūrēju vienā C risinājumā. Reku ir pilnais kods (nedusmojat - pitonu es praktiski nemāku).

Lai nebūtu jābojā tie vadi, kas ir grūti aizstājami, sabojāju pagarinātāju, kura fāzes vadu palaidu caur šo slēdzi. Tas ir tieši tik vienkārši, jā.

Termosensors

Visbeidzot kārta ir pienākusi termosensoram. Es izmantoju DHT11, jo tas ir nepieklājīgi lēts. Labākais ir tas, ka šim sensoram ir pieejama smuka Python bibliotēka, kas paredzēta tieši Raspberry PI - Adafruit Python DHT Sensor Library. Tas atkal ir tieši tik vienkārši, ka vienkāršāk vairs nevar būt. Līdz ar to atliek visu saslēgt kopā un palaist darbībā.

Realizācija

Turpinājumā kods (ar komentāriem), kā es to visu panācu. Tas nav optimāls, jo konkrētajā gadījumā vieglāk bija kopēt nekā taisīt funkciju (es esmu slinks), taču savu darbu dara. Tu, protams, vari arī labāk.

 Programmu jāpalaiž ar root (administratora) tiesībām, respektīvi sudo termo-regulation.py. Tā kā raspberry pi sudo režīms neprasa paroli, tad arī par to nav jāuztraucas, bet, ko darīt, lai programma palaistos automātiski? Te nu nāk talkā linux iebūvētās iespējas. Es izmantoju screen, kuru palaižu datora startēšanās laikā. Šajā screen es palaižu arī vajadzīgo programmu. Tehnika ir ļoti vienkārša: pielabojam /etc/rc.local failu tā, lai pirms exit 0 būtu sekojoša komanda: sudo -u pi screen -dm -S pistartup bash /home/pi/teirproga/startup. Kur startup fails ir vienkāršs bash skripts. Bash skriptu izvēlējos tāpēc, ka mana programma strādā ar relatīviem linkiem. Ja visur linki būtu absolūti, tad var likt pa taisno komandu.

Pie attiecīgā skrīna var piekļūt ar screen -r metodi.

Saprotu, ka raksts ir nedaudz saraustīts un pamatā domāts datorentuziastiem un programmētājiem, taču tas arī parāda, cik viegli ir darīt stulbas lietas, ja pa rokai ir dažas lētas, bet interesantas mantiņas.

Komentāri

nenu es pareizi sapratu, vai arī tu tagad programmē to pretīgo javu?

btw, baigi labi, ka ir nopircies tas usb daikts - katram mājās tādu vajag!

Zandi, tas bija piespiedu gadījums, jo reāli visus interfeisus tam sūdam ķīnieši nebija aprakstījuši, bet iedeva jar librārijus līdzi, kurus atverot, spēju kaut ko arī sakodēt.

Un vēl viena lieta - uzkodēju pāris aplikācijas ar ObjectiveC priekš iOS, tad uzkodēju vienu priekš androīda Java... Zini, Java ir perfekta salīdzinājumā ar to ObjectiveC gemoroju :D

Bet ar ko salīdzinājumā tad java nav perfekta? :>

Zandi, par reliģiskiem jautājumiem strīdēties nebūtu labi, bet nu Java nav topa augšgalā un nevis tāpēc, ka tā būtu nesmuka valoda - valoda ir forša un komūna ir liela, bet joprojām ir novērojama tā javas bremze. Protams, mūsdienu jaudīgie datori daudz maz to risina, bet uz vājāka dzelža ir tas pats, kas griezt vēnas lēnītēm :D

Man patīk risinājusm ar izoleni :)

Pats rakstiji kodu ?

Paud savu subjektīvo viedokli:

Visi lauki (izņemot interneta vietni) aizpildāmi obligāti!
E-pasts publiski netiks parādīts.
Zinot vairākumu, komentāros tagi netiek atrādīti kā tagi. Linki automātiski pārveidosies par spiežamiem (cerams).
Bloga īpašnieks patur tiesības ļaunus komentārus dzēst vai pārveidot cilvēkiem patīkamākā formā, bet tajā pašā laikā neatbild par komentāru saturu.