Nexa får intensivvård

Allmänna frågor och synpunkter.
Palle500
4 stars
4 stars
Posts: 431
Joined: Sun 16 Jan 2011, 13:15

Nexa får intensivvård

Post by Palle500 » Fri 25 Nov 2011, 00:13

Hej alla Nexa & Switch King användare.
Jag har tagit upp mina sedan 10 år bortglömda assembler PIC projekt tack vare SK och behovet av lite smartare nexaSL (SjälvLärande) moduler, även tack till Korak som beskrev Nexa protkollet.
Denna gång kör jag i C och började med PIC 12F683 (8 ben med A/D omvandlare) Nu har jag fått ihop så jag kan koda av Nexa signalerna och resten är bara hårt jobb :-)
Använde en RF modul från Kjell/Electrokit och blev förvånad att den fungerar utmärkt på 10-15 meters avstånd med en 15cm antenn.
Här ser ni den simpla uppsättningen på kopplingsdäcket med EGG (oscilloscope) och hjärtmonitorkablarna (programmeraren) inkopplad.
Det ni ser på oscilloscopet är en NexaSL signal med koden 2049582U2.
Nexa på intensiven mini.jpg
Så nu tänkte jag få lite ideér från er användare vad ni skulle villja ha för funktioner på "egna" nexa moduler. Tex ett multireläkort med 8 reläer typ som Isaksson kör via RS232. Detta kort kan man enkelt styra via Nexa signaler från SK med eget program i befintlig PIC. För att kunna styra reläerna i grupp om 4st med ett Nexa kommand från SK (ger ingen tidsfördröjning). Man låter de 16 enhetskoderna (4 bitar) bilda relämatrisen då enhetskod1 skickas som 0000.
Enhetskod -> reläfunktion
1 "0000" = alla reläer OFF
2 "0001" = relä1 ON
3 "0010" = relä2 ON
4 "0011" = relä1+2 ON
5 "0100" = relä3 ON
osv
16 "1111" = alla reläer ON
länk till denna produkt: http://www.electrokit.com/relakort-x-8- ... 2-rf.45293

Tänkte även att denna produkt kan få en Nexa programvara: http://www.electrokit.com/fjarrstyrning-rf-2kan.45090
Men att man styr varje enskilt relä med olika fast "vanliga" NexaSL kommandon som man lär upp den precis som en vanlig Nexa reläenhet. Fast med bibehållen timer, puls osv allt enligt manualen. Är perfekt för att boota om routern med. Man ställer bara in att reläet skall vara aktivt i 5 sekunder.

Ni är välkommna med andra förslag? Så får vi se vad jag utvecklar och publicerar på forumet.
För er som inte vill bränna HEX filer i PIC:ar så tänkte jag även kunna fixa färdigprogrammerade PIC för "självkostnadspris".
You do not have the required permissions to view the files attached to this post.
Last edited by Palle500 on Sun 27 Nov 2011, 17:12, edited 1 time in total.

fridde
3 stars
3 stars
Posts: 101
Joined: Mon 10 Oct 2011, 05:52

Re: Nexa får intensivvård

Post by fridde » Sat 26 Nov 2011, 05:51

:o Coolt! 8-)

Johan
2 stars
2 stars
Posts: 28
Joined: Tue 09 Nov 2010, 21:51
Location: Norrköping

Re: Nexa får intensivvård

Post by Johan » Sat 26 Nov 2011, 08:23

Häftigt

PerM
3 stars
3 stars
Posts: 52
Joined: Fri 07 Jan 2011, 00:59
Contact:

Re: Nexa får intensivvård

Post by PerM » Sat 26 Nov 2011, 12:47

Palle, du verkar ha för mycket tid :)

Det är är klart ett intressant projekt. Lägg till en RF sändare så det blir tvåvägs kommunikation :)

Palle500
4 stars
4 stars
Posts: 431
Joined: Sun 16 Jan 2011, 13:15

Re: Nexa får intensivvård

Post by Palle500 » Sat 26 Nov 2011, 17:00

Tackar för alla possitiva komentarer :wave: Men jag behöver lite mer konkretare exempel?
PerM wrote:Det är är klart ett intressant projekt. Lägg till en RF sändare så det blir tvåvägs kommunikation :)
Så har vi gjort oss en DUO utan drivrutin :)
Eller en aktiv Nexa enhet. Det vore suveränt att kunna fråga statusen på Nexa enheterna från SK/BM.
Är rätt enkelt: man skickar tex dimkod utan dimvärdena (då tar ingen std Nexa detta) och efter ca 0.5 sek (slipper kollision) så skickar Nexan ut sin status.

