@@ -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