Sistem Inteligent Pentru Semnalizare Si Comanda In Instalatiile Electrice Aferente Cladirilor

INTRODUCERE

Justificarea alegerii temei:

Motivația alegerii proiectului de diplomă intitulat Sistem inteligent pentru semnalizare și comandă în instalațiile electrice aferente clădirilor se datorează studiilor în cadrul sistemelor electrice și prezentarea tendinței moderne de a lega și muta totul în sfera digitală. Prezența acestei tendințe și în cadrul instalațiilor electrice se datorează în mod special revoluției digitale, întâlnită aproape în orice domeniu al vieții cotidiene.

Privind în era informației, unde televizorul e digital, sistemul de iluminat este acționat pe măsură ce luminile încăperilor sunt acționate la sesizarea unei simple mișcări, toate acestea le putem consolida ca parte a unei rețele integrate și structurate în cadrul unei locuințe, clădiri. În consecință, acest studiu asupra sistemelor inteligente și prezența lor în cadrul instalațiilor electrice este util sesizării tranziției și identificării soluțiilor moderne în acest domeniu.

Un alt argument în alegerea acestei teme a fost caracterul aplicativ, actual și modern al lucrării care poate fi aplicat unei instalații electrice structurate.

Cel de-al treilea rol fiind și cel didactic, în sensul că realizarea practică a proiectului va contribui la îmbunătățirea bazei experimentale a laboratorului la disciplina Instalații Electrice.

Noțiuni de bază privind instalațiile electrice aferente clădirilor

Instalațiile electrice

Instalațiile electrice sunt definite ca ansamblul de echipamente electrice interconectate în cadrul unui spațiu dat sau al unei zone precizate. Localizarea și interconectarea într-un anumit scop funcțional constituie cele două criterii inter separabile pentru delimitarea unei instalații.

Cele două componente de bază a unei instalații electrice sunt:

echipamente electrice, cu o anumită destinație funcțională;

canale conductoare (linii), care servesc pentru dirijarea energiei electrice și pentru interconectarea echipamentelor:

rețeaua electrică, care conține echipamentele electrice interconectate, în amonte față de ultimul receptor sau de ultima unitate funcțională, și servesc pentru alimentarea cu energie electrică a receptorului sau unității respective;

linii de conexiune în interiorul echipamentelor sau unităților funcționale.

Echipamentul electric

Constituie elementele sau unitățile funcționale complexe care intervin în fluxul de energie electrică – producere, transport, distribuție, stocare, conversie, măsurare și consum (utilizare), ca:

elemente indispensabile (de bază) în lanțul de transfer (alimentare);

elemente auxiliare (suplimentare), care asigură funcționarea corectă, la parametri și secvențe precizate, a elementelor de bază sau/și protecția adecvată, în cazul apariției unor disfuncționalități.

Echipamentele electrice constă în: mașini electrice (generatoare și motoare), transformatoare (de putere și de măsură), convertoare (electromecanice sau statice), aparate electrice (de comutație, de protecție, de măsură), diverse dispozitive (de semnalizare, de acționare, electromagneți), elemente de conexiune (tablouri de distribuție, doze de ramificație, prize).

Elementele conductive ale instalației

Conductorul electric este elementul folosit pentru interconectarea elementelor componente ale unui circuit, fiind construit dintr-un element metalic (cupru, aluminiu sau oțel) neizolat sau prevăzut cu izolație.

Element activ sau parte activă într-o instalație electrică este orice conductor sau element conductiv care se găsește sub tensiune (la un anumit potențial diferit de zero) în funcționarea normală a instalației sau, altfel spus, face parte din circuitul curenților de lucru.

Element conductor accesibil sau parte conductivă accesibilă (denumit și masă) este acel element conductor care nu este parte activă dar care ar putea deveni parte activă (ar căpăta un potențial diferit de zero) ca urmare a unui defect în instalație și care ar putea fi atins de personal în decursul funcționării instalației (de exemplu, carcasa metalică a unui echipament electric).

