Ed,

What translates the redfish query into a dbus query?

Mike

Sent from my iPad

On Jan 11, 2022, at 7:04 PM, Ed Tanous <ed@tanous.net> wrote:




On Tue, Jan 11, 2022 at 9:53 AM Mike Jones <proclivis@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@google.com> wrote:
>
> On Tue, Jan 11, 2022 at 9:17 AM Mike Jones <proclivis@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@google.com> wrote:
>>
>> On Mon, Jan 10, 2022 at 3:47 PM Mike Jones <proclivis@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