Mertik maxitrol plugin

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

Mertik maxitrol plugin

Berichtdoor dodge » 27 maart 2015, 21:05

Experimentele plugin voor de Mertik Dru haard.

Met behulp van Vayager heb ik een plugin gemaakt voor de Mertik Dru haard.
met de plugin worden zowel de input van de afstandbediening herkent als het is mogelijk de haard aan te sturen.

De plugin werkt bij mij prima maar ik ben opzoek naar wat andere met een haard die dit kunnen testen.
dus als er meerdere zijn met een haard met Mertik afstandsbediening graag de plugin testen.

Code: Selecteer alles
//#######################################################################################################
//########################### Plugin-251 mertik maxitrol ################################################
//#######################################################################################################
/*********************************************************************************************\
 * This Plugin takes care of reception of mertik maxitrol for fireplace
 * PCB markings: G6R H4T1.
 *
 * Auteur             : Maurice Ruiter (Dodge)
 * Support            : www.nodo-domotica.nl
 * Datum              : 3-3-2015
 * Versie             : 1.0
 * Nodo productnummer : n.v.t. meegeleverd met Nodo code.
 * Compatibiliteit    : Vanaf Nodo build nummer ???
 * Syntax             : "maxitrol <Par1:Sensor ID>, <Par2:Basis Variabele>"
 *********************************************************************************************
 * Changelog: v1.0 initial release
 *********************************************************************************************
 * Technical information:
 *
 * 0001100101 10100101 10011010
 * 0001100101 10010110 10011010
 * 10 = 1
 * 01 = 0
 *
 * higher: 10011010
 * lower: 10100110
 * off:   01101010
 * on:   10101010
 \*********************************************************************************************/
#define PLUGIN_ID 251
#define PLUGIN_NAME "maxitrol"
#define MAXITROL_PULSECOUNT 26
#define PLUGIN_251_EVENT        "Maxitrol"
#define PLUGIN_251_COMMAND  "MaxiSend"
#define PLUGIN_251_ON  "On"
#define PLUGIN_251_OFF  "Off"
#define PLUGIN_251_UP  "Up"
#define PLUGIN_251_DOWN  "Down"
#define PLUGIN_251_STOP  "STOP"
#define PLUGIN_251_RUN_UP  "Run_Up"
#define PLUGIN_251_RUN_DOWN  "Run_Down"

#define FA20RFSTART                 100
#define FA20RFSPACE                  250
#define FA20RFLOW                   400
#define FA20RFHIGH                  750

byte Plugin_251_ProtocolCheckID(byte checkID);

