@@ -874,6 +874,112 @@ def to_heatpump(cls, value):
874874
875875 return val
876876
877+ class HeatPumpState (SelectionBase ):
878+ """HeatPumpState datatype, converts from and to list of HeatPumpState codes."""
879+
880+ datatype_class = "selection"
881+
882+ codes = {
883+ 0 : "Idle" , # Heatpump is idle
884+ 1 : "Running" , # Heatpump is running
885+ }
886+
887+ class ModeState (SelectionBase ):
888+ """ModeState datatype, converts from and to list of ModeState codes."""
889+
890+ datatype_class = "selection"
891+
892+ codes = {
893+ 0 : "Disabled" , # Heating / Hot water is disabled
894+ 1 : "No request" , # Heating / Hot water currently not requested
895+ 2 : "Requested" , # Heating / Hot water requested but currently not running
896+ 3 : "Running" , # Heating / Hot water running
897+ }
898+
899+ class ControlMode (SelectionBase ):
900+ """ControlMode datatype, converts from and to list of ControlMode codes."""
901+
902+ datatype_class = "selection"
903+
904+ codes = {
905+ 0 : "Off" , # System value is used
906+ 1 : "Setpoint" , # Setpoint register value is used
907+ 2 : "Offset" , # System values + offset register value is used
908+ 3 : "Level" , # System values + smart-home-interface-settings
909+ # register value is used
910+ }
911+
912+
913+ class LpcMode (SelectionBase ):
914+ """LpcMode datatype, converts from and to list of LpcMode codes."""
915+
916+ datatype_class = "selection"
917+
918+ codes = {
919+ 0 : "No limit" ,
920+ 1 : "Soft limit" ,
921+ 2 : "Hard limit" ,
922+ }
923+
924+
925+ class LockMode (SelectionBase ):
926+ """LockMode datatype, converts from and to list of LockMode codes."""
927+
928+ datatype_class = "selection"
929+
930+ codes = {
931+ 0 : "Off" , # Function is not locked
932+ 1 : "On" , # Function is locked
933+ }
934+
935+ class OnOffMode (SelectionBase ):
936+ """OnOffMode datatype, converts from and to list of OnOffMode codes."""
937+
938+ datatype_class = "selection"
939+
940+ codes = {
941+ 0 : "Off" , # Function deactivated
942+ 1 : "On" , # Function activated
943+ }
944+
945+ class LevelMode (SelectionBase ):
946+ """LevelMode datatype, converts from and to list of LevelMode codes."""
947+
948+ datatype_class = "selection"
949+
950+ codes = {
951+ 0 : "Normal" , # No correction
952+ 1 : "Increased" , # Increase the temperature by the values
953+ # within the smart-home-interface-settings
954+ # TODO: Function unknown – requires further analysis
955+ 2 : "Increased2" , # Increase the temperature by the values
956+ # within the smart-home-interface-settings
957+ # TODO: Function unknown – requires further analysis
958+ 3 : "Decreased" , # Decrease the temperature by the values
959+ # within the smart-home-interface-settings
960+ # TODO: Function unknown – requires further analysis
961+ }
962+
963+ class PowerLimit (ScalingBase ):
964+ """PowerLimit datatype, converts from and to PowerLimit."""
965+
966+ datatype_class = "power"
967+ datatype_unit = "kW"
968+ scaling_factor = 0.1
969+
970+
971+ class FullVersion (Base ):
972+ """FullVersion datatype, converts from and to a RBEVersion"""
973+
974+ datatype_class = "version"
975+
976+ @classmethod
977+ def from_heatpump (cls , value ):
978+ if isinstance (value , list ) and len (value ) >= 3 :
979+ return f"{ value [0 ]} .{ value [1 ]} .{ value [2 ]} "
980+ else :
981+ return "0"
982+
877983
878984class Unknown (Base ):
879985 """Unknown datatype, fallback for unknown data."""
0 commit comments