Domoticz, hoe nu verder......

Experimentele Nodo software en alles wat niet onder een plug-in valt.
Forumregels
LET OP: DIT IS HET EXPERIMENTELE GEDEELTE
BETREDEN OP EIGEN RISICO :lol:

Re: Domoticz, hoe nu verder......

Berichtdoor Voyager » 15 mei 2015, 11:46

bertb schreef:Daarnaast heb ik een RPI B+ dedicated toegerust voor RFLINK en dat leidt niet tot hangende situaties.
Ik vraag me af of er misschien een conflict is als er op een RPI 2 B RFLINK en ZWAVE (beide USB) zit.

Nee, er is inmiddels een versie in test die niet meer lijkt te gaan hangen. Wellicht zat iets in de Nodo code um dwars.
Voyager
 
Berichten: 180
Geregistreerd: 23 okt 2014, 14:26

Re: Domoticz, hoe nu verder......

Berichtdoor bunny007 » 22 dec 2015, 22:53

Nogmaals met dank aan Martinus, ik heb zijn script even iets aangepast (+/-12 uur, 0,0 kennis van c++) zodat ik nu de nodo's met ethernetshield i.c.m. domoticz kan gebruiken met de juiste waardes.

Changelog 0.2

* -. Possible to have negative value's (-5.04)
* -. Temp in normal format (12.34)
* -. Added the Domoticz nvalue with Par 4

Code: Selecteer alles
//#######################################################################################################
//############################### Plugin-250: SendHTTP demo for Domoticz JSON API #######################
//#######################################################################################################

/*********************************************************************************************\
 * This protocol provides direct peer-to-peer HTTP communication between Nodo unit's
 *
 * Author             : Martinus van den Broek
 * Updated by         : The Bunny (22-12-2015)
 * Support            : None! demo...
 * Date               : Feb 2015
 * Version            : 0.2
 * Compatibility      : R744
 * Syntax             : "sendHTTP <command>,<IDX>,<Value/state>
 *
 * Changelog 0.2
 * -. Possible to have negative value's (-5.04)
 * -. Temp in normal format (12.34)
 * -. Added the Domoticz nvalue with Par 4
 *
 * 
 * Boot 5; OregonV2 237,1        # store oregon sensor 237 to var1
 * Boot 5; OregonV2 123,2        # store oregon sensor 123 to var2
 * Boot 5; TimerSet 1,30         # set timer to 30 seconds
 * Timer 1; TimerSet 1,30        # reload timer
 * Timer 1; SendHTTP 2,6,1,0,0   # send tempsensor command to device idx=6 with value from var1 to Svalue
 * Timer 1; SendHTTP 2,7,2,0,0   # send tempsensor command to device idx=7 with value from var2 to Svalue
 * Timer 1; SendHTTP 2,8,0,4,0   # send tempsensor command to device idx=8 with value from var4 to Nvalue
 * Timer 1; SendHTTP 2,9,0,5,0   # send tempsensor command to device idx=9 with value from var5 to Nvalue
 *
 * SendHTTP 1,6,1,0,0   # send On command to device idx=6 with value 1
 * SendHTTP 1,6,0,0,0   # send Off command to device idx=6 with value 0
 * SendHTTP 1,7,1,0,0   # send On command to device idx=7 with value 1
 * SendHTTP 1,8,0,0,0   # send Off command to device idx=8 with value 0
 *
 *
 * Action on:
 * http://192.168.50.107:6636/?event=NewKakuSend%209,On"
 *
 * Action off:
 * http://192.168.50.107:6636/?event=NewKakuSend%209,Off"
 *
 * Action on:
 * http://192.168.50.107:6636/?event=UserEvent100,1"
 *
 * Action off:
 * http://192.168.50.107:6636/?event=UserEvent110,2"
 *
 *
 \*********************************************************************************************/

boolean P250SendCustomHTTPRequest(char* Request, byte ip, unsigned long port);


#define PLUGIN_250_IP 189       // x.x.x.8 = address of Domoticz, enter the last number in the subnet
#define PLUGIN_250_PORT 8080    // Default port of Domoticz