Element conductor extern (parte conductivă externă) unei instalații electrice este un element conductiv care nu face parte din instalația electrică dar se găsește în vecinătatea acesteia și poate fi accesibil în timpul funcționării instalației (de ex. structura metalică a clădirii, conductelor metalice pentru fluide și elementele neelectrice racordate la acestea (radiatoare, plite neelectrice, chiuvete metalice, pardoseli neizolate sau pereți neizolați).

Priza de pământ este un element conductiv (electrod) sau un ansamblu de elemente conductive (electrozi) în paralel îngropate în pământ în scopul de a stabili în mod intenționat un contact electric cu masa generală a pământului.

Conductoarele de linie L1, L2, L3 (în curent alternativ trifazat) sunt conductoarele care leagă sursa de alimentare cu elementele de consum. Într-un sistem electric multifazic, conductoarele de linie sau conductoarele de fază nu sunt conectate la punctul neutru al sistemului (de exemplu, al transformatorului de alimentare).

Conductorul de protecție PE este acel conductor folosit în cadrul anumitor măsuri de protecție împotriva șocului electric în cazul unui defect în instalație și pentru legarea electrică a elementelor conductive accesibile (masa) cu alte elemente conductive accesibile, cu elementele conductive externe, cu prizele de pământ, cu un conductor legat la pământ sau cu un element activ legat la pământ.

În anumite structuri ale sistemului electric, funcțiile conductorului neutru și conductorului de protecție pot fi combinate, în condiții specificate, într-un singur conductor – conductorul de protecție și neutru PEN.

Cele mai utilizate scheme ale conductoarelor active în curent alternativ sunt:

monofazat cu două conductoare (L, N);

monofazat cu trei conductoare (L, N, PE);

trifazat cu trei conductoare (L1, L2, L3);

trifazat cu patru conductoare (L1, L2, L3, PE sau L1, L2, L3, PEN).

Circuitul electric

Circuitul electric, în sens larg, este ansamblu de elemente prin care trece curentul electric.

Drept circuit electric, în sens restrâns, se poate considera:

partea din instalația electrică protejată împotriva supracurenților prin aceleași aparate de protecție;

porțiunea din rețeaua electrică de la ultimul punct de distribuție la un receptor sau la o unitate funcțională.

Destinația și delimitarea în cadrul instalației rezultă, de regulă, din context.

Elemente componente:

Sursa de energie poate fi:

sursă primară, bazată pe transformarea altei forme de energie:

generator (mașină electrică)

pilă (acumulator);

sursă secundară, bazată pe modificarea parametrilor energiei electrice, (de ex. secundarul unui transformator);

”pseudo sursă” – tensiunea electrică disponibilă la:

barele unui punct de distribuție;

o priză de curent.

Caracteristici ale sursei primare sau secundare sunt, în principal:

impedanța internă Zs;

tensiunea de funcționare (mers) în gol (fără sarcină):

U0 – inferioară tensiunii de funcționare în gol și dependență de intensitate curentului;

puterea aparentă nominală S = U0In – puterea limită care poate fi furnizată unui receptor rezistiv.

Linia electrică – reprezintă ansamblul elementelor prin care se asigură transferul de energie între sursă și elementul alimentat, distribuția în diferite direcții, închiderea/deschiderea circuitului (într-o secvență prestabilită), protecția circuitului (receptor și linie), măsurarea parametrilor electrici.

Linia este caracterizată prin impedanța sa Zl, de regulă mult mai mică decât impedanțele sursei și elementului alimentat, determinând practic, împreună cu impedanța sursei, valoarea curentului de scurtcircuit și scăderea de tensiune în rețea până la bornele receptorului, unde tensiunea are valoarea U < Us :

Elementul alimentat (consumatorul), constituie sarcina circuitului și poate fi:

receptor simplu;

receptor complex (echipament, unitate funcțională);

punct de distribuție a energiei;

transformator.

Tensiunea U la bornele elementului alimentat este inferioară tensiunii secundare a sursei, datorită căderii de tensiune pe linia de alimentare.

Receptorul simplu este caracterizat prin:

parametrii funcționali nominali: Pn, Un, ….;

abaterile adminisible de la tensiunea nominală;

impedanța nominală (impedanța de utilizare) Zu; nu se indică direct, rezultând în concordanță cu parametrii nominali și determinând practic valoarea intensității curentului și a puterii absorbite la alimentarea din rețea:

Punctul de distribuție sau receptorul complex este caracterizat prin:

puterile cerute activă și reactivă Pc și QC (inferioare puterii instalate – puterea totală a receptoarelor alimentate);

curentul nominal al ”sosirii” (linie și bare la care se racordează ”plecările” spre elementele alimentate) In.

Informația și documentația tehnică referitoare la o instalație

Informația tehnică asupra unei instalații electrice este furnizată sub forma de documente cum sunt: scheme electrice, scheme de amplasare, diagrame funcționale, tabele, liste de instrucțiuni sau descrieri funcționale etc.

Schema este o prezentare grafică ilustrând, cu ajutorul simbolurilor grafice și al unor inscripții adecvate, relațiile dintre componentele și părțile unui sistem sau ale unui echipament inclusiv interconexiunile aferente;

Planul de amplasare (harta) prezintă grafic plasarea instalației în spațiul înconjurător;

Tabelul sau lista pot înlocui sau completa o schemă sau o diagramă;

Documentația tehnică însoțește instalația pe toată durata existenței acesteia, începând cu faza de concepție, oferind informații atât cu privire la echipamentele componente cât și la montajul, punerea în funcțiune, exploatarea, întreținerea, automatizarea și monitorizarea funcționării acestora. În general, documentația trebuie să prezinte cât mai complet instalația, sistemul sau echipamentul respectiv, să fie precisă și concisă, să fie ușor de însușit și de actualizat.

Documentația trebuie să furnizeze informația sub o formă unitară și cât mai simplu posibilă. Elaborarea și prezentarea documentelor trebuie să vizeze aplicabilitatea practică, ceea ce impune claritatea expunerii, schemelor, instrucțiunilor și ilustrațiilor, precum și folosirea unui sistem de identificare precisă și rapidă a tuturor elementelor la care utilizatorul va avea acces. În general, elaborarea pornește de la un nivel de ansamblu, urmat de niveluri din ce în ce mai detaliate. Nivelul de detaliu trebuie să furnizeze explicarea funcționării, de exemplu schemele circuitelor terminale ale instalației, ca și descrierea modului de concepere a schemelor, de exemplu conexiunile între elementele componente.

Prezentarea documentației conform unei structuri normalizate permite tratarea unitară și informatizarea elaborării, stocării și transmiterii informației, în contextul introducerii pe scară din ce în ce mai largă a proiectării asistate de calculator.

Elaborarea și utilizarea materialului informativ trebuie să se asigure:

înțelegerea fără echivoc a prezentărilor;

transferul corect către toți factorii implicați în folosirea instalației, pe toată durata existenței acesteia.

Rezultă necesitatea unui limbaj tehnic unic, agreat simultan de către proiectant, producător și utilizator, de regulă neafectat de deosebirile lingvistice, care să cuprindă:

terminologie unică;

reguli unitare de întocmire și prezentare a documentelor.

Standardizarea răspunde acestor cerințe. Se deosebesc:

standarde internaționale, elaborate de organizații și organisme cuprinzând reprezentați a cât mai multe state:

CEI – Commission Electrotechnique Internationale (IEC – International Electrotechnical Commission)

CENELEC – Comité Europeen de Normalization Electrotechnique

ISO – International Organization for Standardization.

Standarde naționale, care au la bază standardele internaționale pe care le preiau fie integral, fie parțial, cu adaptare la tradiția națională

Standardele românești, preluate integral, au același număr de identificare ca și standardele internaționale, precedat de SR (standard român). Exemple: SR EN 60617 (pe părți) – Simboluri grafice pentru scheme electrice, SR EN 61082 (pe părți) – Întocmirea documentelor folosite în electrotehnică, etc.

Sunt în vigoare și alte materiale normative naționale ca, de exemplu, Normativul privind proiectarea și executarea instalațiilor electrice cu tensiuni până la 1000 V c.a. și 1500 V c.c (I 7-98).

Tendințe actuale în domeniul instalațiilor electrice interioare

InSideControl – Controlul clădirilor – în fiecare zi, fiecare setare, oriunde, oricând

InSideControl, produsul oferit de Schneider-Electric oferă controlul mobil al clădirii cu ușurință.

Smartphone-urile și tabletele sunt din ce în ce mai mult parte integrantă din viața de zi cu zi. Acum este de la sine înțeles că oamenii își verifică e-mailurile și intră pe internet de oriunde cu dispozitive mobile. Schneider Electric InSideControl continuă această tendință și transformă smartphone-urile și tabletele în ceva mai mult decât telecomenzi pentru funcțiile clădirii. Treceți KNX la următorul nivel de confort!

Control total – oriunde, oricând

InSideControl oferă opțiunea controlului mobil al clădirilor: InSideControl face din smartphone-uri și tablete, acasă sau la serviciu, o telecomandă ușor de utilizat pentru toate funcțiile clădirii.

InSideControl App oferă întregul confort al sistemului KNX. Controlul iluminatului și temperaturii, accesarea scenariilor, vizualizarea consumului energetic sunt doar câteva dintre posibilitățile aplicației.

Efort mic, efect maxim

Fie într-o locuință, fie într-o mică clădire de birouri, ca parte a unei instalații noi sau ca modernizare a unei instalații KNX existente – nu există o cale mai rapidă și mai ușoară de a

implementa controlul mobil al clădirii. Instalând și configurând KNX InSideControl IP-Gateway, descărcați InSideControl App, și controlul modern al clădirii va fi gata gata de utilizat.

Amplasare, conectare și configurare

Cu Schneider Electric InSideControl, controlul mobil al clădirii poate fi realizat cu ușurință. Doar conectați KNX InSideControl IP-Gateway în tabloul electric la magistrala KNX, instalați aplicația gratuită InSideControl App, și utilizați Schneider Electric InSideControl Builder pentru configurare.

Apoi toate funcțiile clădirii pot fi ușor controlate de pe smartphone sau tabletă – fără servere, sau alte dispozitive intermediare.

KNX InSideControl

IP-Gateway are o carcasă compactă pentru mai mult spațiu în tabloul electric și integrare ușoară .

Aplicații inter sisteme

InSideControl App este compatibilă cu sistemele de operare ale celor mai cunoscute smartphone-uri și tablete și este disponibilă pe platformele comune. Configurația poate fi transferată ușor dintr-un aparat în altul – indiferent de sistemul de operare utilizat.

Fiecare instalare cu interfață personalizată

Cu Schneider Electric InSideControl Builder se adapta aplicațiile, rapid și ușor, denumind camerele sau zonele individuale și atribuind-le funcțiile dorite. Creați diferite configurații pentru mai mulți utilizatori: de ex. funcții de bază pentru copii și versiuni complete pentru părinți.

Camerelor le pot fi ușor asociate iconițe pentru a creste claritatea și a face utilizarea aplicației și mai intuitivă și ușoară.

Manevrare ușoară

O interfața aplicației, ușor de înțeles pentru utilizatori.

Despre InSideControl App

Controlul iluminatului și HVAC împreună sau individual

• Atmosferă plăcută prin sfera de lumină și control RGB

• Scenarii pentru control ușor al diferitelor situații zilnice

• Setarea și recepționarea notificărilor

• Eficiență energetică datorită urmăririi inteligente a consumurilor

• Două scheme de culoare pentru interfață și iconițe individuale pentru camere și funcții

Prezentarea unui exemplu de sistem inteligent

Smart Wiring™ [13] permite conectarea simplă a echipamentului electric cu ultimele tehnologi existente alături de sistemele de divertisment (sisteme audio, home cinema etc.) oferind o comunicare rapidă cu diverse dispozitive (smartphone-uri, tablete, PC-uri).

Cumpărătorii din zilele de astăzi așteaptă ca noile case să fie pregătite pentru era digitală facilitând găzduirea:

Mai multor puncte de conectare pentru cablurile TV

Mai multe puncte pentru conectarea la internet (prize CAT-5E)

Dispozitivelor pentru securitate

Dispozitivelor cu soluții de distribuție video

Multiple linii de telefonie

În trecut casele au fost prevăzute doar cu două tipuri de instalații: instalația de alimentare și telefonie.

O parte din proprietari dețin un sistem de alarmă construit de ei ceea ce implică o rețea de fire în mod special pentru acest lucru și poate un sistem audio, din nou cu o altă rețea de fire.

Adunând toate rețelele existente rezultă o mulțime de fire care împânzesc casa, realizând fiecare funcția sa necomunicând cu alte sisteme.

Casele au nevoie de un sistem pentru gestionarea eficientă a datelor, aspectelor de divertisment, telefonie și securitate atât acum cât și în prezent.

Cablurile TV și cele de telefon convenționale nu pot să ofere suport tehnologiei de astăzi și devin demodate. Soluția pentru nevoile digitale este un sistem inteligent precum (Smart Wiring™) care prevede folosirea cablurilor: CAT5E, RG6 și cabluri audio într-o rețea sub formă de stea centralizând totul în Cutia de Distribuție a Casei (CDC, în Engleză: Home Distribution Box – HDB). CDC-ul cuprinde echipamente precum: modem-uri, rutere de rețea & switch-uri, hub-uri pentru distribuție audio și video.

Smart Wiring™ folosește o rețea sub formă de stea care combină: sistemul de telefonie, aspecte de divertisment (cablul de televiziune, DTH – televiziune digitală & IPTV – protocolul de internet pentru televiziune), sisteme audio, calculatoare personale și internet, iluminare inteligentă, securitate, sisteme de automatizare a casei și multe altele, oferind de asemenea flexibilitatea de a adăuga și modifica în viitor fără vreo eventuală investiție majoră pentru realizarea rețelei de cabluri.

Fig. nr. 11 – Amplasarea sistemului inteligent Smart Wiring™ într-o locuință [10]

Avantajele conexiunii în formă de stea:

Folosind o conexiune stea, fiecare ieșire are propriul ”acces” la Cutia de Distribuției a Casei. Există trei mari avantaje:

Flexibilitate – toate schimbările în serviciile de distribuție pot fi ușor făcute la Cutia de Distribuție a Casei. Fiecare ieșire poate să fie tratată independent de toți ceilalți (în moduri clasice, în buclă, de asemenea cunoscute sub numele de ”lanț Daisy”, fiecare ieșire fiind înseriată – în cazul acesta ieșirile nu pot fi interpretate în mod separat.)

Problema izolației – când apare o întrerupere pe traseu, doar o singură ieșire este afectată.

Calitatea semnalului – fiecare conexiune adițională este o sursă potențială de interferență și alte probleme care ar putea cauza pierderea semnalului.

Facilitățile sistemului Smart Wiring™:

Flexibilitate:

Smart Wiring™ oferă posibilitatea partajării multiplelor conexiuni audio, de divertisment și telefonie la locații diferite și de asemenea interschimbabile la pe loc. Permite adăugarea în viitor, conversia către un birou și eventual automatizarea locuinței.

Independență:

Smart Wiring™ oferă proprietarilor o soluție la libera alegere asupra vreunui furnizor. Este un concept agnostic pentru legarea firelor; adaptându-se la mai mulți furnizori de servicii.

Estetice:

Smart Wiring™ are grijă de nevoile unei instalații electrice interioare eliminând eventualele lucrări interne a instalației. Acest lucru îmbunătățește interiorul locuinței păstrând un aspect plăcut și modern.

Financiare:

Smart Wiring™ se asigură că viitoarele restructurări a instalației va elimina posibilitatea unei investiții majore.

De viitor:

Smart Wiring™ este capabil adaptării cu era tehnologiei. Facilitând integrarea și adaptarea cu tehnologii de viitor.

De securitate:

Gospodăria nu va fi la fel cu Smart Wiring™. Plasând interfoane în fiecare cameră, sistemul cu sisteme video de supraveghere și control, oferind o securitate maximă a gospodăriei.

Fig. nr. 12 – Distribuitor casă [11]

Sistem inteligent pentru semnalizare și comandă în instalațiile electrice aferente clădirilor

Utilitatea sistemului

Utilitatea sistemului inteligent pentru semnalizare și comandă se aplică unei clădiri, locuințe căreia i se dorește gestionarea controlului prin diverse dispozitive (telefoane mobile, tablete sau PC-uri).

Utilitatea practică a sistemului inteligent este de a oferi confortul și posibilitatea asupra controlului sistemelor incluse într-o locuință (ex. controlul asupra temperaturii, instalației de iluminat, sistemului audio, etc.)

Expunând extern sistemul inteligent într-un mod securizat acesta va putea fi controlat cu ușurință de către proprietar doar prin simple atingeri a unui ecran tactil care va acționa diverse comenzi asupra sistemului.

Însumate toate aceste aspecte creează facilitatea unui control total asupra propriei locuințe, oferind liniștea și armonia de care proprietarul are tot dreptul să beneficieze.

Schema bloc generală a sistemului

Legendă arhitectură:

RaspberryPi – Placa de dezvoltare căreia îi sunt atașați senzorii și traductoarele, alături de alte sisteme.

C.N. – Centru de notificare a dispozitivelor

S.I. – Serverul de internet al plăcii de dezvoltare (Apache)

S.E – Serverul de evenimente, înregistrare toate acțiunile care sunt realizate în sistem

S.V. – Serverul video, pentru transmiterea în direct a semnalului video

ST-1 – Senzor temperatura instalației (încălzirii)

ST-2 – Senzor temperatură ambient (cameră)

SM – Senzor mișcare

CI-1 – Corp de iluminat cameră de zi

CI-2 – Corp de iluminat dormitor

WEBCAM – Camera video (web cam) pentru transmisia semnalului video

HTTP – protocolul de comunicare dintre router, RaspberryPi Pi și dispozitive

Firewall – Securizarea RaspberryPi-ului asupra posibilelor atacuri

Router – Dispozitiv fizic care va asigura conexiunea dintre RaspberryPi Pi și dispozitive adiționale

Arhitectura plăcii de dezvoltare RaspberryPi

Scurtă prezentare a plăcii de dezvoltare RaspberryPi

La începutul anului 2011 un micro calculator prevăzut cu cipuri și conectori I/O cu gustosul nume de Raspberry Pi a început să ia amploare prin mass-media atrăgând curiozitatea jurnaliștilor și tuturor persoanelor pasionate de tehnologie din întreaga lume.

Raspberry Pi e mic, un micro calculator dezvoltat de fundația ”The Raspberry Pi Foundation”, o fundație de caritate din Marea Britanie intenționând să ofere calculatoare la un preț redus și programe digitale gratuite studenților. Scopul lor final este promovarea educația informatică, crezând că acest micro calculator le va oferi acest lucru.

Placa de circuit (PCB) găzduiește conectări pentru intrări și ieșiri precum și PC-uri normale fac. În prezent fundația produce plăcile de circuit fără carcasă. Cele două versiuni carcasă încă sunt în teste dar versiunea finală a plăcii este destinată unei ediții educaționale cu, carcasă, documentație și un sistem de operare predefinit.

Din punct de vedere al părții software (virtuale) sunt disponibilei 3 versiuni pentru sistemul de operare, toate aceste versiuni fiind o distribuție specifică de LINUX.

Specificații și performanțe

Mărimea plăcii de dezvoltare e cât o carte de dezvoltare produsă de Broadcom (BCM2835 – SoC).

Acest SoC include un procesor de 32 de biți (ARM1176JZFS), la o frecvență de 700MHz, și un un procesor pentru partea grafică Videocore IV GPU.

De asemenea memoria plăcii pentru cele 2 revizii e de 256MB și 512 MB, alimentată la o tensiune continuă de 5V.

Consum: 2.5 W (modelul A), 3.5 W (modelul B)

Placa de dezvoltare Raspberry Pi este prevăzută cu următoarele interfețe:

GPIO – General Purpose Input Output – sunt pinii pentru conectarea senzorilor și traductoarelor.

Slot card SD (GNU/Linux) – Suport pentru stocarea și rulare unei distribuții specifice plăcii a sistemului de operare LINUX.

RCA – Prevăzut cu o intrare RCA, conector audio video, cunoscut și sub numele de S-VIDEO

Jack (3.5mm) – Conector Jack (3.5mm) pentru redarea semnalului audio

HDMI – Interfață high-definition

LAN – prevăzut cu o mufă (mamă) pentru conectarea plăcii la rețeaua LAN

USB – Deține 2 porturi USB pentru conectarea diverselor dispozitive de intrare (tastatură, mouse) sau chiar altele precum: web cam-uri, imprimante, hard-uri externe.

Cele mai întâlnite limbaje de programare ale plăcii sunt: C, C++, C# și Python (cel mai folosit).

Pentru realizarea controlului plăcii de dezvoltare și interacționarea cu senzorii și dispozitivele conectate e nevoie de realizarea unui script / cod pentru interacționarea care va avea acces la pinii GPIO ai plăcii de dezvoltarea (Fig. nr. ???)

Fiecărui pin al plăcii de dezvoltare îi corespunde un nume și un număr care poate îndeplini anumite funcționalități. În figura nr. ??? de mai jos se află reprezentarea pinilor cu numărul lor și funcția care o poate îndeplini.

Legendă:

3.3 VDC Power, 5.0 VDC Power – pini folosiți pentru alimentarea circuitului electronic (senzorilor, traductoarelor și alte componente electronice ale circuitului),

SDA0 (I2C) – pin folosit pentru transmisie de date, permite conexiune dintre alte dispozitive I2C prin cadrul celor două căi: de date (SDA) și una pentru ceas (SCL).

DNC – Pinul pentru pământare, abrevierea vine de la Do Not Connect (nu se va conecta decât pământarea circuitului)

GPIO – pin folosit pentru interacțiunea cu un senzor sau traductor, acest pin poate fi definit ca intrare (input) sau ieșire (output); citind sau realizând scrierea a datelor pe fiecare dintre pin GPIO (General Purpose Input Output).

MOSI – Master Output Slave Input (Pin-ul principal ca ieșire, cel secundar ca intrare).

SCLK – ieșire a pinului principal pentru ceas

Senzori și traductoare utilizate în instalațiile electrice moderne

Senzor de temperatură rezistent la apă DS18B20

Senzorul de temperatură digital DS18B20 oferă măsurători de la 9-biți până la 12-biți în Celsius și deține o funcție de alarmă cu partea superioară non volatilă și cea inferioară cu puncte de declanșare.

DS18B20 comunică printr-un fir, prin definiție necesită doar o lingură linie de date (și pământare) pentru comunicarea cu microprocesorul central. Intervalul de funcționare se află între -55°C și +125°C și are o acuratețe de ±0.5°C pe o scară de -10°C până la +85°C.

Adițional, DS18B20 se poate alimenta de la linia de date fiind ca și ”parazit” eliminând nevoia unei surse de alimentare externe.

Fiecare DS18B20 are un cod unic de 64 de biți, care permite conectarea mai multor senzori DS18B20 pe un singur fir. Prin faptul acesta folosind un singur microprocesor pentru a controla o largă arie de senzori DS18B20. Aplicațiile pot beneficia de această facilitate incluzând controale HVAC pentru monitorizarea temperaturii în interiorul clădirilor sau mașinilor, și procesul de monitorizare și control al sistemelor.

Specificații

Necesită un singur fir pentru conectare

Pentru comunicare folosește Pin Port Pin

Deține un cod serial de 64 de biți unic

Stocat într-o placă încorporată ROM

Posibilitatea utilizări într-un număr mare

Folosirea în cadrul aplicațiilor pentru sesizarea temperaturii

Nu necesită alte componente

Se poate alimenta de la linia de date; sursa de tensiune

Tensiunea de operare este între 3.0V și 5.5V

Măsoară temperaturi între -55°C și +125°C (-67°F și +257°F)

Acuratețe de ±0.5°C între -10°C și +85°C

De la 9 la 12 biți

Convertește temperatura într-un cuvânt digital de 12 biți

Timpul de răspuns 750ms (Max)

Fig. nr. 23 – Formatul registrului de temperatură [22]

Fig. nr. 24 – Relația dintre temperatură și date (binare) [23]

Fig. nr. 25 – Schema electronică pentru alimentarea de pe linia de date [24]

Fig. nr. 26 – Schema electronică pentru alimentarea de pe o sursă externă de alimentare [25]

Fig. nr. 28 – Harta memoriei [26]

Fig. nr. 29 – Configurarea registrului [27]

Fig. nr. 30 – Configurare acuratețe temperatură [28]

Fig. nr. 31 – Generatorul CRC [29]

Fig. nr. 32 – Configurația fizică a senzorului [30]

Senzor proximitate BV4241

Specificații

Tensiunea de funcționare 3.3 V – 5 V

Interfața I2C de la 1.7V la 5V

Dimensiuni: 26 x 16 mm

Funcționalități

Deține un senzor infra-roșu

Acuratețe de 16 biți

Curentul de operare între 10mA și 200mA

Potrivit pentru întreruperea iluminatului înconjurător

Distanța de operare până în 200mm

Fig. nr. 36 – Diagrama de circuit, BV4241 [34]

Detectoare de mișcare pentru interior si exterior –  ARGUS – detectoare de mișcare standard

Senzorul de mișcare este destinat utilizării în exterior, dar poate fi utilizat și în interior.

Senzorul de mișcare este instalat ca parte a circuitului de iluminat și va aprinde lampa (lămpile) în momentul în care sesizează în câmpul său o mișcare a unui corp emițător de căldură. De asemenea, va stinge lampa (lămpile) după încetarea mișcării în câmp, într-un interval de timp stabilit de utilizator.

Caracteristici și specificații:

Raza de detecție 12M, cu un unghi solid de acoperire de 120

Lampă incandescentă: 1000 W

Lampă cu halogen 230 V: 900 W

Lampă cu halogen cu transformator electric: 250 VA

Halogen cu transformator cu miez de fier: 500VA

Tuburi fluorescente: 200 VA (fluorescent necompensat)

Lămpi fluorescente compacte: 3 x 23 W

Curent max.:10A, cos phi = 0,6

Reglarea timpului: de la 3 secunde la 30 min.

Comutator de perete cu reglare manuală

Montabil pe perete sau pe jgheab

Capac IP55 rezistent la intemperii

Alimentare: 220 – 240V/50Hz

Comandă Lux: "Luminozitate" reglabilă cu sensibilitate de la 5 până la 2000 lux

Siguranță fuzibilă: Deconector automat de 10A legat în serie

Principiu de operare:

Senzorul de mișcare este un comutator electronic ON/OFF (I/O) pentru aprinderea automată a luminii. Atunci când senzorul a detectat o mișcare a unei surse de căldură (de ex. persoană, animal) între două zone PIR, lumina se aprinde automat. Dacă nu se mai detectează o altă mișcare, senzorul pornește temporizarea și va opri iluminarea după perioada de timp prestabilită "Timp".

Atâta timp cât există mișcare în câmpul vizual PIR, iluminatul va rămâne pornit (ON). Orice mișcare a unei surse de căldură poate determina senzorul să declanșeze iluminatul, (incluzând mișcarea de aer fierbinte) de ex. curent de aer de la o fereastră deschisă sau o ușă, guri de aerisire din apropiere, autoturisme de pe stradă sau mișcări de pe proprietatea învecinată. Aceasta depinde de unghiul înclinării capului de senzor și distanța față de senzor.

Fig. nr. 38 – Schemele electrice de montare [36]

Reglări:

(Timp): Această comandă permite reglarea timpului de la 3 secunde

până la 30 min. Temporizatorul începe să funcționeze după detectarea ultimei mișcări.

Dacă există o mișcare de la o sursă de căldură în zona de detectare,

iluminatul va rămâne pornit și timpul se va reseta.

(Lumină ambientală): Reglarea controlează sensibilitatea până la

nivelul luminii de fundal la care detectorul va funcționa automat. Se poate

seta la orice nivel între 5 lux și lumina zilei. Unitatea funcționează când

detectează mișcarea și lumina ambientală se află la nivelul ales sau sub acesta.

Indicare LED a stării PIR stand-by și moduri activate:

Indicare internă LED (în spatele lentilelor) funcționează cu comanda (Lumină ambientală).

Va începe să pâlpâie și detectorul va începe să reacționeze la obiectele în mișcare când nivelul de lumină ambientală este mai redus decât setarea detectorului la comanda " " (Lumină ambientală).

Va rămâne aprins atât timp cât este activat timpul de setare la comanda " " (Timp) la care se activează detectorul.

Indicare LED a stării PIR stand-by și moduri activate:

Indicare internă LED (în spatele lentilelor) funcționează cu comanda „” (Lumină ambientală).

Va începe să pâlpâie și detectorul va începe să reacționeze la obiectele în mișcare când nivelul de lumină ambientală este mai redus decât setarea detectorului la comanda” „ (Lumină ambientală).

Va rămâne aprins atât timp cât este activat timpul de setare la comanda „ ” (Timp) la care se activează detectorul.

Fig. nr. 40 – Detectarea câmpului sinusoidal [38]

Fig. nr. 41 – Schema bloc de funcționare [39]

Detector de fum ARGUS

Detectorul de fum ARGUS Connect (numit în continuare detector de fum) este un detector de fum alimentat de la o baterie, pentru detecția din timp a focurilor mocnite și deschise, cu degajare de fum în spații interioare.

LED-ul roșu se aprinde intermitent la fiecare 40 de secunde.

Dacă bateria nu furnizează suficientă energie, se va emite un semnal sonor din 40 în 40 de secunde împreună cu aprinderea intermitentă a LED-ului roșu. Detectorul de fum va continua să funcționeze încă 30 de zile.

Fig. nr. 42 – Funcționare fără fir [40]

Fig. nr. 43 – Raza maximă de acțiune [41]

Date tehnice

Baterie: monobloc, 9 V, IEC 6LR61 (alcalină)

Durata de viață a bateriei: aproximativ 2 ani

Durata de viață a dispozitivului: aproximativ 10 ani

Tensiune de alimentare: AC 230 V -15% / +10% 50 Hz

Semnalul de eroare a bateriei: la fiecare 30 de secunde, timp de 30 de zile

Afișaj optic: LED roșu

Sensibilitate: EN 14604:2005

Intensitatea emițătorului de semnal: aproximativ 85 dB (A) la o distanță de 3 m

Rețea: până la 40 de alarme de fum

Cablu de rețea: Tip: J.Y(St)Y 2 x 2 x 0,6 (de exemplu, cablu telefonic cu un diametru fir de 0,6 mm)

Lungime cablu: max. 500 m în total

Frecvența radio: 868 MHz

Raza de acțiune

La interior / la exterior: max. 30 m / max. 100 m

Intervalul de temperaturi de lucru: 0 °C … +60 °C

Tip de protecție IP 42

Dimensiuni: 112×44 mm (ø x H)

Aviz VdS: G207119

Conform: EN 14606

eLectricalControl – aplicația sistemului inteligent pentru comandă (iOS / iPhone)

Aplicația smartphone a sistemului inteligent oferă următoarele funcționalități:

Comandă a circuitelor de iluminat

Comutare pornire/oprire sistemului de alarmă

Monitorizare video

Afișare temperatură ambient / instalație

Vizualizare evenimente realizate de sistem

Cum funcționează eLectricalControl ?

Funcționarea aplicației eLectricalControl se bazează pe îmbinarea mai multor tehnologii precum:

WebIOPI framework

Flask framework

Apache

MJPG-Streamer

Sistemul de operare al plăcii – Linux (ediția Raspbian)

Prin conectarea senzorilor de temperatură, mișcare și dispozitivului de vizualizare (web cam) la placa de dezvoltare vom asigura interacționarea cu mediul în care va fi amplasat sistemul.

Alimentând placa Raspberry Pi va permite dispozitivelor periferice să comunice cu aplicația pentru telefonul mobil, astfel monitorizarea și controlul vor putea fi realizate din cadrul aplicației.

Conectarea la placa de dezvoltare se va realiza printr-un terminal prin protocolul SSH astfel vom avea următoarea comandă ssh pi@192.168.10.11

Fig. nr. 48 – Conectare prin terminal la Raspberry Pi

pi – numele de utilizator al sistemului de operare Linux (ediția Raspbian)

192.168.10.11 – Adresa IP a Raspberry Pi-ului prin care poate fi accesat.

Pentru pornirea SV (Serverului Video) se vor urma următoarele comenzi în terminal:

pi@raspberrypi ~ $ ls

pi@raspberrypi ~ $ cd mjpg-streamer/

pi@raspberrypi ~/mjpg-streamer $ ls

pi@raspberrypi ~/mjpg-streamer $ ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"

Rezultând astfel imaginea trimisă de dispozitivul video (web cam):

Fig. nr. 49 – Verificare / vizualizare semnal video (web cam)

În scopul pornirii serverului de evenimente (S.E.) se vor realiza următorii pași în terminal:

pi@raspberrypi ~ $ ls

Desktop  WebIOPi-0.6.0  WebIOPi-0.6.0.tar.gz  bin  mjpg-streamer  mjpg-streamer-rpi.tar.gz  pievent  python_games  tmp  web cam

pi@raspberrypi ~ $ cd pievent/

pi@raspberrypi ~/pievent $ ls

app.py  app.py.save  flask

pi@raspberrypi ~/pievent $ ./app.py

* Running on http://0.0.0.0:5000/

* Restarting with reloader

Rezultând astfel funcționarea serverului de evenimente, unde se vor stoca evenimentele întâlnite în sistem:

Fig. nr. 50 – Pornirea serverului de evenimente

În cardul aplicației mobile vom avea următorul cod pentru realizarea comenzii de comutare a circuitelor de iluminat

#import "ECLightsViewController.h"

#import "AFNetworking.h"

static NSString *const BaseURLString = @"http://192.168.10.11:8000/";

@interface ECLightsViewController ()

@property (retain, nonatomic) IBOutlet UILabel *lightsScreenTitleLabel;

@property (retain, nonatomic) IBOutlet UILabel *livingRoomLabel;

@property (retain, nonatomic) IBOutlet UIButton *livingRoomButton;

@property (assign, nonatomic) int livingRoomLightResponseState;

@property (retain, nonatomic) NSURL *url;

@property (retain, nonatomic) AFHTTPClient *client;

@property (retain, nonatomic) NSString *baseURL;

@end

@implementation ECLightsViewController

@synthesize url, client, baseURL;

– (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

   self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

   if (self) {

       // Custom initialization

   }

   return self;

}

– (void)viewDidLoad

{

   [super viewDidLoad];

   [self.lightsScreenTitleLabel setFont:[UIFont fontWithName:FONT_NAME size:ICONS_TITLE_FONT_SIZE]];

   [self.livingRoomLabel setFont:[UIFont fontWithName:FONT_NAME size:LABEL_NORMAL_FONT_SIZE]];

   //Set default value, just in case 😀

   self.livingRoomLightResponseState = 404;

   NSString *livingRoomLightPathState = STARE_LUMINA_CAMERA_DE_ZI;

   baseURL = [NSString stringWithFormat:@"%@%@",BaseURLString,livingRoomLightPathState];

   url = [NSURL URLWithString:baseURL];

   NSURLRequest *request = [NSURLRequest requestWithURL:url];

   client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:BaseURLString]];

   [client getPath:STARE_LUMINA_CAMERA_DE_ZI

        parameters:nil

           success:^(AFHTTPRequestOperation *operation, id responseObject) {

               NSLog(@"Succes!");

           }

           failure:^(AFHTTPRequestOperation *operation, NSError *error) {

               NSLog(@"Failure");

           }];

   AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

   [client registerHTTPOperationClass:[AFHTTPRequestOperation class]];

   [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

       NSString *livingRoomState = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];

       NSLog(@"State: %@", livingRoomState);

       self.livingRoomLightResponseState = [livingRoomState intValue];

       if (self.livingRoomLightResponseState == 0) {

           [self.livingRoomButton setTitle:@"PORNIT" forState:UIControlStateNormal];

       } else {

           [self.livingRoomButton setTitle:@"OPRIT" forState:UIControlStateNormal];

       }        

   } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

       NSLog(@"Error: %@", error);

   }];

   [operation start];

}

