diff --git a/dbus/dbuspassive.cpp b/dbus/dbuspassive.cpp
index daeef62..da9b387 100644
--- a/dbus/dbuspassive.cpp
+++ b/dbus/dbuspassive.cpp
@@ -97,7 +97,7 @@
 int HandleSensorValue(sdbusplus::message::message& msg, DbusPassive* owner)
 {
     std::string msgSensor;
-    std::map<std::string, sdbusplus::message::variant<int64_t>> msgData;
+    std::map<std::string, sdbusplus::message::variant<int64_t, double>> msgData;
 
     msg.read(msgSensor, msgData);
 
@@ -106,10 +106,10 @@
         auto valPropMap = msgData.find("Value");
         if (valPropMap != msgData.end())
         {
-            int64_t rawValue = sdbusplus::message::variant_ns::get<int64_t>(
-                valPropMap->second);
+            double value = mapbox::util::apply_visitor(VariantToDoubleVisitor(),
+                                                       valPropMap->second);
 
-            double value = rawValue * std::pow(10, owner->getScale());
+            value *= std::pow(10, owner->getScale());
 
             owner->setValue(value);
         }
diff --git a/dbus/util.cpp b/dbus/util.cpp
index 91cc840..ffdfe1f 100644
--- a/dbus/util.cpp
+++ b/dbus/util.cpp
@@ -4,7 +4,7 @@
 #include "dbus/util.hpp"
 
 using Property = std::string;
-using Value = sdbusplus::message::variant<int64_t, std::string>;
+using Value = sdbusplus::message::variant<int64_t, double, std::string>;
 using PropertyMap = std::map<Property, Value>;
 
 /* TODO(venture): Basically all phosphor apps need this, maybe it should be a
@@ -69,12 +69,25 @@
     valueResponseMsg.read(propMap);
 
     // If no error was set, the values should all be there.
-    prop->unit = sdbusplus::message::variant_ns::get<std::string>(
-        propMap["Unit"]);
-    prop->scale = sdbusplus::message::variant_ns::get<int64_t>(
-        propMap["Scale"]);
-    prop->value = sdbusplus::message::variant_ns::get<int64_t>(
-        propMap["Value"]);
+    auto findUnit = propMap.find("Unit");
+    if (findUnit != propMap.end())
+    {
+        prop->unit =
+            sdbusplus::message::variant_ns::get<std::string>(findUnit->second);
+    }
+    auto findScale = propMap.find("Scale");
+    if (findScale != propMap.end())
+    {
+        prop->scale =
+            sdbusplus::message::variant_ns::get<int64_t>(findScale->second);
+    }
+    else
+    {
+        prop->scale = 0;
+    }
+
+    prop->value =
+        mapbox::util::apply_visitor(VariantToDoubleVisitor(), propMap["Value"]);
 
     return;
 }
diff --git a/dbus/util.hpp b/dbus/util.hpp
index 72cf4e3..5b1522f 100644
--- a/dbus/util.hpp
+++ b/dbus/util.hpp
@@ -5,7 +5,7 @@
 struct SensorProperties
 {
     int64_t scale;
-    int64_t value;
+    double value;
     std::string unit;
 };
 
@@ -76,3 +76,20 @@
         throw std::invalid_argument("Cannot translate type to float");
     }
 };
+
+struct VariantToDoubleVisitor
+{
+    template <typename T>
+    std::enable_if_t<std::is_arithmetic<T>::value, double>
+    operator()(const T &t) const
+    {
+        return static_cast<double>(t);
+    }
+
+    template <typename T>
+    std::enable_if_t<!std::is_arithmetic<T>::value, double>
+    operator()(const T &t) const
+    {
+        throw std::invalid_argument("Cannot translate type to double");
+    }
+};