#define PLUGIN_ID 250
#define PLUGIN_NAME "SendHTTP"

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

  switch(function)
  {
#ifdef PLUGIN_250_CORE

  #if NODO_MEGA
  case PLUGIN_COMMAND:
    {
                                // Par 1 ='command/type'
      byte Par2=event->Par2 & 0xff;       // Par 2 = Domoticz device IDX
      byte Par3=event->Par2>>8 & 0xff;    // Par 3 = Variabel nr domoticz svalue or 0=Off, 1=On
      byte Par4=event->Par2>>16 & 0xff;   // Par 4 = Variabel nr domoticz nvalue
      byte Par5=event->Par2>>24 & 0xff;   // Par 5 = future

      byte x;
      char *HttpRequest=(char*)malloc(INPUT_LINE_SIZE+1);
 
      if (event->Par1 == 1)         // switch
        {
        strcpy(HttpRequest,"/json.htm?type=command&param=switchlight&idx=");
          strcat(HttpRequest,int2str(Par2));
          strcat(HttpRequest,"&switchcmd=");
          if (Par3==1)
            strcat(HttpRequest,"On");
          else
            strcat(HttpRequest,"Off");
          strcat(HttpRequest,"&level=0");
        }

      if (event->Par1 == 2)         // TempSensors & Humidity
        {
          strcpy(HttpRequest,"/json.htm?type=command&param=udevice&idx=");
          strcat(HttpRequest,int2str(Par2));
          strcat(HttpRequest,"&nvalue=");
       
         // Send the value of nvalue
         float nvalue = UserVar[Par4-1];
         char buffer1[12];
         String tempStr1 = dtostrf(nvalue, 4,2,buffer1);
         strcat(HttpRequest, buffer1);    
       
        strcat(HttpRequest,"&svalue=");
           
         // Send the value of svalue
         float svalue = UserVar[Par3-1];
         char buffer2[12];
         String tempStr2 = dtostrf(svalue, 4,2,buffer2);
         strcat(HttpRequest, buffer2);
        }

      x=P250SendCustomHTTPRequest(HttpRequest,PLUGIN_250_IP,PLUGIN_250_PORT);
      free(HttpRequest);

      success=true;
      break;
     }
  #endif

#endif // PLUGIN_250_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(GetArgv(string,TempStr,3))
               event->Par2=str2int(TempStr);

           if(GetArgv(string,TempStr,4))
               event->Par2|=str2int(TempStr)<<8;

           if(GetArgv(string,TempStr,5))
               event->Par2|=str2int(TempStr)<<16;

           if(GetArgv(string,TempStr,6))
               event->Par2|=str2int(TempStr)<<24;

           event->Type = NODO_TYPE_PLUGIN_COMMAND;
           event->Command = PLUGIN_ID; // 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 & 0xff));
     strcat(string,",");
     strcat(string,int2str(event->Par2>>8 & 0xff));
     strcat(string,",");
     strcat(string,int2str(event->Par2>>16 & 0xff));
     strcat(string,",");
     strcat(string,int2str(event->Par2>>24 & 0xff));
     break;
     }
   #endif //NODO_MEGA

  }

  return success;
}

#define IP_BUFFER_SIZE            256