//Actionarea comutatorului pentru circuitul de iluminat

– (IBAction)livingRoomButtonTapped:(id)sender {

   UIButton* button = (UIButton*)sender;

   button.selected = !button.selected;

   NSString *action;

   if (button.selected) {

       //Oprire lumina camera de zi

       action = OPRESTE_LUMINA_CAMERA_DE_ZI;

       [self.livingRoomButton setTitle:@"PORNIT" forState:UIControlStateNormal];

   } else {

       // Pornire lumina camera de zi

       action = PORNESTE_LUMINA_CAMERA_DE_ZI;

       [self.livingRoomButton setTitle:@"OPRIT" forState:UIControlStateNormal];

   }

   NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:nil];

   AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://192.168.10.11:8000"]];

   [httpClient postPath:action parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {

       NSString *responseStr = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];

   } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

   }];

}

– (IBAction)applyButtonPressed:(id)sender {

   [self.delegate lightsViewControllerDidFinish:self];

}

– (void)didReceiveMemoryWarning

{

   [super didReceiveMemoryWarning];

   // Dispose of any resources that can be recreated.

}

– (void)dealloc {

   [_lightsScreenTitleLabel release];

   [_livingRoomLabel release];

   [_livingRoomButton release];

   [super dealloc];

}

@end

