Skip to content

Commit 39df8a5

Browse files
authored
Merge pull request #1 from FatBeard/master
- Added support for the Deltasol C (Alternatively by Joule)
2 parents b98a426 + 47b8bc1 commit 39df8a5

File tree

1 file changed

+111
-0
lines changed

1 file changed

+111
-0
lines changed

ArduinoVBusDecoder.ino

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,117 @@ char sync1 = 0xAA;
654654

655655
} //End 0x5611 Resol DeltaTherm FK
656656

657+
658+
else if (Source_address == 0x4212) {
659+
#if DEBUG
660+
Serial.println("---------------");
661+
Serial.println("Now decoding for DeltaSol C 0x4212");
662+
Serial.println("---------------");
663+
664+
#endif
665+
666+
// Frame info for the Resol DeltaSol C (Joule)
667+
// check VBusprotocol specification for other products
668+
669+
// This library is made for the Resol DeltaSol C (0x4212)
670+
671+
672+
//Offset Mask Name Factor Unit
673+
//0 Temperature S1 1.0 °C
674+
//1 Temperature S1 256.0 °C
675+
//2 Temperature S2 1.0 °C
676+
//3 Temperature S2 256.0 °C
677+
//4 Temperature S3 1.0 °C
678+
//5 Temperature S3 256.0 °C
679+
//6 Temperature S4 1.0 °C
680+
//7 Temperature S4 256.0 °C
681+
//8 Pump Speed R1 1 %
682+
//9 Pump Speed R2 1 %
683+
//10 Error Mask 1
684+
//11 Scheme 1
685+
//12 Operating Hours R1 1 h
686+
//13 Operating Hours R1 256 h
687+
//14 Operating Hours R2 1 h
688+
//15 Operating Hours R2 256 h
689+
//16 Heat Quantity 1 Wh
690+
//17 Heat Quantity 256 Wh
691+
//18 Heat Quantity 1000 Wh
692+
//19 Heat Quantity 256000 Wh
693+
//20 Heat Quantity 1000000 Wh
694+
//21 Heat Quantity 256000000 Wh
695+
//22 Minute of Day 1
696+
//23 Minute of Day 256
697+
698+
//
699+
// Each frame has 6 bytes
700+
// byte 1 to 4 are data bytes -> MSB of each bytes
701+
// byte 5 is a septet and contains MSB of bytes 1 to 4
702+
// byte 6 is a checksum
703+
//
704+
//******************* Frame 1 *******************
705+
706+
F = FOffset;
707+
708+
Septet = Buffer[F + FSeptet];
709+
InjectSeptet(Buffer, F, 4);
710+
711+
// 'collector1' Temperatur Sensor 1, 15 bits, factor 0.1 in C
712+
Sensor1_temp = CalcTemp(Buffer[F + 1], Buffer[F]);
713+
// 'store1' Temperature sensor 2, 15 bits, factor 0.1 in C
714+
Sensor2_temp = CalcTemp(Buffer[F + 3], Buffer[F + 2]);
715+
716+
//******************* Frame 2 *******************
717+
F = FOffset + FLength;
718+
719+
Septet = Buffer[F + FSeptet];
720+
InjectSeptet(Buffer, F, 4);
721+
722+
Sensor3_temp = CalcTemp(Buffer[F + 1], Buffer[F]);
723+
Sensor4_temp = CalcTemp(Buffer[F + 3], Buffer[F + 2]);
724+
725+
//******************* Frame 3 *******************
726+
F = FOffset + FLength * 2;
727+
728+
Septet = Buffer[F + FSeptet];
729+
InjectSeptet(Buffer, F, 4);
730+
731+
PumpSpeed1 = (Buffer[F] );
732+
PumpSpeed2 = (Buffer[F + 1]);
733+
//ErrorMask = Buffer[F + 2]; This is the notification
734+
Scheme = Buffer[F + 3];
735+
736+
//******************* Frame 4 *******************
737+
F = FOffset + FLength * 3;
738+
739+
Septet = Buffer[F + FSeptet];
740+
InjectSeptet(Buffer, F, 4);
741+
742+
OperatingHoursRelais1 = Buffer[F + 1] << 8 | Buffer[F];
743+
OperatingHoursRelais2 = Buffer[F + 3] << 8 | Buffer[F + 2];;
744+
745+
//******************* Frame 5 *******************
746+
F = FOffset + FLength * 4;
747+
748+
Septet = Buffer[F + FSeptet];
749+
InjectSeptet(Buffer, F, 4);
750+
751+
HeatQuantity = (Buffer[F + 1] << 8 | Buffer[F]) + (Buffer[F + 3] << 8 | Buffer[F + 2]) * 1000;
752+
753+
//******************* Frame 6 *******************
754+
F = FOffset + FLength * 5;
755+
756+
Septet = Buffer[F + FSeptet];
757+
InjectSeptet(Buffer, F, 4);
758+
759+
HeatQuantity = HeatQuantity + (Buffer[F + 1] << 8 | Buffer[F]) * 1000000;
760+
761+
762+
SystemTime = Buffer[F + 3] << 8 | Buffer[F + 2];
763+
764+
///******************* End of frames ****************
765+
766+
}// end 0x4212 DeltaSol C
767+
657768
/* Add your own controller ID and code in the if statement below and uncomment
658769
else if (Source_address ==0x????){
659770
}

0 commit comments

Comments
 (0)