byte Plugin_251_ProtocolValidID[2];
byte Plugin_251_ProtocolVar[2];

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

  switch(function)
  {
#ifdef PLUGIN_251_CORE
  case PLUGIN_RAWSIGNAL_IN:
    {
      if (RawSignal.Number !=MAXITROL_PULSECOUNT) return false;
      byte basevar=0;
      unsigned int bitstream=0;                   // holds first 16 bits
      byte address=0;
      byte command=0;
      byte status=0;
      char buffer[14]="";
      //==================================================================================
      // get bytes

            for(int x=3;x<=RawSignal.Number-1;x=x+2) {
         if (RawSignal.Pulses[x]*RawSignal.Multiply < 550) {
            bitstream = (bitstream << 1);           // 0
         } else {
            bitstream = (bitstream << 1) | 0x1;     // 1
         }
      }
      //==================================================================================
      // all bytes received, make sure checksum is okay
     if (RawSignal.Pulses[1]*RawSignal.Multiply > 550) return false;
      if (RawSignal.Pulses[2]*RawSignal.Multiply > 550) return false;
      //==================================================================================
      command=(bitstream) & 0x0f;                   // get address from pulses
      address=(bitstream)>>4;                       // get command from pulses

      if (command == 0xB) status=1;                 // up
      else if (command == 0xD) status=2;            // down
      else if (command == 0x3) status=4;            // on
      else if (command == 0x7) status=3;            // off
      else if (command == 0x8) status=5;            // stop
      else if (command == 0xa) status=6;            // run up
      else if (command == 0xc) status=7;            // run down
      else {
        return false;
      }

      //+==================================================================================
   //   Serial.print(" ID=");
   //   Serial.print(bitstream1,DEC);
   //   Serial.print(" actie=");
   //   Serial.println(event->Par2);
      //==================================================================================
      event->Par2=status;
      event->Par1=address,DEC;
      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       = 251; // Nummer van dit device
      RawSignal.Repeats    = true;
      if (basevar == 0) return true;
      //==================================================================================
      RawSignal.Number=0;
      success = true;
      break;
    }      //einde ontvangen

   case PLUGIN_COMMAND:
    {
            unsigned int bitstream=0;                   // holds first 16 bits
   //   unsigned int bitstream1=0;                   // holds the 4 bits for checksum
      unsigned int bitstream2=0;                   // holds last 8 bits
            if (event->Par2 == 1) bitstream2=0xB;
             else if (event->Par2 == 2) bitstream2=0xD;
             else if (event->Par2 == 3) bitstream2=0x7;
             else if (event->Par2 == 4) bitstream2=0x3;
             else if (event->Par2 == 5) bitstream2=0x8;
             else if (event->Par2 == 6) bitstream2=0xA;
             else if (event->Par2 == 7) bitstream2=0xC;
                   else {
        return false;
      }
 // bitstream1=0x3;
      bitstream= event->Par1;

    RawSignal.Multiply=50;
    RawSignal.Repeats=10;
    RawSignal.Delay=20;
    RawSignal.Pulses[1]=FA20RFLOW/RawSignal.Multiply;
    RawSignal.Pulses[2]=FA20RFLOW/RawSignal.Multiply;
        for(byte x=18;x>=3;x=x-2)
      {
      if ((bitstream & 1) == 1) {
        RawSignal.Pulses[x] = FA20RFLOW/RawSignal.Multiply;
        RawSignal.Pulses[x-1] = FA20RFHIGH/RawSignal.Multiply;
      }
      else {
        RawSignal.Pulses[x] = FA20RFHIGH/RawSignal.Multiply;
        RawSignal.Pulses[x-1] = FA20RFLOW/RawSignal.Multiply;
      }
      bitstream = bitstream >> 1;
      }
          for(byte x=26;x>=19;x=x-2)
      {
      if ((bitstream2 & 1) == 1) {
        RawSignal.Pulses[x] = FA20RFLOW/RawSignal.Multiply;
        RawSignal.Pulses[x-1] = FA20RFHIGH/RawSignal.Multiply;
      }
      else {
        RawSignal.Pulses[x] = FA20RFHIGH/RawSignal.Multiply;
        RawSignal.Pulses[x-1] = FA20RFLOW/RawSignal.Multiply;
      }
      bitstream2 = bitstream2 >> 1;
      }

    RawSignal.Pulses[27]=FA20RFSTART/RawSignal.Multiply;
    RawSignal.Number=27;

    RawSendRF();
    success=true;
    break;
    }

#endif // PLUGIN_251_CORE

#if NODO_MEGA

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

    if(GetArgv(string,TempStr,1))
      {
      if(strcasecmp(TempStr,PLUGIN_251_EVENT)==0)
        {
        event->Type = NODO_TYPE_PLUGIN_EVENT;
        event->Command = 251; // Plugin nummer
        success=true;
        }
        if(strcasecmp(TempStr,PLUGIN_251_COMMAND)==0)
        {
        event->Type = NODO_TYPE_PLUGIN_COMMAND;
        event->Command = 251; // Plugin nummer
        success=true;
        }
      }
     // char *TempStr=(char*)malloc(INPUT_COMMAND_SIZE);
    if(GetArgv(string,TempStr,3)) {
      if(strcasecmp(TempStr,PLUGIN_251_ON)==0) event->Par2=4;
      if(strcasecmp(TempStr,PLUGIN_251_OFF)==0) event->Par2=3;
      if(strcasecmp(TempStr,PLUGIN_251_UP)==0) event->Par2=1;
      if(strcasecmp(TempStr,PLUGIN_251_DOWN)==0) event->Par2=2;
      if(strcasecmp(TempStr,PLUGIN_251_STOP)==0) event->Par2=5;
      if(strcasecmp(TempStr,PLUGIN_251_RUN_UP)==0) event->Par2=6;
      if(strcasecmp(TempStr,PLUGIN_251_RUN_DOWN)==0) event->Par2=7;

    }
    free(TempStr);
    break;
    }

  case PLUGIN_MMI_OUT:
    {
       if(event->Type==NODO_TYPE_PLUGIN_EVENT)
        strcpy(string,PLUGIN_251_EVENT);                                        // Event

      else if(event->Type==NODO_TYPE_PLUGIN_COMMAND)
        strcpy(string,PLUGIN_251_COMMAND);                                      // Command

 //   strcpy(string,PLUGIN_NAME);            // Eerste argument=het commando deel
    strcat(string," ");
    strcat(string,int2str(event->Par1));
    strcat(string,",");

       // free(TempStr);
   // break;
          if (event->Par2==1) strcat(string,"Up");
        else if (event->Par2==2) strcat(string,"Down");
        else if (event->Par2==3) strcat(string,"Off");
        else if (event->Par2==4) strcat(string,"On");
        else if (event->Par2==5) strcat(string,"Stop");
        else if (event->Par2==6) strcat(string,"Run Up");
        else if (event->Par2==7) strcat(string,"Run Down");
      else {
         return false;
      }
    break;
    }