În cadrul secțiunii de securitate, monitorizare și sistem de alarmă se va realiza cu următoare secvență de cod:

#import "ECSecurityViewController.h"

@interface ECSecurityViewController ()

@end

@implementation ECSecurityViewController

– (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

   self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

   if (self) {

       // Custom initialization

   }

   return self;

}

– (IBAction)webCamButtonPressed:(id)sender {

   ECWebCamViewController *controller = [[[ECWebCamViewController alloc] initWithNibName:@"ECWebCamViewController" bundle:nil] autorelease];

   controller.delegate = self;

   controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

   [self presentViewController:controller animated:YES completion:nil];

}

– (void)viewDidLoad

{

   [super viewDidLoad];

   // Do any additional setup after loading the view from its nib.

}

– (void)webcamViewControllerDidFinish:(ECWebCamViewController *)controller

{

   [self dismissViewControllerAnimated:YES completion:nil];

}

– (IBAction)applyButtonPressed:(id)sender {

   [self.delegate securityViewControllerDidFinish:self];

}

– (void)didReceiveMemoryWarning

{

   [super didReceiveMemoryWarning];

   // Dispose of any resources that can be recreated.

}

@end

Fișierul ECMainViewController.h

#import "ECFlipsideViewController.h"

#import "ECDesignClassViewController.h"

