Query Sensor

Ed Tanous ed at tanous.net
Wed Jan 12 13:04:44 AEDT 2022


On Tue, Jan 11, 2022 at 9:53 AM Mike Jones <proclivis at gmail.com> wrote:

> Ed,
>
> So to be sure I understand, dbus-sensors implements the dbus services for
> each sensor type, and the requests I made were serviced by one of these.


Correct.


>
> The interface is defined by yaml files in phosphor-dbus-interfaces.


Yep.


>
> phosphor-dbus- interfaces generates c++ base classes, and dbus-sensors
> probably have c++ classes inheriting from them.



For various technical and social reasons which I’ve detailed in mail to
this list in the past, dbus-sensors doesn’t depend directly on
phosphor-dbus-interfaces, nor rely on the generated code. It instead
generates code from c++ template expansion in sdbusplus.


>
> These interfaces are not Redfish interfaces.


Correct.


>
> When WebUI fetches sensor values, is it using these interfaces, or is
> there another Redfish layer involved that translates the query? Or perhaps
> Redfish only matters for things like a PSU?



Depends on which webui you’re talking about, there are two.

Phosphor-webui (ie the “old” one) goes directly to dbus through the
rest-dbus abstraction in bmcweb.  This was very good for initial
prototyping (aside from a port to c++, the code largely hasn’t changed
since it was written) but not great at keeping a consistent or standardized
API.

Webui-vue (ie, the new one) relies on Redfish directly, which in-effect
makes a very nice Redfish gui, and minimizes the chance that the dbus
interfaces are correct, but redfish is broken.  It also keeps us standard
compliant, so in theory webui-vue could be used on another non-openbmc
project in the future.

Ed


>
> Mike
>
>
> Sent from my iPad
>
> > On Jan 11, 2022, at 10:22 AM, Ed Tanous <edtanous at google.com> wrote:
> >
> > On Tue, Jan 11, 2022 at 9:17 AM Mike Jones <proclivis at gmail.com> wrote:
> >>
> >> This is how to do it:
> >>
> >> dbus-send --system --print-reply \
> >>
> >>
> --dest=xyz.openbmc_project.Hwmon-5a446562b1a2e55ef11da905907088a187a66b71eb7a1f29187594c05bb8fd9a.Hwmon1
> \
> >>
> >> /xyz/openbmc_project/sensors/temperature/lm75temp \
> >>
> >> org.freedesktop.DBus.Properties.Get
> string:xyz.openbmc_project.Sensor.Value string:Value \
> >>
> >> double:
> >>
> >>
> >> It is not clear to me why the second parameter string:Value
> >>
> >>
> >> I guessed on that and it works. Perhaps xyz…Sensor.Value is the
> Property name, and properties have values, so the second parameter says get
> the Value of a property whose name ends in .Value.\
> >
> > For better or worse, the term "Value" is overloaded in both the
> > interface name, yz.openbmc_project.Sensor.Value, and the property name
> > within the interface, Value.  That's why you see it twice in this
> > case.  They are distinct things within the request that just happen to
> > share a name.  Docs for the interface and property are here:
> >
> https://github.com/openbmc/phosphor-dbus-interfaces/blob/e0674c894ed36a2e8cf96207907a531d2f514054/yaml/xyz/openbmc_project/Sensor/Value.interface.yaml#L24
> >
> > Happy to see you figured it out.
> >
> >>
> >>
> >> To test that, I tried string:MaxValue, and that works.
> >>
> >>
> >> I confirmed with this:
> >>
> >>
> >> busctl introspect
> xyz.openbmc_project.Hwmon-5a446562b1a2e55ef11da905907088a187a66b71eb7a1f29187594c05bb8fd9a.Hwmon1
> /xyz/openbmc_project/sensors/temperature/lm75temp
> >>
> >>
> >> A very useful command.
> >>
> >>
> >> Also useful:
> >>
> >>
> >> dbus-send --system --print-reply \
> >>
> >> --dest=xyz.openbmc_project.ObjectMapper /\
> >>
> >> xyz/openbmc_project/object_mapper \
> >>
> >> xyz.openbmc_project.ObjectMapper.GetSubTree \
> >>
> >> string:"/" int32:0 array:string:"xyz.openbmc_project.Sensor.Value"
> >>
> >>
> >>
> >> Mike
> >>
> >>
> >> Sent from my iPad
> >>
> >> On Jan 10, 2022, at 4:50 PM, Ed Tanous <edtanous at google.com> wrote:
> >>
> >> On Mon, Jan 10, 2022 at 3:47 PM Mike Jones <proclivis at gmail.com>
> wrote:
> >>
> >>
> >> Hi,
> >>
> >>
> >> I could not find an example of a sensor query in the docs. I assume
> something like this:
> >>
> >>
> >> dbus-send --system --print-reply \
> >>
> >>
> >>
> --dest=xyz.openbmc_project.Hwmon-5a446562b1a2e55ef11da905907088a187a66b71eb7a1f29187594c05bb8fd9a.Hwmon1
> \
> >>
> >>
> >> /xyz/openbmc_project/sensors/temperature/lm75temp
> >>
> >>
> >> xyz.openbmc_project.Sensor.Property.Get
> xyz.openbmc_project.Sensor.Value \
> >>
> >>
> >> double:
> >>
> >>
> >>
> >> I don't have an example offhand, but the interface you're looking for
> >> in the bolded area is
> >> org.freedesktop.DBus.Properties.Get
> >>
> >> Stack overflow for essentially the same question with an example:
> >>
> https://stackoverflow.com/questions/48648952/set-get-property-using-dbus-send
> >>
> >>
> >> With the bold interface replaced with something correct.
> >>
> >>
> >> Can some one give me an example, and a url about how to query
> properties?
> >>
> >>
> >> Mike
> >>
> >>
> >> Sent from my iPad
>
-- 
-Ed
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/openbmc/attachments/20220111/0a30857f/attachment-0001.htm>


More information about the openbmc mailing list