Kommunicera med NEXA självlärande protokoll, Raspberry Pi

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
kon87
Inlägg: 18
Blev medlem: 17 juni 2014, 20:19:03

Kommunicera med NEXA självlärande protokoll, Raspberry Pi

Inlägg av kon87 »

Hejsan! Jag har en 433mhz-sändare kopplad till GPIO på min Raspberry. Med hjälp av rcswitch-pi så kan jag kontrollera några icke självlärande trådlösa väggpluggar. Jag har inte riktigt förstått om rcswitch-pi också stödjer de självlärande systemen eller inte, men om de gör det, vad ska jag då skicka för signaler?

På den här wikisidan: http://elektronikforumet.com/wiki/index ... C3%A4rande så beskrivs ju bitarna som skickas, men hur gör jag för att faktiskt skicka dessa från min Raspberry? Jag skulle uppskatta lite tips! :)
LarryXz
Inlägg: 662
Blev medlem: 13 mars 2013, 20:31:08
Ort: Norra Uppland

Re: Kommunicera med NEXA självlärande protokoll, Raspberry P

Inlägg av LarryXz »

Den här använder jag både till Arduino och Raspberry Pi
https://github.com/hjgode/homewatch/tre ... moteSwitch

Bifogar även NewRemoteTransmitter som är en del av NewRemoteSwitch biblioteket, men den jag bifogar har ändrats lite så den kompileras på Rasbian. WiringPi krävs.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
kon87
Inlägg: 18
Blev medlem: 17 juni 2014, 20:19:03

Re: Kommunicera med NEXA självlärande protokoll, Raspberry P

Inlägg av kon87 »

Tack för det! :D

Nu undrar jag bara: Räcker det med att jag kör din NewRemoteTransmitter, eller ska jag ladda ner hela NewRemoteSwitch och ersätta filen däri med din fil? Behöver wiringPi ligga i någon speciell mapp?

Jag provade att köra programmet utan att lägga till någonting annat, men då fick jag segfault.
LarryXz
Inlägg: 662
Blev medlem: 13 mars 2013, 20:31:08
Ort: Norra Uppland

Re: Kommunicera med NEXA självlärande protokoll, Raspberry P

Inlägg av LarryXz »

NewRemoteTransmitter fungerar bra utan resten av biblioteket.

Installera wiringPi enligt instruktioner här: http://wiringpi.com/download-and-install/

Zipfilen som jag bifogat packar du upp i en mapp och går sedan in i den via terminalen.
Skriv sedan:

Kod: Markera allt

make all
Vilken pin har du anslutit sändaren till?
I outlet.cpp kan du välja vilken pin som den är ansluten till.
NewRemoteTransmitter transmitter(67234623, 0, 263, 4);
0 ändrar du till den pin du använder. På bilden på länken nedan står det tydligt vilken pin som är vilken. (Du ska ange den som står under WiringPi Pin)
http://wiringpi.com/wp-content/uploads/ ... /gpio1.png

Kod: Markera allt

pi@RasPi ~/Stuff/NewRemoteTransmitter $ make all
g++    -c -o NewRemoteTransmitter.o NewRemoteTransmitter.cpp
g++    -c -o outlet.o outlet.cpp
g++   NewRemoteTransmitter.o outlet.o -o outlet -lwiringPi
pi@RasPi ~/Stuff/NewRemoteTransmitter $ sudo ./outlet 1 1
Turning unit 1 on
Done!
kon87
Inlägg: 18
Blev medlem: 17 juni 2014, 20:19:03

Re: Kommunicera med NEXA självlärande protokoll, Raspberry P

Inlägg av kon87 »

Fantastiskt, det fungerar! :D
Wirre08
Inlägg: 20
Blev medlem: 19 november 2014, 21:56:31

Re: Kommunicera med NEXA självlärande protokoll, Raspberry P

Inlägg av Wirre08 »

Hej.

Jag tänkte göra så att min Raspberry Pi kan styra mina lampor som är inkopplade med Nexa WMR-252.

Har köpt 433Mhz RF link kit där det är en sändare och en mottagare.
Använder detta kopplings schemat som jag hittade från denna sida. http://www.homautomation.org/2014/03/02 ... -receiver/

Sen har jag hämtat wiringPi och rcswitch-pi och NewRemoteTransmitter som LarryXz bifogade.
Men sedan har jag ingen aning om hur jag ska göra sen.
Hur lägger jag in mina olika enheter som unit 1, unit 2 osv?
LarryXz
Inlägg: 662
Blev medlem: 13 mars 2013, 20:31:08
Ort: Norra Uppland

Re: Kommunicera med NEXA självlärande protokoll, Raspberry P

Inlägg av LarryXz »

Ifall du fick med en fjärrkontroll med dimmern så kan du sniffa reda på fjärrkontrollens kod och sedan använda den. Fast enklast är nog om du aktiverar inlärningsläget på dimmern och sedan skickar en kod från Raspberryn.

I outlet.cpp kan du ändra i koden så att du använder

Kod: Markera allt

// Set unit to dim-level 15, full brightness.
  transmitter.sendDim(unitCode, 15);
istället för

Kod: Markera allt

transmitter.sendUnit(unitCode, command);
Antagligen fungerar sendUnit på dimmern också, men är ej säker då jag aldrig provat dimmer innan.
Glöm inte att också välja en kod

Kod: Markera allt

NewRemoteTransmitter transmitter(123456, 11, 260, 3);
Wirre08
Inlägg: 20
Blev medlem: 19 november 2014, 21:56:31

Re: Kommunicera med NEXA självlärande protokoll, Raspberry P

Inlägg av Wirre08 »

Fick inte med någon fjärrkontroll till dimmern men har http://www.clasohlson.com/se/Fj%C3%A4rr ... 00/36-4603 där det ingår en fjärrkontroll som jag idag styr dimmern med.
Hur gör jag om jag ska sniffa reda på fjärrkontrollens kod?

Ska testa det du skrev om.
Nerre
Inlägg: 27148
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Kommunicera med NEXA självlärande protokoll, Raspberry P

Inlägg av Nerre »

Det självlärande systemet bygger på tanken att alla sändare (eller alla knappar snarare, en sändare kan ju ha flera knappar) ska ha en egen unik kod. Koden är fast, den går inte att ändra. Ungefär som ett nätverkskorts MAC-adress. Sen "lär" man helt enkelt mottagaren vilka sändare den ska lystra till.

Detta gör att det är enkelt att låta en sändare styra flera mottagare (varje mottagare "lär sig" den sändarens kod). Det blir svårare om man vill att en mottagare ska kunna styras av flera sändare. Mottagarna kan oftast bara lära sig tre koder, så vill man styra en mottagare med fyra olika sändare så är man rökt. (Det är kanske inte så vanligt att man har fyra olika sändare till samma mottagare, och det är möjligt att nyare mottagare kan lära sig fler koder.)

Så ska man styra en sån mottagare så är det alltså bara att "hitta på" en sändarkod som man sen lär den mottagaren med.
LarryXz
Inlägg: 662
Blev medlem: 13 mars 2013, 20:31:08
Ort: Norra Uppland

Re: Kommunicera med NEXA självlärande protokoll, Raspberry P

Inlägg av LarryXz »

> så vill man styra en mottagare med fyra olika sändare så är man rökt.
Beror på om sändarna har samma kod eller inte.

För att ta reda på fjärrkontrollens kod så kan du använda exemplet ShowReceivedCode som finns med i NewRemoteSwitch.
Den måste dock skrivas om för att kunna kompileras på Raspberry Pi.
Dessutom använder den sig av interrupts och jag vet inte hur det fungerar på Rasberryn.
Enklast är nog att använda en Arduino, om du har en, och ta reda på koden.
Smidigast är om du hittar på en kod och använder den, men problemet blir då om du vill kunna utnyttja fjärrkontrollen också.

Mitt system hemma styrs nästan helt av Raspberryn. Som exempel har jag lampor över tv:n som kan styras av Raspberryn, men även av fjärrkontrollen som följde med.

Ett tips, om du vill ha billigare mottagare, är att använda Julas brytare (fullt kompatibla med NEXA) http://www.jula.se/catalog/el-och-belys ... re-408050/. Använder dessa själv.
Nerre
Inlägg: 27148
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Kommunicera med NEXA självlärande protokoll, Raspberry P

Inlägg av Nerre »

Eftersom en mottagare kan lära sig åtminstone 3 olika koder så blir det inga problem med att hitta på en kod. Det har man t.ex. fått göra hela tiden om man kört den gamla Tellstick med självlärande mottagare.

http://www.telldus.se/products/guides?s ... lflearning
Wirre08
Inlägg: 20
Blev medlem: 19 november 2014, 21:56:31

Re: Kommunicera med NEXA självlärande protokoll, Raspberry P

Inlägg av Wirre08 »

Tack för förklaringarna.

Jag har tänkt att endast styra lamporna från RaspberryPi:n och fjärrkontrollen. Så varje mottagare kommer ha 2 sändare.
Just nu använder jag mina dimmers endast som av och på.
När jag fått det att fungera då hade jag tänkt att ställa in dom olika dimmer nivåerna.

Finns det någon intervall med vilka koder som fungerar?

Tack för tipset om Julas brytare.
LarryXz
Inlägg: 662
Blev medlem: 13 mars 2013, 20:31:08
Ort: Norra Uppland

Re: Kommunicera med NEXA självlärande protokoll, Raspberry P

Inlägg av LarryXz »

Har för mig flera av mina sändare ligger runt 67108365 (nånstans där), så det är bara att ändra en eller fler siffror. Den klarar nog lägre nummer också, det är bara att prova.
Wirre08
Inlägg: 20
Blev medlem: 19 november 2014, 21:56:31

Re: Kommunicera med NEXA självlärande protokoll, Raspberry P

Inlägg av Wirre08 »

Har nu testat utan något resultat.
Börjar fundera om det är fel från början eller vad det kan vara.

Kör med 2014-09-09-Wheezy-Rasbian
Hämtade den senaste wiringPi med git och körde build.
Hämtade sedan rcswitch-pi på samma sätt och körde make.
Fick då följande resultat.

Kod: Markera allt

g++    -c -o RCSwitch.o RCSwitch.cpp
RCSwitch.cpp: In member function ‘char* RCSwitch::getCodeWordB(int, int, boolean)’:
RCSwitch.cpp:194:61: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RCSwitch.cpp:194:61: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RCSwitch.cpp:194:61: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RCSwitch.cpp:194:61: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RCSwitch.cpp:194:61: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RCSwitch.cpp: In member function ‘char* RCSwitch::getCodeWordA(char*, int, boolean)’:
RCSwitch.cpp:229:74: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RCSwitch.cpp:229:74: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RCSwitch.cpp:229:74: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RCSwitch.cpp:229:74: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RCSwitch.cpp:229:74: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
RCSwitch.cpp:229:74: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
g++    -c -o send.o send.cpp
g++   RCSwitch.o send.o -o send -lwiringPi
Kan det vara där felet är?
Efter det hämtade zipfilen från tidigare inlägg.
Efter att kört make all ändrade jag i filen outlet.cpp som du skrev senaste LarryXz

Trycker sedan på inlärningsknappen på en av mottagarna.
Kör sedan

Kod: Markera allt

sudo ./outlet 1 1
Turning unit 1 on
Done!

Men ser att mottagaren inte får signalen då den fortfarande står och blinkar i inlärningsläget.
Några tips på hur jag kan felsöka för att få reda på om felen är i koden eller i min sändare som är kopplad till raspberry pi:n.
LarryXz
Inlägg: 662
Blev medlem: 13 mars 2013, 20:31:08
Ort: Norra Uppland

Re: Kommunicera med NEXA självlärande protokoll, Raspberry P

Inlägg av LarryXz »

Det kan vara så att sendDim inte fungerar för inlärning. Har du provat med sendUnit också?
Har du skrivit in rätt pin i koden? Alltså den pin som sändaren är ansluten till. Matar du sändaren med 3.3v eller 5v?
Hur långt har du mellan sändaren och dimmern?

Kan tillägga att jag har haft svårigheter med att styra uttagen med Raspberryn, vissa uttag har funkat och vissa inte och ibland har det inte funkat alls med något.
Som jag har nu så har jag en Arduino Pro Mini ansluten till Raspberryn som som styr uttagen. Av nån anledning fungerar det mycket bättre.
Skriv svar