boolean P250SendCustomHTTPRequest(char* Request, byte ip, unsigned long port)
  {
  byte targetIP[4];
  int InByteCounter,x,y;
  byte InByte;
  unsigned long TimeoutTimer;
  const int TimeOut=5000;
  EthernetClient HTTPClient; // Client class voor HTTP sessie.
  byte State=0;
  char *IPBuffer=(char*)malloc(IP_BUFFER_SIZE+1);

  targetIP[0] = EthernetNodo.localIP()[0];
  targetIP[1] = EthernetNodo.localIP()[1];
  targetIP[2] = EthernetNodo.localIP()[2];
  targetIP[3] = ip;

  strcpy(IPBuffer,"GET ");

  // Alle spaties omzetten naar %20 en toevoegen aan de te verzenden regel.
  y=strlen(IPBuffer);
  for(x=0;x<strlen(Request);x++)
    {           
    if(Request[x]==32)
      {
      IPBuffer[y++]='%';
      IPBuffer[y++]='2';
      IPBuffer[y++]='0';
      }
    else
      {
      IPBuffer[y++]=Request[x];
      }
    }
  IPBuffer[y]=0;

  strcat(IPBuffer," HTTP/1.1");

  Serial.println(IPBuffer);

  if(HTTPClient.connect(targetIP,port))
    {
      HTTPClient.println(IPBuffer);
      HTTPClient.println("Host: 192.168.0.123");
      HTTPClient.println("User-Agent: Mozilla/5.0");
      HTTPClient.println(F("Connection: Close"));
      HTTPClient.println();// Afsluiten met een lege regel is verplicht in http protocol/

      TimeoutTimer=millis()+TimeOut; // Als er te lange tijd geen datatransport is, dan wordt aangenomen dat de verbinding (om wat voor reden dan ook) is afgebroken.
      IPBuffer[0]=0;
      InByteCounter=0;
      while(TimeoutTimer>millis() && HTTPClient.connected())
        {
        if(HTTPClient.available())
          {
            InByte=HTTPClient.read();
         
            if(isprint(InByte) && InByteCounter<IP_BUFFER_SIZE)
              IPBuffer[InByteCounter++]=InByte;

            else if(InByte==0x0A)
              {
                IPBuffer[InByteCounter]=0;
                // De regel is binnen
                InByteCounter=0;         
              }
          }
        }
      delay(500);
      HTTPClient.flush();// Verwijder eventuele rommel in de buffer.
      HTTPClient.stop();
    }
  free(IPBuffer);
  return State;
  }
R744, Mega, LAN, Nodoshield v1.2, 1xDHT22, 5xDS18B20, 5x8ch relay, 40/8p PCF8574, 5xKAKU, 4x2262, RFID
R744, Mega, LAN, 2xDS18B20, 2x8ch relay, 16/8p PCF8574, 2xHC-SR501
R818, MiniPro, 433RF, 2xMG995 Servo
Orange PI PC (€15) - Lubuntu 14.04 - Domoticz
bunny007
 
Berichten: 129
Geregistreerd: 09 dec 2011, 08:46

Re: Domoticz, hoe nu verder......

Berichtdoor DMeekelenkamp » 29 dec 2015, 11:26

Hallo Bunny007

Ik heb de plugin ook getest. Maar ik kan wel userevents naar de nodo sturen vanuit Domoticz maar zodra ik probeer een waarde of switch command te versturen naar Domoticz maakt hij van deze regel:

SendHTTP 1,37,1,0,0 iets anders de nodo maakt hier SendHTTP 0,37,1,0,0 van.
Het maakt ook niet uit of ik als eerste par een 1 of 2 gebruik. is dit bij jou ook?
DMeekelenkamp
 
Berichten: 87
Geregistreerd: 20 dec 2013, 19:25

Re: Domoticz, hoe nu verder......

Berichtdoor bunny007 » 29 dec 2015, 21:47

Dat is best vreemd, je gebruikt R744 ?, je zou is even via serieel kunnen kijken wat hij precies verstuurd, kun je daar wat beter zien, 1 is voor switch, 2 voor variable waardes.

Ik gebruik dit voor waardes in de variable (temp sensors);

EventlistWrite; Timer 1; SendHTTP 2,45,1,0,0
EventlistWrite; Timer 1; SendHTTP 2,50,0,2,0
EventlistWrite; Timer 1; SendHTTP 2,44,3,0,0
EventlistWrite; Timer 1; SendHTTP 2,41,4,0,0
EventlistWrite; Timer 1; SendHTTP 2,46,5,0,0
EventlistWrite; Timer 1; SendHTTP 2,43,6,0,0
EventlistWrite; Timer 1; SendHTTP 2,42,7,0,0
EventlistWrite; Timer 1; SendHTTP 2,48,8,0,0

Zie via netwerk terminal;

Input=Eventlist(1.12); Unit=10; Event=SendHTTP 2,45,1,0,0
Input=Eventlist(1.13); Unit=10; Event=SendHTTP 2,50,0,2,0
Input=Eventlist(1.14); Unit=10; Event=SendHTTP 2,44,3,0,0
Input=Eventlist(1.15); Unit=10; Event=SendHTTP 2,41,4,0,0
Input=Eventlist(1.16); Unit=10; Event=SendHTTP 2,46,5,0,0
Input=Eventlist(1.17); Unit=10; Event=SendHTTP 2,43,6,0,0
Input=Eventlist(1.18); Unit=10; Event=SendHTTP 2,42,7,0,0
Input=Eventlist(1.19); Unit=10; Event=SendHTTP 2,48,8,0,0

en voor een switch

EventlistWrite; Timer 1; SendHTTP 1,62,1,0,0
R744, Mega, LAN, Nodoshield v1.2, 1xDHT22, 5xDS18B20, 5x8ch relay, 40/8p PCF8574, 5xKAKU, 4x2262, RFID
R744, Mega, LAN, 2xDS18B20, 2x8ch relay, 16/8p PCF8574, 2xHC-SR501
R818, MiniPro, 433RF, 2xMG995 Servo
Orange PI PC (€15) - Lubuntu 14.04 - Domoticz
bunny007
 
Berichten: 129
Geregistreerd: 09 dec 2011, 08:46

Re: Domoticz, hoe nu verder......

Berichtdoor bunny007 » 20 jan 2016, 08:20

* Changelog 0.3
* -. Dont use numbers above 255 for uservariables etc
* -. Added Domoticz Scenes with SendHTTP 3,2,1,0,0
(/json.htm?type=command&param=switchscene&idx=2&switchcmd=On)
* -. Added Domoticz UserVariables with SendHTTP 4,3,123,100,0
(/json.htm?type=command&param=updateuservariable&idx=3&vname=100&vtype=0&vvalue=123)

Code: Selecteer alles
//#######################################################################################################
//############################### Plugin-250: SendHTTP for Domoticz JSON API #######################
//#######################################################################################################

/*********************************************************************************************\
 * This plugin provides direct HTTP communication from a Nodo (mega with ethernetshield) to a Domoticz controller
 *
 * Author             : Martinus van den Broek
 * Updated by        : The Bunny (20-01-2016)
 * Support            : None! demo...
 * Date               : Feb 2015
 * Version            : 0.3
 * Compatibility      : R744
 * Syntax             : "sendHTTP <command>,<IDX>,<Value/state>,<Value>
 *
 * Changelog 0.3
 * -. Dont use numbers above 255 for uservariables etc
 * -. Added Domoticz Scenes with SendHTTP 3,2,1,0,0 (/json.htm?type=command&param=switchscene&idx=2&switchcmd=On)
 * -. Added Domoticz UserVariables with SendHTTP 4,3,123,100,0 (/json.htm?type=command&param=updateuservariable&idx=3&vname=100&vtype=0&vvalue=123)
 *
 * Changelog 0.2
 * -. Possible to have negative value's (-5.04)
 * -. Temp in normal format (12.34)
 * -. Added the Domoticz nvalue with Par 4
 *
 *
 * For Variables with the Svalue
 * Timer 1; SendHTTP 2,6,1,0,0   # send tempsensor command to device idx=6 with value from var1 to Svalue
 * Timer 1; SendHTTP 2,7,2,0,0   # send tempsensor command to device idx=7 with value from var2 to Svalue
 *
 * For Variables with the Nvalue
 * Timer 1; SendHTTP 2,8,0,4,0   # send tempsensor command to device idx=8 with value from var4 to Nvalue
 * Timer 1; SendHTTP 2,9,0,5,0   # send tempsensor command to device idx=9 with value from var5 to Nvalue
 *
 * For Switches
 * SendHTTP 1,6,1,0,0   # send On command to device idx=6 with value 1
 * SendHTTP 1,6,0,0,0   # send Off command to device idx=6 with value 0
 * SendHTTP 1,7,1,0,0   # send On command to device idx=7 with value 1
 * SendHTTP 1,8,0,0,0   # send Off command to device idx=8 with value 0
 *
 * For Scenes
 * SendHTTP 3,2,1,0,0   # Set scene with idx=2 with value On
 * SendHTTP 3,2,0,0,0   # Set scene with idx=2 with value Off
 *
 * For Uservariables (ONLY NUMBERS AS NAME AND VALUE)
 * SendHTTP 4,3,123,100,0   # Set uservariable with idx=3 with value 123 and name 100
 * SendHTTP 4,3,124,111,0   # Set uservariable with idx=3 with value 124 and name 111
 *
 * Action on: NewKakuSend 1,On
 * http://192.168.50.198:6636/?event=NewKakuSend%201,On
 *
 * Action off: NewKakuSend 1,Off
 * http://192.168.50.198:6636/?event=NewKakuSend%201,Off
 *
 * Action on: Userevent 110,1
 * http://192.168.50.198:6636/?event=Userevent%20110,1
 *
 * Action VariableSet: VariableSet 8,1
 * http://192.168.50.198:6636/?event=VariableSet%208,1
 *
 * Action off: Userevent 110,2
 * http://192.168.50.198:6636/?event=Userevent%20110,2
 *
 * Action off: ExtWiredOut 10,Off
 * http://192.168.50.198:6636/?event=Userevent%20110,2
 *
 * Multi Action on: Userevent 126,1;Sound 0,10;TimerSet 22,600
 * http://192.168.50.198:6636/?event=Userevent%20126,1;Sound%200,10;TimerSet%2022,600
 *
 \*********************************************************************************************/

