Example #1
0
void C1Wire::ReportTemperatureHumidity(const std::string& deviceId,float temperature,float humidity)
{
	if ((temperature == -1000.0) || (humidity == -1000.0))
		return;
	unsigned char deviceIdByteArray[DEVICE_ID_SIZE]={0};
	DeviceIdToByteArray(deviceId,deviceIdByteArray);

	RBUF tsen;
	memset(&tsen,0,sizeof(RBUF));
	tsen.TEMP_HUM.packetlength=sizeof(tsen.TEMP_HUM)-1;
	tsen.TEMP_HUM.packettype=pTypeTEMP_HUM;
	tsen.TEMP_HUM.subtype=sTypeTH5;
	tsen.TEMP_HUM.battery_level=9;
	tsen.TEMP_HUM.rssi=12;
	tsen.TEMP.id1=(BYTE)deviceIdByteArray[0];
	tsen.TEMP.id2=(BYTE)deviceIdByteArray[1];

	tsen.TEMP_HUM.tempsign=(temperature>=0)?0:1;
	int at10=round(abs(temperature*10.0f));
	tsen.TEMP_HUM.temperatureh=(BYTE)(at10/256);
	at10-=(tsen.TEMP_HUM.temperatureh*256);
	tsen.TEMP_HUM.temperaturel=(BYTE)(at10);
	tsen.TEMP_HUM.humidity=(BYTE)round(humidity);
	tsen.TEMP_HUM.humidity_status=Get_Humidity_Level(tsen.TEMP_HUM.humidity);

	sDecodeRXMessage(this, (const unsigned char *)&tsen.TEMP_HUM, NULL, 255);
}
Example #2
0
void C1Wire::ReportTemperature(const std::string& deviceId, const float temperature)
{
	if (temperature == -1000.0)
		return;

	unsigned char deviceIdByteArray[DEVICE_ID_SIZE]={0};
	DeviceIdToByteArray(deviceId,deviceIdByteArray);

	RBUF tsen;
	memset(&tsen,0,sizeof(RBUF));
	tsen.TEMP.packetlength=sizeof(tsen.TEMP)-1;
	tsen.TEMP.packettype=pTypeTEMP;
	tsen.TEMP.subtype=sTypeTEMP10;
	tsen.TEMP.battery_level=9;
	tsen.TEMP.rssi=12;
	tsen.TEMP.id1=(BYTE)deviceIdByteArray[0];
	tsen.TEMP.id2=(BYTE)deviceIdByteArray[1];

	tsen.TEMP.tempsign=(temperature>=0)?0:1;
	int at10=round(abs(temperature*10.0f));
	tsen.TEMP.temperatureh=(BYTE)(at10/256);
	at10-=(tsen.TEMP.temperatureh*256);
	tsen.TEMP.temperaturel=(BYTE)(at10);

	sDecodeRXMessage(this, (const unsigned char *)&tsen.TEMP, NULL, 255);
}
Example #3
0
void C1Wire::ReportTemperatureHumidity(const std::string& deviceId, const float temperature, const float humidity)
{
	if ((temperature == -1000.0) || (humidity == -1000.0))
		return;
	unsigned char deviceIdByteArray[DEVICE_ID_SIZE]={0};
	DeviceIdToByteArray(deviceId,deviceIdByteArray);

	uint16_t NodeID = (deviceIdByteArray[0] << 8) | deviceIdByteArray[1];
	SendTempHumSensor(NodeID, 255, temperature, round(humidity), "TempHum");
}
Example #4
0
void C1Wire::ReportPressure(const std::string& deviceId, const float pressure)
{
	if (pressure == -1000.0)
		return;
	unsigned char deviceIdByteArray[DEVICE_ID_SIZE] = { 0 };
	DeviceIdToByteArray(deviceId, deviceIdByteArray);

	int lID = (deviceIdByteArray[0] << 24) + (deviceIdByteArray[1] << 16) + (deviceIdByteArray[2] << 8) + deviceIdByteArray[3];
	SendPressureSensor(0, lID, 255, pressure, "Pressure");
}
Example #5
0
void C1Wire::ReportIlluminance(const std::string& deviceId, const float illuminescence)
{
	if (illuminescence == -1000.0)
		return;

	unsigned char deviceIdByteArray[DEVICE_ID_SIZE] = { 0 };
	DeviceIdToByteArray(deviceId, deviceIdByteArray);

	uint8_t NodeID = deviceIdByteArray[0] ^ deviceIdByteArray[1];
	SendSolarRadiationSensor(NodeID, 255, illuminescence, "Solar Radiation");
}
Example #6
0
void C1Wire::ReportLightState(const std::string& deviceId, const int unit, const bool state)
{
#if defined(_DEBUG)
	_log.Log(LOG_STATUS, "device '%s' unit %d state is %s", deviceId.c_str(), unit, (state) ? "on" : "off");
#endif

// check - is state changed ?
	char num[16];
	sprintf(num, "%s/%d", deviceId.c_str(), unit);
	const std::string id(num);

	std::map<std::string, bool>::iterator it;
	it = m_LastSwitchState.find(id);
	if (it != m_LastSwitchState.end())
	{
		if (m_LastSwitchState[id] == state)
		{
			return;
		}
	}

#if defined(_DEBUG)
	_log.Log(LOG_STATUS, "device '%s' unit %d changed state to %s", deviceId.c_str(), unit, (state) ? "on" : "off");
#endif

	m_LastSwitchState[id] = state;

	unsigned char deviceIdByteArray[DEVICE_ID_SIZE]={0};
	DeviceIdToByteArray(deviceId,deviceIdByteArray);

	RBUF tsen;
	memset(&tsen,0,sizeof(RBUF));
	tsen.LIGHTING2.packetlength=sizeof(tsen.LIGHTING2)-1;
	tsen.LIGHTING2.packettype=pTypeLighting2;
	tsen.LIGHTING2.subtype=sTypeAC;
	tsen.LIGHTING2.seqnbr=0;
	tsen.LIGHTING2.id1=(BYTE)deviceIdByteArray[0];
	tsen.LIGHTING2.id2=(BYTE)deviceIdByteArray[1];
	tsen.LIGHTING2.id3=(BYTE)deviceIdByteArray[2];
	tsen.LIGHTING2.id4=(BYTE)deviceIdByteArray[3];
	tsen.LIGHTING2.unitcode=unit;
	tsen.LIGHTING2.cmnd=state?light2_sOn:light2_sOff;
	tsen.LIGHTING2.level=0;
	tsen.LIGHTING2.rssi=12;
	sDecodeRXMessage(this, (const unsigned char *)&tsen.LIGHTING2, NULL, 255);
}
Example #7
0
void C1Wire::ReportCounter(const std::string& deviceId,int unit,unsigned long counter)
{
	unsigned char deviceIdByteArray[DEVICE_ID_SIZE]={0};
	DeviceIdToByteArray(deviceId,deviceIdByteArray);

	RBUF tsen;
	memset(&tsen,0,sizeof(RBUF));
	tsen.RFXMETER.packetlength=sizeof(tsen.RFXMETER)-1;
	tsen.RFXMETER.packettype=pTypeRFXMeter;
	tsen.RFXMETER.subtype=sTypeRFXMeterCount;
	tsen.RFXMETER.rssi=12;
	tsen.RFXMETER.id1=(BYTE)deviceIdByteArray[0];
	tsen.RFXMETER.id2=(BYTE)deviceIdByteArray[1] + unit;

	tsen.RFXMETER.count1 = (BYTE)((counter & 0xFF000000) >> 24);
	tsen.RFXMETER.count2 = (BYTE)((counter & 0x00FF0000) >> 16);
	tsen.RFXMETER.count3 = (BYTE)((counter & 0x0000FF00) >> 8);
	tsen.RFXMETER.count4 = (BYTE)(counter & 0x000000FF);
	sDecodeRXMessage(this, (const unsigned char *)&tsen.RFXMETER, NULL, 255);
}
Example #8
0
void C1Wire::ReportHumidity(const std::string& deviceId,float humidity)
{
   unsigned char deviceIdByteArray[DEVICE_ID_SIZE]={0};
   DeviceIdToByteArray(deviceId,deviceIdByteArray);

   RBUF tsen;
   memset(&tsen,0,sizeof(RBUF));
   tsen.HUM.packetlength=sizeof(tsen.HUM)-1;
   tsen.HUM.packettype=pTypeHUM;
   tsen.HUM.subtype=sTypeHUM2;
   tsen.HUM.battery_level=9;
   tsen.HUM.rssi=12;
   tsen.TEMP.id1=(BYTE)deviceIdByteArray[0];
   tsen.TEMP.id2=(BYTE)deviceIdByteArray[1];

   tsen.HUM.humidity=(BYTE)round(humidity);
   tsen.HUM.humidity_status=Get_Humidity_Level(tsen.HUM.humidity);

   sDecodeRXMessage(this, (const unsigned char *)&tsen.HUM);//decode message
}
Example #9
0
void C1Wire::ReportLightState(const std::string& deviceId,int unit,bool state)
{
   unsigned char deviceIdByteArray[DEVICE_ID_SIZE]={0};
   DeviceIdToByteArray(deviceId,deviceIdByteArray);

   RBUF tsen;
   memset(&tsen,0,sizeof(RBUF));
   tsen.LIGHTING2.packetlength=sizeof(tsen.LIGHTING2)-1;
   tsen.LIGHTING2.packettype=pTypeLighting2;
   tsen.LIGHTING2.subtype=sTypeAC;
   tsen.LIGHTING2.seqnbr=0;
   tsen.LIGHTING2.id1=(BYTE)deviceIdByteArray[0];
   tsen.LIGHTING2.id2=(BYTE)deviceIdByteArray[1];
   tsen.LIGHTING2.id3=(BYTE)deviceIdByteArray[2];
   tsen.LIGHTING2.id4=(BYTE)deviceIdByteArray[3];
   tsen.LIGHTING2.unitcode=unit;
   tsen.LIGHTING2.cmnd=state?light2_sOn:light2_sOff;
   tsen.LIGHTING2.level=0;
   tsen.LIGHTING2.rssi=12;
   sDecodeRXMessage(this, (const unsigned char *)&tsen.LIGHTING2);//decode message
}