#import "ECLightsViewController.h"

#import "ECSettingsViewController.h"

#import "ECSecurityViewController.h"

#import "ECTemperatureViewController.h"

#import "ECEventsViewController.h"

@interface ECMainViewController : ECDesignClassViewController <UIScrollViewDelegate,ECFlipsideViewControllerDelegate, ECLightsViewControllerDelegate, ECSecurityViewControllerDelegate, ECSettingsViewControllerDelegate, ECTemperatureViewControllerDelegate, ECEventsViewControllerDelegate>

– (IBAction)showInfo:(id)sender;

@end

Fișierul ECMainViewController.m

#import "ECMainViewController.h"

#import "AFHTTPClient.h"

#import "AFHTTPRequestOperation.h"

#import "REPagedScrollView.h"

#import "SMPageControl.h"

@interface ECMainViewController ()

@property (retain, nonatomic) IBOutlet UILabel *ScreenTitle;

@property (retain, nonatomic) IBOutlet SMPageControl *customPageControl;

@property (retain, nonatomic) IBOutlet UIButton *creditsButton;

@property (retain, nonatomic) REPagedScrollView *scrollView;

@end

@implementation ECMainViewController

@synthesize ScreenTitle;

@synthesize customPageControl;

@synthesize creditsButton;

@synthesize scrollView;