boolean P250SendCustomHTTPRequest(char* Request, byte ip, unsigned long port);

#define PLUGIN_250_IP 189       // x.x.x.8 = address of Domoticz, enter the last number in the subnet
#define PLUGIN_250_PORT 8080    // Default port of Domoticz

#define PLUGIN_ID 250
#define PLUGIN_NAME "SendHTTP"

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

  switch(function)
  {
#ifdef PLUGIN_250_CORE

  #if NODO_MEGA
  case PLUGIN_COMMAND:
    {
                                // Par 1 ='command/type' 1=Switch 2=Variable 3=Scene 4=Uservariables
      byte Par2=event->Par2 & 0xff;       // Par 2 = Domoticz Device IDX
      byte Par3=event->Par2>>8 & 0xff;    // Par 3 = Variabel or number for domoticz (svalue or 0=Off, 1=On )
      byte Par4=event->Par2>>16 & 0xff;   // Par 4 = Variabel or number for domoticz (nvalue)
      byte Par5=event->Par2>>24 & 0xff;   // Par 5 = Future function
    
    
      byte x;
      char *HttpRequest=(char*)malloc(INPUT_LINE_SIZE+1);
 
      if (event->Par1 == 1)         // Switches On/Off
        {
        strcpy(HttpRequest,"/json.htm?type=command&param=switchlight&idx=");
          strcat(HttpRequest,int2str(Par2));
          strcat(HttpRequest,"&switchcmd=");
          if (Par3==1)
            strcat(HttpRequest,"On");
          else
            strcat(HttpRequest,"Off");
          strcat(HttpRequest,"&level=0");
        }
      
      if (event->Par1 == 2)         // TempSensors & Humidity
        {
          strcpy(HttpRequest,"/json.htm?type=command&param=udevice&idx=");
          strcat(HttpRequest,int2str(Par2));
          strcat(HttpRequest,"&nvalue=");
       
         // Send the value of nvalue
         float nvalue = UserVar[Par4-1];
         char buffer1[12];
         String tempStr1 = dtostrf(nvalue, 4,2,buffer1);
         strcat(HttpRequest, buffer1);    
       
        strcat(HttpRequest,"&svalue=");
           
         // Send the value of svalue
         float svalue = UserVar[Par3-1];
         char buffer2[12];
         String tempStr2 = dtostrf(svalue, 4,2,buffer2);
         strcat(HttpRequest, buffer2);
        }

     if (event->Par1 == 3)         // Scenes On/Off
        {
        //strcpy(HttpRequest,"/json.htm?type=command&param=switchlight&idx=");
        strcpy(HttpRequest,"/json.htm?type=command&param=switchscene&idx=");
        strcat(HttpRequest,int2str(Par2));
          strcat(HttpRequest,"&switchcmd=");
          if (Par3==1)
            strcat(HttpRequest,"On");
          else
            strcat(HttpRequest,"Off");
          strcat(HttpRequest,"&level=0");
        }
      
      if (event->Par1 == 4)         // User Variables in Domoticz (only numbers as name and value)
        {
          strcpy(HttpRequest,"/json.htm?type=command&param=updateuservariable&idx=");
          strcat(HttpRequest,int2str(Par2));
          strcat(HttpRequest,"&vname=");
       
         // Send the name of uservariable (only numbers as name and value)
         strcat(HttpRequest,int2str(Par4));
             
        strcat(HttpRequest,"&vtype=0&vvalue=");
           
         // Send the value of uservariable (only numbers as name and value)
         strcat(HttpRequest,int2str(Par3)); 
         
        }      
      
      
      x=P250SendCustomHTTPRequest(HttpRequest,PLUGIN_250_IP,PLUGIN_250_PORT);
      free(HttpRequest);

      success=true;
      break;
     }
  #endif

#endif // PLUGIN_250_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(GetArgv(string,TempStr,3))
               event->Par2=str2int(TempStr);

           if(GetArgv(string,TempStr,4))
               event->Par2|=str2int(TempStr)<<8;

           if(GetArgv(string,TempStr,5))
               event->Par2|=str2int(TempStr)<<16;

           if(GetArgv(string,TempStr,6))
               event->Par2|=str2int(TempStr)<<24;

           event->Type = NODO_TYPE_PLUGIN_COMMAND;
           event->Command = PLUGIN_ID; // 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 & 0xff));
     strcat(string,",");
     strcat(string,int2str(event->Par2>>8 & 0xff));
     strcat(string,",");
     strcat(string,int2str(event->Par2>>16 & 0xff));
     strcat(string,",");
     strcat(string,int2str(event->Par2>>24 & 0xff));
     break;
     }
   #endif //NODO_MEGA

  }

  return success;
}

#define IP_BUFFER_SIZE            256

boolean P250SendCustomHTTPRequest(char* Request, byte ip, unsigned long port)
  {
  byte targetIP[4];
  int InByteCounter,x,y;
  byte InByte;
  unsigned long TimeoutTimer;
  const int TimeOut=5000;
  EthernetClient HTTPClient; // Client class voor HTTP sessie.
  byte State=0;
  char *IPBuffer=(char*)malloc(IP_BUFFER_SIZE+1);

  targetIP[0] = EthernetNodo.localIP()[0];
  targetIP[1] = EthernetNodo.localIP()[1];
  targetIP[2] = EthernetNodo.localIP()[2];
  targetIP[3] = ip;

  strcpy(IPBuffer,"GET ");

  // Alle spaties omzetten naar %20 en toevoegen aan de te verzenden regel.
  y=strlen(IPBuffer);
  for(x=0;x<strlen(Request);x++)
    {           
    if(Request[x]==32)
      {
      IPBuffer[y++]='%';
      IPBuffer[y++]='2';
      IPBuffer[y++]='0';
      }
    else
      {
      IPBuffer[y++]=Request[x];
      }
    }
  IPBuffer[y]=0;

  strcat(IPBuffer," HTTP/1.1");

  Serial.println(IPBuffer);

  if(HTTPClient.connect(targetIP,port))
    {
      HTTPClient.println(IPBuffer);
      HTTPClient.println("Host: 192.168.0.123");
      HTTPClient.println("User-Agent: Mozilla/5.0");
      HTTPClient.println(F("Connection: Close"));
      HTTPClient.println();// Afsluiten met een lege regel is verplicht in http protocol/

      TimeoutTimer=millis()+TimeOut; // Als er te lange tijd geen datatransport is, dan wordt aangenomen dat de verbinding (om wat voor reden dan ook) is afgebroken.
      IPBuffer[0]=0;
      InByteCounter=0;
      while(TimeoutTimer>millis() && HTTPClient.connected())
        {
        if(HTTPClient.available())
          {
            InByte=HTTPClient.read();
         
            if(isprint(InByte) && InByteCounter<IP_BUFFER_SIZE)
              IPBuffer[InByteCounter++]=InByte;

            else if(InByte==0x0A)
              {
                IPBuffer[InByteCounter]=0;
                // De regel is binnen
                InByteCounter=0;         
              }
          }
        }
      delay(500);
      HTTPClient.flush();// Verwijder eventuele rommel in de buffer.
      HTTPClient.stop();
    }
  free(IPBuffer);
  return State;
  }

R744, Mega, LAN, Nodoshield v1.2, 1xDHT22, 5xDS18B20, 5x8ch relay, 40/8p PCF8574, 5xKAKU, 4x2262, RFID
R744, Mega, LAN, 2xDS18B20, 2x8ch relay, 16/8p PCF8574, 2xHC-SR501
R818, MiniPro, 433RF, 2xMG995 Servo
Orange PI PC (€15) - Lubuntu 14.04 - Domoticz
bunny007
 
Berichten: 129
Geregistreerd: 09 dec 2011, 08:46

Re: Domoticz, hoe nu verder......

Berichtdoor Markie » 28 jan 2016, 21:21

helemaal top die plugin 250 ik heb hem al goed in gebruik.
alleen nu loop ik tegen een probleempje aan ik heb ook een luchtdruk sensor bmp085/bmp180 ergens aan de een mega hangen.
nu zou ik deze ook door willen sturen naar domoticz maar daar is de plugin denk niet voor geschikt ?

misschien moet dit of iets dergelijks er in ?

Code: Selecteer alles
Barometer
/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=BAR;BAR_FOR


The above sets the parameters for a Barometer device from hardware type 'General'

 IDX = id of your device (This number can be found in the devices tab in the column "IDX")
 BAR = Barometric pressure

 BAR_FOR = Barometer forecast



 Barometer forecast can be one of:

 0 = Stable

 1 = Sunny

 2 = Cloudy

 3 = Unstable

 4 = Thunderstorm

 5 = Unknown

 6 = Cloudy/Rain




Mvg Mark
Arduino Ethernet W5100-netwerk shield
Arduino Mega 2560 ATmega2560-16AU
Nodo Ethernetshield
Software Nodo Mega SWACNC-MEGA-R739
4 x Slave Small SWACNC-SMALL-R739
Lichtslave,Weerstationslave,Meterkastslave,ketelslave.
Gebruikers-avatar
Markie
 
Berichten: 419
Geregistreerd: 11 jan 2012, 11:41

Re: Domoticz, hoe nu verder......

Berichtdoor bunny007 » 29 jan 2016, 11:41

Hehe inderdaad,...zeer relaxed die plugin, werkt hier ook goed, ik heb helaas ook geen kennis van C++ dus daarom wat ik nu zeg zal allemaal wel onzin zijn maar, zoals al beschreven in de plugin kunnen alleen cijfers gebruikt worden, heeft met die "byte" of een INT die alleen cijfers mag bevatten, ik wilde daar ook al tekst in hebben voor variables in Domoticz maar helaas, na twee uurtjes prutsen heb ik het het ook maar voor lief genomen (mijn variables tussen de Nodo en Domoticz hebben numerieke naam variables)

Kun je niet een variable maken op de nodo waardoor je b.v. een 1 = Sunny, 2 = Cloudy, etc, en dat dan weer afvangen in Domoticz met een uservariable ?

Je kunt in Domoticz blocky o.a. uservariables defineren, en die worden actief bij wijziging, werkt ook voor temp en schakelaars o.a.

Heb wel z'on bmp085/bmp180 maar nog niet aangesloten/in gebruik, ook maar is werk van gaan maken ;)
R744, Mega, LAN, Nodoshield v1.2, 1xDHT22, 5xDS18B20, 5x8ch relay, 40/8p PCF8574, 5xKAKU, 4x2262, RFID
R744, Mega, LAN, 2xDS18B20, 2x8ch relay, 16/8p PCF8574, 2xHC-SR501
R818, MiniPro, 433RF, 2xMG995 Servo
Orange PI PC (€15) - Lubuntu 14.04 - Domoticz
bunny007
 
Berichten: 129
Geregistreerd: 09 dec 2011, 08:46

Re: Domoticz, hoe nu verder......

Berichtdoor Markie » 29 jan 2016, 15:17

Nou mijn vraag was eigenlijk meer omdat iets nog niet werkt.
Probeer maar eens een virtual luchtdruk sensor in domotizc te maken.
Schrijf het id op. Bij mij 110
In de Nodo komt de luchtdruk waarde netjes binnen met het commando bmp085read 1
Nu geef ik het commando sendhttp 2,110,1,0,0
Nu zou de luchtdrukwaarde in domoticz binnen moeten komen , maar het rechthoekige vakje
Klapt voor de helft dicht en meer gebeurd er niet.

Het is eigenlijk gewoon een variabele doorsturen , maak ik in domoticz een andere virtual sensor
Aan bijvoorbeeld temperatuur dan werkt het allemaal goed.

Misschien weet jij een oplossing ?

Wat betreft de nvalue mag deze gewoon 0 zijn je status zal alleen niet veranderen .


Mvg Mark
Arduino Ethernet W5100-netwerk shield
Arduino Mega 2560 ATmega2560-16AU
Nodo Ethernetshield
Software Nodo Mega SWACNC-MEGA-R739
4 x Slave Small SWACNC-SMALL-R739
Lichtslave,Weerstationslave,Meterkastslave,ketelslave.
Gebruikers-avatar
Markie
 
Berichten: 419
Geregistreerd: 11 jan 2012, 11:41

Re: Domoticz, hoe nu verder......

Berichtdoor bunny007 » 29 jan 2016, 15:45

Ziet er naar uit dat die plugin ook evt aangepast kan worden voor de baro,
hoe ziet die hele string eruit, incl waardes ?

/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=BAR;BAR_FOR

Als je het dan handmatig probeert, en de waardes in Domoticz krijgt
R744, Mega, LAN, Nodoshield v1.2, 1xDHT22, 5xDS18B20, 5x8ch relay, 40/8p PCF8574, 5xKAKU, 4x2262, RFID
R744, Mega, LAN, 2xDS18B20, 2x8ch relay, 16/8p PCF8574, 2xHC-SR501
R818, MiniPro, 433RF, 2xMG995 Servo
Orange PI PC (€15) - Lubuntu 14.04 - Domoticz
bunny007
 
Berichten: 129
Geregistreerd: 09 dec 2011, 08:46

Re: Domoticz, hoe nu verder......

Berichtdoor Markie » 29 jan 2016, 16:54

als ik dus dit doe

Code: Selecteer alles
/json.htm?type=command&param=udevice&idx=110&nvalue=0&svalue=900.23


dan gebeurt er in Domoticz dit
https://dl.dropboxusercontent.com/u/27118784/Knipsel.PNG

doe ik dit
Code: Selecteer alles
/json.htm?type=command&param=udevice&idx=110&nvalue=0&svalue=900.23;0


dan doet hij het dus wel er moet dus een ;0 t/m 6 achteraan voor de status en dat doet plugin 250 niet dus wellicht kan die aangepast worden

zie onder de statussen

Code: Selecteer alles
Barometer forecast can be one of:

 0 = Stable

 1 = Sunny

 2 = Cloudy

 3 = Unstable

 4 = Thunderstorm

 5 = Unknown

 6 = Cloudy/Rain


mvg Mark
Laatst bijgewerkt door Markie op 29 jan 2016, 17:10, in totaal 1 keer bewerkt.
Arduino Ethernet W5100-netwerk shield
Arduino Mega 2560 ATmega2560-16AU
Nodo Ethernetshield
Software Nodo Mega SWACNC-MEGA-R739
4 x Slave Small SWACNC-SMALL-R739
Lichtslave,Weerstationslave,Meterkastslave,ketelslave.
Gebruikers-avatar
Markie
 
Berichten: 419
Geregistreerd: 11 jan 2012, 11:41

VorigeVolgende

Keer terug naar Software

Wie is er online?

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