plugin for Nodo supporting Select Plus / Quhwa Doorbells

Experimentele Plug-ins
Forumregels
LET OP: DIT IS HET EXPERIMENTELE GEDEELTE
BETREDEN OP EIGEN RISICO :lol:

plugin for Nodo supporting Select Plus / Quhwa Doorbells

Berichtdoor Voyager » 04 jan 2015, 12:04

Experimental plugin for Nodo supporting Select Plus / Quhwa Wireless Doorbells.

The Select Plus wireless doorbell operates in the 433 Mhz RF band.
The PCB shows Quhwa QH-C-CE-3V and is also known as Quhwa QH-832AC.
The device is also sold under the brand name 1 by One.

There are at least two different models available at the Action.
Model 200689103 and 200689101. Both models are supported by the plugin below.

Afbeelding
Afbeelding
Afbeelding
Afbeelding

Blog post: http://listenlive.nl/blog/
Download plugin: http://www.listenlive.nl/blog/nodo/plugin_044.zip

Code: Selecteer alles
//#######################################################################################################
//########################### Plugin-44 Select Plus Wireless Doorbell ###################################
//#######################################################################################################
/*********************************************************************************************\
 * This Plugin takes care of reception of the Select Plus wireless doorbell
 * PCB markings: Quhwa QH-C-CE-3V aka QH-832AC.
 * Also sold as "1 by One" wireless doorbell.
 *
 * Auteur             : William Jansen (Voyager)
 * Support            : www.nodo-domotica.nl
 * Datum              : 2-1-2015
 * Versie             : 1.0
 * Nodo productnummer : n.v.t. meegeleverd met Nodo code.
 * Compatibiliteit    : Vanaf Nodo build nummer ???
 * Syntax             : "SelectPlus <Par1:Sensor ID>, <Par2:Basis Variabele>"
 *********************************************************************************************
 * Changelog: v1.0 initial release
 *********************************************************************************************
 * Technical information:
 *
 * Each frame is 35 bits long. It is composed of:
 * 101011001010110010110011010 10101010
 * The first block appears to be an unique ID
 * The second block appears to be some kind of identifier which might always be 0xAA (10101010)
 \*********************************************************************************************/
#define PLUGIN_ID 44
#define PLUGIN_NAME "SelectPlus"
#define SELECTPLUS_PULSECOUNT 36

byte Plugin_044_ProtocolCheckID(byte checkID);

byte Plugin_044_ProtocolValidID[2];
byte Plugin_044_ProtocolVar[2];

boolean Plugin_044(byte function, struct NodoEventStruct *event, char *string)
{
  boolean success=false;

  switch(function)
  {
#ifdef PLUGIN_044_CORE
  case PLUGIN_RAWSIGNAL_IN:
    {
      if (RawSignal.Number !=SELECTPLUS_PULSECOUNT) return false;
      byte basevar=0;
      unsigned long bitstream1=0;                   // holds first 10 bits
      unsigned long bitstream2=0;                   // holds last 26 bits
      byte checksum=0;
      byte bitcounter=0;                            // counts number of received bits (converted from pulses)
      //==================================================================================
      // get bytes
      for(byte x=1;x<RawSignal.Number;x++) {
         if (RawSignal.Pulses[x]*RawSignal.Multiply > 750) {
            if (bitcounter < 27) {
               bitstream1 = (bitstream1 << 1);
               bitcounter++;                     // only need to count the first 28 bits which appear to be the unique bell number
            } else {
               bitstream2 = (bitstream2 << 1);   // remaining 8 bits should be '01010101' => 0x55
            }
         } else {
            if (bitcounter < 27) {
               bitstream1 = (bitstream1 << 1) | 0x1;
               bitcounter++;                     
            } else {
               bitstream2 = (bitstream2 << 1) | 0x1;
            }
         }
      }
      //==================================================================================
      // all bytes received, make sure checksum is okay
      //==================================================================================
      Serial.print("Select Plus doorbell:");
      checksum = bitstream2;              // Second block
      if (checksum != 0xAA) return false; // Should be '10101010' => 0xAA
      //==================================================================================
      Serial.print(" ID=");
      Serial.print(bitstream1,HEX);
      Serial.print(" CRC=");
      Serial.println(bitstream2,HEX);
      //==================================================================================
      basevar = Plugin_044_ProtocolCheckID(bitstream1);

      event->Par1=bitstream1;
      event->Par2=basevar;
      event->SourceUnit    = 0;                     // Komt niet van een Nodo unit af, dus unit op nul zetten
      event->Port          = VALUE_SOURCE_RF;
      event->Type          = NODO_TYPE_PLUGIN_EVENT;
      event->Command       = 44; // Nummer van dit device

      if (basevar == 0) return true;
      //==================================================================================
      RawSignal.Number=0;
      success = true;
      break;
    }
  case PLUGIN_COMMAND:
    {
    if ((event->Par2 > 0) && (Plugin_044_ProtocolCheckID(event->Par1) == 0))
      {
      for (byte x=0; x<2; x++)
        {
        if (Plugin_044_ProtocolValidID[x] == 0)
          {
          Plugin_044_ProtocolValidID[x] = event->Par1;
          Plugin_044_ProtocolVar[x] = event->Par2;
          success=true;
          break;
          }
        }
      }
    break;
    }
#endif // PLUGIN_044_CORE

#if NODO_MEGA
  case PLUGIN_MMI_IN:
    {
    char *TempStr=(char*)malloc(INPUT_COMMAND_SIZE);

    if(GetArgv(string,TempStr,1))
      {
      if(strcasecmp(TempStr,PLUGIN_NAME)==0)
        {
        if(event->Par1>0 && event->Par1<255 && event->Par2>0 && event->Par2<=USER_VARIABLES_MAX)
          {
          event->Type = NODO_TYPE_PLUGIN_COMMAND;
          event->Command = 44; // Plugin nummer 
          success=true;
          }
        }
      }
      free(TempStr);
      break;
    }

  case PLUGIN_MMI_OUT:
    {
    strcpy(string,PLUGIN_NAME);            // Eerste argument=het commando deel
    strcat(string," ");
    strcat(string,int2str(event->Par1));
    strcat(string,",");
    strcat(string,int2str(event->Par2));
    break;
    }
#endif //NODO_MEGA
  }     
  return success;
}