– (void)viewDidLoad

{

   [super viewDidLoad];

   self.creditsButton.hidden = YES;

   [self.ScreenTitle setFont:[UIFont fontWithName:FONT_NAME size:ICONS_TITLE_FONT_SIZE]];

   CGRect scrollViewFrame = CGRectMake(0, 64, self.view.bounds.size.width, self.view.bounds.size.height – 221);

   scrollView = [[REPagedScrollView alloc] initWithFrame:scrollViewFrame];

   scrollView.delegate = self;

   [scrollView.pageControl setBackgroundColor:[UIColor blueColor]];

   [scrollView.pageControl addTarget:self action:@selector(pageControl:) forControlEvents:UIControlEventValueChanged];

   scrollView.pageControl.hidden = YES;

   [self.view addSubview:scrollView];

   UIImage *ligthIconImage = [UIImage imageNamed:@"light-icon.png"];

   UIImageView *lightImageView = [[[UIImageView alloc] initWithImage:ligthIconImage] autorelease];

   UIView *sliderView = [[UIView alloc] initWithFrame:CGRectMake( (self.view.bounds.size.width / 2 ) – lightImageView.bounds.size.width / 2, ( (scrollViewFrame.size.height / 2 ) – lightImageView.bounds.size.height / 2) – 35, ligthIconImage.size.width, ligthIconImage.size.height)];

   UIButton *lightButton = [[UIButton alloc] init];

   [lightButton setBackgroundImage:[UIImage imageNamed:@"light-icon.png"] forState:UIControlStateNormal];

   [lightButton setBackgroundImage:[UIImage imageNamed:@"light-icon.png"] forState:UIControlStateHighlighted];

   [lightButton setFrame:lightImageView.frame];

   [lightButton addTarget:self action:@selector(goToLightsScreen:) forControlEvents:UIControlEventTouchUpInside];

   [sliderView addSubview:lightButton];

   UILabel *lightsTitle = [[[UILabel alloc] initWithFrame:CGRectMake(lightImageView.bounds.size.width/2 – 40, lightImageView.bounds.size.height, self.view.bounds.size.width, 60)] autorelease];

   [lightsTitle setText:@"Lumini"];

   [lightsTitle setFont:[UIFont fontWithName:FONT_NAME size:30]];

   [lightsTitle setBackgroundColor:[UIColor clearColor]];

   [lightsTitle setTextColor:[UIColor whiteColor]];

   [sliderView addSubview:lightsTitle];

   [scrollView addPage:sliderView];

   UIImage *securityIconImage = [UIImage imageNamed:@"security-icon.png"];

   UIImageView *securitytImageView = [[[UIImageView alloc] initWithImage:securityIconImage] autorelease];

   sliderView = [[UIView alloc] initWithFrame:CGRectMake((self.view.bounds.size.width / 2 ) – securitytImageView.bounds.size.width / 2 , (scrollViewFrame.size.height / 2 ) – securitytImageView.bounds.size.height / 2, securityIconImage.size.width, securityIconImage.size.height)];

   UIButton *securityButton = [[UIButton alloc] init];

   [securityButton setBackgroundImage:[UIImage imageNamed:@"light-icon.png"] forState:UIControlStateNormal];

   [securityButton setBackgroundImage:[UIImage imageNamed:@"light-icon.png"] forState:UIControlStateHighlighted];

   [securityButton setFrame:securitytImageView.frame];

   [securityButton addTarget:self action:@selector(goToSecurityScreen:) forControlEvents:UIControlEventTouchUpInside];

   [sliderView addSubview:securityButton];

   UILabel *securityTitle = [[[UILabel alloc] initWithFrame:CGRectMake(securitytImageView.bounds.size.width/2 – 60, securitytImageView.bounds.size.height, self.view.bounds.size.width, 60)] autorelease];

   [securityTitle setText:@"Securitate"];

   [securityTitle setFont:[UIFont fontWithName:FONT_NAME size:30]];

   [securityTitle setBackgroundColor:[UIColor clearColor]];

   [securityTitle setTextColor:[UIColor whiteColor]];

   [sliderView addSubview:securityTitle];

   [scrollView addPage:sliderView];

   UIImage *temperatureIconImage = [UIImage imageNamed:@"temperature-icon.png"];

   UIImageView *temperatureImageView = [[[UIImageView alloc] initWithImage:temperatureIconImage] autorelease];

   sliderView = [[UIView alloc] initWithFrame:CGRectMake((self.view.bounds.size.width / 2 ) – temperatureImageView.bounds.size.width / 2 , (scrollViewFrame.size.height / 2 ) – temperatureImageView.bounds.size.height / 2, temperatureIconImage.size.width, temperatureIconImage.size.height)];

   UIButton *temperatureButton = [[UIButton alloc] init];

   [temperatureButton setBackgroundImage:[UIImage imageNamed:@"temperature-icon.png"] forState:UIControlStateNormal];

   [temperatureButton setBackgroundImage:[UIImage imageNamed:@"temperature-icon.png"] forState:UIControlStateHighlighted];

   [temperatureButton setFrame:temperatureImageView.frame];

   [temperatureButton addTarget:self action:@selector(goToTemperatureScreen:) forControlEvents:UIControlEventTouchUpInside];

   [sliderView addSubview:temperatureButton];

   UILabel *temperatureTitle = [[[UILabel alloc] initWithFrame:CGRectMake(temperatureImageView.bounds.size.width/2 – 80, temperatureImageView.bounds.size.height, self.view.bounds.size.width, 60)] autorelease];

   [temperatureTitle setText:@"Temperatura"];

   [temperatureTitle setFont:[UIFont fontWithName:FONT_NAME size:30]];

   [temperatureTitle setBackgroundColor:[UIColor clearColor]];

   [temperatureTitle setTextColor:[UIColor whiteColor]];

   [sliderView addSubview:temperatureTitle];

   [scrollView addPage:sliderView];

   UIImage *eventsIconImage = [UIImage imageNamed:@"events-icon.png"];

   UIImageView *eventsImageView = [[[UIImageView alloc] initWithImage:eventsIconImage] autorelease];

   sliderView = [[UIView alloc] initWithFrame:CGRectMake((self.view.bounds.size.width / 2 ) – eventsImageView.bounds.size.width / 2 , (scrollViewFrame.size.height / 2 ) – eventsImageView.bounds.size.height / 2, eventsIconImage.size.width, eventsIconImage.size.height)];

   UIButton *eventsButton = [[UIButton alloc] init];

   [eventsButton setBackgroundImage:[UIImage imageNamed:@"events-icon.png"] forState:UIControlStateNormal];

   [eventsButton setBackgroundImage:[UIImage imageNamed:@"events-icon.png"] forState:UIControlStateHighlighted];

   [eventsButton setFrame:eventsImageView.frame];

   [eventsButton addTarget:self action:@selector(goToEventsScreen:) forControlEvents:UIControlEventTouchUpInside];

   [sliderView addSubview:eventsButton];

   UILabel *eventsTitle = [[[UILabel alloc] initWithFrame:CGRectMake(eventsImageView.bounds.size.width/2 – 80, eventsImageView.bounds.size.height, self.view.bounds.size.width, 60)] autorelease];

   [eventsTitle setText:@"Evenimente"];

   [eventsTitle setFont:[UIFont fontWithName:FONT_NAME size:30]];

   [eventsTitle setBackgroundColor:[UIColor clearColor]];

   [eventsTitle setTextColor:[UIColor whiteColor]];

   [sliderView addSubview:eventsTitle];

   [scrollView addPage:sliderView];

   self.customPageControl.numberOfPages = scrollView.pageControl.numberOfPages;

   [self.customPageControl setPageIndicatorImage:[UIImage imageNamed:@"inactive-bullet"]];

[self.customPageControl setCurrentPageIndicatorImage:[UIImage imageNamed:@"active-bullet"]];

   self.customPageControl.currentPage = self.scrollView.pageControl.currentPage;

   [self.customPageControl setIndicatorDiameter:0.0f];

   [self.customPageControl setAlignment:SMPageControlAlignmentCenter];

self.customPageControl.indicatorMargin = 0.0f;

self.customPageControl.indicatorDiameter = 0.0f;

   [self.customPageControl addTarget:self action:@selector(spacePageControl:) forControlEvents:UIControlEventValueChanged];

}