#endif //NODO_MEGA
  }     
  return success;
}
dodge
 
Berichten: 38
Geregistreerd: 09 dec 2012, 13:32

Re: Mertik maxitrol plugin

Berichtdoor rwijbenga » 30 maart 2015, 22:04

Goed bezig !

Ik heb zelf geen haard, maar ik ga eens rondvragen..
rwijbenga
 
Berichten: 344
Geregistreerd: 28 aug 2011, 14:58

Re: Mertik maxitrol plugin

Berichtdoor kabouter » 01 apr 2015, 08:49

Ik wil deze plugin wel testen maar,
ben het spoor helemaal bijster.
Ik weet nu namelijk niet meer waaronder dit getest dient te worden.
er zijn namelijk nu 3 mogelijkheden.

1è : De "normale" Node met WebApp
2è : onder RTFXcom via Domoticz
3è : onder RFLink via Domoticz
Heb zelf de Faber haard met de Mertik Maxitrol afstandbediening. Deze heeft ruim een jaar geleden nog mooi gewerkt met de "oude" node webapp.

laat maar iets weten dan kan ik het weer eens oppakken.
kabouter
 
Berichten: 214
Geregistreerd: 10 nov 2011, 13:57

Re: Mertik maxitrol plugin

Berichtdoor Voyager » 01 apr 2015, 10:57

kabouter schreef:1è : De "normale" Node met WebApp
2è : onder RTFXcom via Domoticz
3è : onder RFLink via Domoticz


Bovenstaande plugin is uiteraard voor 1. de normale Nodo
Experimentele plugins worden alleen voor de standaard Nodo geplaatst.
2. is er niet meer. Geen optie.. wissen/vergeten.
3. heeft als ik het zo eens bekijk duidelijk in de header staan dat het alleen voor rflink is.
Voyager
 
Berichten: 180
Geregistreerd: 23 okt 2014, 14:26

Re: Mertik maxitrol plugin

Berichtdoor tim » 01 apr 2015, 13:49

Zie ook mijn andere oproep. Zou het nou niet mogelijk zijn om samen te werken en misschien zo regelen dat de plugins voor zowel Nodo en RFLink werken? Dan heb je ook geen verwarring.
tim
 
Berichten: 114
Geregistreerd: 11 nov 2013, 14:21

Re: Mertik maxitrol plugin

Berichtdoor dodge » 01 apr 2015, 18:49

Zoals al gezegt is deze bovenstaande plugin gewoon voor de nodo bedoeld.

@tim, helemaal met je eens hoe meer samenwerking hoe beter het eind resultaat zal zijn.

Om beide gebruikers blij te maken. Als je de laatste versie van rflink download zit deze plugin er standaard in. Alleen herkent domoticz deze nog niet.

@kabouter ik ben erg benieuwd naar je bevindingen tot nu toe heb ik deze alleen helemaal kunnen testen met mijn eigen haard.

Dodge
dodge
 
Berichten: 38
Geregistreerd: 09 dec 2012, 13:32

Re: Mertik maxitrol plugin

Berichtdoor kabouter » 01 apr 2015, 22:33

dodge schreef:Zoals al gezegt is deze bovenstaande plugin gewoon voor de nodo bedoeld.

@tim, helemaal met je eens hoe meer samenwerking hoe beter het eind resultaat zal zijn.

Om beide gebruikers blij te maken. Als je de laatste versie van rflink download zit deze plugin er standaard in. Alleen herkent domoticz deze nog niet.

@kabouter ik ben erg benieuwd naar je bevindingen tot nu toe heb ik deze alleen helemaal kunnen testen met mijn eigen haard.

Dodge


Ik heb bovenstaand eens getest... maar helaas zie ik hier geen mertik maxitrol code van terug maar gewoon NewKAKU 0xFFFFFCF,16 zoals ik 2 jaar geleden ook al te zien kreeg.
Ik zie ook 2 x Cresta codes voorbij komen zoals Cresta 58,0 en Cresta 86,0, maar bij het invoeren van code Cresta 58,8 of 86,8 krijg ik allleen maar foutmeldingen Unknown command.
gebruik nu momenteel de laatste te downloaden nodo bestanden met de hierboven toegevoegde plugins.
kabouter
 
Berichten: 214
Geregistreerd: 10 nov 2011, 13:57

Re: Mertik maxitrol plugin

Berichtdoor dodge » 02 apr 2015, 07:13

kabouter schreef:
Ik heb bovenstaand eens getest... maar helaas zie ik hier geen mertik maxitrol code van terug maar gewoon NewKAKU 0xFFFFFCF,16 zoals ik 2 jaar geleden ook al te zien kreeg.
Ik zie ook 2 x Cresta codes voorbij komen zoals Cresta 58,0 en Cresta 86,0, maar bij het invoeren van code Cresta 58,8 of 86,8 krijg ik allleen maar foutmeldingen Unknown command.
gebruik nu momenteel de laatste te downloaden nodo bestanden met de hierboven toegevoegde plugins.


niet echt het antwoord waar ik op hoopte :D Maar goed we gaan eens kijken waar het aan ligt.
Vreemd is dat hij de zendingen als een kaku ziet aangezien deze berichten veel groter zouden moeten zijn dan wat de mertik uitzend.
Ik zal je vanavond even een andere plugin code sturen dan kunnen we even het verschil bekijken.

Ik heb de plugin gemaakt op 744 versie
Ik zal vanavond even de laatste downloaden en hiermee proberen kijken of hier nog verschil in zit.

nog een tweede vraag welk type mertik heb jij precies?
mijne ziet er zo uit:

Afbeelding
dodge
 
Berichten: 38
Geregistreerd: 09 dec 2012, 13:32

Re: Mertik maxitrol plugin

Berichtdoor kabouter » 02 apr 2015, 09:54

Ik heb deze afstand bediening is zo'n 10 jaar oud. Afbeelding

Functies Aan / Uit
Hoger / Lager
kabouter
 
Berichten: 214
Geregistreerd: 10 nov 2011, 13:57

Re: Mertik maxitrol plugin

Berichtdoor dodge » 02 apr 2015, 20:13

aah dat verklaart.
het signaal van deze afstandsbediening is helemaal anders dan die van de Mertik.
Toevallig hebben mijn ouders ook een faber maar hierbij alleen een afstandsbediening met harder en zachter.
Deze heb eens even geanalyseerd. In ieder geval getracht te analyseren. Maar de afstandsbediening die ik hier heb geeft z'n slecht signaal dat dit erg lastig is.
als ik de standaard nodo rawsignal number uitlees krijg ik iedere keer een ander signaal.

Dit is misschien iets dat je met jou afstandsbediening zou kunnen kunnen proberen...
zet plugin 255 aan en hang je nodo aan de serial. Kijk vervolgens eens welke waardes je krijgt.
Hier verschilt dit tussen de 20 en de 35. Dit geeft al aan hoe slecht het signaal is.

dodge
dodge
 
Berichten: 38
Geregistreerd: 09 dec 2012, 13:32


Keer terug naar Plug-ins

Wie is er online?

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

cron