Moja 'pametna hiša' - Preprost suženj

Vse v zvezi z vašimi samogradnjami, popravili, idejami,....

Moderator: S53AL

Moja 'pametna hiša' - Preprost suženj

OdgovorNapisal/-a vilko » 11 Feb 2015, 13:16

Nisem sicer prepričan, ali je pametno. Želel sem le prikazat, da to ni težko in si lahko sami naredite kaj podobnega

Moj preprost suženj samo prižiga in ugaša luč na parkirišču v skladu z ukazom/ukazi, ki jih sprejme preko RS485 linije 9600Bd

Koda: Izberi vse
' Naprava upravlja luči po ukazu RS485
' Ukaz je tak:
' $,3,600,*XY

' Kjer pomeni $ začetek sporočila
'   3 je naslov sužnja, ki mora ukaz izpolniti. Ta je suženj 3
'     600 število sekund, koliko časa bodi luč prižgana
'         * konec sporočila
'          xy kontrolna znaka
' ali pa
'
' $,3,Raport!,*xy  kar pomeni, od sužnja zahtevamo raport stanja
'
' Ne glede na vrsto sporočila naprava vedno odgovoti s stanjem in sicer
'
' $,3,500,*xy  kjer pomeni
'
'     Suženj 3 javlja da je trenutno stanje števca sekund 500, toliko časa bo luč še prižgana

' Če hočemo luč ugasniti takoj, potem moramo sužnju poslati sledeč ukaz:
' $,3,0,*XY


V priloženi .zip datoteki boste našli shemo, obliko tiskanine in izvirni program, ki ga po želji predelate po svoje.
Na slikah vidite, da mi je ostalo nekaj odvečnih tiskanin, ki jih lahko brezplačno dam zainteresiranim.
Gotovo ne bo vsem takoj vse jasno. Saj sem objavo dal 'na hitro'. Za pojasnila sem na razpolago.
Priponke
Parkluč.zip
(2.27 MiB) Prenešeno 79 krat
Uporabniški avatar
vilko
 
Prispevkov: 96
Pridružen: 29 Jan 2015, 09:52
Kraj: Dragomer
Zahvalil se je: 28 krat
Prejel zahvalo: 39 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 4

Re: Moja 'pametna hiša' - Preprost suženj

OdgovorNapisal/-a Proteus » 11 Feb 2015, 18:18

Vilko upam, da ne boš vzel to kot kritiko, samo moje razmišljanje.
Tvoj protokol ima kar nekaj overheada. Prenašaš višek podatkov, ki nimajo nobenega pomena ali smisla.

Uporaba ASCII protokola je sicer dokaj čitljiva človeškemu umu ni pa kakšna dodana vrednost v razmišljanju mikroprocesorja.
Tozadevno so mnogo bolj optimalni binarni protokoli.

Primer:
------------------------------
Byte 01: [Start] – start byte
Byte 02: [ID] – številka sužnja
Byte 03: [Komanda] – tukaj lahko v en bayte zakodiraš 255 komand
Byte 04: [podatki] – telegram lahko vsebuje podatke če je to potrebno. Preko tega lahko enostavno razširiš tudi število komand.
.
.
Byte n-1: [CRC hi]
Byte n: [CRC Lo]
------------------------------

Pa še realen primer za vklop luči:
[$] – start byte
[1] – številka naprave
[1] – komanda za vklop
[crc-hi] – 16 bit CRC
[ crc-lo]

Tako zasnovan telegram je:
- bistveno krajši in posledično optimalnejši,
- bistveno enostavnejši za parsanje. Dokaj enostavno ga lahko obdelaš že v interupt rutini,
- ne potrebuješ dolgih "look-up" tabel s komandami, kar je pri majhnih CPU dobrodošlo, ker so običajno omejeni z resursi
- v bistvu parsanja sploh ne potrebuješ, saj lahko komande obdeluješ neposredno s case stavki,
- itd...
Uporabniški avatar
Proteus
 
Prispevkov: 2408
Pridružen: 18 Jan 2015, 01:31
Kraj: Planet Zemlja
Zahvalil se je: 233 krat
Prejel zahvalo: 446 krat
Uporabnika povabil: s54mtb
Število neizkoriščenih povabil: 78

Re: Moja 'pametna hiša' - Preprost suženj

OdgovorNapisal/-a VolkD » 11 Feb 2015, 19:45

@proteus: Višek podatkov ni nujno slaba stvar. Poglej mnogokrat prenašamo celo 2by podatkov, ki so čisti višek. Nekateri temu rečejo CRC.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 27873
Pridružen: 29 Dec 2014, 20:49
Kraj: Kačiče (Divača)
Zahvalil se je: 5183 krat
Prejel zahvalo: 3617 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 254

Re: Moja 'pametna hiša' - Preprost suženj

OdgovorNapisal/-a Proteus » 11 Feb 2015, 20:35

E he he Darko ... crc ni balast. Tudi na koncu mojega telegrama ga vidiš.
Najbrž nisi dovolj detaljno pogledal.

In o tem crc-ju sem celo na tem forumu ze nekaj pisal:
https://www.s5tech.net/viewtopic.php?f=29&t=221
Uporabniški avatar
Proteus
 