– (void)pageControl:(id)sender

{

NSLog(@"Current Page (UIPageControl) : %i", self.customPageControl.currentPage);

}

– (void)spacePageControl:(SMPageControl *)sender

{

   self.customPageControl.currentPage = self.scrollView.pageControl.currentPage;

NSLog(@"Current Page (SMPageControl): %i", sender.currentPage);

}

– (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

   self.customPageControl.currentPage = self.scrollView.pageControl.currentPage;

}

– (void)didReceiveMemoryWarning

{

   [super didReceiveMemoryWarning];

   // Dispose of any resources that can be recreated.

}

#pragma mark – Flipside View

– (void)flipsideViewControllerDidFinish:(ECFlipsideViewController *)controller

{

   [self dismissViewControllerAnimated:YES completion:nil];

}

– (void)lightsViewControllerDidFinish:(ECLightsViewController *)controller

{

   [self dismissViewControllerAnimated:YES completion:nil];

}

– (void)securityViewControllerDidFinish:(ECSecurityViewController *)controller

{

   [self dismissViewControllerAnimated:YES completion:nil];

}

– (void)settingsViewControllerDidFinish:(ECSettingsViewController *)controller

{

   [self dismissViewControllerAnimated:YES completion:nil];

}

– (void)temperatureViewControllerDidFinish:(ECTemperatureViewController *)controller

{

   [self dismissViewControllerAnimated:YES completion:nil];

}

– (void)eventsViewControllerDidFinish:(ECEventsViewController *)controller

{

   [self dismissViewControllerAnimated:YES completion:nil];

}

//Navigare ecran pentru controlul circuitelor de iluminat

– (IBAction)goToLightsScreen:(id)sender {

   ECLightsViewController *controller = [[[ECLightsViewController alloc] initWithNibName:@"ECLightsViewController" bundle:nil] autorelease];

   controller.delegate = self;

   controller.modalTransitionStyle = UIModalPresentationFullScreen;

   [self presentViewController:controller animated:YES completion:nil];

}

//Navigare ecran de securitate (alarma si monitorizare video)

– (IBAction)goToSecurityScreen:(id)sender {

   ECSecurityViewController *controller = [[[ECSecurityViewController alloc] initWithNibName:@"ECSecurityViewController" bundle:nil] autorelease];

   controller.delegate = self;

   controller.modalTransitionStyle = UIModalPresentationFullScreen;

   [self presentViewController:controller animated:YES completion:nil];

}

//Navigare ecran penru afisarea temperaturii

– (IBAction)goToTemperatureScreen:(id)sender {

   ECTemperatureViewController *controller = [[[ECTemperatureViewController alloc] initWithNibName:@"ECTemperatureViewController" bundle:nil] autorelease];

   controller.delegate = self;

   controller.modalTransitionStyle = UIModalPresentationFullScreen;

   [self presentViewController:controller animated:YES completion:nil];

}

//Navigare ecran de evenimente

– (IBAction)goToEventsScreen:(id)sender {

   ECEventsViewController *controller = [[[ECEventsViewController alloc] initWithNibName:@"ECEventsViewController" bundle:nil] autorelease];

   controller.delegate = self;

   controller.modalTransitionStyle = UIModalPresentationFullScreen;

   [self presentViewController:controller animated:YES completion:nil];

}

//Navigare ecran de setări

– (IBAction)goToSettingsScreen:(id)sender {

   ECSettingsViewController *controller = [[[ECSettingsViewController alloc] initWithNibName:@"ECSettingsViewController" bundle:nil] autorelease];

   controller.delegate = self;

   controller.modalTransitionStyle = UIModalPresentationFullScreen;

   [self presentViewController:controller animated:YES completion:nil];

}

– (void)dealloc {

   [super dealloc];

   [scrollView release];

   [ScreenTitle release];

   [customPageControl release];

   [creditsButton release];

}

@end

Afișare temperatură ambient / instalație

#import "ECTemperatureViewController.h"

#import "AFNetworking.h"

static NSString *const BaseURLString = @"http://192.168.10.11:8000/";

@interface ECTemperatureViewController ()

@property (retain, nonatomic) IBOutlet UILabel *watterInstalationTemperatureValueLabel;

@property (retain, nonatomic) AFHTTPRequestOperation *operation;

@end

@implementation ECTemperatureViewController

@synthesize operation;

– (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

   self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

   if (self) {

       // Custom initialization

   }

   return self;

}

– (IBAction)applyButtonPressed:(id)sender {

   [operation pause];

   [self.delegate temperatureViewControllerDidFinish:self];

}

– (void)viewDidLoad

{

   [super viewDidLoad];

   NSDateFormatter *formatter;

   NSString *dateString;

   formatter = [[NSDateFormatter alloc] init];

   [formatter setDateFormat:@"dd-MM-yyyy HH:mm"];

   dateString = [formatter stringFromDate:[NSDate date]];

   [formatter release];

   [self.watterInstalationTemperatureValueLabel setText:@""];

   [self getTemperure];

   [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(getTemperure) userInfo:nil repeats:YES];

}

– (void)getTemperure {

   NSString *baseURL = [NSString stringWithFormat:@"%@%@",BaseURLString,TEMPERATURA_INSTALATIE];

   NSURL *url = [NSURL URLWithString:baseURL];

   NSURLRequest *request = [NSURLRequest requestWithURL:url];

   AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:BaseURLString]];

   [client getPath:TEMPERATURA_INSTALATIE

        parameters:nil

           success:^(AFHTTPRequestOperation *operation, id responseObject) {

               NSLog(@"Succes!");

           }

           failure:^(AFHTTPRequestOperation *operation, NSError *error) {

               NSLog(@"Failure");

           }];

   operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

   [client registerHTTPOperationClass:[AFHTTPRequestOperation class]];

   [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

       NSString *temperatureValue = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];

       NSString *valueToDisplay = [NSString stringWithFormat:@"%@ %@",temperatureValue, TEMPERATURE_CELSIUS];

       [self.watterInstalationTemperatureValueLabel setText:valueToDisplay];

   } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

       NSLog(@"Error: %@", error);

   }];

   [operation start];

}

– (void)didReceiveMemoryWarning

{

   [super didReceiveMemoryWarning];

   // Dispose of any resources that can be recreated.

}

– (void)dealloc {

   [_watterInstalationTemperatureValueLabel release];

   [super dealloc];

}

@end

Vizualizare evenimente realizate de sistem

//

//  ECEventsViewController.m

//  eLectricalControl

//

//  Created by Alex SZILAGYI on 6/29/13.

//  Copyright (c) 2013 Universitatea din Oradea. All rights reserved.

//

#import "ECEventsViewController.h"

#import "AFNetworking.h"

@interface ECEventsViewController ()

@property (retain, nonatomic) IBOutlet UITableView *eventsTable;

@property (retain, nonatomic) NSDictionary *events;

@end

@implementation ECEventsViewController

@synthesize eventsTable;

– (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

   self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

   if (self) {

       // Custom initialization

   }

   return self;

}

– (void)viewDidLoad

{

   [super viewDidLoad];

   [self loadRaspberryPiEvents];

   eventsTable.dataSource = self;

   eventsTable.backgroundColor = [UIColor clearColor];

// Do any additional setup after loading the view from its nib.

}