#ifdef PLUGIN_044_CORE
/*********************************************************************************************\
 * Check for valid sensor ID
 \*********************************************************************************************/
byte Plugin_044_ProtocolCheckID(byte checkID)
{
  for (byte x=0; x<5; x++) if (Plugin_044_ProtocolValidID[x] == checkID) return Plugin_044_ProtocolVar[x];
  return 0;
}
#endif //CORE
Voyager
 
Berichten: 180
Geregistreerd: 23 okt 2014, 14:26

Re: plugin for Nodo supporting Select Plus / Quhwa Doorbells

Berichtdoor jack » 22 jan 2015, 10:06

Ik ben bezig met de draadloze deurbel, maar ik krijg deze nog niet aan “de bel” in de WebApp.

In de Wiki staat een voorbeeld voor een deurbel met vaste bedrading.

Het volgende script heb ik in de WebApp ingevoerd:
EventlistWrite; Boot 1; SelectPlus 105,1
EventlistWrite; Variable 1,1; UserEventSend 12,0
EventlistWrite; Variable 1,1; Sound 1,1
EventlistWrite; Variable 1,1; Delay 10
EventlistWrite; Variable 1,1; VariableSet 1,0

En bij de WebApp onder Notifications:
Name: Deurbel
Event: UserEvent 12,0
Recipient: mail@adres.abc
Subject: Nodo event: Deurbel
Body: Aan de deur gebeld.

Maar helaas, wanneer ik op de draadloze deurbel druk krijg ik geen geluid te horen uit de luidspreker op mijn Nodo, nog een e-mail op mijn smartphone.

Wie kan mij verder helpen?

Mvg,
Jack
jack
 
Berichten: 59
Geregistreerd: 31 jul 2012, 13:02

Re: plugin for Nodo supporting Select Plus / Quhwa Doorbells

Berichtdoor jack » 26 jan 2015, 14:13

Niemand die mij verder kan helpen? :?

Jack
jack
 
Berichten: 59
Geregistreerd: 31 jul 2012, 13:02

Re: plugin for Nodo supporting Select Plus / Quhwa Doorbells

Berichtdoor henkdejonge » 09 maart 2015, 15:08

Jack,

Ik loop ook vast krijg wel de bel te zien... maar kan niks met het event doen... :-(
Afbeelding
henkdejonge
 
Berichten: 102
Geregistreerd: 21 maart 2012, 16:29

Re: plugin for Nodo supporting Select Plus / Quhwa Doorbells

Berichtdoor Voyager » 09 maart 2015, 16:34

De plugin kan inmiddels ook zenden zodat je de bel ook af kan laten gaan zonder dat de knop ingedrukt word of meerdere keren kan laten afgaan als 1 keer op de knop is gedrukt.
Ik heb echter geen idee hoe je een actie aan de inhoud van een variabel kan knopen.
Voyager
 
Berichten: 180
Geregistreerd: 23 okt 2014, 14:26


Keer terug naar Plug-ins

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers. en 1 gast

cron