Prispevkov: 2408
Pridružen: 18 Jan 2015, 01:31
Kraj: Planet Zemlja
Zahvalil se je: 233 krat
Prejel zahvalo: 446 krat
Uporabnika povabil: s54mtb
Število neizkoriščenih povabil: 78

Re: Moja 'pametna hiša' - Preprost suženj

OdgovorNapisal/-a vilko » 11 Feb 2015, 21:49

O, ja. Vsako mnenje je dobrodošlo, če je dobronamerno, in to je. Hvala.

S tem se ukvarjam kar nekaj časa, in prej sem delal z atmeli AT89C2051 4051 in večjimi. In takrat sem res šparal z bajti in sem protokol kodiral tako, da sem potem gledal v neke vrste slovar, ko sem opazoval promet na RS485 bus-u. Takrat ni šlo drugače. Imel sem fiksno dolžino telegrama, prvi bajt je bil start H02, drugi bajt številka sužnja, tretji bajt komanda, 4,5 in 6 bajt parametri, 7 kontrolni bajt in 8 končni bajt H03

Ko sem prešel na AVR sem ta protokol opustil.

Sedaj, ko delam z ATMEGA si lahko privoščim gledat na PC-u ali .log datoteki na SMD-u promet, in takoj vidim, kaj kak telegram pomeni.
Je veliko udobneje, ja troši pa nekaj več bajtov še posebej, ker je vhodno področje za sprejete bajte trojno.
V prvem področju UART prekinitveni podprogram sestavlja sporočilo bajt po bajt in ko zazna CRLF prenese prebrano v drugi področje in s tem sprosti prvo področje, saj se lahko zgodi, da sprejeti telegram ne bo dovolj hitro obdelan, ko lahko že prihajajo novi bajti po liniji.
Glavni program, ko zazna zastavico 'Telegram sprejet' prenese vsebino iz drugega področja v tretje, kjer potem dejansko obravnava telegram.
Na ta način je zagotovljeno, da ne pride to poškodbe vsebine telegrama pri branju linije.
Telegram, ki ga delovni program obdela, je vedno intakten.
Uporabniški avatar
vilko
 
Prispevkov: 96
Pridružen: 29 Jan 2015, 09:52
Kraj: Dragomer
Zahvalil se je: 28 krat
Prejel zahvalo: 39 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 4

Re: Moja 'pametna hiša' - Preprost suženj

OdgovorNapisal/-a aly » 17 Feb 2015, 00:59

CRC je pri taki inštalaciji pomembna stvar.
Si predstavljaš, da nekaj kilometrov stran useka strela in tebi hiša ponori? Temperatura gre na 40°C, okna se odprejo, vse luči se ugasnejo, ... samo zato, ker se je s strelo generirana interferenca slučajno ujela z nekaterimi komandami. CRC bi tako situacijo v večini primerov odpravil. Tudi daljši ukazi pripomorejo k temu, saj je mnogo neveljavnih kombinacij, ki jih mora prejemnik ignorirat.

Če to zgodbo prevedem v naš svet iz mesa in krvi :)
Strežaja, ki je zadolžen za odpiranje oken, lahko naučimo, da odpre okna ob določenem ukazu. Ta ukaz je lahko:
1. "a!"
2. "okna"
3. "okna 4"
4. "odpri okna odpri okna"
5. "odpri okna" in podpis avtentičnosti avtorja in sporočila (črka ali dve)

1. V prvem primeru, ki je recimo temu binarni ukaz, se okno odpre ob določeni številki. Ta številka se lahko napačno interpretira ob vseh mogočih situacijah, vključno z motnjami in vklopom naprave med tem ko komunikacija že poteka.
2. čim se od nekje sliši besedo okna, se ta odprejo. Bolje kot prej, ni pa zadovoljivo.
3. dodan checksum, v tem primeru število črk, lahko pa je šeštevek poslanih znakov. Enostavno in hitro. Srednje varno.
4. če zaporedno dobiš dva enaka ukaza brez pavze vmes, je to dober znak (ampak pobere dvojno pasovno širino)
5. je optimum varnost vs. pasovna širina (to je CRC). To priporočam.
Če te kdo udari po desnem licu, je najbrž levičar =)
Uporabniški avatar
aly
 
Prispevkov: 464
Pridružen: 16 Jan 2015, 12:21
Kraj: Kranj - Struževo
Zahvalil se je: 113 krat
Prejel zahvalo: 69 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 19

Re: Moja 'pametna hiša' - Preprost suženj

OdgovorNapisal/-a vilko » 17 Feb 2015, 06:31

Ja, prav gotovo. Neka kontrola telegrama mora biti.
CRC je ena dobra varianta.
Jaz sem uporabil varianto, ki sem jo kopiral iz NMEA GPS standarda, kjer izza konca telegrama, znaka * dodam dva znaka, ki predstavljata xor rezultat vseh znakov med $ in *
da osvežim: primer telegrama:
$,3,600,*XY

XY sta heksadecimalni zapis bajta ki ga dobim z zgoraj omenjo XOR zanko preko vsebine telegrama.

Za enkrat zadostuje.
Uporabniški avatar
vilko
 
Prispevkov: 96
Pridružen: 29 Jan 2015, 09:52
Kraj: Dragomer
Zahvalil se je: 28 krat
Prejel zahvalo: 39 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 4


Vrni se na Pametne hiše

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost