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 Markie » 30 jan 2016, 21:11

ja dat zou ook kunnen ja

ik had al even wat veranderd aan de plugin maar kan nog even niet compileren zodat ik wat kan testen me pc happert ff zodra ik
meer weet laat ik het weten.

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 Markie » 30 jan 2016, 21:14

bunny007 schreef:Kunnen toch wel iets bedenken met de eventlist dat we een variable op de nodo berekenen en dat netjes meegeven naar Domoticz ?

Afbeelding


er zijn in domoticz 6 opties

Barometer forecast can be one of:

0 = Stable

1 = Sunny

2 = Cloudy

3 = Unstable

4 = Thunderstorm

5 = Unknown

6 = Cloudy/Rain
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 » 30 jan 2016, 21:19

Moet wel lukken idd mss 15 extra regels in de eventlist, om die BMP aan te sluiten moet ik een mega uit de keuken gaan demonteren, of men laptop gaan afstoffen, uiteindelijk moet het toch een keer gaan gebeuren :D
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 » 30 jan 2016, 21:22

bunny007 schreef:Moet wel lukken idd mss 15 extra regels in de eventlist, om die BMP aan te sluiten moet ik een mega uit de keuken gaan demonteren, of men laptop gaan afstoffen, uiteindelijk moet het toch een keer gaan gebeuren :D


nou ik zit ff met het probleem dat ik zo goedkope Chinese mega heb dus die hapert ff gelukkig alleen maar om te testen .

maar idd denk wel dat we er uit gaan komen lijkt me

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 » 31 jan 2016, 01:47

Hedde mazzel ;)

EventlistWrite; Timer 4; VariableSet 23,1
EventlistWrite; Timer 4; BreakOnVarMore 25,1030
EventlistWrite; Timer 4; VariableSet 23,0
EventlistWrite; Timer 4; BreakOnVarMore 25,1020
EventlistWrite; Timer 4; VariableSet 23,3
EventlistWrite; Timer 4; BreakOnVarMore 25,1005
EventlistWrite; Timer 4; VariableSet 23,2
EventlistWrite; Timer 4; BreakOnVarMore 25,990
EventlistWrite; Timer 4; VariableSet 23,6
EventlistWrite; Timer 4; BreakOnVarMore 25,975
EventlistWrite; Timer 4; VariableSet 23,4

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 (31-01-2016)
 * Support            : NONE!
 * Date               : Feb 2015
 * Version            : 0.4
 * Compatibility      : R744
 * Syntax             : "sendHTTP <command>,<IDX>,<Value/state>,<Value>,<Value>
 *
 * Changelog 0.4
 * -. Changed support status from : None! demo... to uppercase NONE!
 * -. Added the baro sensors with SendHTTP 5,92,24,0,23 and baro forecast (/json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=1000;1)
 *
 * 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
  *
 * For the BMP085 or BMP180 Baro Sensor
 * SendHTTP 5,92,24,0,23   # Set uservariable with idx=92 with Nodo variable 24 (baro value) and Nodo variable 23 (baro forecast 0-1-2-3-4-6)
 * SendHTTP 5,92,20,0,19   # Set uservariable with idx=92 with Nodo variable 20 (baro value) and Nodo variable 19 (baro forecast 0-1-2-3-4-6)
 *
 * 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=ExtWiredOut%2010,Off
 *
 * 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 = Variable or number for domoticz (svalue or 0=Off, 1=On )
      byte Par4=event->Par2>>16 & 0xff;   // Par 4 = Variable or number for domoticz (nvalue)
      byte Par5=event->Par2>>24 & 0xff;   // Par 5 = Variable for domoticz baro 0-1-2-3-4-5-6
    
    
      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)); 
         
        }

      if (event->Par1 == 5)         // Baro meter value for Domoticz
        {
        strcpy(HttpRequest,"/json.htm?type=command&param=udevice&idx=");
          strcat(HttpRequest,int2str(Par2));
         strcat(HttpRequest,"&nvalue=0&svalue=");
           
         // Send the value of the barometer + baro forecast (for example 1000;1)
       
         // Send the value of the barometer
         float barovalue = UserVar[Par3-1];
         char buffer3[12];
         String tempStr3 = dtostrf(barovalue, 4,2,buffer3);
         strcat(HttpRequest, buffer3);    
       
         strcat(HttpRequest,";");
           
         // Send the value of the baro forecast
         float forecastvalue = UserVar[Par5-1];
         char buffer4[12];
         String tempStr4 = dtostrf(forecastvalue, 4,2,buffer4);
         strcat(HttpRequest, buffer4);
        }         
      
      
      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 » 31 jan 2016, 09:59

Knap stukje werk he
ik had idd de eventlist regels ook al klaar op die manier ja.

toppie werkt het bij jouw ook al of heb je de bmp085 nog niet aangesloten ?

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 » 31 jan 2016, 10:43

Eerst aangesloten (anders schiet het nog niet op),.....toen verkeerde waardes (2300 en -100233242), wou bijna de handdoek in de ring gooien, en toen werkte hij ineens, had ook helaas de 3.3v versie,...dus heel relaxed mogen spelen met levelshifters, uiteindelijk allemaal wel gelukt incl voorspellingen, had hem toch al in kast liggen, moest er toch een keer van komen ;)

Hij doet het goed 985.14 hPa met voorspelling Bewolkt/Regen,....hoop dat je chinese mega de test/plugin uiteindelijk wel heeft overleeft :mrgreen:
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 » 31 jan 2016, 12:25

nee mijn mega leeft nog nie hij word in eens niet meer herkend door de pc
dus kan nog ff niet testen als het goed is heb ik zo een andere
dan zal ik eens gaan kijken nou jouw goede werk

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 » 31 jan 2016, 12:39

Hehe,..gaat dus allemaal erg optimaal bij je :D Hehe beoordeel men late uurtjes pruts werk maar eens.
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 » 31 jan 2016, 20:23

goed het duurde ff maar daar zijn we weer .
met erg goed nieuws het werkt als een speer allemaal !

Topwerk he en dat nog in de kleine uurtjes wist je trouwens dat je de luchtvochtigheid ook zon status kan meegeven ?
wil je niet aan het werk zetten hoor maar misschien voor de toekomst.

zie het resultaat

https://dl.dropboxusercontent.com/u/27118784/domo.PNG


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

VorigeVolgende

Keer terug naar Software

Wie is er online?

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