3690
правок
Строка 87: | Строка 87: | ||
==== Правило для статуса питания ==== | |||
[https://github.com/contactless/wirenboard/blob/master/system_rules/rules/power_status.js Правило] создаёт виртуальное устройство, которое сообщает текущий статус питания. В качестве входных данных используется два канала АЦП: измерение напряжения на аккумуляторе и измерение входного напряжения. | |||
Реализована следующая логика: | |||
1) Если входное напряжение меньше напряжение на аккмуляторе, то значит плата питается от аккумулятора. В этом случае, также отображается 0V в качестве входного напряжения. | |||
2) Если входное напряжение больше напряжения на аккумуляторе, то плата работает от внешнего источника питания. В качестве входонго напряжения отображается измерение с канала Vin. | |||
Для иллюстрации правила используют два разных способа срабатывания: по изменению значения контрола (правило _system_track_vin) и по изменению значения выражения (два других). | |||
<pre> | |||
defineVirtualDevice("power_status", { | |||
title: "Power status", // | |||
cells: { | |||
'working on battery' : { | |||
type : "switch", | |||
value : false, | |||
readonly : true | |||
}, | |||
'Vin' : { | |||
type : "voltage", | |||
value : 0 | |||
} | |||
} | |||
}); | |||
defineRule("_system_track_vin", { | |||
whenChanged: "wb-adc/Vin", | |||
then: function() { | |||
if (dev["wb-adc"]["Vin"] < dev["wb-adc"]["BAT"] ) { | |||
dev["power_status"]["Vin"] = 0; | |||
} else { | |||
dev["power_status"]["Vin"] = dev["wb-adc"]["Vin"] ; | |||
} | |||
} | |||
}); | |||
defineRule("_system_dc_on", { | |||
asSoonAs: function () { | |||
return dev["wb-adc"]["Vin"] > dev["wb-adc"]["BAT"]; | |||
}, | |||
then: function () { | |||
dev["power_status"]["working on battery"] = false; | |||
} | |||
}); | |||
defineRule("_system_dc_off", { | |||
asSoonAs: function () { | |||
return dev["wb-adc"]["Vin"] <= dev["wb-adc"]["BAT"]; | |||
}, | |||
then: function () { | |||
dev["power_status"]["working on battery"] = true; | |||
} | |||
}); | |||
</pre> | |||
=== Отправка команд по RS-485 === | === Отправка команд по RS-485 === |