liutao
(昆仑太科_刘涛)
2026 年2 月 27 日 10:47
1
配置的 ThresholdSensor传感器的值不更新,想要参考VrdMgmt_1.Cpu0v9TACore这种自定义的对象,如何能触发Reading值的sig_properties_changed
在sensor的AppDump\sensor\sync_property_trace.log文件中,有如下的记录
ThresholdSensor ThresholdSensor_Adc0_1Sensor_0101 Reading: 223 ["expr($1 / 5)"]
$1: bmc.kepler.complex_sensor /bmc/demo/MyCSRModel/MyCSRModel_Chip_Adc0_1_0101 bmc.demo.OpenUBMC.Reading Value [1115] ["1970-01-01 04:27:49"] ["fetch"]
目前这个属性实际上是变化了,但是这里只有fetch,一直无法触发sig_properties_changed,下面是传感器属性;
% lsprop ThresholdSensor_Adc0_1Sensor_0101
bmc.kepler.Object.Properties
ClassName="ThresholdSensor"
ObjectIdentifier=[1,"1","1","0101"]
ObjectName="ThresholdSensor_Adc0_1Sensor_0101"
TraceSamplingRate=0
bmc.kepler.Systems.ThresholdSensor
Capabilities=232
EntityId=7
EntityInstance=96
LowerCritical=150
LowerNoncritical=0
LowerNonrecoverable=0
NegativeHysteresis=4
OriginalReading=0
OwnerLun=0
PositiveHysteresis=4
Reading=223
ReadingMask=4626
ReadingStatus=0
SensorIdentifier=""
SensorName="Adc0_1 voltage Sensor"
SensorNumber=10
SensorType=2
UpperCritical=240
UpperNoncritical=0
UpperNonrecoverable=0
bmc.kepler.Systems.ThresholdSensorDisplay
AssertStatus=0
Health="OK"
LowerCriticalDisplay="0.750"
LowerNoncriticalDisplay="0.000"
LowerNonrecoverableDisplay="0.000"
NegativeHysteresisDisplay="0.020"
PositiveHysteresisDisplay="0.020"
ReadingDisplay="1.115"
Status="Enabled"
UnitDisplay="Volts"
UpperCriticalDisplay="1.200"
UpperNoncriticalDisplay="0.000"
UpperNonrecoverableDisplay="0.000"
Private
Accuracy=0
Analog=1
AssertMask=516
B=0
BA=0
BaseUnit=4
BelongsToSystem=false
DeassertMask=516
Initialization=127
IsValid=true
Linearization=0
M=5
MT=0
MaximumReading=255
MinimumReading=0
ModifierUnit=0
NominalReading=90
NormalMaximum=0
NormalMinimum=0
OwnerId=32
RBExp=208
ReadingType=1
Unit=0
下面是对应值的对象属性,已经把Value修改了, Reading=223还是不变;1150应该对应的是230
% lsprop MyCSRModel_Chip_Adc0_1_0101
bmc.demo.OpenUBMC.Reading
Channel=1
Chip=0
TemperatureCelsius=0
Value=1150
bmc.kepler.Object.Properties
ClassName="MyCSRModel"
ObjectIdentifier=[1,"1","1","0101"]
ObjectName="MyCSRModel_Chip_Adc0_1_0101"
TraceSamplingRate=0
确认在 mdb_interface 中,针对 bmc.demo.OpenUBMC.Reading 的 Value 属性是否配置了变更发送信号?
liutao
(昆仑太科_刘涛)
2026 年2 月 27 日 10:58
3
有配置emitsChangedSignal
"Value": {
"baseType": "U64",
"description": "从芯片读到的值",
"options": {
"emitsChangedSignal": "true"
}
}
而且我上午也抓到了信号,而且我看Cpu0v9TACore这里面没配置emitsChangedSignal,也能正常用。
‣ Type=signal Endian=l Flags=1 Version=1 Cookie=2016 Timestamp="Thu 1970-01-01 01:31:28.507945 UTC"
Sender=:1.7 Path=/bmc/demo/MyCSRModel/MyCSRModel_Chip_Adc0_1_0101 Interface=org.freedesktop.DBus.Properties Member=PropertiesChanged
UniqueName=:1.7
MESSAGE "sa{sv}as" {
STRING "bmc.demo.OpenUBMC.Reading";
ARRAY "{sv}" {
DICT_ENTRY "sv" {
STRING "Value";
VARIANT "t" {
UINT64 1115;
};
};
};
ARRAY "s" {
};
};
用busctl 查一下MyCSRModel_Chip_Adc0_1_0101 的资源树
确认实际生效的 是否发送信号
表达式一般不会有bug
也可以看MyCSRModel_Chip_Adc0_1_0101 所在的sync_property_trace.log 确认一下
最常见的可能性:
实际就是不发送信号的,比如生效代码是错的,或者没有自动生成
liutao
(昆仑太科_刘涛)
2026 年3 月 2 日 02:59
7
我用的这个命令busctl --user monitor ,查到的确实有
Type=signal Endian=l Flags=1 Version=1 Cookie=34 Timestamp="Thu 1970-01-01 00:41:05.384276 UTC"
Sender=:1.170 Path=/bmc/demo/MyCSRModel/MyCSRModel_Chip_Adc_0101 Interface=org.freedesktop.DBus.Properties Member=PropertiesChanged
UniqueName=:1.170
MESSAGE "sa{sv}as" {
STRING "bmc.demo.OpenUBMC.Reading";
ARRAY "{sv}" {
DICT_ENTRY "sv" {
STRING "TemperatureCelsius";
VARIANT "q" {
UINT16 220;
};
};
};
ARRAY "s" {
};
};
busctl --user introspect bmc.kepler.complex_sensor /bmc/demo/MyCSRModel/MyCSRModel_Chip_Adc_0101 | cat
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
bmc.demo.OpenUBMC.Reading interface - - -
.TemperatureCelsius property q 220 emits-change writable
bmc.kepler.Object.Properties interface - - -
.GetAllWithContext method a{ss}s a{sv} -
.GetOptions method a{ss}ss a{ss} -
.GetPrivateProperties method a{ss} s -
.GetPropertiesByNames method a{ss}sas a{sv}a{sv} -
.GetPropertiesByOptions method a{ss}sa{ss} as -
.GetPropertyDetail method a{ss}ss s -
.GetWithContext method a{ss}ss v -
.SetWithContext method a{ss}ssv - -
.ClassName property s "MyCSRModel" emits-change
.ObjectIdentifier property (ysss) 1 "1" "1" "0101" emits-change
.ObjectName property s "MyCSRModel_Chip_Adc_0101" emits-change
.TraceSamplingRate property d 0 emits-change
org.freedesktop.DBus.Introspectable interface - - -
.Introspect method - s -
org.freedesktop.DBus.ObjectManager interface - - -
.GetManagedObjects method - a{oa{sa{sv}}} -
org.freedesktop.DBus.Peer interface - - -
.GetMachineId method - s -
.Ping method - - -
org.freedesktop.DBus.Properties interface - - -
.Get method ss v -
.GetAll method s a{sv} -
.Set method ssv - -
.PropertiesChanged signal sa{sv}as - -
但是我这个是不是抓错了,应该用其他的命令抓emit的信号?
前面你提的 MyCSRModel_Chip_Adc0_1_0101
你抓的 MyCSRModel_Chip_Adc_0101
你改的不是一个对象吧
liutao
(昆仑太科_刘涛)
2026 年3 月 2 日 03:05
9
这个是我不停的调试,改名字了,实际没错,但是结果就是出不来,能不能我把一键收集日志发给您,或者你开个会议,在我的环境上看看?
liutao
(昆仑太科_刘涛)
2026 年3 月 2 日 08:01
13
刚刚在自己组件的config.cfg增加了
MODULE_NAME = “complex_sensor”
其他的都没改,目前sensor模块可以自己更新值了。感谢 sunpeijun 协助。。。