Jag har faktiskt byggt en prototyp sändare som kan skicka Fineoffset data (Jenkinsbird) till SK (både temp -99,9 till +99,9 och fukt 00% till 255%).
Började med en pirat kina sändare (Seed Studio) men det är skräp, fast jag balanserade tiderna så det blev samma RF tider som för en Jenkinsbird.
Så nu kör jag med en orginal Jenkinbird den är suverän når hur långt som helst!
EDIT: hittade en RF modul i elektroniklådan från electrokit som fungerar bra:
http://www.electrokit.com/tx433n-sandar ... -mhz.45094

Är det någon som kan hjälpa mig med checksumma beräkning? Finns lite fungerande paket i bifogad fil (EDIT: ny fil 2011-11-27).
Jenkinsbirds mottagare visar endast mina värden om jag sänder enligt fångade värden. Ändrar jag i sista bytet (provat med nibble) så tar den inte datat.
Men DUO:n skiter i checksumman så därför fungerarar det i SK. Provat med XOR, addition, både med & utan start bytet?

Code: Select all

Example: 
52,8 degree, 0xFF humidity address 0xDD
1111 1111 FF start
0100 1101 4D type + address high
1101 0010 D2 address low + temp 3
0001 0000 10 temp 2 + 1
1111 1111 FF humidity
1010 0100 A4 checksum. XOR, Add, CRC, counter, timestamp? don't know how to calculate this?
You do not have the required permissions to view the files attached to this post.
Last edited by Palle500 on Sun 27 Nov 2011, 18:49, edited 1 time in total.

Korak
3 stars
3 stars
Posts: 69
Joined: Mon 22 Nov 2010, 22:26
Location: Luleå

Re: Nexa får intensivvård

Post by Korak » Sun 27 Nov 2011, 01:39

Najs, kul att se att du kommit igång :)
Jag har även testat med "pollningen" du beskrev, nackdelen är väl att man skulle vilja att alla redan installerade mottagare hade det redan från början ;)
Det protoll du försöker ta reda på checksumman på, jag gissar att man måste logga ett flertal värden så att man har mer data att analysera sin checksumme algoritm på, logga typ 10 olika värden så kan vi alla hjälpas åt att fundera ut lösningen, kan inte vara såå svårt om man har lite mera data :P
________________________________________________________________________
   // Sonny //              ( If assembler looks blurry....try 2 C# ;)

Korak
3 stars
3 stars
Posts: 69
Joined: Mon 22 Nov 2010, 22:26
Location: Luleå

Re: Nexa får intensivvård

Post by Korak » Sun 27 Nov 2011, 01:43

shit, såg inte att du hade fler värden redan i .txt filen.....hmmm...ska räkna lite ;)
________________________________________________________________________
   // Sonny //              ( If assembler looks blurry....try 2 C# ;)

Palle500
4 stars
4 stars
Posts: 431
Joined: Sun 16 Jan 2011, 13:15

Re: Nexa får intensivvård

Post by Palle500 » Sun 27 Nov 2011, 02:05

Korak wrote:shit, såg inte att du hade fler värden redan i .txt filen.....hmmm...ska räkna lite ;)
Tackar! har inte skrivit någon mottagningkod ännu endast sändning. Så jag kör med skåpet och tolkar bitarna (måste få ork att få igång logikanalysatorn och skriva en parser åt den).
Har provit lite olika sätt tex att för sista bytet (checksumman) provat om hi nibble är XOR och nästa en summa. Men hittar inget mönster som stämmer ens på två av dumparna. Letade även på nätet men den verkar vara okänd. Endast hur man läser USB data från väderstationerna.

Skulle kunna vara så sjukt att dom kör tex MAC via enkel DES med en "fabriks nyckel på 56 bitar" då är det tufft.
Dom vill ju alltid skydda sina protokoll så dom inte får konkurerande kopior. Men DES eller annan symetrisk algoritm är lite tungt för en så liten CPU och främst så drar den ström ur batterierna.

Skall fixa lite flera dumpar med rätt checksumma imorgon (ja idag söndag alltså).

EDIT: Har fixerat tempgivaren (NTC) med ett motstånd så den skickar samma värde hela tiden.
Och checksumman (sista bytet) är konstant för 5 mätningar i rad. Så det är inga bitar där som skulle kunna vara en räknare så mottagaren vet om den missat något paket.

