433mhz deursensor

algemene C code
Berichten: 247
Geregistreerd: 03 Okt 2015, 13:39

433mhz deursensor

Berichtdoor DeDraak » 10 Okt 2016, 15:20

Hallo allemaal,

Ik heb laatst deze sensor gekocht: https://www.aliexpress.com/item/5Pcs-High-quality-433-MHZ-Wireless-Home-Security-Door-Window-Sensor-Detector-with-Battery-for-GSM/32653464983.html?spm=2114.30010308.3.71.9hFz9q&ws_ab_test=searchweb0_0,searchweb201602_1_116_10056_10065_117_10068_10055_114_10054_115_10069_113_10059_10073_10017_10070_10060_10061_10052_10062_10053_10050_10051,searchweb201603_3&btsid=159b6d1a-1b95-4ae8-b86e-67ace29683f7

Als ik deze met de sniffer uitlees dan krijg ik het volgende te zien:

18600926 unit 9 off, dim level: 0, period: 259us;
18600926 unit 9 on, dim level: 14, period: 259us;


Nu wil ik deze code gebruiken in mijn project maar ik snap niet zo goed hoe ik deze code kan gebruiken in mijn sketch..

De bedoeling is dat deze senor op de deur komt, als de deur open gaat dan gaat bijvoorbeeld een led aan.
Maar om te voorkomen dat dit de hele tijd gebeurd wil ik een schakelaar erbij maken.

Dus als mijn schakelaar bedient is en de deur open gaat dan led aan.

Ik heb al paar keer een handzender van kaku uitgelezen maar dat zijn andere codes bv: Lamp aan:345365 en Lamp uit:345364

Kan iemand mij hiermee helpen?

Alvast bedankt.

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: 433mhz deursensor

Berichtdoor Koepel » 10 Okt 2016, 16:34

Bedoel je met rc-switch library ?
https://github.com/sui77/rc-switch
Is dat de volledige output van het advanced example ?
Als het een andere library is, of een ander apparaat, kun je er dan een link naar geven ?

Het is lang geleden dat ik rc-switch heb gebruikt, ik ben overgestapt naar fuzzillogic.
https://bitbucket.org/fuzzillogic/433mhzforarduino/wiki/Home

Op tweakers.net zal ook nog informatie te vinden zijn.

Detectors die nog een 12V 23A batterij gebruiken, zijn vaak verouderd. Tegenwoordig is het soms een enkele AA batterij of een 9V blokje. Of een batterij die niet te vervangen is en tien jaar meegaat. Ik heb begrepen dat rookmelders in Amerika iedere tien jaar vervangen moeten worden, daarom komen fabrikanten met rookmelders die tien jaar meegaan op een vast ingebouwde batterij.

Berichten: 247
Geregistreerd: 03 Okt 2015, 13:39

Re: 433mhz deursensor

Berichtdoor DeDraak » 10 Okt 2016, 18:47

Ik heb een foutje gemaakt!
Ik heb 2 verschillende sensoren, een KAKU en een uit China.

Ik gebruik inderdaad de rc-switch library (rf sniffer sketch) voor die goedkope sensor uit china. Bij deze krijg ik alleen een code te zien wanneer ik de deur open:


Received 9617726 / 24bit Protocol: 1
Received 9617726 / 24bit Protocol: 1


Die andere code is van de orginele KAKU sensor en ik gebruik dan de <NewRemoteReceiver.h> library, het volgende krijg ik dan te zien als ik hem open doe en sluit:

Addr 18600926 unit 9 on, dim level: 14, period: 259us.
Addr 18600926 unit 9 off, dim level: 0, period: 337us.


Nu is het mij wel gelukt (samen met jullie) om destijds een code van mijn afstandsbediening uit te lezen en die via mijn arduino te transmitten.
Nu probeer ik er achter te komen hoe ik met mijn arduino dit signaal kan gebruiken in mijn sketch, dus als Received 9617726 / 24bit Protocol: 1 binnenkomt ik een actie kan doen bijvoorbeeld een Led aansturen.

Berichten: 247
Geregistreerd: 03 Okt 2015, 13:39

Re: 433mhz deursensor

Berichtdoor DeDraak » 10 Okt 2016, 18:50

Dit is een stukje uit mijn code die ik gebruik om 433mhz ontvangers aan te sturen:

Code: Alles selecteren
#define A_aan 345365   //lamp Rechts
#define A_uit 345364   //lamp Rechts
#define B_aan 348437   //Lamp Links
#define B_uit 348436   //lamp Links


Code: Alles selecteren
             case '0'://Lamp Rechts
               //add code here to trigger on 0
               triggerPin(outputAddress[0], client, outp);
                if (outp == 1) {
                  mySwitch.send(A_aan, 24);
                } else {
                  mySwitch.send(A_uit, 24);
                }
               break;           
             case '1'://Lamp Links
            //add code here to trigger on 1
               triggerPin(outputAddress[1], client, outp);
               if (outp == 1) {
                  mySwitch.send(B_aan, 24);
                } else {
                  mySwitch.send(B_uit, 24);
                }
               break;

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: 433mhz deursensor

Berichtdoor Koepel » 10 Okt 2016, 20:22

Zou je links willen geven, of vertellen waar je de libraries vandaan hebt ? (of bijvoorbeeld via de Library Manager).
Graag een link naar de rc-switch library die je gebruikt.
Wat is de "rf sniffer sketch" ? kun je daar ook een link naar geven ?
De "NewRemoteReceiver.h" is opeens de fuzzillogic ? kun je vertellen waar je die vandaan hebt ? En welke sketch je gebruikte ?

De rc-switch is vooral voor de meest gangbare 2272 / 2262 code. De fuzzillogic doet dat ook, en ook nog andere. Als je voor je KAKU sensor bent uitgeweken naar fuzzillogic, werkte de KAKA dan niet met de rc-switch ?

De "unit 9" en "dim level" is duidelijk iets voor een apparaat. Misschien klik-aan-klik-uit of zo iets.

Kun je proberen iets duidelijker te zijn ? want ik begrijp het niet meer :(
Ik heb op dit moment geen 433MHz zenders en ontvangers op mijn tafel liggen, dus op dit moment kan ik alleen helpen met wat ik uit mijn hoofd nog weet.

Berichten: 247
Geregistreerd: 03 Okt 2015, 13:39

Re: 433mhz deursensor

Berichtdoor DeDraak » 10 Okt 2016, 20:43

Hier komt de Rf-Sniffer vandaan:
https://github.com/sui77/rc-switch

Ik wil dus eigenlijk wanneer mij deur opengaat, en er een code via mijn receiver binnenkomt er een bepaalde actie uitgevoerd gaat worden.
Dus als Received 9617726 / 24bit Protocol: 1 binnenkomt er een lamp aan gaat of een sirene.

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: 433mhz deursensor

Berichtdoor Koepel » 10 Okt 2016, 21:34

Ze zijn meestal 24 bit, en je hebt dus protocol 1. Dus je kunt testen op de code "9617726".

Met de sniffer bedoel je de "ReceiveDemo_Advanced.ino" ? https://github.com/sui77/rc-switch/blob/master/examples/ReceiveDemo_Advanced/ReceiveDemo_Advanced.ino

Met "SendDemo.ino" kun je simuleren dat de deur open gaat. Wel alles invullen zoals setProtocol() en setPulseLength() en zo.

De wiki is een beetje te kort : https://github.com/sui77/rc-switch/wiki/HowTo_Receive.
Met "ReceiveDemo_Simple.ino" ontvang je alle codes. Dus dan testen of het juiste ontvangen hebt.
De getReceiveValue() geeft een unsigned long terug, en jouw getal van '9617726' past niet in een integer. Dus de code iets aanpassen.
Ik denk dat het zo gaat:
Code: Alles selecteren
void loop()
{
  if( mySwitch.available())
  {
    int protocol = mySwitch.getReceivedProtocol();
    int bitlength = mySwitch.getReceivedBitlength();
    unsigned long value = mySwitch.getReceivedValue();

    if( protocol == 1 && bitlength == 24 && value == 9617726UL)
    {
      Serial.println( "Bingo !");
    }
    mySwitch.resetAvailable();
  }
}

De 'UL' achter het getal maakt aan de compiler duidelijk dat het een 'unsigned long' getal is.

Berichten: 247
Geregistreerd: 03 Okt 2015, 13:39

Re: 433mhz deursensor

Berichtdoor DeDraak » 10 Okt 2016, 22:03

Nee ik heb de ReceiveDemo_Simpel gebruikt...

Thanks, ik zal dat eens gaan proberen, laat het je weten of dit lukt

Berichten: 247
Geregistreerd: 03 Okt 2015, 13:39

Re: 433mhz deursensor

Berichtdoor DeDraak » 11 Okt 2016, 19:56

Het is gelukt met jou voorbeeld! Super!

Nu ben ik met het volgende aan het stoeien:

case '1'://Lamp Links
//add code here to trigger on 1
triggerPin(outputAddress[1], client, outp);
if (outp == 1) {
mySwitch.send(B_aan, 24);
} else {
mySwitch.send(B_uit, 24);
}
break;


Dit is Case '1' als mijn outp == 1 dan zend ik een code uit die mijn lamp aan of uit zet.
Nu wil ik jou code gaan toepassen in een andere case maar daar doe ik iets fout denk ik.
Zo had ik het bedacht:

case '2'://Alarm installatie
//add code here to trigger on 2
triggerPin(outputAddress[2], client, outp);
if ( mySwitch.available())
{
int protocol = mySwitch.getReceivedProtocol();
int bitlength = mySwitch.getReceivedBitlength();
unsigned long value = mySwitch.getReceivedValue();

if (outp == 1 && protocol == 1 && bitlength == 24 && value == 9617726UL)
{
Serial.println( "Bingo !");
}
mySwitch.resetAvailable();
}
break;


Ik wil dus in deze case hebben dat als mijn outp '1' is en mijn ontvanger de code binnenkrijgt dan Bingo ! print..

Wat doe ik fout?

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: 433mhz deursensor

Berichtdoor Koepel » 11 Okt 2016, 23:00

Je kunt gerust extra dingen toevoegen zoals "if (outp == 1". Als dat niet werkt, dan rolt hij misschien nooit die case binnen, of de 'outp' is nooit een '1'. Dat kun nagaan door meer Serial.println() te doen zodat je weet wat er gebeurt.

Als je een 'switch(outp)' hebt, dan is de 'outp' nooit een '1' als je in 'case 2:' zit.

Je kunt deze post eens lezen over de kristallen bol : http://arduinoforum.nl/viewtopic.php?f=16&t=2026&p=14896#p14896
Die kristallen bol gebruiken we om de code te raden die je niet laat zien :shock:

Volgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 13 gasten