– (void)loadRaspberryPiEvents {

   NSString *eventsURL = @"http://192.168.10.11:5000/pievent/api/v1.0/evenimente";

   NSURL *url = [NSURL URLWithString:eventsURL];

   NSURLRequest *request = [NSURLRequest requestWithURL:url];

   AFJSONRequestOperation *operation =

   [AFJSONRequestOperation JSONRequestOperationWithRequest:request

                                                   success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

                                                       NSLog(@"Data to store: %@", JSON);

                                                       self.events  = (NSDictionary *)JSON;

                                                       [self.eventsTable reloadData];

                                                   }

                                                   failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {

UIAlertView *av = [[UIAlertView alloc] initWithTitle:@"Eroare" message:[NSString stringWithFormat:@"%@",error] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];

[av show];

}];

[operation start];

}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

   NSArray *incomingEvents = [self.events copy];

   return [incomingEvents count];

}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

   static NSString *cellIdentifier = @"SettingsCell";

   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

   if(cell == nil)

   {

       cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];

   }

       NSString *eventTitle = [[[self.events objectForKey:@"evenimente"]  ] objectAtIndex:indexPath.row];

       NSLog(@"%@",eventTitle);

       NSString *eventData = [[[self.events objectForKey:@"evenimente"] objectForKey:@"date"] objectAtIndex:indexPath.row];

       NSLog(@"%@",eventData);

       [cell.textLabel setText:eventTitle];

       [cell.textLabel setTextColor:[UIColor whiteColor]];

   return cell;

}

– (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

{

   cell.backgroundColor = [UIColor clearColor];

   cell.contentView.backgroundColor = [UIColor clearColor];

}

– (void)didReceiveMemoryWarning

{

   [super didReceiveMemoryWarning];

   // Dispose of any resources that can be recreated.

}

– (IBAction)applyButtonPressed:(id)sender {

   [self.delegate eventsViewControllerDidFinish:self];

}

– (void)dealloc {

   [eventsTable release];

   [super dealloc];

}

@end

Bibliografie

D.Comșa, ș.a. – Proiectarea instalațiiilor electrice industriale, Ed. Did. Și pred. București, 1983;

P. Dinculescu, F. Sisak – Instalații și echipamente electrice, Ed. Did. Și ped., București, 1981;

P. Dinculescu – Instalații electrice industriale de joasă tensiune, Ed. MatrixRom., București, 2003;

Jan Ignat – Rețelele electrice de joasă tensiune, Ed. Matrix Rom, București, 2003;

ICEMENERG – Normativ pentru proiectarea și executarea instalațiilor cu tensiuni până la 1000V c.a. și 1500 V c.c., I 7/2002;

ICEMENERG – Ghid pentru instalații electrice cu tensiuni până la 1000 Vc.a și 1500 Vc.c, GP 052-2000;

Schneider Electric – Manualul instalațiilor electrice, 2007

Curs instalații electrice, Sorin Pașca

[12] – http://thumbs.dreamstime.com/t/isolated-smartphone-silver-frame-blank-screen-30304855.jpg

[12] – http://tariqaustralia.files.wordpress.com/2013/04/14821565-internet-world-wide-web-concept-earth-globe-with-www-text-and-computer-hand-cursor-isolated-on-white.jpg

[12] – http://blog.tecnologialibre.net/wp-content/uploads/2012/04/Cisco-Router-Commands-images.jpg

[12] – http://www.clker.com/cliparts/1/f/b/b/13534424431365674102Firewall%20Icon.svg – [12] – http://tomg.co/images/Raspi-background-tomg.co.png

[12] – http://www.iconshock.com/img_jpg/REALVISTA/communications/jpg/128/apache_server_icon.jpg

[12] – http://willholloway.net/img/flask-icon.png

[12] – http://www.jedforestdeerpark.co.uk/images/icons/webcam.gif

[15] – http://martinjonestechnology.files.wordpress.com/2013/04/raspberry-pi-power-architecture1.png

http://www.extremetech.com/computing/124317-what-is-raspberry-pi-2

[15] – http://quantum-bits.org/wp-content/uploads/2013/02/raspberry-pi-schem.png

[16] – http://embeddedlinux01.files.wordpress.com/2012/07/raspi_blue_white.png

http://en.wikipedia.org/wiki/Raspberry_Pi#Architecture

http://www.thisoldhouse.com/toh/article/0,,197963,00.html

[19] – http://www.maximintegrated.com/images/appnotes/203/203Fig02.gif

[34] – http://www.byvac.com/bv3/image/cache/data/other/bv4241/bv4241_circuit_diagram-500×500.png

[33] – http://www.byvac.com/bv3/image/cache/data/other/bv4241/bv4241_withUSB-500×500.gif

[1],[2],[3],[4],[5],[6],[7],[8] – http://www.schneider-electric.ro/documents/oferta-produse/InSide_Control_Flyer%20RO%20hres.pdf

[35],[36],[37],[38],[39],[40],[41],[42],[43] – http://download.schneider-electric.com/files?L=ro&p=1532&p_docId=&p_docId=&p_Reference=V5480-711-00&p_EnDocType=User%20guide&p_File_Id=2819470&p_File_Name=V5480-711-00.pdf

[17] – http://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/overview

[44] – http://www.dingleberrypi.com/wp-content/uploads/2012/10/cropped-header.png

https://code.google.com/p/webiopi/

Bibliografie

D.Comșa, ș.a. – Proiectarea instalațiiilor electrice industriale, Ed. Did. Și pred. București, 1983;

P. Dinculescu, F. Sisak – Instalații și echipamente electrice, Ed. Did. Și ped., București, 1981;

P. Dinculescu – Instalații electrice industriale de joasă tensiune, Ed. MatrixRom., București, 2003;

Jan Ignat – Rețelele electrice de joasă tensiune, Ed. Matrix Rom, București, 2003;

ICEMENERG – Normativ pentru proiectarea și executarea instalațiilor cu tensiuni până la 1000V c.a. și 1500 V c.c., I 7/2002;

ICEMENERG – Ghid pentru instalații electrice cu tensiuni până la 1000 Vc.a și 1500 Vc.c, GP 052-2000;

Schneider Electric – Manualul instalațiilor electrice, 2007

Curs instalații electrice, Sorin Pașca

[12] – http://thumbs.dreamstime.com/t/isolated-smartphone-silver-frame-blank-screen-30304855.jpg

[12] – http://tariqaustralia.files.wordpress.com/2013/04/14821565-internet-world-wide-web-concept-earth-globe-with-www-text-and-computer-hand-cursor-isolated-on-white.jpg

[12] – http://blog.tecnologialibre.net/wp-content/uploads/2012/04/Cisco-Router-Commands-images.jpg

[12] – http://www.clker.com/cliparts/1/f/b/b/13534424431365674102Firewall%20Icon.svg – [12] – http://tomg.co/images/Raspi-background-tomg.co.png

[12] – http://www.iconshock.com/img_jpg/REALVISTA/communications/jpg/128/apache_server_icon.jpg

[12] – http://willholloway.net/img/flask-icon.png

[12] – http://www.jedforestdeerpark.co.uk/images/icons/webcam.gif

[15] – http://martinjonestechnology.files.wordpress.com/2013/04/raspberry-pi-power-architecture1.png

http://www.extremetech.com/computing/124317-what-is-raspberry-pi-2

[15] – http://quantum-bits.org/wp-content/uploads/2013/02/raspberry-pi-schem.png

[16] – http://embeddedlinux01.files.wordpress.com/2012/07/raspi_blue_white.png

http://en.wikipedia.org/wiki/Raspberry_Pi#Architecture

http://www.thisoldhouse.com/toh/article/0,,197963,00.html

[19] – http://www.maximintegrated.com/images/appnotes/203/203Fig02.gif

[34] – http://www.byvac.com/bv3/image/cache/data/other/bv4241/bv4241_circuit_diagram-500×500.png

[33] – http://www.byvac.com/bv3/image/cache/data/other/bv4241/bv4241_withUSB-500×500.gif

[1],[2],[3],[4],[5],[6],[7],[8] – http://www.schneider-electric.ro/documents/oferta-produse/InSide_Control_Flyer%20RO%20hres.pdf

[35],[36],[37],[38],[39],[40],[41],[42],[43] – http://download.schneider-electric.com/files?L=ro&p=1532&p_docId=&p_docId=&p_Reference=V5480-711-00&p_EnDocType=User%20guide&p_File_Id=2819470&p_File_Name=V5480-711-00.pdf

[17] – http://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/overview

[44] – http://www.dingleberrypi.com/wp-content/uploads/2012/10/cropped-header.png

https://code.google.com/p/webiopi/

Similar Posts