Korak
3 stars
3 stars
Posts: 69
Joined: Mon 22 Nov 2010, 22:26
Location: Luleå

Re: Nexa får intensivvård

Post by Korak » Sun 27 Nov 2011, 14:54

Tjo, njae tror inte att dom belastar en så liten uC med DES eller så...kan vara en CRC8 med nån lämplig polynom + kanske en offset eller så....så man ska få svårare att lista ut det :roll:
________________________________________________________________________
   // Sonny //              ( If assembler looks blurry....try 2 C# ;)

Palle500
4 stars
4 stars
Posts: 431
Joined: Sun 16 Jan 2011, 13:15

Re: Nexa får intensivvård

Post by Palle500 » Sun 27 Nov 2011, 16:18

Korak wrote:Tjo, njae tror inte att dom belastar en så liten uC med DES eller så...kan vara en CRC8 med nån lämplig polynom + kanske en offset eller så....så man ska få svårare att lista ut det :roll:
Håller med. Men vilket CRC8? CRC8 bit, normal, CRC8 bit, inverted/reversed/reflected, CRC8 byte, normal, CRC8 byte, inverted/reversed/reflected...
http://miscel.dk/MiscEl/CRCcalculations.html#info

Har gjort lite mera mätningar och studier av Jenkinsbird displayen (den är lite dum i sin uppdatering. men tänkte det kan vara en smart display enhet för egna värden)
se bifogad text fil. Även lite PIC kod.
Jenkinsbird Fineoffset protokoll.txt
Använd char arrayerna dom är testade mot Jenkinsbird, kan vara felskrivningar i övriga dumpar/bitmönster.

Code: Select all

#define TX_SIZE 6
// bad checksum! Not working only with Telldus DUO!
const char FineOffsData[TX_SIZE] = {0xFF,0x4D,0xD0,0x00,0x00,0x00};  // Adr 0xDD 221 +00,0  00% 
const char FineOffsData[TX_SIZE] = {0xFF,0x4D,0xDB,0xE7,0x00,0x00};  // Adr 0xDD 221 -99,9  00%
const char FineOffsData[TX_SIZE] = {0xFF,0x4D,0xD3,0xE7,0xFF,0x00};  // Adr 0xDD 221 +99,9 255%
// Correct checksum! Works on Jenkinsbird Adr 0xDD
const char FineOffsData[TX_SIZE] = {0xFF,0x4D,0xD2,0x10,0xFF,0xA4};  // Adr 0xDD 221 +52,8
const char FineOffsData[TX_SIZE] = {0xFF,0x4D,0xD2,0x08,0xFF,0xFD};  // Adr 0xDD 221 +52,0
const char FineOffsData[TX_SIZE] = {0xFF,0x4D,0xD8,0x2B,0xFF,0xD2};  // Adr 0xDD 221 -4,3
// Correct checksum! Works on Jenkinsbird Adr 0x62
const char FineOffsData[TX_SIZE] = {0xFF,0x46,0x21,0xE1,0xFF,0xF8};  // Adr 0x62 98  +48,1
const char FineOffsData[TX_SIZE] = {0xFF,0x46,0x21,0xBF,0xFF,0x72};  // Adr 0x62 98  +44,7
const char FineOffsData[TX_SIZE] = {0xFF,0x46,0x20,0x0A,0xFF,0xD2};  // Adr 0x62 98  +01,0
const char FineOffsData[TX_SIZE] = {0xFF,0x46,0x29,0x05,0xFF,0x5F};  // Adr 0x62 98  -26,1
const char FineOffsData[TX_SIZE] = {0xFF,0x46,0x29,0x40,0xFF,0xA1};  // Adr 0x62 98  -32,0
const char FineOffsData[TX_SIZE] = {0xFF,0x46,0x2A,0x22,0xFF,0x40};  // Adr 0x62 98  -02,9
const char FineOffsData[TX_SIZE] = {0xFF,0x46,0x21,0x1E,0xFF,0x79};  // Adr 0x62 98  +28,6
Här fins det en bra sida om LaCrosse även hur deras checksumma räknas (olika för olika modeller!).
http://www.f6fbb.org/domo/sensors/
You do not have the required permissions to view the files attached to this post.

Post Reply

Who is online

Users browsing this forum: No registered users and 29 guests